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.

Graphics > Noob - 2d sprite issues

#10090 - nazuraku - Tue Aug 26, 2003 7:04 pm

I used objective to create a sprite and I have been pulling my hair out trying to figure out how to read it into OAM
....

I am not really familier with how 2d sprites work, I understand the concept but I am obviously missing something... This is what I am trying to do....


for(y_loop = 0; y_loop < 64; y_loop++)
{
for(x_loop = 0; x_loop < 64; x_loop++)
{
OAMData[x_loop + y_loop * 128] = arrow_ROOT[0].pFrameTable[0].pFrameHeader[0].pPattern[index++] | ( arrow_ROOT[0].pFrameTable[0].pFrameHeader[0].pPattern[index++] << 8);

} //end for x_loop
} //end for y_loop

its really just guessing, I tried what was in the Pern tutorial 3 origionally and I added to it. I figured I could follow the same format since it is a 64x64 2d sprite same as the Pern tut... but it doesnt work... So I have been fiddling with it ever since...

this is the sprite I am dealing with....

#include "arrow.h"

// optimised from arrow.bmp...

// 16 - colour Palette (BGR order, 5:5:5)
static const OBJECTIVE_PALETTE FRAME_0_arrow__PALETTE[] = {

// Nb: Transparent colour defined & colour 0 shifted to last colour

0x7fff,0x5c00,0x02e0,0x5ee0,0x0017,0x5c17,0x02f7,0x6318,
0x6378,0x533e,0x4000,0x0200,0x4200,0x0010,0x4010,0x0210,
0x0140,0x2940,0x4140,0x5940,0x6d40,0x7d40,0x0200,0x2a00,
0x4200,0x5a00,0x6e00,0x7e00,0x02c0,0x2ac0,0x42c0,0x5ac0,
0x6ec0,0x7ec0,0x0360,0x2b60,0x4360,0x5b60,0x6f60,0x7f60,
0x03e0,0x2be0,0x43e0,0x5be0,0x6fe0,0x7fe0,0x000a,0x280a,
0x400a,0x580a,0x6c0a,0x7c0a,0x014a,0x294a,0x414a,0x594a,
0x6d4a,0x7d4a,0x020a,0x2a0a,0x420a,0x5a0a,0x6e0a,0x1a0a,
0x02ca,0x2aca,0x42ca,0x5aca,0x6eca,0x7eca,0x036a,0x2b6a,
0x436a,0x5b6a,0x6f6a,0x7f6a,0x03ea,0x2bea,0x43ea,0x5bea,
0x6fea,0x7fea,0x0010,0x2810,0x4010,0x5810,0x6c10,0x7c10,
0x0150,0x2950,0x4150,0x5950,0x6d50,0x7d50,0x0210,0x2a10,
0x4210,0x5a10,0x6e10,0x7e10,0x02d0,0x2ad0,0x42d0,0x5ad0,
0x6ed0,0x7ed0,0x0370,0x2b70,0x4370,0x5b70,0x6f70,0x7f70,
0x03f0,0x2bf0,0x43f0,0x5bf0,0x6ff0,0x7ff0,0x0016,0x2816,
0x4016,0x5816,0x6c16,0x7c16,0x0156,0x2956,0x4156,0x5956,
0x6d56,0x7d56,0x0216,0x2a16,0x4216,0x5a16,0x6e16,0x7e16,
0x02d6,0x2ad6,0x42d6,0x5ad6,0x6ed6,0x7ed6,0x0376,0x2b76,
0x4376,0x5b76,0x6f76,0x7f76,0x03f6,0x2bf6,0x43f6,0x5bf6,
0x6ff6,0x7ff6,0x001b,0x281b,0x401b,0x581b,0x6c1b,0x7c1b,
0x015b,0x295b,0x415b,0x595b,0x6d5b,0x7d5b,0x021b,0x2a1b,
0x421b,0x5a1b,0x6e1b,0x7e1b,0x02db,0x2adb,0x42db,0x5adb,
0x6edb,0x7edb,0x037b,0x2b7b,0x437b,0x5b7b,0x6f7b,0x7f7b,
0x03fb,0x2bfb,0x43fb,0x5bfb,0x6ffb,0x7ffb,0x001f,0x281f,
0x401f,0x581f,0x6c1f,0x7c1f,0x015f,0x295f,0x415f,0x595f,
0x6d5f,0x7d5f,0x021f,0x2a1f,0x421f,0x5a1f,0x6e1f,0x7e1f,
0x02df,0x2adf,0x42df,0x5adf,0x6edf,0x7edf,0x037f,0x2b7f,
0x437f,0x5b7f,0x6f7f,0x7f7f,0x03ff,0x2bff,0x43ff,0x5bff,
0x6fff,0x6318,0x6318,0x6739,0x6739,0x6b5a,0x6b5a,0x6b5a,
0x6f7b,0x6f7b,0x6f7b,0x739c,0x739c,0x77bd,0x77bd,0x77bd,
0x7bde,0x7bde,0x7bde,0x7fff,0x7fff,0x4f39,0x7ffe,0x5294,
0x4210,0x7c00,0x03e0,0x7fe0,0x001f,0x7c1f,0x03ff,0x0000,
};

