Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411515 Posts in 69376 Topics- by 58431 Members - Latest Member: Bohdan_Zoshchenko

April 27, 2024, 04:29:20 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Developing for PC is fun and all but...
Pages: [1] 2
Print
Author Topic: Developing for PC is fun and all but...  (Read 5372 times)
RC
Level 0
***



View Profile
« on: April 23, 2009, 07:32:41 PM »

I want to develop for a console now.

I'm not talking about major consoles such as PlayStation, Xbox or Wii, but older consoles.

The thing is that I cannot make up my mind about which to develop for, I've looked into NES development and GBA development, but I can't decide if either of those are good to start with.

So I'm wondering if anyone knows which older console is best to start developing with. I'd prefer to develop my projects in C or C++, but I have been interested in learning Assembly, so I suppose I could settle with that... but still I'd prefer C since I know a fair amount of it and have barely any knowledge of Assembly.

I realize the difficulties so there is no need to tell me what I'll be getting into, since I already know and still want to develop for a console.
Logged

John Nesky
Level 10
*****


aka shaktool


View Profile WWW
« Reply #1 on: April 23, 2009, 08:18:45 PM »

I actually taught myself C (after spending a year in a highschool java class) while learning to program for the GBA. I made these. Of course, there's no standard library on the GBA, so I developed my own memory allocator before I even knew what malloc was. Good times. Oh yeah, and I implemented OOP using some crazy function pointers.

I never programmed for the NES, but my impression was that the GBA was basically the same thing, but with bigger numbers. More available colors, more available memory, more sprites could be on the screen at the same time, etc. The architecture was otherwise the same:
-there is a specific location in memory where reusable background tile graphics are stored.
-there is a separate location in memory where sprite tile graphics are stored.
-there is a location in memory that holds a "map" that points to the tile graphics that is used to render the screen.
-There's a read-only VSync value and an HSync value that you could poll to figure out what part of the screen was rendering at any given time. Keeping track of these values was the only way to tell how much time has passed.

GBA : NES :: NES : ATARI. They're all the same thing.
Logged
CK
Level 9
****



View Profile WWW
« Reply #2 on: April 23, 2009, 09:02:31 PM »

posting to watch this thread.
useful.
good luck, RC Smiley
Logged

RC
Level 0
***



View Profile
« Reply #3 on: April 23, 2009, 09:24:52 PM »

NES was more of a pain when I looked into it since it was all Assembly, but looking at some of the source code is what made me interested in learning ASM. I think I heard that someone made a C library for NES dev, but I'm not sure if it would be useful or anything.

I went through some tutorials before on GBA dev, which included pre-written header files that did most of the assembly that you'd need to use in a basic game. So I was leaning more towards developing for GBA, but I just can't make up my mind.

I'd like to make a NES game, or a SNES game, GBA or DS game or any other console (that doesn't involve anything to do with 3D), but I can't decide on which or figure out which would be the best choice.

Still, since I already have everything I need (that I know of, at least) to make a GBA game, maybe I should just stick with that.
Logged

John Nesky
Level 10
*****


aka shaktool


View Profile WWW
« Reply #4 on: April 24, 2009, 12:16:49 AM »

I did actually program in assembly once. I think it was pretty neat... for a small project. Definitely a learning experience that helped me appreciate how processors work and improved my mental model of stacks, heaps, function calls, and conditionals, but it's not something I'd want to make a whole game out of.
Logged
mirosurabu
Guest
« Reply #5 on: April 24, 2009, 05:14:54 AM »

The NES CPU is modified 6502, IIRC. There is a C compiler for 6502: CC65, so it might be useful for you.

There is also that nBasic, high-level language for NES development.

More information on NES development can be found here: http://nesdev.parodius.com/

Apart of knowing assembly or high-level language for NES, you'll have to know the NES architecture as well.

Programming in ASM can be pain in the ass for some people. I learned ASM mainly because I wanted to make a ZX Spectrum game, but I have never made one.

Good luck, in any case! Beer!

edit: Also, there is that yearly MiniGame competition for games made for 8-bit/16-bit consoles. You can check it out here.
« Last Edit: April 24, 2009, 05:36:28 AM by Miroslav Malešević » Logged
Business Bear
Level 0
***



View Profile
« Reply #6 on: April 24, 2009, 05:39:43 AM »

Developing for one of these older consoles will really bring you into the hardware world.  Suddenly it's not enough to just understand high level languages.  It's definitely a fun/horrible change of pace from modern PC game programming.
Logged
hexageek
Level 0
***



View Profile
« Reply #7 on: April 24, 2009, 07:10:06 AM »

I' think you'll like this  Beer! http://belogic.com/uzebox/
Logged
JoeHonkie
Level 8
***


