Why no SNES homebrew scene?

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.
White Flame
Posts: 7
Joined: Wed Oct 18, 2017 1:33 pm

Re: Why no SNES homebrew scene?

Post by White Flame »

lidnariq wrote:Too bad the dots for "excellent" and "fair" in the scanned copy I found are indistinguishable:
This text version has it distinguishable, starting at line 7898.
creaothceann
Posts: 611
Joined: Mon Jan 23, 2006 7:47 am
Location: Germany
Contact:

Re: Why no SNES homebrew scene?

Post by creaothceann »

Still looks bad, so...

..................CHARACTER.COLOR................
....0..1..2..3..4..5..6..7..8..9.10.11.12.13.14.15
00 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
01 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
02 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
03 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
04 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
05 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
06 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
07 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
08 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
09 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
10 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
11 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
12 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
13 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
14 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
15 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
↑↑SCREEN COLOR

EXCELLENT - FAIR - POOR
My current setup:
Super Famicom ("2/1/3" SNS-CPU-GPM-02) → SCART → OSSC → StarTech USB3HDCAP → AmaRecTV 3.10
DarkKobold
Posts: 12
Joined: Fri Sep 19, 2014 1:11 pm

Re: Why no SNES homebrew scene?

Post by DarkKobold »

I don't know how this topic got off on hardware capabilities, but as a homebrewer for the TG16, I can guarantee it's NOT the hardware specs. At least, *for me*, it's the lack of a good C compiler, or any decent tutorials. You can see my work here -

https://www.youtube.com/user/DarkKobo1d/videos

The turbografx has a pretty great small C compiler (1), an easy to use audio library Squirrel (2), an intro tutorial that teaches you the basics (3), and documentation on all the cool parts of the C library that make the handling of graphics and scrolling way easy for any novice coder (4). Seriously, I am making homebrews fast and easy, thanks to the great community support.

1. https://github.com/uli/huc
2. http://www.aetherbyte.com/aetherbyte-sq ... fx-16.html
3. http://obeybrew.com/tutorials.html
4. http://www.archaicpixels.com/Main_Page

So, this is my 2 cents. If I had a decent, easy to use C compiler, I'd be porting my homebrews to the SNES, for sure.
User avatar
Punch
Posts: 365
Joined: Sat Feb 16, 2013 11:52 am

Re: Why no SNES homebrew scene?

Post by Punch »

DarkKobold wrote:I don't know how this topic got off on X,
Welcome to NESdev, DK.
This is a block of text that can be added to posts you make. There is a 255 character limit.
User avatar
koitsu
Posts: 4201
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Re: Why no SNES homebrew scene?

Post by koitsu »

DarkKobold wrote:So, this is my 2 cents. If I had a decent, easy to use C compiler, I'd be porting my homebrews to the SNES, for sure.
I've mentioned a few in the past: viewtopic.php?f=12&t=15191&p=184312 . Mention of a heavily modified lcc816 has been discussed as well, by Charles Doty nonetheless: viewtopic.php?f=12&t=1877
DarkKobold
Posts: 12
Joined: Fri Sep 19, 2014 1:11 pm

Re: Why no SNES homebrew scene?

Post by DarkKobold »

koitsu wrote: So, all that said: the lack of C compiler really isn't what's keeping people from doing SNES homebrew. There's a term for this that I can't recall right now, but it's one of those "convenient excuses" that people use rather than actually putting in the time/effort to do what their heart is set on. The elephant in the room isn't the lack of C compiler, it's that "writing stuff on the SNES is hard". "What are all the registers? OMG", "I don't understand assembly language, it's nothing like Ruby/Python/Node/blah blah", that kind of thing. Consoles, much like arcades, are a completely different world. The potential gamedevs that might be considering the SNES probably come from backgrounds that are PC-centric, using a plethora of tools and languages and frameworks to accomplish their goal. You throw them into an environment that offers none of that and they're like a fish out of water. Why do you think there's such a humongous influx of indie games on Steam/etc. that have "16-bit-like graphics" but are PC (possibly Mac/Linux) titles?
You pretty much contradict yourself here. You mention that when developers have tools, languages, and frameworks, there is a "humongous influx" of games. Yet you essentially call it laziness that more homebrews don't exist for SNES.

I think I'm proof that a having a C-compiler results in more homebrews. HuC exists specifically for the Turbografx-16, which has specifically enabled me to make homebrews. Trust me, if I had to do ASM, I wouldn't be writing these. Despite the turbografx's HuC6280 (6502 architecture) not loving C, I'm still able to make fun, competent homebrews. Maybe it won't be the next Rendering Ranger, but a game just has to be fun. Alter Ego for NES was written all in C, and that game is great.

