gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

Coding > Just started; sprite problem

#1407 - DennisBor - Sat Jan 18, 2003 1:40 pm

Hey there, I've just started programming for the GBA (i'm pretty familiar with C++) and I'm using the tutorial from the Pern Project site (www.thepernproject.com).

My code does compile without a single error, VBA shows the OAM settings (my sprite is really 64x64 pixels etc) but I think something goes wrong while writing the color palette to the memory because the 64x64 sprite is totally empty (black).

My code is below (sorry for the dutch comment)
Code:

/******************************************************************************************

   Bestandsnaam      main.cpp
   Project            Codename : Total Control

   (C) 2003 Dennis Bor, alle rechten voorbehouden

    Datum               16 januari 2003
   Programmeur         Dennis Bor

******************************************************************************************/

// vertel de compiler welke bestanden gebruikt moeten worden
#include "gba.h"
#include "screenmodes.h"
#include "character.h"
#include "sprite.h"
#include "keypad.h"

// initialiseer variabelen om de X en Y co?rdinaten van de sprite in op te slaan
signed short myX = 10;
signed short myY = 10;

// initialiseer een variabele om in op te slaan met welke sprite we momenteel werken
unsigned short myKarakternummer = 0;

/**
 * Kopieert de array met sprites naar het OAM
 */
void KopieerOAM()
{
   // maak een pointer naar unsigned short
   unsigned short * myTemp;

   // maak een pointer van de sprite array naar myTemp
   myTemp = (unsigned short *)Sprites;

   // doe een loop om alle sprites inclusief attributen weg te schrijven naar het OAM
   for ( unsigned short myLoop = 0; myLoop < 128 * 4; myLoop++ )
   {
      // kopieer de sprite data naar de OAM
      OAM[myLoop] = myTemp[myLoop];
   }
}

/**
 * Doe niets tot we in de VBlank periode zijn beland
 */
void WachtOpVBlank()
{
    // maak een pointer naar de scanline counter
    // LET OP: vergeet niet volatile erbij te vermelden. Volatile vertelt
    // het programma dat de variabele ook vanaf buiten veranderd kan
    // worden (operating system of hardware)
    #define ScanlineCounter * (volatile unsigned short *) 0x4000006

    // doe een loop zolang de counter kleiner is dan 160
    while (ScanlineCounter < 160)
    {
        // doe niets totdat de we om de VBlank periode zijn
    }
}

/**
 * Functie om de sprite te verplaatsen
 *
 * @param         mySprite      pointer naar de sprite-attributen
 *                myX           X locatie van de sprite
 *                myY           Y locatie van de sprite
 */
void VerplaatsSprite(Sprite* mySprite, int myX, int myY)
{
   // verwijder de oude X waarde van de sprite
   mySprite->attribute1 = mySprite->attribute1 & 0xFE00;
   mySprite->attribute1 = mySprite->attribute1 | myX;
   
   // verwijder de oude Y waarde van de sprite
   mySprite->attribute0 = mySprite->attribute0 & 0xFF00;
   mySprite->attribute0 = mySprite->attribute0 | myY;
}

/**
 * Functie om de X en Y co?rdinaten aan te passen wanneer er een toets is ingedrukt
 */
void Invoer()
{
   // voer de onderstaande code uit wanneer de gebruiker op het pijltje naar boven heeft
   // gedrukt
   if(KEYPRESSED(KEYUP))
   {
      // trek 1 van de Y co?rdinaat af
       myY--;
   }
   // voer de onderstaande code uit wanneer de gebruiker op het pijltje naar beneden heeft
   // gedrukt
   else if(KEYPRESSED(KEYDOWN))
   {
      // tel 1 bij de Y co?rdinaat op
       myY++;
   }
   // voer de onderstaande code uit wanneer de gebruiker op het pijltje naar links heeft
   // gedrukt
   else if(KEYPRESSED(KEYLEFT))
   {
       // trek 1 van de X co?rdinaat af
      myX--;
   }
   // voer de onderstaande code uit wanneer de gebruiker op het pijltje naar rechts heeft
   // gedrukt
   else if(KEYPRESSED(KEYRIGHT))
   {
      // tel 1 bij de X co?rdinaat op
       myX++;
   }
}

