The Nintendo Reverse Engineering Project

5 September 2001

Feel free to send me any tools that you have made or now of with ashort discription and I will gladly post.

 

  1. Hardware Needed For developers to run there games on the GBA
  2. Compilers
  3. Graphics tools
  4. Sound tools
  5. Emulators
  6. Required Reading

 

Hardware:

These tools are available from Game Gizmo and are absolutely necessary for development. . This is the soul income for this site so if you decide to order from Game Gizmoplease use my link.

There are currently two choices for running Games and demos on your GBA and I strongly recommend purchasing them both.

 

Flash Advanced Linker

The Flash Advanced Cartridge Programmer and 64, 128, 256 megabit carts from Game Gizmo are a must have. These allow you to upload your demo to a cartridge and take it around and show it to all your friends (and yes for all you rom lamers out there you can download your pirated roms from the Internet and they run just fine but if you do that then you are just hurting everyone in the industry no matter how you justify it). Here is my review of the Flash Linker:

Wow my Flash advance linker and 64M cart arrived yesterday while I was at work. This thing rocks! I finally got to see my maze and fighter demos running on the real thing. I must take a moment and profusely thank Ky Crout who bought this wonderful device for me. It seems I have a fan. In exchange for e-mail support and a promise to finish my tutorials he just up and bought me one! Needless to say he is my new favorite person. As for a review, I had absolutely no problem getting it to work. I used GBAFix on my demos to validate the header, put some batteries in the linker and transferred. First time and not a single problem. It was really awesome to see my maze and fighter demos up and running on the GBA.

Jeffs MBV2 cable

And now on to your second and much cheaper choice. Jeffs MBV2 cable. This cable was created by Jeff Frohwien and for quite a while was the only means of running your demos on the hardware. That is not to say that it is any way obsolete. In fact if you do not have one then I highly recommend it as it is more useful than the Flash linker as it allows for many cool things. Here is my review:

Well it finally arrived: my new MBV2 cable came and I just wanted to post a little review. After downloading the new software from devrs.com My windows ME desktop and laptop had no trouble with the cable. I ran the simple multiboot loader and the sample rom that was included and was amazed to see it appear on the GBA screen just seconds later. I had to use a delay of 5 (milliseconds?) to get the cable to work but even then the download times were not too bad. Smelda(157 KB) took approximately 34 seconds and my roto demo(77 KB) took about 14 sec. All I had to do to get them to work was change the linker script from:

armlink -bin -first start.o -map -ro-base 0x08000000 -rw-base 0x3000000 start.o data.o smelda.o sprite.o -o smelda.bin -errors log.txt

to

armlink -bin -first start.o -map -ro-base 0x02000000 -rw-base 0x3000000 start.o data.o smelda.o sprite.o -o smelda.bin -errors log.txt

that is it. Roto.bin and smelda.bin worked immediately. My maze demo did not unfortunately but I am not 100% sure that version worked on hardware anyway. This cable retails for $39 on Lik-Sang site and is well worth the price. Its potential for a development tool is immense with such features as file server(for quick viewing of pictures and listening to sounds and music on GBA), printf() function that will output to the PC for debugging, and well it is just cool. This tool is immensely useful for its ability to quickly test small code and as a powerful and necessary debug tool. If you do not have one get one!

 

Compilers:

Arm SDT:

Get it from: www.gbadev.org/tools

Arm SDT is the official compiler created by those wonderful people over there at ARM who just so happen to make the GBA's processor. What this means for you is two things. First: Pretty damn well written compiler tuned to eke out the performance of the arm7tdmi proc inside the GBA. Second: Expensive as hell. Last I checked to have a legal copy was around $6000 so unless you are really serious this probably isn't the best way to go.

Now after saying all that you may be wondering why everyone is using the damn thing myself included (not for long). At first it was a pain in the ass to set up the gcc compiler as you had to compile it yourself and it was not nearly as optimal as the arm sdt. There was also the very important fact that although not exactly legal the arm sdt was very easy to obtain and fix so that the trial version would never install.

You can get the Arm SDT from www.gbadev.org along with the fix if you are so inclined. This is the compiler that is currently featured in my tutorials so it is a must until I switch to gcc some time in the next week or so.

To install the ARM SDT is a a simple matter of clicking on the included install program then applying the fix. Beware if using NT or 2K as there are known issues with it not installing. Check the mailing list for more info if you are using 2K. Then grab a demo (I might suggest my tutorial day 1 demo) and try to compile. Should be no sweet. Look at my tutorial for a slightly more in-depth look at the compiler.

 

GCC:

Get it from: HERE

GCC has progressed quite nicely over the last few months and can hold its own against ARMS own compiler. It is even rumored that it is slightly faster but I have not seen any real bench marks yet.

GCC is a free compiler that is retargatable for different processors. What this means to you is that for every system you want to compile for it will need to be rebuilt for that specific system. In the case of the GBA it will need to be rebuilt for the ARM7TDMI processor core. Normally this is kind of a pain in the ass wich is the main reason many people (myself included) stuck with ARM SDT for so long but fortunately thanks to people like Jeff Frohwein and Jason Wilkons we now have a very stable build of gcc that is even easier to install than ARM SDT was.

