Where is Super NES homebrew?

Discussion of hardware and software development for Super NES and Super Famicom. See the SNESdev wiki for more information.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.
User avatar
AndiNo
Posts: 37
Joined: Wed Nov 25, 2009 5:06 am

Where is Super NES homebrew?

Post by AndiNo »

In [url=http://nesdev.com/bbs/viewtopic.php?p=58882#58882]this post[/url], blargg wrote:I'm not sure what use it is besides a tech demo though. :)
Why doesn't someone with your knowledge (I think there are some people here) create a homebrew SNES game that can keep up with some of the classic games and make it use your sound "engine" for example? :) AFAIK there are only 2 (!) SNES homebrew games available which I can't really understand. Is the SNES so much more difficult to handle than the NES for example?
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

AndiNo wrote:Is the SNES so much more difficult to handle than the NES for example?
I can think of several reasons why people who have considered Super NES homebrew may have switched to the NES or the Game Boy Advance:
  • NES is conceptually simpler, with only 30 registers total and only one assembly language that's well supported by sophisticated free tools. Getting an SPC700 mode into ca65 would help.
  • Standards for art are lower on NES than on Super NES due to fewer colors and fewer layers. Super NES might hit the asset complexity wall sooner.
  • For games that can benefit from Super NES style graphics, the GBA is an easier beast to tame. It has one 32-bit CPU fast enough for C and a more orthogonal register map. Moreover, copiers for homebrew have been available since half a year after release.
mic_
Posts: 922
Joined: Thu Oct 05, 2006 6:29 am

Post by mic_ »

Getting an SPC700 mode into ca65 would help.
WLA-DX has supported the SPC700 for a long time.

I largely agree on the other points though. The GBA PPU in fact is basically an improved SNES PPU, but the GBA is so much easier to program for. There was somewhat of a SNES coding scene back in the early '90s, with groups making cracktros and demos for the SNES (mainly using their Amigas I guess). But since then there has been very little interest in SNES programming compared to other retro systems.
User avatar
Memblers
Site Admin
Posts: 4044
Joined: Mon Sep 20, 2004 6:04 am
Location: Indianapolis
Contact:

Post by Memblers »

Great sound demo! Next time I burn a CD for my SNES clone (Gamestation) I'll have to see what it does on there.
AndiNo wrote:Why doesn't someone with your knowledge (I think there are some people here) create a homebrew SNES game that can keep up with some of the classic games and make it use your sound "engine" for example? :) AFAIK there are only 2 (!) SNES homebrew games available which I can't really understand. Is the SNES so much more difficult to handle than the NES for example?
If a game is going to use the SNES PPU to it's full capacity, it can get complex. It's relatively easy to max out what you can display on the NES screen, before resorting to extra hardware (mappers).

Most SNES games are 1024kB. It takes a good amount of creativity and dedication to create that much code and data from nothing. Compared to NES, where you can create 24kB or 40kB of code/data and potentially have it be just as great as the old classics.
User avatar
Memblers
Site Admin
Posts: 4044
Joined: Mon Sep 20, 2004 6:04 am
Location: Indianapolis
Contact:

Post by Memblers »

mic_ wrote:
Getting an SPC700 mode into ca65 would help.
WLA-DX has supported the SPC700 for a long time.
I used TASM (Table Assembler) when I made the NSF player, there was a table file for it included with some SPC docs. TASM worked fine, it just had a few odd things like having to do JMP !addr or something like that for addresses.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

In fact I was originally considering SNES developement, but for reasons tepples mentionned switched to NES. Also one reason he doesn't mention is the availiblitity of a lot of demoes and tutorials for the NES. (okay I was following CRAPPY tutorials and admired CRAPY demoes that only ran on nesticle back then, but yet it did the thing to make me want to do the same thing and want to code my NES games).

WLA supports SPC700, but to say the true there is a couple of bugs in the SPC700 version, and it's annoying when you see your program has bugs not because you did an error, but because of the assembler.
You have to be especially careful with the adressing modes. Like in the 6502 version where you have to add .w all the time to specify you're using a 16-bit opcode, in the SPC 700 you have to use a ! to specify 16-bit mode I think.
Useless, lumbering half-wits don't scare us.
User avatar
blargg
Posts: 3715
Joined: Mon Sep 27, 2004 8:33 am
Location: Central Texas, USA
Contact:

Post by blargg »

Wla is a terrible assembler. It's full of bugs and unintuitive features. But, it's fully adequate for SPC-700 programming, since you just need to write your music engine, and you've got a flat 64K memory space. But the fact that you have to program a second processor just to get sound is a lot more complex than using the NES APU. It's kind of like the old BASIC home computers versus having to deal with a whole OS just to output PCM.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

Well I currently use WLA, but I have to admit I'm not fully satisfacted - I'm still mostly satisfacted. I switched many times in the order X816 -> NESASM -> XorCyst (by the way is Snow Bro still alive ?) -> Wla-DX.

Do I need to do yet another switch to CC65 ? You say there is unintuitive features, but just like CC65 you need a few config files before you can compile anything. The good thing is the # of taget CPUs supported, and I only experienced bugs with the SPC700 verison, not 6502. The problem is that back then the author was responding to messages and taking request in accound, but now it seems to have kinda quited his work and there is no updates any longer, and this is a bad really bad thing.
Another problem is that it assumes it's always linking to fixed-length ROM files, not variable-lenght files that are put on a C64 disk (altough this problem isn't a problem for NES dev, it might be a problem for FDS dev).