/**
 * Zet alle sprites op offscreen
 */
void SpritesInitialiseren()
{
   // doe een loop en voer deze 128 keer uit (Sprites is een array van
    // 128 objecten)
    for ( int myLoop = 0; myLoop < 128 ;myLoop ++ )
    {
        // stel de Y co?rdinaat in op 160 ( > 159 )
        Sprites[myLoop].attribute0 = 160;

        // stel de X co?rdinaat in op 240 ( > 240 )
        Sprites[myLoop].attribute1 = 240;
    }
}

/**
 * Hier begint het spel
 */
int main()
{
   // stel de screenmode in op 3; gebruik 2D sprites en enable deze
   SetMode( MODE_2 | OBJ_MAP_1D | OBJ_ENABLE );

   // doe een loop om alle 256 kleuren naar het geheugen te schrijven
   for (unsigned short myLoop = 0; myLoop < 256; myLoop ++)
   {
      // kopieer de het kleurenpalet van de sprite naar het geheugen
      OBJPaletteMem[myLoop] = characterPalette[myLoop];
   }

   // roep de functie aan die alle niet gebruikte sprites offscreen neerzet
   SpritesInitialiseren();

   // stel de 0-attributen van de huidige sprite in op 256 kleuren, vierkant en de Y
   // co?rdinaat
   Sprites[0].attribute0 = COLOR_256 | SQUARE | myY; 
   
   // stel de 1-attributen van de huidige sprite in op 64x64 pixels en de X co?rdinaat
   Sprites[0].attribute1 = SIZE_64 | myX;

   // stel de 2-attributen van de huidige sprite in op het huidige karakternummer
   Sprites[0].attribute2 = myKarakternummer;

   // doe een loop en voer deze acht keer uit omdat er 8 rijen met tiles zijn (64x64 = 8
   // 8x8 tiles)
   for ( int myIndex = 0; myIndex < (256 * 8); myIndex ++ )
   {
         // schrijf de data van de sprite weg naar het juiste geheugenadres.
         OAMdata[myIndex] = characterData[myIndex];
   }
   
   while (1)
   {
      Invoer();
      VerplaatsSprite(&Sprites[0],myX,myY);
      WachtOpVBlank();
      KopieerOAM();
   }




   // geef 0 als returnwaarde terug   
   return 0;
}

can someone please tell me what's wrong about it. I'm stuck for about 36 hours at this problem now and I really would like to go on, so I really hope you guys can help me with this.

Thanks,

Dennis
_________________
I rather have a compiler than a girl... A compiler isn't complaining all the time!


Last edited by DennisBor on Sat Jan 18, 2003 2:55 pm; edited 1 time in total

#1409 - Kay - Sat Jan 18, 2003 1:55 pm

You simply forget to load the palette ! :)


-- Kay

#1410 - DennisBor - Sat Jan 18, 2003 2:09 pm

My tutorial sais I must use the following code to write the palletje to the memory:

// doe een loop om alle 256 kleuren naar het geheugen te schrijven
for (unsigned short myLoop = 0; myLoop < 256; myLoop ++)
{
// kopieer de het kleurenpalet van de sprite naar het geheugen
OBJPaletteMem[myLoop] = characterPalette[myLoop];
}

Can you please tell me how to load the palette then? I've just started programming for the GBA... :)

Thanks
_________________
I rather have a compiler than a girl... A compiler isn't complaining all the time!

#1413 - JonH - Sat Jan 18, 2003 2:37 pm

yes, that is how you can load the palette in.

i would check that your sprite has been converted properly first. sometimes i have problems like this, but its not always my code that is at fault!

re-convert your sprite image and make sure you don't get any errors.