// MetaOBJ
static const struct OBJECTIVE_COORD FRAME_0_arrow__COORD[] = {

{ 0, 0},{ 8, 0},{ 16, 0},{ 24, 0},{ 32, 0},{ 40, 0},{ 48, 0},{ 56, 0},
{ 0, 8},{ 8, 8},{ 16, 8},{ 24, 8},{ 32, 8},{ 40, 8},{ 48, 8},{ 56, 8},
{ 0, 16},{ 8, 16},{ 16, 16},{ 24, 16},{ 32, 16},{ 40, 16},{ 48, 16},{ 56, 16},
{ 0, 24},{ 8, 24},{ 16, 24},{ 24, 24},{ 32, 24},{ 40, 24},{ 48, 24},{ 56, 24},
{ 0, 32},{ 8, 32},{ 16, 32},{ 24, 32},{ 32, 32},{ 40, 32},{ 48, 32},{ 56, 32},
{ 0, 40},{ 8, 40},{ 16, 40},{ 24, 40},{ 32, 40},{ 40, 40},{ 48, 40},{ 56, 40},
{ 0, 48},{ 8, 48},{ 16, 48},{ 24, 48},{ 32, 48},{ 40, 48},{ 48, 48},{ 56, 48},
{ 0, 56},{ 8, 56},{ 16, 56},{ 24, 56},{ 32, 56},{ 40, 56},{ 48, 56},{ 56, 56},

};

// OBJ data
// 16-colours
static const OBJECTIVE_PATTERN FRAME_0_arrow__PATTERN[] = {
// OBJ @ 0, 0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 8, 0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 16, 0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 24, 0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 32, 0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 40, 0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 48, 0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 56, 0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 0, 8
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 8, 8
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 16, 8
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 24, 8
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0x5e, 0x88, 0xb2, 0xdc, 0x34, 0x5e, 0xb2, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 32, 8
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xb2, 0x88, 0x5e, 0x34, 0xff, 0xff, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xb2, 0x5e, // char 0,0

// OBJ @ 40, 8
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 48, 8
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 56, 8
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 0, 16
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 8, 16
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 16, 16
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xb2, 0xdc, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0x5e, 0xdc, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0x5e, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xff, 0x0f, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x34, 0xb2, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x5e, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 24, 16
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 32, 16
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 40, 16
0xdc, 0x5e, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xb2, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xdc, 0xdc, 0x5e, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x5e, 0xff, 0xff, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x5e, 0xff, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x0f, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xb2, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 48, 16
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 56, 16
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 0, 24
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 8, 24
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, // char 0,0

// OBJ @ 16, 24
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 24, 24
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 32, 24
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 40, 24
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 48, 24
0xdc, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 56, 24
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 0, 32
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 8, 32
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, // char 0,0

// OBJ @ 16, 32
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 24, 32
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 32, 32
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 40, 32
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 48, 32
0xdc, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 56, 32
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 0, 40
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 8, 40
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 16, 40
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x5e, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x34, 0xb2, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xff, 0x0f, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0x5e, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0x5e, 0xdc, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xb2, 0xdc, // char 0,0

// OBJ @ 24, 40
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 32, 40
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, // char 0,0

// OBJ @ 40, 40
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xb2, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x0f, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x5e, 0xff, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x5e, 0xff, 0xff, 0xdc, 0xdc, 0xdc, 0xdc, 0x5e, 0xff, 0xff, 0xff, 0xdc, 0xdc, 0xb2, 0x0f, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 48, 40
0xdc, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 56, 40
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 0, 48
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 8, 48
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 16, 48
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 24, 48
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0x34, 0x5e, 0xb2, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xff, 0xff, 0xff, 0x34, 0x5e, 0x88, 0xb2, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 32, 48
0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xb2, 0x5e, 0xdc, 0xdc, 0xb2, 0x88, 0x5e, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 40, 48
0xdc, 0x5e, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 48, 48
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 56, 48
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 0, 56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 8, 56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 16, 56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 24, 56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 32, 56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 40, 56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 48, 56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

// OBJ @ 56, 56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // char 0,0

};


static const struct OBJECTIVE_HEADER FRAME_0_arrow__HEADER = {
64,
FRAME_0_arrow__PATTERN,
FRAME_0_arrow__COORD,
0x2000, // 256-colour OAM entry
256,
FRAME_0_arrow__PALETTE,
};



// Frame table points to individual frames
static const struct OBJECTIVE_FRAMETABLE arrow_FRAMETABLE[] = {
&FRAME_0_arrow__HEADER, // 0 arrow.bmp
};


// Root is the entry point for data
// Everything is accessible through this initial structure
const struct OBJECTIVE_ROOT arrow_ROOT[] = {
1, // # frames
arrow_FRAMETABLE
};


//End


if anyone knows this off-hand I would appreciate the help.

Thx

#10096 - nazuraku - Tue Aug 26, 2003 11:29 pm

I just wanted to note that it does load... its just garbled.. I am assuming its a very simple fix. I am just unsure how it is read into memory exactly.