Relocatable code is something that really lacks, I only have one small routine that I copy in RAM and modify in my NES game so I can get away with it, but if you ever wanted large chunks of code with multiple labels to be copied to RAM and modified from there, it would be a real headache to deal with WLA.

On the other hand WLA has special features that are unique like the ability to use overwrite sections, I use this to overwrite parts of CHR-ROM I don't use with other data (that I read by $2007) to save PRG space. I don't know if CC65 would support something like that. It also supports structures which is a nice plus.

In all cases it really suck when you are limited by your assembler instead of the system' capabilities.
Useless, lumbering half-wits don't scare us.
User avatar
MottZilla
Posts: 2837
Joined: Wed Dec 06, 2006 8:18 pm

Post by MottZilla »

tepples wrote:
AndiNo wrote:Is the SNES so much more difficult to handle than the NES for example?
I can think of several reasons why people who have considered Super NES homebrew may have switched to the NES or the Game Boy Advance:
  • NES is conceptually simpler, with only 30 registers total and only one assembly language that's well supported by sophisticated free tools. Getting an SPC700 mode into ca65 would help.
  • Standards for art are lower on NES than on Super NES due to fewer colors and fewer layers. Super NES might hit the asset complexity wall sooner.
  • For games that can benefit from Super NES style graphics, like TOD, GBA is an easier beast to tame. It has one 32-bit CPU fast enough for C and a more orthogonal register map. Moreover, copiers for homebrew have been available since half a year after release.
You could look at it the other way too. SNES could be easier to develop for in some respects compared to the NES. Less restrictions for your artists as you have more colors, more tiles, more sprites per line, much more storage, DMA transfers, huge amounts of RAM, etc.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

MottZilla wrote:
tepples probably sounded like he was plugging gbadev.org when he wrote:For games that can benefit from Super NES style graphics, like TOD, GBA is an easier beast to tame. It has one 32-bit CPU fast enough for C and a more orthogonal register map. Moreover, copiers for homebrew have been available since half a year after release.
You could look at it the other way too. SNES could be easier to develop for in some respects compared to the NES. Less restrictions for your artists as you have more colors, more tiles, more sprites per line, much more storage, DMA transfers, huge amounts of RAM, etc.
Everything good you said about SNES goes double for GBA.
Near
Founder of higan project
Posts: 1553
Joined: Mon Mar 27, 2006 5:23 pm