if that doesn't work then i'm not sure what the problem is, as your code seems OK from what i can make of it (i don't read dutch!)

#1414 - DennisBor - Sat Jan 18, 2003 2:41 pm

I've just converted a 256 color PCX file with the tool PCX2Sprite. Done that multiple times and still no result...

Maybe someone knows another good sprite tutorial on the net for a newbee like me?
_________________
I rather have a compiler than a girl... A compiler isn't complaining all the time!

#1415 - Kay - Sat Jan 18, 2003 2:44 pm

Sprites color palette is located @ 0x05000200.
There're 256 entries.
Each color entry is 16 bits wide (an ARM7 halfword) organised as follow (bitwise): xBBBBBGGGGGRRRRR

You just have to copy datas from cartridge to palette location.

It's also possible your
Code:
OBJPaletteMem
isn't correctly located and/or is a bad formated array.

-- Kay

#1416 - DennisBor - Sat Jan 18, 2003 2:47 pm

This is the line for my OBJPaletteMem in my gba.h file:

Code:
#define OBJPaletteMem    ((volatile u16*)0x5000200)


looks to me there aren't any problems in this piece of code...
_________________
I rather have a compiler than a girl... A compiler isn't complaining all the time!

#1418 - JonH - Sat Jan 18, 2003 2:54 pm

also, i have these lines at the top of my code

Code:

//create an OAM variable and make it point to the address of OAM
u16* OAM = (u16*)0x7000000;

//create the array of sprites (128 is the maximum)
OAMEntry sprites[128];

//create the rotation and scaling array (overlaps the OAMEntry array memory)
pRotData rotData = (pRotData)sprites;


but maybe you have these elsewhere?

i'm not at home right now, so i can't compile your code to have a better look.

i still bet that its your conversion tool - pcx2sprite seems a bit temperamental to me.

#1419 - DennisBor - Sat Jan 18, 2003 2:58 pm

Those are in my sprite.h file (names are different, because I find my ones easier to use)

Code:


#ifndef __SPRITE_H__
#define __SPRITE_H__

// definities van attribute 0
#define ROTATION_FLAG         0x100
#define SIZE_DOUBLE           0x200
#define MODE_NORMAL           0x0
#define MODE_TRANSPERANT      0x400
#define MODE_WINDOWED         0x800
#define MOSAIC                0x1000
#define COLOR_16              0x0000
#define COLOR_256             0x2000
#define SQUARE                0x0
#define TALL                  0x8000
#define WIDE                  0x4000

// definities van attribute 1
#define ROTATIONDATA(n)((n)<< 9)
#define HORIZONTAL_FLIP       0x1000
#define VERTICAL_FLIP         0x2000
#define SIZE_8                0x0
#define SIZE_16               0x4000
#define SIZE_32               0x8000
#define SIZE_64               0xC000

// definities van attribute 2
#define PRIORITY(n)((n)<<10)
#define PALETTE(n)((n)<<12)

// definieer een structuur
// Let op: je kunt zowel de typedef naam (Sprite) als tagSprite gebruiken
// bij declaraties
typedef struct tagSprite
{
    // definieer vier unsigned short ints om de attributen van de sprite
    // in op te slaan
    unsigned short int attribute0;
    unsigned short int attribute1;
    unsigned short int attribute2;
    unsigned short int attribute3;
} Sprite,*pSprite;

// definieer een structuur
// Let op: je kunt zowel de typedef naam (tagRotateData) als RotationData
// gebruiken bij declaraties
typedef struct tagRotateData
{
    unsigned short int filler1[3];
    unsigned short int pa;
    unsigned short int filler2[3];
    unsigned short int pb;
    unsigned short int filler3[3];
    unsigned short int pc;
    unsigned short int filler4[3];
    unsigned short int pd;
} RotationData, *pRotationData;

// declareer een pointer naar het begin van het OAM geheugen
unsigned short int * OAM = (unsigned short int *) 0x7000000;

// definieer een variabele met als datatype Sprite (array van 128 obj.)
Sprite Sprites[128];

// declareer een pointer die de rotation data koppelt aan de array met
// sprites
pRotationData RotadionData = (pRotationData) Sprites;

#endif


But when talking about conversion tools; which one do you suggest?[/code]
_________________
I rather have a compiler than a girl... A compiler isn't complaining all the time!

#1420 - Kay - Sat Jan 18, 2003 2:58 pm

The last thing you can do, since all of your code seems right, is to look what your pix converter output with an HEX viewer ...

... or try assembly for a more reliable coding level.


-- Kay

#1421 - JonH - Sat Jan 18, 2003 3:05 pm

heh.

personally i work with Gifs (this way i can get the alpha channel).
then i use Gifs2sprites, i think they have it on gbadev.org in the tools section.

i've use pcx2sprites before, and it seemed to screw up sometimes.

Quote:
... or try assembly for a more reliable coding level


:D

#1423 - DennisBor - Sat Jan 18, 2003 3:24 pm

My Sprite code looks like this

Code:

/**********************************************\
*       sprite1.h                                   *
*          by dovotos pcx->gba program         *
/**********************************************/
#define  character_WIDTH   64
#define  character_HEIGHT  64


const u16 characterData[] = {
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0xD289, 0xD2D2, 0x8989, 0x8989,
                    0x8989, 0xD289, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0xD289, 0xD2D2, 0x8989, 0xD289, 0x8989, 0x8989,
                    0xD2D2, 0x8989, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0xD289,
                    0xD2D2, 0x8989, 0x8989, 0x4289, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0xD289, 0xD2D2, 0x8989, 0x8989, 0x8989, 0xD289, 0xD2D2, 0x8989, 0x8989, 0x4242,
                    0x8989, 0x4242, 0x4242, 0x8C8C, 0x4242, 0x8C42, 0x8C8C, 0x8C8C, 0x8C42, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C42, 0x8C8C, 0x8C8C, 0x8C8C, 0x8989, 0x8989, 0x8989, 0x8989,
                    0xD289, 0x89D2, 0x89D2, 0x89D2, 0x8989, 0x89D2, 0x89D2, 0x89D2, 0x4242, 0x4242,
                    0x4242, 0x4242, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8989, 0x8989,
                    0x8989, 0x8989, 0xD289, 0x89D2, 0x8989, 0x8989, 0xD2D2, 0x8989, 0xD2D2, 0xD2D2,
                    0x8942, 0xD289, 0x89D2, 0x8989, 0x428C, 0x4242, 0x8942, 0x8989, 0x8C8C, 0x8C8C,
                    0x4242, 0xD2D2, 0x8C8C, 0x8C8C, 0x8C8C, 0x428C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0xD2D2, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0xD289, 0xD2D2, 0xD2D2, 0xD2D2,
                    0x89D2, 0x8989, 0x8989, 0x8989, 0x8942, 0x8989, 0x8989, 0x8989, 0xD242, 0xD2D2,
                    0xD2D2, 0xD2D2, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0xD2D2, 0xD2D2,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0xD2D2, 0xD2D2, 0xD2D2, 0xD2D2, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0xD2D2, 0xD2D2, 0x8989, 0x8989, 0x89D2, 0x8989,
                    0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0xD2D2,
                    0x8989, 0x4289, 0x8989, 0xD289, 0x89D2, 0x4289, 0x8989, 0x8989, 0xD289, 0x8C42,
                    0xD2D2, 0xD2D2, 0xD2D2, 0x8CD2, 0x89D2, 0x8989, 0x4289, 0x8CD2, 0x8989, 0x8989,
                    0x4289, 0x8C8C, 0x8989, 0x8989, 0x4289, 0x8C8C, 0x8989, 0x8989, 0x4289, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x4242,
                    0x8C8C, 0x8C8C, 0x428C, 0x8C42, 0x8C8C, 0x8C8C, 0x8C42, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x4242, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x428C, 0x8C42, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x428C, 0x4242, 0x4242, 0x8C8C, 0x4242, 0x8C8C,
                    0x428C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C42, 0x428C, 0x8989, 0x8989, 0x8989,
                    0x428C, 0x8989, 0x8989, 0x8989, 0x428C, 0x8989, 0x8989, 0x8989, 0x8C8C, 0x8942,
                    0x8989, 0x8989, 0x8C8C, 0xD242, 0xD2D2, 0x8989, 0x8C8C, 0x8942, 0x8989, 0xD2D2,
                    0x8C8C, 0x4242, 0x8989, 0x8989, 0x8C8C, 0x428C, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0xD2D2, 0x8989, 0x8989, 0x8989, 0x8989, 0xD2D2, 0x89D2, 0x8989,
                    0x89D2, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0xD289, 0x8989,
                    0x8989, 0x8989, 0xD289, 0x8989, 0x8989, 0x8989, 0xD289, 0x8989, 0x8989, 0x8989,
                    0xD289, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0xD2D2, 0xD2D2,
                    0x8989, 0xD289, 0x89D2, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x4289, 0x8C8C, 0xD2D2, 0xD2D2,
                    0x42D2, 0x8C8C, 0x8989, 0x8989, 0x4289, 0x8C8C, 0x8989, 0x8989, 0x4289, 0x8C8C,
                    0x8989, 0x8989, 0x4289, 0x8C8C, 0x8989, 0x8989, 0x8989, 0x8C42, 0x8989, 0x8989,
                    0x8989, 0x8C42, 0x8989, 0x8989, 0x8989, 0x4289, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x428C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x4242, 0x8C42,
                    0x8C8C, 0x8C8C, 0x8C42, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C42, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x4242, 0x4242, 0x8C8C, 0x4242, 0x8C8C, 0x428C, 0x4242, 0x8C42,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x4242, 0x4242, 0x8C8C, 0x8C8C, 0x8C42, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x8C8C, 0x428C, 0x8989, 0x8989, 0x8C8C, 0x428C, 0x8989, 0x8989,
                    0x8C8C, 0x428C, 0xD2D2, 0x89D2, 0x8C8C, 0x428C, 0x8989, 0xD289, 0x8C8C, 0x428C,
                    0x8989, 0x8989, 0x8C8C, 0x4242, 0x8989, 0x8989, 0x428C, 0x8942, 0x8989, 0x8989,
                    0x428C, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0xD289, 0x89D2, 0x8989, 0x8989,
                    0x8989, 0xD289, 0x8989, 0x8989, 0x8989, 0x8989, 0xD2D2, 0x8989, 0x8989, 0x8989,
                    0x8989, 0xD2D2, 0x8989, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989,
                    0xD289, 0x8989, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x89D2, 0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x4289, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x4289, 0x8989, 0x8989, 0x4289, 0xC842,
                    0x8989, 0x4289, 0xC842, 0xC8C8, 0x8989, 0x4242, 0xC8C8, 0xC8C8, 0x4289, 0xC842,
                    0xC8C8, 0xC8C8, 0x8C42, 0x8C8C, 0x8C8C, 0x8C8C, 0x4289, 0x4242, 0x8C42, 0x8C8C,
                    0x4289, 0x4242, 0x4242, 0x4242, 0x4242, 0xC8C8, 0xC8C8, 0x4242, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x4242, 0x4242, 0x4242, 0x4242, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0x8C8C, 0x8C8C, 0x8C8C, 0x8C8C,
                    0x8C8C, 0x8C8C, 0x428C, 0x4242, 0x4242, 0x4242, 0xC842, 0x4242, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0x8942, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8942, 0x8989, 0x8989, 0x8989,
                    0x42C8, 0x4242, 0x8989, 0x8989, 0xC8C8, 0x42C8, 0x4242, 0x8989, 0xC8C8, 0xC8C8,
                    0x42C8, 0x8942, 0xC8C8, 0xC8C8, 0xC8C8, 0x4242, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0x8989, 0x8989, 0x8989, 0x89D2, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8942, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x4289, 0x8989, 0x8989, 0x8989, 0x4289,
                    0x8989, 0x8989, 0x8989, 0x4289, 0x8989, 0x8989, 0x8989, 0x4242, 0x8989, 0x8989,
                    0x8989, 0xC842, 0x8989, 0x8989, 0x8989, 0xC842, 0x4242, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC842, 0xC8C8, 0xC8C8, 0xC8C8, 0xC842, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0x42C8, 0xC8C8, 0xC8C8, 0xC8C8, 0x4242,
                    0xC8C8, 0xC8C8, 0x42C8, 0x4242, 0xC8C8, 0xC8C8, 0x42C8, 0x4289, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0x42C8, 0xC8C8, 0xC8C8, 0xC8C8, 0x4242, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC842, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0x4242, 0xC8C8, 0xC8C8, 0xC8C8, 0x42C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0x42C8, 0xC8C8, 0xC8C8, 0xC8C8, 0x42C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0x4242, 0xC842, 0xC8C8, 0xC8C8, 0x8942, 0xC842,
                    0xC8C8, 0xC8C8, 0x4242, 0x4289, 0xC8C8, 0xC8C8, 0x4242, 0x8989, 0x8989, 0x8989,
                    0x42C8, 0x8942, 0x8989, 0x8989, 0xC8C8, 0x8942, 0x8989, 0x8989, 0xC8C8, 0x8942,
                    0x8989, 0x8989, 0xC8C8, 0x42C8, 0x8989, 0x8989, 0xC8C8, 0x42C8, 0x8989, 0x8989,
                    0xC8C8, 0x42C8, 0x8942, 0x8989, 0xC8C8, 0xC8C8, 0x8942, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x4289, 0xC8C8, 0x8989, 0x8989, 0x4289, 0xC8C8, 0x8989, 0x8989,
                    0x4289, 0xC8C8, 0x8989, 0x8989, 0x4289, 0xC8C8, 0x8989, 0x8989, 0x4289, 0xC8C8,
                    0x8989, 0x8989, 0x4289, 0xC8C8, 0x8989, 0x8989, 0x4289, 0xC8C8, 0x8989, 0x8989,
                    0x4289, 0xC8C8, 0xC8C8, 0xC8C8, 0x42C8, 0x4289, 0xC8C8, 0xC8C8, 0x8942, 0xC842,
                    0xC8C8, 0xC8C8, 0x8942, 0xC842, 0xC8C8, 0x42C8, 0x4289, 0xC842, 0xC8C8, 0x42C8,
                    0x4289, 0xC8C8, 0xC8C8, 0x42C8, 0x4289, 0xC8C8, 0xC8C8, 0x42C8, 0x4289, 0xC8C8,
                    0xC8C8, 0x42C8, 0x4289, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0x42C8, 0x8942, 0xC842, 0xC8C8, 0xC8C8, 0x8942, 0xC842, 0xC8C8, 0xC8C8, 0x4242,
                    0x4289, 0xC8C8, 0xC8C8, 0x42C8, 0x4289, 0xC842, 0xC8C8, 0x42C8, 0x8989, 0xC842,
                    0xC8C8, 0x42C8, 0x8989, 0x4289, 0xC8C8, 0x42C8, 0x8989, 0x4289, 0x42C8, 0x8942,
                    0x8989, 0x4289, 0xC8C8, 0xC8C8, 0x8942, 0x8989, 0xC8C8, 0xC8C8, 0x8942, 0x8989,
                    0xC8C8, 0xC8C8, 0x4242, 0x8989, 0xC8C8, 0xC8C8, 0x42C8, 0x8989, 0xC8C8, 0xC8C8,
                    0x42C8, 0x8989, 0xC8C8, 0xC8C8, 0x42C8, 0x8989, 0xC8C8, 0xC8C8, 0x42C8, 0x8989,
                    0xC8C8, 0xC8C8, 0x42C8, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x4289, 0xC8C8,
                    0x8989, 0x8989, 0x4242, 0x42C8, 0x8989, 0x8989, 0x4242, 0x8C42, 0x8989, 0x8989,
                    0x8C42, 0x8C8C, 0x8989, 0x8989, 0x8C42, 0x8C8C, 0x8989, 0x8989, 0x8C42, 0x428C,
                    0x8989, 0x4289, 0x8C42, 0x4242, 0x8989, 0x4289, 0x4242, 0x4242, 0xC8C8, 0x42C8,
                    0x4289, 0x4242, 0x4242, 0x4242, 0x8989, 0x4242, 0x8C8C, 0x4242, 0x8989, 0x0B42,
                    0x8C8C, 0x8942, 0x8989, 0x0B42, 0x8C8C, 0x4242, 0x8989, 0x0B42, 0x8C8C, 0x428C,
                    0x8989, 0x0B42, 0x8C8C, 0x8942, 0x8989, 0x4242, 0x4242, 0x8989, 0x8989, 0x4289,
                    0xC842, 0xC8C8, 0xC8C8, 0xC8C8, 0x420B, 0xC842, 0xC8C8, 0x42C8, 0x0B0B, 0x420B,
                    0x4242, 0x4242, 0x0B0B, 0x0B0B, 0x0B0B, 0x420B, 0x0B0B, 0x0B0B, 0x0B0B, 0x420B,
                    0x0B0B, 0x0B0B, 0x0B0B, 0x4242, 0x0B0B, 0x0B0B, 0x0B0B, 0x8942, 0x0B42, 0x0B0B,
                    0x0B0B, 0x8942, 0x42C8, 0x4242, 0x4242, 0xC8C8, 0x4242, 0x8989, 0x8989, 0x4242,
                    0x8942, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8, 0xC8C8,
                    0xC8C8, 0x42C8, 0x4242, 0x4242, 0xC8C8, 0x4242, 0x4242, 0x0B42, 0x4242, 0x0B42,
                    0x0B42, 0x0B0B, 0x0B0B, 0x0B0B, 0x0B42, 0x0B0B, 0x0B0B, 0x0B0B, 0x0B42, 0x0B0B,
                    0x0B0B, 0x0B0B, 0x0B42, 0x0B0B, 0x0B0B, 0x0B0B, 0x4242, 0x8989, 0x8989, 0x4242,
                    0x4242, 0x8989, 0x4289, 0x4242, 0x420B, 0x8989, 0x4289, 0x8C8C, 0x0B0B, 0x8942,
                    0x4289, 0x8C42, 0x0B0B, 0x8942, 0x8989, 0x8C42, 0x0B0B, 0x8942, 0x8989, 0x8C42,
                    0x420B, 0x8942, 0x8989, 0x4242, 0x4242, 0x8989, 0x8989, 0x8989, 0xC8C8, 0xC8C8,
                    0x42C8, 0x8989, 0x4242, 0x4242, 0x42C8, 0x8989, 0x8C8C, 0x8C8C, 0x4242, 0x8989,
                    0x8C8C, 0x8C8C, 0x428C, 0x8989, 0x8C8C, 0x8C8C, 0x428C, 0x8989, 0x4242, 0x8C8C,
                    0x428C, 0x8989, 0x4242, 0x428C, 0x4242, 0x8989, 0x8989, 0x4242, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x4289, 0x8989, 0x8989, 0x8989, 0x4242, 0x0B42, 0x0B0B, 0x0B0B, 0x8942,
                    0x0B42, 0x0B0B, 0x0B0B, 0x8942, 0x0B42, 0x0B0B, 0x0B0B, 0x8942, 0x0B42, 0x0B0B,
                    0x0B0B, 0x8942, 0x0B42, 0x0B0B, 0x0B0B, 0x8942, 0x0B42, 0x0B0B, 0x0B0B, 0x8942,
                    0x0B0B, 0x0B0B, 0x0B0B, 0x4242, 0x0B0B, 0x0B0B, 0x0B0B, 0x0B0B, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8942, 0x8989, 0x8989, 0x8989,
                    0x4242, 0x0B0B, 0x0B0B, 0x0B0B, 0x4289, 0x0B0B, 0x0B0B, 0x0B0B, 0x8989, 0x0B42,
                    0x0B0B, 0x0B0B, 0x8989, 0x0B42, 0x0B0B, 0x0B0B, 0x8989, 0x0B42, 0x0B0B, 0x0B0B,
                    0x8989, 0x0B42, 0x0B0B, 0x0B0B, 0x8989, 0x0B42, 0x0B0B, 0x0B0B, 0x4242, 0x0B0B,
                    0x0B0B, 0x0B0B, 0x8942, 0x8989, 0x8989, 0x8989, 0x4242, 0x8989, 0x8989, 0x8989,
                    0x420B, 0x8989, 0x8989, 0x8989, 0x420B, 0x8989, 0x8989, 0x8989, 0x420B, 0x8942,
                    0x8989, 0x8989, 0x0B0B, 0x8942, 0x8989, 0x8989, 0x0B0B, 0x8942, 0x8989, 0x8989,
                    0x0B0B, 0x8942, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,
                    0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989, 0x8989,};

const u16 characterPalette[] = {
                    0x0000, 0x1800, 0x3000, 0x4C00, 0x6400, 0x7C00, 0x0006, 0x1806, 0x3006, 0x4C06,
                    0x6406, 0x7C06, 0x000C, 0x180C, 0x300C, 0x4C0C, 0x640C, 0x7C0C, 0x0013, 0x1813,
                    0x3013, 0x4C13, 0x6413, 0x7C13, 0x0019, 0x1819, 0x3019, 0x4C19, 0x6419, 0x7C19,
                    0x001F, 0x181F, 0x301F, 0x4C1F, 0x641F, 0x7C1F, 0x00C0, 0x18C0, 0x30C0, 0x4CC0,
                    0x64C0, 0x7CC0, 0x00C6, 0x18C6, 0x30C6, 0x4CC6, 0x64C6, 0x7CC6, 0x00CC, 0x18CC,
                    0x30CC, 0x4CCC, 0x64CC, 0x7CCC, 0x00D3, 0x18D3, 0x30D3, 0x4CD3, 0x64D3, 0x7CD3,
                    0x00D9, 0x18D9, 0x30D9, 0x4CD9, 0x64D9, 0x7CD9, 0x00DF, 0x18DF, 0x30DF, 0x4CDF,
                    0x64DF, 0x7CDF, 0x0180, 0x1980, 0x3180, 0x4D80, 0x6580, 0x7D80, 0x0186, 0x1986,
                    0x3186, 0x4D86, 0x6586, 0x7D86, 0x018C, 0x198C, 0x318C, 0x4D8C, 0x658C, 0x7D8C,
                    0x0193, 0x1993, 0x3193, 0x4D93, 0x6593, 0x7D93, 0x0199, 0x1999, 0x3199, 0x4D99,
                    0x6599, 0x7D99, 0x019F, 0x199F, 0x319F, 0x4D9F, 0x659F, 0x7D9F, 0x0260, 0x1A60,
                    0x3260, 0x4E60, 0x6660, 0x7E60, 0x0266, 0x1A66, 0x3266, 0x4E66, 0x6666, 0x7E66,
                    0x026C, 0x1A6C, 0x326C, 0x4E6C, 0x666C, 0x7E6C, 0x0273, 0x1A73, 0x3273, 0x4E73,
                    0x6673, 0x7E73, 0x0279, 0x1A79, 0x3279, 0x4E79, 0x6679, 0x7E79, 0x027F, 0x1A7F,
                    0x327F, 0x4E7F, 0x667F, 0x7E7F, 0x0320, 0x1B20, 0x3320, 0x4F20, 0x6720, 0x7F20,
                    0x0326, 0x1B26, 0x3326, 0x4F26, 0x6726, 0x7F26, 0x032C, 0x1B2C, 0x332C, 0x4F2C,
                    0x672C, 0x7F2C, 0x0333, 0x1B33, 0x3333, 0x4F33, 0x6733, 0x7F33, 0x0339, 0x1B39,
                    0x3339, 0x4F39, 0x6739, 0x7F39, 0x033F, 0x1B3F, 0x333F, 0x4F3F, 0x673F, 0x7F3F,
                    0x03E0, 0x1BE0, 0x33E0, 0x4FE0, 0x67E0, 0x7FE0, 0x03E6, 0x1BE6, 0x33E6, 0x4FE6,
                    0x67E6, 0x7FE6, 0x03EC, 0x1BEC, 0x33EC, 0x4FEC, 0x67EC, 0x7FEC, 0x03F3, 0x1BF3,
                    0x33F3, 0x4FF3, 0x67F3, 0x7FF3, 0x03F9, 0x1BF9, 0x33F9, 0x4FF9, 0x67F9, 0x7FF9,
                    0x03FF, 0x1BFF, 0x33FF, 0x4FFF, 0x67FF, 0x7FFF, 0x0000, 0x0000, 0x0000, 0x0000,
                    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
                    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
                    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
                    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,};

_________________
I rather have a compiler than a girl... A compiler isn't complaining all the time!

#1425 - DennisBor - Sat Jan 18, 2003 3:25 pm

Indeed it was my converter, stupid of me to use the PCX2GBA tool instead of PCX2SPRITE

:D

A lot of thanks to all you guys
_________________
I rather have a compiler than a girl... A compiler isn't complaining all the time!

#1447 - JonH - Sun Jan 19, 2003 12:04 am

no problem! don't forget to share with us your demos and games that you make ;)

#1459 - NEiM0D - Sun Jan 19, 2003 1:21 am

hee leuk om een nederlander te zien!