Sign in to follow this  
UltimateWarriorDash

SNES development?

Recommended Posts

Hi, I love my Super Nintendo, which I first got at a pawn shop in 2001. I have always preferred console gaming to computer gaming, especially for classic 2D games, and am dismayed that even the best old-style 2D games today are for PC, a system with (by default) no controller. Using the keyboard for movement on a classic Megadrive or SNES-style game just seems sacrilegious to me. The keyboard and mouse arrangement was meant for high-end MMORPGs and FPSs, what I think the PC does best. That's when I heard about people making modern, homebrew games for SNES. I am interested in learning to do so eventually, and was wondering if any of you know how you go about making SNES games. First-off, how did they make cartridge-based games back in the day, what with the possibly very big hardware difference between the intended console and the computer used for developing the game? For now, I know I cannot actually put the thing on a SNES cartridge and play it on my SNES, so I'd like to just focus on developing the ROM image, then playing it on ZSNES or some other emulator (I will not go further into talking about emulators, for obvious legal reasons.) There has GOT to be a way to develop the game using standard game development tools like an IDE and sprite editors, and a MOD tracker for the music (there's a music-conversion utility I found that converts XM tracker format to SPC Super Nintendo format. Unfortunately it is DOS-based and very, VERY hard to use.) Any comments would be very appreciated :) Cheers, -Dash

Share this post


Link to post
Share on other sites
I quick search on google found me http://en.wikibooks.org/wiki/Super_NES_Programming

Not sure if that's what your looking for. Considering you're just going to be running this through an emulator anyways why not just create a regular pc game with the old snes style? It would seem making it for snes when you're not even going to play it on one just over complicates things and reduces the chances you'll ever finish it. Plus it reduces your audience as people are more likely to install a small game than install an emulator and try to load your game in it.

Share this post


Link to post
Share on other sites
Quote:
Considering you're just going to be running this through an emulator anyways why not just create a regular pc game with the old snes style?


Looking at it from a practical viewpoint, this is not a bad idea. The only problem I have with that is, like I said, the PC usually just uses the keyboard and/or mouse for input, which I find very unsatisfying for SNES and Megadrive-style games. Also like I said before, today's PCs are very high-end, mainly designed for very powerful 3D games, not 2D retro ones.

Maybe I'm just a purist, but using mostly just software abstractions to run games that once depended on game-specific hardware just seems fake and uninteresting to me. It certainly doesn't help matters that most music for supposedly "old-school" type games are not realtime-sequenced at all, but rather just prerecorded OGG files like any other modern game. That seems even more fake to me.

I should move on before I start to ramble.

Share this post


Link to post
Share on other sites
The official development route had a proper C compiler and assembly language. They had access to development hardware, documentation, and other materials. These have all been recalled by Nintendo.

Homebrew developers don't have access to the compilers or other resources, and must rely on their own assemblers for the hardware. They don't have the SDKs and must rely on hardware information that has been reverse engineered or occasionally leaked from official sources.

For hardware, homebrew developers must hack an existing game's ROM (it involves a soldering iron) or play their creations on an emulator like ZSNES as you mentioned. Emulators themselves are not a banned topic, since they do have a legitimate purpose for homebrew development.


Google doesn't turn up very much documentation on either of these. See this romhacking.net post as one of the better links for homebrew snes development.

Share this post


Link to post
Share on other sites
Quote:
Original post by Daaark
UWD, you are aware that you can just go down to the store and buy a controller for your PC and then program for it right?


But what of the audience? Not everyone is gonna want to buy a controller for my games.

Quote:
Maybe I'm just a purist, but using mostly just software abstractions to run games that once depended on game-specific hardware just seems fake and uninteresting to me.


Haha, I quoted myself :)

Anyways, why not build a computer of limited graphics and sound ability, designed for controller use and being hooked up to the TV? In short, building your own console. I'm sure it's possible...just get a video card, sound card, disk drive, etc. (in short, everything a computer needs to run,) install Windows XP, strip down Windows to its bare essentials, and design the machine specifically for playing 2D, and limited 3D, games on it.

With a keyboard, mouse and monitor hookups, the machine could be used to develop games yourself. A developer's console.

Share this post


Link to post
Share on other sites
Quote:
Original post by UltimateWarriorDash
But what of the audience? Not everyone is gonna want to buy a controller for my games.


You're not going to be able to produce SNES cartridges anyway. So if you develop for SNES you're already requiring your audience to get an emulator to play. So long as there are arbitrary requirements to play your games, you might as well tell people to get a controller.

Or, better yet, just write a PC game and let users configure their own control schemes.

Share this post


Link to post
Share on other sites
GBA development has similar hardware capabilities as SNES but is more accessible with an active community and tools at gbadev.org. You can run it either through emulators or on hardware via flash carts (which are still sold IIRC).

Failing that, the DS is also a possibility.

Share this post


Link to post
Share on other sites
Quote:
Failing that, the DS is also a possibility.