I'm by no means demanding that NESDev experts expend effort by creating a competent C compiler specifically for SNES, that handles the backend stuff of importing graphics, sounds, etc. I'm just explaining my answer as to why there is not a SNES homebrew scene.
User avatar
dougeff
Posts: 3079
Joined: Fri May 08, 2015 7:17 pm

Re: Why no SNES homebrew scene?

Post by dougeff »

There are a significant number of people doing hacks of SMW and other SNES games.

That tells me that there are hundreds of people who could make a SNES homebrew. But they don't. They don't need a C compiler; they know ASM. But, because a first homebrew game would look like PONG or Space Invaders, would be embarrassingly bad, as compared to the commercial SNES games.

Whereas making Space Invaders for Atari 2600 would fit in with the commercial games. So you see people happy to make those.

Consider this, in SMW, Mario has over 100 unique sprites. Thats just Mario. Add all the enemies and BG graphics... That is very time consuming.
nesdoug.com -- blog/tutorial on programming for the NES
DarkKobold
Posts: 12
Joined: Fri Sep 19, 2014 1:11 pm

Re: Why no SNES homebrew scene?

Post by DarkKobold »

dougeff wrote:There are a significant number of people doing hacks of SMW and other SNES games.

That tells me that there are hundreds of people who could make a SNES homebrew. But they don't. They don't need a C compiler; they know ASM. But, because a first homebrew game would look like PONG or Space Invaders, would be embarrassingly bad, as compared to the commercial SNES games.

Whereas making Space Invaders for Atari 2600 would fit in with the commercial games. So you see people happy to make those.

Consider this, in SMW, Mario has over 100 unique sprites. Thats just Mario. Add all the enemies and BG graphics... That is very time consuming.
Not every game has to be SMW. Also, I'm just giving my perspective. I'd love to port Catastrophy to the SNES, but without a decent C compiler, I don't see that happening.
User avatar
koitsu
Posts: 4201
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Re: Why no SNES homebrew scene?

Post by koitsu »

Continually repeating the mantra "if there was a SNES-centric C compiler there would be more homebrew" does not make it true. Just because you found a PCE/TG16-centric C compiler helpful doesn't mean that's the case for for a) others, and b) other systems.

I'm one of the individuals from the early 90s snesdev scene, and wrote public-domain SNES documentation. Even during the SNES's heyday there were very few homebrewn titles. I can count them on two hands, maybe even one. People back then enjoyed writing demos and things of that nature (a very 90s-esque fad) moreso than doing actual games. Because actual games require a large amount of work -- often years. For most folks, they didn't have that kind of time to dedicate to something... or the ones I knew who did wanted to be paid for it (which is why they went to work for places like Tiburon, etc.).

dougeff provided a pretty valid counterexample to the premise that if there were more tools there would be more interest. There's a huge romhacking community relating to SMW and Zelda 3 simply because those games were pivotal and people have latched on to them over the past 30 years. All that work has been done by a large number of people without a C compiler; read: people who do 65816 already. Doing an entire game engine from scratch (in any PL!), coming up with all the assets, etc. involves huge effort. Romhacking communities that dabble in things other than translation like tinkering but not creating entirely from scratch; reverse-engineering for them is part of the challenge thus fun. My point here is to demonstrate that there are people already out there with SNES-centric skills (that do not need/use a C compiler, i.e. assembly is OK for them) that have interests which don't involve making new games: only tinkering with old ones.

And actually... why does it even matter if there is a lot of homebrew for the SNES? Why does the quantity matter? Everyone should think about that one for a while; don't reply, just think deeply about it.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Why no SNES homebrew scene?

Post by tepples »

DarkKobold wrote:
dougeff wrote:Consider this, in SMW, Mario has over 100 unique sprites. Thats just Mario. Add all the enemies and BG graphics... That is very time consuming.
Not every game has to be SMW.
Which popular Super NES games are less graphically complex than Super Mario World?
koitsu wrote:why does it even matter if there is a lot of homebrew for the SNES? Why does the quantity matter?
It's related to something I was told in Fedora's legal issues mailing list. Unlike Debian, Fedora doesn't carry emulators because of legal threats from first-party developers, particularly Nintendo. The substantial noninfringing use argument is weak without plentiful homebrew games.
ccovell
Posts: 1045
Joined: Sun Mar 19, 2006 9:44 pm
Location: Japan
Contact:

Re: Why no SNES homebrew scene?