#10107 - Cyberman - Wed Aug 27, 2003 3:54 am

well if for example your arrow is 32 pixels by 32 pixels (assumed)
Your arrow is actually broken up into 16 tiles that are 8 by 8 pixels each (weather 16 colors or 256 colors per pixel). These are arranged in various ways in memory most often they are arranged linearly.
So
Code:

[0][1][2][3]
[4][5][6][7]
[8][9][A][B]
[C][D][E][F]

i8 x8 blocks are arranged in VRAM this way.
Code:

[0][1][2][3][4][5][6][7][8][9][A][B][C][D][E][F]


each 8 by 8 block is something like a VERY small screen (grin). And the pixels in it are arranged linearly. So if you have these blocks you will note that a pixel at 8,0 is just after the pixel at 7,7

Meaning It's not linearly arranged in memory.

That should help you.
Cyb

#10112 - RaBBi - Wed Aug 27, 2003 10:09 am

nazuraku :
What sort of files do you use as input for Objective ?
Are they like simple picture with frames in a row ? or in a colunm ?
_________________
Sorry for my poor english, but it would be worst for you to understand me if I speak in my native language, French ^^

#10116 - nazuraku - Wed Aug 27, 2003 3:05 pm

Thanks for your help everyone, its actually just a one frame simple picture...

I think I figured it out, I didnt realize, and I really still dont totally grasp it yet, that when objective creates multiple objects even when they are the same size as a standard tile it lists them in different order. So I was getting confused trying to read it into memory... it just writes out a blob... in either 1D or 2D... I have since just created an object the size of the sprite so I dont have to deal with it yet.... Even though I had the objects set at 2x2 (same size as a standard tile) objective lists them out to be read in a vertical order as opposed to a horizontal order. I am assuming that if its using mulitple objects lets say at 2x2 chars on a 4x4 char sprite it would read into memory as follows... please some correct me if I am wrong...

I havent really tested this... but from what I can see this what it looks like to me...

obj1 obj3
0102 0910
0304 1112

obj2 obj4
0506 1314
0708 1516

as opposed to
tile1 tile2
0102 0506
0304 0708

tile3 tile4
0910 1112
1314 1516

if the size of the objects were larger than 2x2 chars it would be even more complex ie... as in a 4x4 obj scenario

obj1
0102 0506 3334...etc
0304 0708

0910 1112
1314 1516

obj2
1718 2122
1920 2324

2526 2930
2728 3132

if anyone has any other ideas please let me know, or if I am just totally off... also please also let me know.

Naz

#10121 - RaBBi - Wed Aug 27, 2003 4:24 pm

I know it's not the matter but how can you make a animation (cause I searched Objective on the net and it's presented as a sprite animation generator) with one frame ?

Perhaps I don't understand the purpose of this soft ?
_________________
Sorry for my poor english, but it would be worst for you to understand me if I speak in my native language, French ^^

#10125 - nazuraku - Wed Aug 27, 2003 6:30 pm

Well it can create sprite animation, which is why I started using it, since it seemed to be the most robust of what I have seen. I think its big benifit is the fact that it allows for the creation of multiple objects that could be loaded into seperate sprites for large multipsprite based animation. It then loads these into an array of frames which you could then loop through... It seems to be the most convient method I have come accross yet.. Also since one frame is in essense a static sprite it also works fine for that also.... which is what I did...

the red text are calls to the auto generated array that objective makes... I am just using the first frame.

SetMode( MODE_2 | OBJ_ENABLE | OBJ_MAP_1D );

for( i = 0; i < 16; i++ )
//SPRITE_PALETTE[i] = sprite1Palette[i];
SPRITE_PALETTE[i] = link1_ROOT[0].pFrameTable[0].pFrameHeader[0].pPalette[i];
InitializeSprites();

sprites[0].attribute0 = COLOR_16 | SQUARE | ROTATION_FLAG | y;
sprites[0].attribute1 = SIZE_16 | ROTDATA( 0 ) | x;
sprites[0].attribute2 = char_number;


u16* tempData = (u16*) link1_ROOT[0].pFrameTable[0].pFrameHeader[0].pPattern;
for(x_loop = 0; x_loop < 8; x_loop++)
{
for(y_loop = 0; y_loop < 8; y_loop++)
{
OAMData[index] = tempData[index++];

} //end for x_loop
} //end for y_loop


might help make it clearer

#10130 - RaBBi - Wed Aug 27, 2003 6:59 pm

but if I try to understand you, you put several single frame pictures in Objective input ?
Or one with all frames of the animation ? :/

Sorry to be "heavy" on this...
_________________
Sorry for my poor english, but it would be worst for you to understand me if I speak in my native language, French ^^

#10132 - nazuraku - Wed Aug 27, 2003 7:10 pm

each file is a frame

for instance

objective -16 link1.bmp colors.bmp

this creates a c file names link1.c and a corrisponding header with two frames of animation enclosed... (the -16 flag is for 16 colors)

if you havent been there already you can go to their site at

http://www.taswegian.com/TwoHeaded/objective.html

they also have a product called Framage which seems to take one file and then divide it up into multiple frames... which may be what you are looking for.