The Nintedo Reverse Engeneering Project

Okay seems it is time I again contributed something to the community. Over the next several days I would like to cover backgrounds, sprites, and a few other game related topics in much greater detail than I went into in my intro tutorials (day1-5). Now that you know the mechanics it is time to learn the specifics. This will be a demo series meaning that I am going to create a series of demos step by step that get increasingly more complex. Each demo will include whatever level of explanation I feel necessary. This will basically be the order of the series although that may change.


So far all I have is the code to the first 20 or so demos. I will be posting the tutor part of it over the next couple of days. Just check the links as some will lead to tutors and some will just lead to the demo...and some will lead to nothing at all.

I) Getting yourself acquainted with my crappy map editor

1) Drawing a single 256x256 mode 0 text background
2) Drawing a single 256x512 mode 0 text background
3) Drawing a single 512x256 mode 0 text background
4) Drawing a single 512x512 mode 0 text background
5) Drawing a single 128x128 mode 2 rotation background
6) Drawing a single 256x256 mode 2 rotation background
7) Drawing a single 512x512 mode 2 rotation background
8) Drawing a single 1024x1024 mode 2 rotation background
9) Drawing text background using the 16 color palette (may be awhile as my map editor does not support this at the moment)
10) 2 layer text background
11) 3 layer text background
12) 2 layer rotation background
13) Mixing rotation and text backgrounds
14) Using a background to render text
15) Making a rotation background rotate
16) Making 2 rotation backgrounds rotate
17) Intro to scrolling backgrounds
18) Scrolling maps bigger than the hardware the easy way
19) Scrolling vertically the not so easy but better way
20) Scrolling horizontally the not so easy way
21) Scrolling both ways the not so easy way
22) Using tiles bigger than 8x8
23) Breaking the 1024 tile barrier (advanced)

Now lets do the same thing for sprites. This one will cover all the many ways that sprites can be blitted and animated on screen that I know how to do.

II) Get Yourself acquainted with the sprite animation tool

1) Drawing a single 32x32 256 color sprite.
2) Drawing 2 sprites
3) Drawing 128 sprites
4) Drawing different size sprites
5) Rotating a sprite
6) Rotating many sprites using same rotation data
7) Rotating many sprites using different rotation data
8) Zooming sprites
9) Drawing 16 color sprites
10) Animation of a single sprite the easy way
11) Animation of many sprites
12) Animation with a bit more flexibility
13) Meta sprite (this is a big one : ) And using boofly's invaluable objective tool
14) Lets organize our memory into something a bit more useful
15) Creating an animation engine
16) Adding animated background tiles to our animation engine
17) Collisions between sprites and backgrounds using tile attributes
18) Collisions between sprites and backgrounds using bounding boxes
19) Collisions between sprites and other sprites
20) A bit of optimization for sprite to sprite collisions
21) Smoothing out our animation engine by adding a bit more control to the playback
22) Using sprites to display text?
23) Variable width fonts on Meta sprite overlays (Not for the weak of heart)
24) Breaking the 128 sprite barrier

Time to move on to some more interesting things that are necessary for games to work.

I) Stuff I missed
1) Saving data to the SRAM (pretty easy actually)
2) Multiplayer comms (soon as you all send me an extra gba I will get to work on that : )
3) bios functions
4) A bit more on Alpha blending
5) Input techniques

1) The simple state machine

III) Scripting
1) may be a bit before I get to this one…much to learn first

IIV) Adding a sound engine
1) this will actually be one of the first things I do in this section as it is not too hard (we are going to use a premade lib for this)


This is were we will try to bring this all together and make a simple 2D game. I am thinking a bit on the lines of the originally metroid with a bit of RPG (not too much) thrown in.

V) Making a simple adventure game
1) The design doc. This is were we get the pelimanaries layed out and set ourselves some well as sketch out our levels and our characters. This is the hard part. If your design doc is not well done the odds of ever finishing your game are reduced drastically.

2)Creating the background engine. This will combine all that we have learned so far into a simple scroll engine that will hopefully meet the needs of our soon to be game

3)Creating the sprite animation engine. mmm sprites

4)Adding the simple AI

5)Adding colision detection

6)Throw in just a touch of scripting

7)Slap on an intro and some credits and we are good to go.

Gameboy Advance Flash Linker