Post by ccovell »

tepples wrote:Which popular Super NES games are less graphically complex than Super Mario World?
Earthbound, of course.

<runs away>
niconii
Posts: 219
Joined: Sun Mar 27, 2016 7:56 pm

Re: Why no SNES homebrew scene?

Post by niconii »

My own experience seeing stuff like BYOND, Game Maker, ROBLOX, ZZT, MegaZeux, Klik & Play, and so on is that it doesn't matter how shitty or obscure your platform is, as long as it's easy to make games for. There's honestly so many people out there who want to make games that you're bound to scoop up someone.

Personally, I don't think a lot of people honestly even care that much about making a professional quality game. For a lot of people, it'd just be cool to make a game on the SNES, regardless of quality, simply because it's what they grew up with.

Even for those that do want to make a game that looks on par with other SNES games, it's exactly the same issue that any indie game going for that art style would have to deal with, SNES or no, and I think artists can handle the concept of hard limitations just fine. Saying "you can only use this many colors and it has to be within this size" is not exactly a hard concept to grasp, and not every game has to push the limits with clever hardware tricks.

I don't think we should only be looking at those who already have the skills to make SNES games. Yeah, there's a lot of people making SMW hacks, but they're doing that because that's what they want to do. Meanwhile, I'm sure there's plenty of people who would like to make a SNES game, and have the patience to carry it through, but can't (or at least believe they can't) because of the barrier to entry involved.

Learning ASM really is an extremely daunting proposition for a lot of people; keep in mind a lot of programmers have trouble just adjusting to other high-level languages with different syntax. And to those who scoff at that, no, you really don't have to be a great programmer to make a game. You don't even have to be a good programmer. There are quite a few games out there (successful commercial ones, even) that manage to be fun to play despite their code being a hacked-together mess.

Not to mention, knowing ASM doesn't stop it from being tedious to write, especially on the scale of an entire game. Even for a technically-impressive game, not all of the code is speed-critical. In fact, personally, this is the biggest thing dissuading me from making a homebrew game. It's not that I don't have the knowledge or the skills needed. It's just that it's the graphic capabilities of the SNES that interest me the most, not the boring slog of writing out pages of 65816 ASM to do the equivalent of far less code in a higher-level language, especially when it's tedium for no particular gain.

I don't even believe it's a given that using a C compiler would be that much worse performance-wise than writing in ASM. Certainly what we have right now is pretty bad at optimization, but the 65816 is better-suited to C than the 6502 is, and on top of that, there are ways a compiler could avoid using the stack if necessary (a relevant discussion is taking place in the NESdev forum right now, in fact).
koitsu wrote:And actually... why does it even matter if there is a lot of homebrew for the SNES? Why does the quantity matter? Everyone should think about that one for a while; don't reply, just think deeply about it.
Would it matter if the entire SNES homebrew community was just one person sitting in an empty room, poking at a SNES circuit board with a bit of wire in a vain attempt to make a game? Would it matter if the only SNES homebrew in existence was just a text file that consisted of lda #1 and nothing else?

I think cool stuff being made is good in general. Anything that serves to make that process easier is likewise a good thing.

(By the way, to be honest, I wouldn't even bother telling people not to reply to stuff like this; if people think it's worth discussing, they will, myself included.)
DarkKobold
Posts: 12
Joined: Fri Sep 19, 2014 1:11 pm

Re: Why no SNES homebrew scene?

Post by DarkKobold »

koitsu wrote:Continually repeating the mantra "if there was a SNES-centric C compiler there would be more homebrew" does not make it true. Just because you found a PCE/TG16-centric C compiler helpful doesn't mean that's the case for for a) others, and b) other systems.
I'm literally saying "I'm a dev, I'd make homebrew for the SNES if it had a C compiler." So, at least for one dev... it's true for the SNES.
And actually... why does it even matter if there is a lot of homebrew for the SNES? Why does the quantity matter? Everyone should think about that one for a while; don't reply, just think deeply about it.
The title of the thread is "Why no SNES homebrew scene?"

Why does an internet commentator go to a thread with a topic he isn't interested in? Everyone should think about that one for a while; don't reply, just think deeply about it.
User avatar
koitsu
Posts: 4201
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Re: Why no SNES homebrew scene?

Post by koitsu »

Nicole wrote:... I don't even believe it's a given that using a C compiler would be that much worse performance-wise than writing in ASM.
I beg to differ, though this is for a different (and substantially less limiting!) architecture: https://stackoverflow.com/questions/250 ... erformance . Not only is the investigation and outcome itself relevant, but even more so is the fact that one had to examine the assembly to find out the cause. And that's not even on a 90s video game console.