So to sum it up it is almost as fast, better supported, and free. That is good enough for me. I am switching over the next few days.

Instalation is very simple. Just expand this zip file into the root directory of your c drive. Thats it.

If you were looking to integrate gcc with visual studio grab this great appwizard by WhatZdat:

GBA APPWIZARD

 

Graphics Tools:

Image Converters:

my cheesy tools:

pcx2sprite

pcx2gba

Someone elses cheesy tools:

gifs2sprites v1.0
=============

By: anli, one of the #gbadev devotees
Member of Parallax Sisters

Format: gifs2sprites <16/256> <output.h> <file1.gif> [file2.gif] .....

Description: This is a utility to create GBA sourcecode from a set of sprites.
Put every sprite you want to include in a gif-file. Decide if you want
to get a 16-color palette (15 actually because you transparentness) or
a 256-color palette (which actually is 255 color big). Run the command.
The resulting header is then meant to be #included from your source.

All palettes of the gif-files are merged down to one palette, which will
be place in an array named "palette" as a series of u16 quantities.

Every sprite will be placed in a u16 array named obj# where # is a number
starting with 0 and increasing.

If the result palette grows too large for the desired color depth, the number of
colors will be decreased with help of color quantization. (All colors will be
placed in a cube that is divided in a number of blocks until the number of blocks
corresponds to the number of colors). If this happends, a warning will be displayed
when the command is run.

Category: Freeware

 

get it here GIF2SPRITE

Sprite tools:

The only sprite tools I use are made by boofly and they rock. His site explains them in much greater detail than I could do justice so head over and check them out. The one I use most is a program called objective which is crucial for Managing large sprites. These two tools have decreased my bandwidth for sprite updates by 80% in some cases so I highly recommend them to all devrs amateur or professional.

Check out: www.taswegian.com/TwoHeaded/framage.html

Check out: www.taswegian.com/TwoHeaded/objective.html

Map Tools:

My crappy map maker

map editor

The only map editor that I can really recommend is one called tume. It is free it is powerful and it is well supported. I have to warn you that it does have a learning curve as it is very feature rich. The output from this program although not specifically defined for the GBA is easy to work with. Fortunately my friend boofly has come through again and made a tume converter which handles the output from tume in an expert manner. Head on over to his site to check it out.

Get TUME here: http://members.aol.com/opentume

Get Booflys Awesome Tool here: www.taswegian.com/TwoHeaded/tumeric.html

 

Sound Tools:

Sorry haven't had much time to play with sound yet but when I do I will post some info I am sure. For now checkout these sites as they may be of some help.

JSENSEBE's Ditty Player

GASS MOD PLAYER

 

 

 

Emulators:

This is a simple one. There are many emulators out there but you really only need two. One of those is mappy virtual machine. It has an incredable, feature rich interface that is just awesome for developers. It has a built in source debugger that will allow you to single step through your c source code and countless viewers so you know exactly what is going on at all times.

Mappy Virtual Machine

The other emulator you need is any one of the following;

Boycott Advanced

VisualBoyAdvanced

Virtual GameBoy Advanced

in that order of preference although that is just a matter of taste. Virtual gameboy advanced is actually the best of those three but is a commercial emulator and is $35 I think so I have not actually tried it. The reason you need two emulators is that even though mappy rocks it has no sound and due to all its features it is a bit slow.

Required Reading:

Well what you need really depends on what your level of competency is. I am just going to recommend a few books that I own and that I learned from. I am completely self taught and books make up 90% of my recourses. The rest I get from the net.

C programming books.

I have owned several c programing books and there are even more out there to choose from. The ones I recommend are not necessarily the best there are because I have not read them all, but they worked well for me and I enjoyed them immensely (yes I am the type of guy who enjoys reading computer books immensely).

If you are an absolute newbie to computer programming I highly recommend this book. It is entertaining and well written. I especially recommend this book If you are the type who does not learn well from books. It has all the info you need in a format that will keep you entertained. It makes no assumptions as to your level of knowledge and walks you all the way through. You will by no means be a C guru at the end of this book but you will be able to program and will have enjoyed learning it.

This is the other c book I own and is much more in-depth than the for dummies series although a bit more dry. It is the best c book out there by the man who created the language. Don't be fooled by any other c programming book. If you are serious about c this is the book you must have.

Game programming.

You probably only need one good game programming book. I, on the other hand, being the geek I am, have many because I very much enjoy reading them. There is really no end all be all to game programming books and they all have a lot of good tips and tricks. I have many more than the ones listed below but these are my favorites.

 

These two books are great for DOS programming and general game concepts. Since much of the GBA can be related to DOS programming these are great books to have.

This is a windows programming book and I like it mainly for the windows features. It walks you from ground zero through windows programming and the directX architecture. This is very useful even if you don't plan on programming games for windows because you will always need to know how to write tools.