Why can't homebrew be more like indie games?
There are C libraries for the NES. Couldn't somebody just make a hack to the source code of a game like Shovel Knight to work with the NES PPU, and cut out some of the features that just wouldn't work?
Yes, I am aware of how the NES works and how it is different from modern day systems. You should be able to recycle atleast some code (that doesn't have to do with graphics and audio updates), if your using an NES C compiler.
Yes, I am aware of how the NES works and how it is different from modern day systems. You should be able to recycle atleast some code (that doesn't have to do with graphics and audio updates), if your using an NES C compiler.
Comments
Shovel Knight was built to imitate a NES game, not to emulate one. Practically nothing from that game (apart from maybe a few altered sprites) would be transferrable to a cart. You'd have to rebuild it completely.
Originally posted by: hammerfestus
Putting a game on a cart is one thing (and I have no idea about how actually programming NES games works) but I've always wondered if emulation couldn't be an avenue for making NES styled games that far exceed the NES's capabilites ie; a gigantic dragon warrior style rpg that you could never actually put on an NES cart. Maybe I am misunderstanding the limitations of emulation (and I may be way off topic of making C versions of NES games) but it's always seemed to me that emulators were under utilized by homebrewers
What would be the point?
If you make an emulator do stuff that the system can't do... then it is some kind of stand-alone game host engine, not an emulator for the target system.
If you want an NES-like game that violates the NES limitations, you just make a stand-alone PC game like Shovelknight. No reason to even bother with working in ASM or trying to shoe-horn it into an emulator at that point.
Originally posted by: Aaendi
I don't mean a pixel perfect port.
The bottom line is that for ANY retro project to get ported to the NES would require rewriting the entire game in ASM, from scratch, and trimming back every aspect of the game the breaks the system limitations.
And probably cutting the game into multiple episodes to fit within the available memory constraints...
or custom engineering mapper hardware that handles a lot more memory than anything else out there on the system.
It is not a simple compile-time option of picking a different target system and using stock libraries.
Then there are sprite and background tiles. One thing you must remember about NES 6502 ASM language is that it doesn't know what a letter or a number is, only a graphic tile (which is really a collection of 1s and 0s arranged in a way that the PPU interprets it to an image). So, in C code, if you want "Hello" to be write to the screen, the word "Hello" is written in the code. In NES ASM, you must hand draw each letter and number into a graphic tile that is 8x8 pixels and then call that graphic tile to the screen in the code using the graphic tile's Hex value. So, in my game and the way I have my tiles arranged (depends game to game), "Hello" would look like this, "$11, $0E, $15, $15, $18".
I have never used C libraries (heck, I haven't looked at C++ code for 11 years), but from what I understand, C libraries for the NES are built with the understanding of NES hardware and you must code in a way that can be translated to ASM.
I guess the short of what I am trying to explain is, the game would have to be built entirely from scratch and build in the limitations as you go. I would venture to guess that it would be next to impossible (or so labor intensive that it may as well be impossible) to take a game that is solely written on general purpose programming language for another another system and translate it to NES Assembly.
EDIT: HAHA...I called it Linus. Fixed it to say Linux.
Originally posted by: KHAN Games
This is the one type of thread I miss 3gengames in.
This made me giggle.
Originally posted by: DoNotWant
Originally posted by: KHAN Games
This is the one type of thread I miss 3gengames in.
This made me giggle.
The kid knew a thing or two about homebrew and ASM.
Originally posted by: KHAN Games
This is the one type of thread I miss 3gengames in.
Where has that lovable sandpaper-wrapped kitten been? He used to help me out all the time with my assembly problems.
Originally posted by: standigz
Modern developers can't cope with the hardware limitations and quirks of 30 year old hardware. Old Skool devs were really creative about finding ways around limitations and pushing/squeezing everything they could out of old hardware, new devs...not so much.
I think a way to phrase that, which is more fair to current developers, would be to say that if you're interested in making a commercially successful why would you choose to tie your hands behind your back if you don't have to?
Originally posted by: m308gunner
Originally posted by: KHAN Games
This is the one type of thread I miss 3gengames in.
Where has that lovable sandpaper-wrapped kitten been? He used to help me out all the time with my assembly problems.
Banned.
Originally posted by: arch_8ngel
Originally posted by: DoNotWant
Originally posted by: KHAN Games
This is the one type of thread I miss 3gengames in.
This made me giggle.
The kid knew a thing or two about homebrew and ASM.
Oh, I know that, but he knew how to stir up controversy in these kinds of threads.
Originally posted by: DoNotWant
Originally posted by: m308gunner
Originally posted by: KHAN Games
This is the one type of thread I miss 3gengames in.
Where has that lovable sandpaper-wrapped kitten been? He used to help me out all the time with my assembly problems.
Banned.
Originally posted by: arch_8ngel
Originally posted by: DoNotWant
Originally posted by: KHAN Games
This is the one type of thread I miss 3gengames in.
This made me giggle.
The kid knew a thing or two about homebrew and ASM.
Oh, I know that, but he knew how to stir up controversy in these kinds of threads.
http://www.nintendoage.com/index.cfm?FuseAction=Users.Home&User=3GenGames
Only a temp ban. He has chosen not to return.
Originally posted by: DoNotWant
Originally posted by: m308gunner
Originally posted by: KHAN Games
This is the one type of thread I miss 3gengames in.
Where has that lovable sandpaper-wrapped kitten been? He used to help me out all the time with my assembly problems.
Banned.
Uh, no, try again
Originally posted by: Mega Mario Man
I have never used C libraries (heck, I haven't looked at C++ code for 11 years), but from what I understand, C libraries for the NES are built with the understanding of NES hardware and you must code in a way that can be translated to ASM.
That's what I meant by hacking the source code. Getting rid of any I/O functions, and replacing it with NES hardware stuff like oam, vblank, pattern tables etc.
- Any remotely modern C code is full of 32-bit int, float and double types, while NES C works effectively only with 8-bit;
- Any remotely modern C code relies to dynamic allocation of huge amounts of RAM, like megabytes for something minor, while NES has 2K (less than 1.5K for C programs);
- Any remotely modern C code relies to huge CPU horse power, using brute force approach in many cases, or just not the most effective implementations in trade for better readability, which is completely fine for modern platforms, but just won't work for NES;
- Any remotely modern C code is actually C++, object oriented. NES only has C compiler.
Now if it would be possible to, say, hire some guys from NESDev, the guys that designed Shovel Knight, Gashi-Gashi for the pixel art, and Chibi-Tech for the music, to design and make an NES game, yes, that is entirely possible. Only problem would be that it would be expensive to do so, especially more if this targets a niche audience that owns NES consoles. It'd be wise to make two versions of the same game, one for Nintendo's eShop, and one for the NES to maximize profits, but I'm not sure if Nintendo would be okay with that idea. That said, developing games for the NES is more profitable than designing any game for the Wii U, given it's horrid third party attach rate.
Originally posted by: Luigi_Master
It'd be wise to make two versions of the same game, one for Nintendo's eShop, and one for the NES to maximize profits, but I'm not sure if Nintendo would be okay with that idea.
Bripro had to take down all his NES related dev stuff to get a Nintendo license, so almost certainly the answer would be no.
Originally posted by: Luigi_Master
I'm going to answer the title of the thread, which asks "Why can't homebrew be more like indie games?" The answer for that is simple; NES homebrew games are made by programmers, usually by a single person at a time. Developing an NES game also requires a person who is more tech-savvy, and tech-savvy people usually don't have a taste for design or style; it's because of how opposite the two spectrums are, though there are people like Konjak or Shiru who pull it off reasonably well.
This is one major reason we need more accessible dev tools for the NES. NESICIDE and Shiru's efforts in C move this notion forward. We need more people like Paulo Silva who are porting things like ZX Basic to classic gaming platforms. More diverse developers - not just C and asm coders - are needed to grow a scene. This growth is what gives more opportunties for conversions like Shovel Knight to happen.
As for Shovel Knight, the way it sits currently won't work. Thankfully, the game looks messy and cluttered to begin with, so re-doing the game to work on the NES is given. If I knew how to mod, I'd make a mod for the PC version to 'NES-ify' the game as best as possible, maybe even come up with a crude flicker emulator. The game just uses too many damn colors. The Chinese have been able to port FF7 to the NES, surely this won't be much different.
Originally posted by: slobu
Originally posted by: Luigi_Master
I'm going to answer the title of the thread, which asks "Why can't homebrew be more like indie games?" The answer for that is simple; NES homebrew games are made by programmers, usually by a single person at a time. Developing an NES game also requires a person who is more tech-savvy, and tech-savvy people usually don't have a taste for design or style; it's because of how opposite the two spectrums are, though there are people like Konjak or Shiru who pull it off reasonably well.
This is one major reason we need more accessible dev tools for the NES. NESICIDE and Shiru's efforts in C move this notion forward. We need more people like Paulo Silva who are porting things like ZX Basic to classic gaming platforms. More diverse developers - not just C and asm coders - are needed to grow a scene. This growth is what gives more opportunties for conversions like Shovel Knight to happen.
I think it'd be hard to create abstractions for the NES that don't still require intimate knowledge of the technical details. Almost every corner you turn while developing an NES game, you are being asked by the system: "You either can do this, or this, but not both. Pick. Plus, you will have to code it totally differently depending on which path you take." That very fact means creating a high-level abstraction that is much higher than say C or asm-with-C-like-macros is going to be tough. I haven't looked into, say, PyNes, but I imagine if I tried to build a large game with it I'd still be confronted with the same issues, have to make tons of customizations in asm anyway.
On another note, I'm kinda glad homebrew is not like the indie game scene. While I greatly admire the indie scene and some of the masterpieces that are created in it, I can't relate to that world of huff-and-puff-and-hyperventilate-and-promote-and-stay-up-late-for-years-and-kill-oneself. I like that in NES homebrew, while we do strive for excellence, our creations are appreciated even if they are a little bit crude. There are many (beloved!) games on the system from its hey day which were themselves crude. To me, this crudity both has appeal in and of itself, AND, makes it an inviting scene to those who don't want to feel pressure to make something immediately amazing or "make something better than there ever was on the system," etc. For me, this pursuit is all about internal reward. The journey of creating a game end-to-end. Money doesn't matter, and impressing tons of people doesn't matter. Though, a little appreciation from fans is definitely nice, of course.
Originally posted by: Luigi_Master
But at the end of the day, these consoles are still a niche, a niche where learning new programming tricks and dealing with quirky hardware is not worth it, at least for massive financial gain. Homebrew games typically sell well, despite a good number of them, my apologies beforehand, not being exactly good looking or fun. Who knows how well they'd sell if their quality was as high as, say, Super Bat Puncher or STREEMERZ? Their quality might garner some mainstream attention, in fact I think the NES port of STREEMERZ is as popular as the flash version!
As for Shovel Knight, the way it sits currently won't work. Thankfully, the game looks messy and cluttered to begin with, so re-doing the game to work on the NES is given. If I knew how to mod, I'd make a mod for the PC version to 'NES-ify' the game as best as possible, maybe even come up with a crude flicker emulator. The game just uses too many damn colors. The Chinese have been able to port FF7 to the NES, surely this won't be much different.
Would you rather those of us whose games you consider shitty not make them at all? Not asking with any animosity. Just honestly curious. I know I can't please everyone, that's for sure.
You know what I admire? I admire a Tepples, that talks the talk and walks the walk. I admire a Memblers, that will tell you to "just make it work, and you did it right." I admire a Gradual or Rizz, that just does their thing and don't really interject harshly in this kind of thing.
But I'm with you on this Kev, for sure.
Luigi Master, how about you learn how to code something for the NES that is "good looking or fun"? I'm SICK of your little judgmental attitude, and the stabs you take at homebrewers, without anything to back your critique and never being specific on who you are talking about. If things are SO BAD, then how about you step up to the plate and do something about it? Make a great game that looks awesome and is fun as all get out! If you want something done right, thenyóu gotta do it yourself, no?
Originally posted by: GradualGames
I think it'd be hard to create abstractions for the NES that don't still require intimate knowledge of the technical details.
It can be done on other extremely low resource systems. This homebrew is a whopping 2k and was made in a BASIC compiler for the Atari 2600. Not saying it's the next Yar's Revenge: just that a complete game concept was realised without assembly.
http://www.romhacking.net/homebrew/63/