By using this site, you agree to our Privacy Policy and our Terms of Use. Close

Forums - Gaming - I wanna program a game and put it onto a NES/Genesis cartridge. Please Help.

kain_kusanagi said:

Would you tell someone who has yet to doodle to paint like Michelangelo? I'm impressed that were able to learn assembly at a young age, but you may have a natural talent for mathematics like Michelangelo had for art. Even if it didn't come easy to you having a natural talent makes learning a skill faster. Some people learn to read at 3 others struggle to read at 13. You are saying starting with assembly will work, but building a foundation to develop skills and knowledge is how most people learn. Not everybody can jump in the deep end and start swimming. Some people sink.

I don't believe I have a special talent to do that. As I said before, machines back then were simpler than they are today. They had 30-40 important commands, modern chips have hundreds. Also the older chips had a straightforward way to execute code, now they have things complicating stuff like out-of-order-execution and multiple cores. I also don't agree, that Python is per se simpler to learn. Python contains a big library of stuff, that has to be learned. I think simplest to learn are simple straightforawrd machines. You can start learning assembly as a game in a very simple and straightforward simulated machine:

http://en.wikipedia.org/wiki/Core_War

You write assembly that isn't differing too much from real assembly.



3DS-FC: 4511-1768-7903 (Mii-Name: Mnementh), Nintendo-Network-ID: Mnementh, Switch: SW-7706-3819-9381 (Mnementh)

my greatest games: 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024

10 years greatest game event!

bets: [peak year] [+], [1], [2], [3], [4]

Around the Network
Soleron said:

It's not that assembly is hard, it's that you will get frustrated at how long it takes to program the simplest thing or produce anything resembling a game.

For example, you want a character to walk left and right on a flat surface. Well, you need to define character and ground block objects to have variables, input handling, sprite drawing (loading image data and drawing pixels), collision code between the character and ground, and all throughout micromanaging every byte of memory. The code will have no concept of "character", "ground", "position", "collision", "sprite", "screen" and so on in itself, it just deals with memory registers.

That's right. Assembly is not high-level, it takes eons to do something useful. But as we talked about machines, that don't have a high-level-compiler, it is sometimes unavoidable.



3DS-FC: 4511-1768-7903 (Mii-Name: Mnementh), Nintendo-Network-ID: Mnementh, Switch: SW-7706-3819-9381 (Mnementh)

my greatest games: 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024

10 years greatest game event!

bets: [peak year] [+], [1], [2], [3], [4]

Mnementh said:

kain_kusanagi said:

Would you tell someone who has yet to doodle to paint like Michelangelo? I'm impressed that were able to learn assembly at a young age, but you may have a natural talent for mathematics like Michelangelo had for art. Even if it didn't come easy to you having a natural talent makes learning a skill faster. Some people learn to read at 3 others struggle to read at 13. You are saying starting with assembly will work, but building a foundation to develop skills and knowledge is how most people learn. Not everybody can jump in the deep end and start swimming. Some people sink.

I don't believe I have a special talent to do that. As I said before, machines back then were simpler than they are today. They had 30-40 important commands, modern chips have hundreds. Also the older chips had a straightforward way to execute code, now they have things complicating stuff like out-of-order-execution and multiple cores. I also don't agree, that Python is per se simpler to learn. Python contains a big library of stuff, that has to be learned. I think simplest to learn are simple straightforawrd machines. You can start learning assembly as a game in a very simple and straightforward simulated machine:

http://en.wikipedia.org/wiki/Core_War

You write assembly that isn't differing too much from real assembly.

I don't think you understand what I'm talking about. It's not a matter of how complexe the chip is. It's how to make it do anything usefull. The guy in this thread wants to build an 8-bit computer and then make games for it. That is not something anybody can just jump into it. He needs a background in computer engineering and programing. Even if he picks the most simple and most documented chips he will still need to learn the fundimentals of writing a game engine which is very complexe on any machine. It's not impossible, but it's a lot more involved than just getting the chip to print "Hello world".



fordy said:

You need to be really in-depth if you're planning to program NES games. Besides knowing assembly or 6502 opcodes, you also need to have an in depth knowledge of the hardware registers as well as limitations (eg. The NES only allows a certain number of sprites on the same scanline row on the TV before it starts to blink madly. There is also a rule to the 6502 CPU where you should not execute a Jump or Call at any address ending in hex code FF).  You need to study in depth to know the reasons why limitations like this exist on the hardware, as well as how to overcome them.

