PVSnesLib  4.6.0
Documentation to code in C or ASM for the Nintendo SNES
Loading...
Searching...
No Matches
graphics/Sprites/MetaSprite/MetaSprite.c
/*---------------------------------------------------------------------------------
Simple Metasprite demo
-- alekmaul
---------------------------------------------------------------------------------*/
#include <snes.h>
#include "pvsneslib.inc"
#include "spritehero32_meta.inc"
#include "spritehero32.inc"
#include "spritehero16_meta.inc"
#include "spritehero16.inc"
#include "spritehero16_1_meta.inc"
#include "spritehero16_1.inc"
#include "spritehero16_1.inc"
#include "spritehero8_meta.inc"
#include "spritehero8.inc"
//---------------------------------------------------------------------------------
int main(void)
{
// Copy tiles to VRAM
bgInitTileSet(0, &pvsneslib_til, &pvsneslib_pal, 0, (&pvsneslib_tilend - &pvsneslib_til), (&pvsneslib_palend - &pvsneslib_pal), BG_16COLORS, 0x4000);
// Copy pvsneslib_map to VRAM
bgInitMapSet(0, (u8 *) &pvsneslib_map, (&pvsneslib_mapend - &pvsneslib_map), SC_32x32, 0x6800);
// Init Sprites gfx and palette with default size of 32x32
// Init Sprites pal and graphics (same palette for the 3 sprites, but we also can manage differente palette)
setPalette(&spritehero32_pal, 128 + 0 * 16, 16 * 2);
dmaCopyVram((u8 *) &spritehero32_til,0x0000, (&spritehero32_tilend - &spritehero32_til));
dmaCopyVram((u8 *) &spritehero16_til,0x1600, (&spritehero16_tilend - &spritehero16_til));
dmaCopyVram((u8 *) &spritehero16_1_til,0x1000, (&spritehero16_1_tilend - &spritehero16_1_til));
// if size 8 enable dmaCopyVram((u8 *) &spritehero8_til,0x1600, (&spritehero8_tilend - &spritehero8_til));
// Now Put in 16 color mode and disable other BGs except 1st one
setMode(BG_MODE1, 0);
// draw the sprite
oamMetaDraw32(0, 16,140, (u8 *) spritehero32_metasprites[0],0x0000);
oamMetaDraw16(8, 144,140, (u8 *) spritehero16_metasprites[0],OBJ_SMALL,0x0600);
oamMetaDraw16(16, 184,140, (u8 *) spritehero16_1_metasprites[0],OBJ_SMALL,0x0000);
//if size 8 enable oamMetaDraw8(16, 200,140, (u8 *) spritehero8_metasprites[0],0x0600);
// Wait for nothing :P
while (1)
{
// prepare next frame and wait vblank
}
return 0;
}
void bgSetDisable(u8 bgNumber)
Disable a BG in the actual SNES mode.
void bgInitMapSet(u8 bgNumber, u8 *mapSource, u16 mapSize, u8 sizeMode, u16 address)
Initializes a Map Set and loads it into SNES VRAM.
void bgInitTileSet(u8 bgNumber, u8 *tileSource, u8 *tilePalette, u8 paletteEntry, u16 tileSize, u16 paletteSize, u16 colorMode, u16 address)
Initializes a Tile Set and Loads the Tile GFX into VRAM.
void dmaCopyVram(u8 *source, u16 address, u16 size)
copy data from source to destination using channel 0 of DMA available channels in half words
void WaitForVBlank(void)
Waits for a 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 oamMetaDraw16(u16 id, s16 x, s16 y, u8 *sprmeta, u16 sprsize, u16 ofsgfx)
Add a Meta sprite on screen (can be composed only of 16x16 sprites). oambuffer[id] needs to be popula...
void oamMetaDraw32(u16 id, s16 x, s16 y, u8 *sprmeta, u16 ofsgfx)
Add a Meta sprite on screen (can be composed only of 16x16 sprites). oambuffer[id] needs to be popula...
void oamInitGfxAttr(u16 address, u8 oamsize)
Initializes the default sprite size and address in VRAM.
void setScreenOn(void)
Put screen On.
#define setPalette(palette, paletteEntry, paletteSize)
Change a palette in CGRAM.
Definition video.h:393
void setMode(u8 mode, u8 size)
Set the SNES hardware to operate in new display mode.