Post by Near »

That is one major problem with SNES development, absolutely nobody can settle on a cross assembler.

Many people use WLA-DX, which has more red tape than MASM on the x86; as well as lots of bugs.

Others use ca65, which can't target the S-SMP. I'm not sure how blargg makes his S-SMP tests.

And of course there's my cross assemblers, xkas and spcas; which nobody here is even aware of, but they're very popular in the ROM hacking circles, as well as for all of my emulator test ROMs.
User avatar
AndiNo
Posts: 37
Joined: Wed Nov 25, 2009 5:06 am

Post by AndiNo »

tepples wrote:Everything good you said about SNES goes double for GBA.
SNES uses a much bigger screen to display its graphics so it looks at least twice as good as the GBA ;) Just compare Metroid Zero Mission to Super Metroid! At least that's the reason for me to favor the SNES over the GBA. Think of the sound quality, too.
byuu wrote:And of course there's my cross assemblers, xkas and spcas; which nobody here is even aware of, but they're very popular in the ROM hacking circles, as well as for all of my emulator test ROMs.
I know nothing about them, what makes them better than WLA which everybody seems to dislike somehow? But unfortunately it seem I can only use a modified version of WLA with the SNES SDK which I'm using. I could give it a try though...
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

AndiNo wrote:SNES uses a much bigger screen to display its graphics so it looks at least twice as good as the GBA ;)
My GameCube uses a big screen too, and I have used it to play Game Boy Advance games. GBA also has the advantage that one can put a build of a game on a flash card and take it on the bus for play testing without having to worry about emulator inaccuracy.
Think of the sound quality, too.
That's a toss-up. Sure, GBA is limited by its 8-bit DAC, but SNES never had the space nor the CPU power for compressed music like this.
User avatar
AndiNo
Posts: 37
Joined: Wed Nov 25, 2009 5:06 am

Post by AndiNo »

tepples wrote:My GameCube uses a big screen too, and I have used it to play Game Boy Advance games.
I should have put it this way: It's not the screen size but the quality and detail of the graphics. On the SNES (like Super Metroid) they could use larger sprites and still have a larger gameplay-area on the screen.
That's a toss-up. Sure, GBA is limited by its 8-bit DAC, but SNES never had the space nor the CPU power for compressed music like this.
I wasn't thinking of what CAN be done but of what HAS been done, comparing similar games on different systems. Listening to Super Metroids soundtrack is just a lot more pleasing than listening to the music of Metroid on GBA. Maybe I should just say that I like the SNES more then the GBA ;)
User avatar
MottZilla
Posts: 2837
Joined: Wed Dec 06, 2006 8:18 pm

Post by MottZilla »

byuu wrote:That is one major problem with SNES development, absolutely nobody can settle on a cross assembler.

Many people use WLA-DX, which has more red tape than MASM on the x86; as well as lots of bugs.

Others use ca65, which can't target the S-SMP. I'm not sure how blargg makes his S-SMP tests.

And of course there's my cross assemblers, xkas and spcas; which nobody here is even aware of, but they're very popular in the ROM hacking circles, as well as for all of my emulator test ROMs.
I definitely agree. Infact I've used xkas when doing my BS-Zelda hacks as it was the easiest assembler to get working. The only bad thing for me is that XMSNES which I would like to use in SNES homebrew was made fort he wla-dx assembler. I haven't looked into seeing if I could build it in xkas or anything else yet.

Tepples, while I agree that GBA is even more so than the SNES in the respects that I mentioned, I will say for me personally the SNES is a much more appealing system for homebrew because it's a console and not a portable. Also the SNES is a system from when I was growing up so I hold it in higher regard than the GBA.

One other potential point is that I really wouldn't know how to manufacture my own GBA cartridges but I could do so for SNES. But it always boils down to preference. I've considered doing development on all sorts of systems, NES, SNES, GB/GBC, Genesis, PS1, even GBA at one point seemed interesting.
Locked