You'll need to use memory mappers if you plan to make a game over 32KB. That brings a whole new dimension of code organisation into things, as parts of the ROM cannot just be accessed at any time (you get paging miss penalties if the design requires swapping mapping pages over a lot).

My suggestion? Take a look at how the .NES ROM file is structured, and make a game playable on emulators before you even consider hardware. Once you get that out of the way:

http://www.retrousb.com/index.php?cPath=24

This site provides cases, PCBs and reverse-engineered lockout chips to solder together. Just add an EEPROM for the CHR ROM and one for the PRG ROM (use an EEPROM programmer to put the assembled binary onto the chip), and maybe a memory mapping chip. Solder them onto the board and you should be right to go!

Thanks.  After doing some research, I think I was being a little too ambitious at first.   I am going to start with some programming some games using an emulator and go from there.



Check out my video game music blog:

http://games-and-guitars.synergize.co/

 

 PROUD MEMBER OF THE PLAYSTATION 3 : RPG FAN CLUB

 

He who hesitates is lost

fordy said:
cloud1161 said:

Thanks a bunch you guys.  I really want to get into doing my own gaming hardware stuff.  Are there any other recommendations for uploading a game to a popular system like NES or Genesis?   I would like to build a completely homegrown 8 or 16 bit console to play my own games and stuff on.  Do either of you know if it is possible to get a NES or Genesis or SNES or some other popular old school console schematic?   I would like to build one on my own if possible.   


I once had a schematic for a NES. It was dozens of pages long.

If you're really interested in how console hardware works (I'm a bit in that area myself), then I highly recommend this book:

 

http://books.google.com.au/books/about/The_Black_Art_of_Video_Game_Console_Desi.html?id=4VFyAAAACAAJ&redir_esc=y

 

It seems to cover the basics of console systems in detail from both a software and an electronics point of view. 

Ahhh, this is exactly what I have been searching for.



Check out my video game music blog:

http://games-and-guitars.synergize.co/

 

 PROUD MEMBER OF THE PLAYSTATION 3 : RPG FAN CLUB

 

He who hesitates is lost

Around the Network
kain_kusanagi said:
Mnementh said:

kain_kusanagi said:

Would you tell someone who has yet to doodle to paint like Michelangelo? I'm impressed that were able to learn assembly at a young age, but you may have a natural talent for mathematics like Michelangelo had for art. Even if it didn't come easy to you having a natural talent makes learning a skill faster. Some people learn to read at 3 others struggle to read at 13. You are saying starting with assembly will work, but building a foundation to develop skills and knowledge is how most people learn. Not everybody can jump in the deep end and start swimming. Some people sink.

I don't believe I have a special talent to do that. As I said before, machines back then were simpler than they are today. They had 30-40 important commands, modern chips have hundreds. Also the older chips had a straightforward way to execute code, now they have things complicating stuff like out-of-order-execution and multiple cores. I also don't agree, that Python is per se simpler to learn. Python contains a big library of stuff, that has to be learned. I think simplest to learn are simple straightforawrd machines. You can start learning assembly as a game in a very simple and straightforward simulated machine:

http://en.wikipedia.org/wiki/Core_War

You write assembly that isn't differing too much from real assembly.

I don't think you understand what I'm talking about. It's not a matter of how complexe the chip is. It's how to make it do anything usefull. The guy in this thread wants to build an 8-bit computer and then make games for it. That is not something anybody can just jump into it. He needs a background in computer engineering and programing. Even if he picks the most simple and most documented chips he will still need to learn the fundimentals of writing a game engine which is very complexe on any machine. It's not impossible, but it's a lot more involved than just getting the chip to print "Hello world".

Well just so you know, I am going into my last year and a half into a double major Electrical and Computer Engineering Technology program, so as I said I do know to some extent what I am getting into.  Right now I am just like a kid in a candy store, not sure which area of technology to get into, or more precisely gaming development (preferably hardware).  And the reason why I want to do these retro or legacy projects is to better understand/appreciate how we got to where we are now.  



Check out my video game music blog:

http://games-and-guitars.synergize.co/

 

 PROUD MEMBER OF THE PLAYSTATION 3 : RPG FAN CLUB

 

He who hesitates is lost