As an Apple IIGS user, I can tell you that C on 65816 does not particularly result in impressively fast code. We had commercial C compilers for the Apple IIGS -- specifically ORCA/C -- which went to great lengths to do the best they could, but were always substantially slower than their pure assembly counterparts. Does speed matter? Yes, especially when doing something like implementing code run in an NMI/VBlank handler. Possible to mix C and assembly? Absolutely, and was common in the Apple IIGS days for those exact reasons -- a platform where portability wasn't a concern. Some commercial SNES games were developed this way (a mix of some C-like language and assembly).

Is C it better on the 65816 than on the 6502? Yes, mainly due to the additional addressing modes and instructions. But not substantially. The biggest problem is the lack of registers -- something that plagues the 65xxx platform in its entirety. C is better-suited for CPUs that have lots of registers and/or lots of addressing modes (68K comes to mind). There's a fairly authoritative person on the subject who I've mentioned in the past: Toshi Morita. There's an old forum post with him discussing how he did that with lcc816 (the port generated 65816 assembly code, intended for use with ORCA/M (65816 assembler for the IIGS)), but you can see very clearly in the thread how it works under the hood -- note the reliance on large numbers of registers. Do not overlook the part discussing dags2gs2 and *.dag files. The tarball contains a README.65816 that explains how it works.

Should I even bring up the aspect of debugging compiled C code? AFAIK there's no SNES emulator that ties into native C, unlike present-day platforms with things like Visual Studio and gdb.

My point: you're going to have to know assembly either way when working on console platforms. There are several NES/6502 threads demonstrating that already. It's funny, these aspects of development are always avoided/overlooked when discussing this subject; it's no one person's fault, but it does amuse me; it's like pragmatism/realism is thrown out the window in favour of PL fixation, no matter the realities.
Nicole wrote:I think cool stuff being made is good in general. Anything that serves to make that process easier is likewise a good thing.
I generally agree, and don't have a problem with such efforts (to make homebrew or to make tools).

But I stand firm on my opinion that lack of a C compiler isn't the reason why SNES homebrew isn't prolific. The reason is multi-faceted. There is not an influx of people coming to forums screaming "if there was a C compiler for the SNES I'd be doing homebrew!" We now have literally 1 person saying that. And that 1 person already has existing experience with classic consoles, plus is one of those people with deep dedication to their projects. This is often not the case with people; for every 100 people who say "I wanna {do a thing} on {classic retro system}", probably 98 of those give up because they don't want to dedicate the time to learn the system (read: not the PL, the system/architecture). My point is further proven by the fact that even in the heyday of snesdev in the early 90s, where we were all doing assembly all the time, people still weren't putting out homebrew -- and we actually had more tools and available platforms for development at the time (ex. doing SNES code on the IIGS, actively-maintained cross-assemblers, graphics file conversion tools, and an active community and mailing list. Probably 99% of those tools never got ported from MS-DOS or Amiga to newer systems (ex. PC), so they're dead tools. I still have several of them on my hard drive!). I was part of and lived through that time, so I speak literally from experience.
Nicole wrote:(By the way, to be honest, I wouldn't even bother telling people not to reply to stuff like this; if people think it's worth discussing, they will, myself included.)
Sorry about that, I didn't phrase my sentence well. What I meant to say was: think long and hard about what I say in this paragraph. Do not reply in haste, let the question roll around your (the readers') brain for a few days first.

I'm now regretting even replying to this thread now that I know the real reason behind it:
tepples wrote:It's related to something I was told in Fedora's legal issues mailing list. Unlike Debian, Fedora doesn't carry emulators because of legal threats from first-party developers, particularly Nintendo. The substantial noninfringing use argument is weak without plentiful homebrew games.
I wish this had been stated right up front in the initial post, because I wouldn't be wasting my time with it otherwise. A Linux distribution doesn't include SNES emulator packages citing legal fear... okay, that's nice.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Why no SNES homebrew scene?

Post by tepples »

koitsu wrote:
tepples wrote:It's related to something I was told in Fedora's legal issues mailing list. Unlike Debian, Fedora doesn't carry emulators because of legal threats from first-party developers, particularly Nintendo. The substantial noninfringing use argument is weak without plentiful homebrew games.
I wish this had been stated right up front in the initial post, because I wouldn't be wasting my time with it otherwise. A Linux distribution doesn't include SNES emulator packages citing legal fear... okay, that's nice.
I've been saying it for over seven years.
Post Reply