That is a splendid idea, an idea I neglected to mention because I do not want Nintendo suing me.

My friend started programming for the DS a while back, but gave up. I will definitely look into it.

Share this post


Link to post
Share on other sites
Quote:
Original post by UltimateWarriorDash

Looking at it from a practical viewpoint, this is not a bad idea. The only problem I have with that is, like I said, the PC usually just uses the keyboard and/or mouse for input, which I find very unsatisfying for SNES and Megadrive-style games. Also like I said before, today's PCs are very high-end, mainly designed for very powerful 3D games, not 2D retro ones.


Yes I understood as much from your original post that you think they should only be played with a controller but the options you yourself admitted you had have the same limitations. Everybody with an emulator isn't going to have a controller and you yourself said you have no way to put them on cartrdiges. Anyways I think the controller is going to be the least of your problems if you want to go the pure way for this project :)

Share this post


Link to post
Share on other sites
Quote:
Original post by UltimateWarriorDash
Quote:
Failing that, the DS is also a possibility.


That is a splendid idea, an idea I neglected to mention because I do not want Nintendo suing me.

My friend started programming for the DS a while back, but gave up. I will definitely look into it.


I second the DS idea [smile]. The hardware (at least the 2D) is quite similar to the SNES anyway. Tiled backgrounds, the famous 'Mode 7', the sprite system are all there. You also get to use two processors, 3d, touch and two screens if you so desire. It's quite an interesting little machine to work on.

You also have the advantage of it being easy to take your work around with you :) If it's any help, heres some useful links:

Forum: gbadev.org
Homebrew 'devkit': DevkitPro
Emulator (for testing): no$gba

PS. Nintendo won't sue you :p

Share this post


Link to post
Share on other sites
Quote:
Original post by Driv3MeFar
You're not going to be able to produce SNES cartridges anyway. So if you develop for SNES you're already requiring your audience to get an emulator to play. So long as there are arbitrary requirements to play your games, you might as well tell people to get a controller.


It's never good to say 'never'. I was able to produce a simple game for the SNES and get it onto cartridges (luckily I had a friend who could solder and was up for the challenge) :

Frog Feast

I enjoyed the challenge, rather than the practicality.

I used a very primitive C compiler, with a *lot* of assembly language and optimized C routines to get it running decently. Western Design has since released a C compiler for the 65816. It is based on a compiler that was sold to a few SNES developers.

Share this post


Link to post
Share on other sites
Writing a game for a embedded platform like this, even a relatively recent one like the DS which actually has decent C compilers, can be a very frustrating experience.
Just getting things up and running in a nice development environment can take ages. You have to put up with sub-standard tools like inaccurate emulators and some frustratingly bad debuggers, and you can just forget about things like profilers and bounds-checkers. Not to mention that there's no memory protection to save you from trashing your code, no swap space to save you if you run out of RAM, and if you dare overextend the graphics chip then things just start to disappear.
Is it really dealing with all this just to make the game 'authentic?'

Then again I spend a great deal of time tinkering with limited systems myself, and I'm far from the only one. But that's more out of a desire to take a system to its limits than anything else. To truly impress people and make a PS2 project look like a 'next-gen' game takes years of effort for dozens of people, while a few weeks of work and a timely post on Slashdot can have half the geeks of the world 'ooh-ing and ahh-ing' over a spinning cube on the NES.
Also porting classic games to a new platform is always satisfying for solo-programmers wanting to write a game ;)

Share this post


Link to post
Share on other sites
Only recent controllers have an advantage over the keyboard / mouse combo because of their analog buttons. SNES gamepads predate this, and only have digital buttons, so there isn't much difference between using your keyboard as input anyways.

Use the arrow keys and ASDZXC to mimicked the buttons as default, and let the user program in their gamepad support. I forget the name of it, but there is something called 'action mapping' or something similar that lets users bind whatever input from whatever device to any command they want. If someone was so inclined, they could control your game via unicycle.

Share this post


Link to post
Share on other sites
Quote:
Original post by UltimateWarriorDash
Quote:
Original post by Daaark
UWD, you are aware that you can just go down to the store and buy a controller for your PC and then program for it right?


But what of the audience? Not everyone is gonna want to buy a controller for my games.


Anyone vaguely interested in playing emulators or console-ish games on the PC has already invested the twenty bucks in a gamepad. I just don't see the issue here. Design for gamepad, allow keyboard control as a fallback. Just like emulators.

Share this post


Link to post
Share on other sites
If you're interested, it's not too much trouble to hook up your original SNES pad to the PC via the parallel port. It just takes about 3 bucks in supplies and a few minutes with a soldering iron. You can find plans online. I did one and i love it.

Once you get that out of the way, what platform you make the game for is of no great concern. I'd say just make a PC game with sprites. It'll be much easier than trying to program for the actual SNES or GBA. The people who work on those are/were bit-flipping geniuses.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this