Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Thanks for all the answers. I've got a few youtube videos about learning C bookmarked, and I've got a few apps for learning C downloaded. As far as programming goes, do I need to worry about messing with the other files (data.asm, hdr.asm, Makefile) or not?

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.