Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Yes, but there are fairly large compared to 8-bit console. The largest commercial games where 6 megabytes (48mbit), so that quite a lot of data as the SNES graphics and audio data don't take that much space!

And if you really need more space, I think you can have mapper chips or  cartridge mapping configurations that allow you to go beyond this limit. Although I haven't looked into that to be honest - for now the standard size fits my SNES projects ;)).

(+1)

Thanks for the answer! 6MB should definitely be enough for my project.

Good luck with your project! And feel free to send it to me if you need beta testers :)

Sounds good!

I do not often use text-based programming languages, nor do I often use libraries. Could you point me in the direction of a tool for writing C and how to set up the PVSNES library?

To set up PVSNESlib, follow the Wiki, it's very well done: https://github.com/alekmaul/pvsneslib/wiki/Installation-with-Windows

For code editor, the Wiki suggest Programmer's Notepad: https://www.pnotepad.org/

Personally, I generally use Scite; https://www.scintilla.org/SciTE.html

If you never programmed in C though, you should be prepared to spent some time navigating the "oddities" of the language. It's very a powerful language, but it also require some "good habits" to avoid nasty bugs. But don't get discouraged / overwhelmed by the apparent complexity of C. To make a simple SNES game you don't need to master all the language features (for example, if pointers seems hard to grasp at first, you can make a game without them). And the more you code in C, the more natural it'll be :).

Thanks for the tips! I'll mess around with C and I'll get back to you if it doesn't work.

This is what my blank "template.c" document looks like, I just finished setting up pvsneslib, but I have a few more questions: Where should I start writing code in the document, what files does the program accept for audio, and how do I make sure I don't trip the restrictions of the SNES, such as color restrictions and background ?

Great that you got the whole thing set up, that's the first step!

If you never programmed in C, I really recommend you to read books / websites / video tutorial about how to code on the language as the next step :).

To answer your question, you can (and will) write code anywhere is the file (more or less). The gameplay code will most likely go after the "put code here" comment. But when you want to use a variable, you'll have to declare it first, so you'll most likely declare the variables after the "#include <snes.h>" file. 

If you trip on color restrictions or audio restrictions, you'll usually see it when running the game on emulator: nothing will show, or the color will be wrong, etc. (retro game development is usually quite scare when it comes to debugging tools :p)

Regarding input, PVSNESlib is quite nice as it accepts:

- BMP for graphics (be careful of the color palette, it needs to have 256 color palette BMP with only the first 16 or 4 colors defined depending on the graphics mode you'll use - usually it'll be 16).

- IT (Impulse tracker) for music and sound effects, if you use the "non-streaming" function. I recommend OpenMPT as a program to create those music and audio files (it's arguably the best "modern" tracker program available) https://openmpt.org/

- WAV for sound effects if you use the streaming functions (beware, it does work well only on NTSC, and it's quite complex to use - I recommend sticking to IT file for beginning)

You can open the source code of Keep SNES alive to see an example of that, the archive contains everything: code, images, sound, music, etc.

But as I said, you should really start by learning how to code in C first, else you'll have an hard time doing anything meaningful. You don't need to take a full course, but at least to learn the "basics" (using and typing variables, loops, creating functions, etc.)

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?