extern char gfxpsrite, gfxpsrite_end;
extern char palsprite, palsprite_end;
#define FRAMES_PER_ANIMATION 3
typedef struct
{
s16 x, y;
u16 gfx_frame;
u16 anim_frame;
u8 state;
u8 flipx;
} Monster;
enum SpriteState
{
W_DOWN = 0,
W_UP = 1,
W_RIGHT = 2,
W_LEFT = 2
};
enum
{
SCREEN_TOP = -16,
SCREEN_BOTTOM = 224,
SCREEN_LEFT = -16,
SCREEN_RIGHT = 256
};
const char sprTiles[9] =
{
0, 2, 4, 6, 8, 10, 12, 14, 32};
int main(void)
{
unsigned short pad0, i;
Monster monster = {100, 100};
oamSet(0, monster.x, monster.y, 0, 0, 0, 0, 0);
while (1)
{
if (pad0)
{
{
if (monster.y >= SCREEN_TOP)
monster.y--;
monster.state = W_UP;
monster.flipx = 0;
}
{
if (monster.x >= SCREEN_LEFT)
monster.x--;
monster.state = W_LEFT;
monster.flipx = 1;
}
{
if (monster.x <= SCREEN_RIGHT)
monster.x++;
monster.state = W_RIGHT;
monster.flipx = 0;
}
{
if (monster.y <= SCREEN_BOTTOM)
monster.y++;
monster.state = W_DOWN;
monster.flipx = 0;
}
monster.anim_frame++;
if (monster.anim_frame >= FRAMES_PER_ANIMATION)
monster.anim_frame = 0;
}
monster.gfx_frame = sprTiles[monster.anim_frame + monster.state * FRAMES_PER_ANIMATION];
oamSet(0, monster.x, monster.y, 3, monster.flipx, 0, monster.gfx_frame, 0);
}
return 0;
}
void bgSetDisable(u8 bgNumber)
Disable a BG in the actual SNES mode.
void consoleInit(void)
Initialize console.
void WaitForVBlank(void)
Wait for vblank interrupt
the master include file for snes applications.
#define OBJ_SIZE16_L32
default OAM size 16x16 (SM) and 32x32 (LG) pix for OBJSEL register
Definition: sprite.h:42
void oamSetVisible(u16 id, u8 hide)
Hide or show a sprite.
void oamSetEx(u16 id, u8 size, u8 hide)
Put the correct size and hide or show a sprite.
void oamInitGfxSet(u8 *tileSource, u16 tileSize, u8 *tilePalette, u16 paletteSize, u8 tilePaletteNumber, u16 address, u8 oamsize)
Initializes a sprites Gfx and Loads the GFX into VRAM.
void oamSet(u16 id, u16 xspr, u16 yspr, u8 priority, u8 hflip, u8 vflip, u16 gfxoffset, u8 paletteoffset)
sets an oam entry to the supplied values
void setScreenOn(void)
Put screen On.
void setMode(u8 mode, u8 size)
Set the SNES hardware to operate in new display mode.