RIP Major Sebastian Bludd


View Profile WWW
« Reply #8 on: April 24, 2009, 07:14:50 AM »

I' think you'll like this  Beer! http://belogic.com/uzebox/

I wonder how that stacks up to these?
Logged
hexageek
Level 0
***



View Profile
« Reply #9 on: April 24, 2009, 07:19:32 AM »

I' think you'll like this  Beer! http://belogic.com/uzebox/

I wonder how that stacks up to these?

those are some great kits, are they open source too?
Logged
JoeHonkie
Level 8
***


RIP Major Sebastian Bludd


View Profile WWW
« Reply #10 on: April 24, 2009, 07:34:48 AM »

those are some great kits, are they open source too?

I don't know.  I didn't know about either of those things until recently.
Logged
moi
Level 10
*****


DILF SANTA


View Profile WWW
« Reply #11 on: April 24, 2009, 07:43:29 AM »

I'd love to try to make a game for genesis hardware (I'll probably fail at it anyway).
Anybody's got some ressources?
Logged

subsystems   subsystems   subsystems
Ivan
Owl Country
Level 10
*


alright, let's see what we can see


View Profile
« Reply #12 on: April 24, 2009, 09:10:30 AM »

I did some stuff for the DS with the homebrew libs and it was actually really easy and fun. Plus, it's very easy to get it onto the actual hardware, and there's a good chance other people will play it since everyone has flash cards of some sort these days.
Logged

http://polycode.org/ - Free, cross-platform, open-source engine.
Cthulhu32
Level 6
*


Brawp


View Profile WWW
« Reply #13 on: April 24, 2009, 11:37:50 AM »

I've been doing homebrew on the DS and Gba for a couple years now (since Wintermute released libnds), and it is definitely a much easier place to start learning console programming than something as low level as the NES. I'm also working on an NES game currently, and I can tell you from experience, they really have refined the hardware and made it more accessible and easier to program on with the GBA and DS platforms in terms of homebrew.

If you want to start on a system that is easy, allows you to make cool SNES style games, has all the nice hardware tricks and hacks you need to learn, and will work on emus I'd say start with GBA using libgba. Go download DevKitPro (http://www.devkitpro.org) and install the package suite, it comes with a couple of libs, and will give you everything you need to start compiling.

Then, start by making pong! Follow this tutorial: http://www.webbesen.dk/gba/ you might have to update since I think libgba updated a few of the calls to be cleaner, like the printf junk.

After you make a few gba demos, and get comfortable, move up to the DS. Its virtually the same, the hardware calls are VERY similar (same chips), but you can use OpenGL, and you have way more options with the OAM sprite sets. Check Patater's DS Dev guide here: http://patater.com/manual

If you absolutely want to do some low level hacky asm, program an NES game. But just realize how restricted you are: the 6502 is an 8-bit chip with 3 registers, and only 1 register has math functions. So you do A LOT of work with A,X,Y to make things work correctly, and you'll pull your hair out a few times when something goes wrong unless you're an asm ninja. And with mapper 0(I think?) you only have 4kb of sprite tile data, and 4kb of background tile data. Later games got around this by using different chips on the NES carts themselves including the MMC5 used by Castlevania III to break the 256 sprite limit and do fancy audio crap, but that is much more complex.

If you do want to get serious about learning ASM and doing an NES game, first step through this tutorial:
http://patater.com/gbaguy/nesasm.htm

Then check out the NintendoAge series here:
http://www.nintendoage.com/forum/messageview.cfm?catid=22&threadid=7155

BunnyBoy is the NES guru when it comes to programming. He also created the first NES flashcart (PowerPak), updated the CopyNES to USB, invented a technique for reversing chips based on melting away the top layer and looking at the binary transistor connections, and has written a fair amount of custom NES mapping code himself. The other NintendoAge guys are pretty hardcore, a few of them have 100% collections with CIB nes titles. Those are also the same guys who own the NWC carts and pay like $5000 for them

Good luck!
Logged

Cthulhu32
Level 6
*


Brawp


View Profile WWW
« Reply #14 on: April 24, 2009, 11:45:09 AM »

I'd love to try to make a game for genesis hardware (I'll probably fail at it anyway).
Anybody's got some ressources?

Genesis programming I have no experience with, but its a whole different chip family. You gotta program 68k ASM. This guy started working on a genesis programming series it looks like, but that was back in 2006 - http://www.atariage.com/forums/index.php?showtopic=98540

Also looks like Zophar has a lot of docs - http://www.zophar.net/documents/genesis.html

And finally I think this site is still updated from time to time - http://devster.monkeeh.com/segapage.html
Logged

moi
Level 10
*****


DILF SANTA


