Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

You'll need to modify those file along the way when you'll want to include graphics or audio:

- Makefile: this file contains instructions on how to compile the game into a valid SNES rom. Depending on your project, you might have to modify it to include the name of the graphics files / audio file to include into your project.

- data.asm : this file list where all the data (graphics, audio, tilemaps, etc) are going to be stored in the ROM. Basically a SNES rom is a combination of several "slots" (or "banks") of 32kb. This file is used to define what data goes were, and will have to be modified each time you want to add a new asset into the rom.

- hdr.asm: this file is the "rom header". The only thing you'll need to modify in it, is the game title, all the other params are OK for most projects :)

Regarding Makefile, I suggest you to read tutorial / watch video about how to use them too, as it's a common topic in many programming projects :).

The other aspects are specific to the SNES and PVSNESLib, and you'll find more details about them in the Wiki:

https://github.com/alekmaul/pvsneslib/wiki/Sprites

Actually, once you're more familiar with C, I suggest you to follow the tutorial steps from the wiki:

https://github.com/alekmaul/pvsneslib/wiki/Introduction

You'll learn how to display text and sprites on screen.

Do "data.asm" is a bank of sorts that holds the assets, and "template.c " pulls/references those assets?

Yes. To do the link, you'll simply import the definitions from data.asm as "extern variables" in your C file.

For example, in my data.asm I have the lines:

spritesGFX:
.incbin "sprites16.pic"
spritesGFX_end:

(the "sprites16.pic" file being a BMP file converted to the SNES format by PVSNESLib)

Then, in my C file, in the variable declarations I use the line:

extern char spritesGFX, spritesGFX_end;

Now I can use those variables in my code: "spritesGFX" is the beginning of the graphical data, while "spritesGFX_end" is their end.

That way, I can load the graphical data from the ROM to the VRAM using the following line:

oamInitGfxSet(&spritesGFX, (&spritesGFX_end-&spritesGFX), &spritesPAL, (&spritesPAL_end-&spritesPAL), 0, 0x4000, OBJ_SIZE16);

The "&" in front of the variable name is meant to indicate that I don't need the variable value, but their address in memory (well, in that case in ROM), as we'll use the start/end address to load the data in VRAM (at least, that's how PVSNESLib works!)

All this code comes directly for the source code of Keeping SNES Alive btw.

(+1)

Thanks for the directions! I'll start working on a pong-clone over the next few days to get the hang of C.