View Profile WWW
« Reply #15 on: April 24, 2009, 01:04:49 PM »

Yeah I just found out about http://devster.monkeeh.com/segapage.html   
wow it's awesome, they even have a basic compiler for the genesisMEGADRIVE WTF

Also:
http://www.genny4ever.net/index.php?page=docs

The 32X seems to have kickass graphic capabilities, but it should be hard to code for it...
Logged

subsystems   subsystems   subsystems
RC
Level 0
***



View Profile
« Reply #16 on: April 24, 2009, 05:28:42 PM »

I've been doing homebrew on the DS and Gba for a couple years now (since Wintermute released libnds), and it is definitely a much easier place to start learning console programming than something as low level as the NES. I'm also working on an NES game currently, and I can tell you from experience, they really have refined the hardware and made it more accessible and easier to program on with the GBA and DS platforms in terms of homebrew.

If you want to start on a system that is easy, allows you to make cool SNES style games, has all the nice hardware tricks and hacks you need to learn, and will work on emus I'd say start with GBA using libgba. Go download DevKitPro (http://www.devkitpro.org) and install the package suite, it comes with a couple of libs, and will give you everything you need to start compiling.

Then, start by making pong! Follow this tutorial: http://www.webbesen.dk/gba/ you might have to update since I think libgba updated a few of the calls to be cleaner, like the printf junk.

After you make a few gba demos, and get comfortable, move up to the DS. Its virtually the same, the hardware calls are VERY similar (same chips), but you can use OpenGL, and you have way more options with the OAM sprite sets. Check Patater's DS Dev guide here: http://patater.com/manual

If you absolutely want to do some low level hacky asm, program an NES game. But just realize how restricted you are: the 6502 is an 8-bit chip with 3 registers, and only 1 register has math functions. So you do A LOT of work with A,X,Y to make things work correctly, and you'll pull your hair out a few times when something goes wrong unless you're an asm ninja. And with mapper 0(I think?) you only have 4kb of sprite tile data, and 4kb of background tile data. Later games got around this by using different chips on the NES carts themselves including the MMC5 used by Castlevania III to break the 256 sprite limit and do fancy audio crap, but that is much more complex.

If you do want to get serious about learning ASM and doing an NES game, first step through this tutorial:
http://patater.com/gbaguy/nesasm.htm

Then check out the NintendoAge series here:
http://www.nintendoage.com/forum/messageview.cfm?catid=22&threadid=7155

BunnyBoy is the NES guru when it comes to programming. He also created the first NES flashcart (PowerPak), updated the CopyNES to USB, invented a technique for reversing chips based on melting away the top layer and looking at the binary transistor connections, and has written a fair amount of custom NES mapping code himself. The other NintendoAge guys are pretty hardcore, a few of them have 100% collections with CIB nes titles. Those are also the same guys who own the NWC carts and pay like $5000 for them

Good luck!
I have devkitAdv, but devkitPro is a large download and I'm on dial-up so I couldn't download it unfortunately. I did part of the tutorial that you linked to a few months ago but stopped for a reason I cannot recall.

My only problem is that which each tutorial I've seen, the header files that they use are different, some use more and some use less, and they don't seem like they're enough to move on from the creations that you'll be making along side of the tutorials and I can't find any others (unless that's what libgba is for, I dunno. Tongue).

Also, does anyone know if you can use libgba with devkitAdv?
Logged

moi
Level 10
*****


DILF SANTA


View Profile WWW
« Reply #17 on: April 24, 2009, 07:15:25 PM »

The NES CPU is modified 6502, IIRC. There is a C compiler for 6502: CC65, so it might be useful for you.

6502 isn't very difficult to code, I used to do it on my Oric computer when I was 12. I even found it kind of fun. 8 bit processors are easier to code than newer generations.
Logged

subsystems   subsystems   subsystems
moi
Level 10
*****


DILF SANTA


View Profile WWW
« Reply #18 on: April 25, 2009, 09:36:17 AM »

Yeah I just found out about http://devster.monkeeh.com/segapage.html   
wow it's awesome, they even have a basic compiler for the genesisMEGADRIVE WTF
Okay I just played a bit with the Megadrive Basic and it's awesome, you can really make games with it. It can even compile 32X roms (but you have to know how the hardware works to be able to use it).

Maybe we could make a list of all the working emulator languages and make a homebrew compo?
 WTF

There is also Batari Basic for atari VCS and HUC for PC-Engine
Logged

subsystems   subsystems   subsystems
CK
Level 9
****



View Profile WWW
« Reply #19 on: April 26, 2009, 04:56:40 PM »

Maybe we could make a list of all the working emulator languages and make a homebrew compo?

seconded Well, hello there!
Logged

Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic