Tools needed for compiling:
- devkitARM r6

If you want to debug as well, you will need:
- Insight 5.2.1 for ARM
- Visualboy Advance SDL version

To regenerate the armOps.h or memwritelut.h file you will need Visual Studio.net, simply open the
project and run it.

To compile, start a console window and add the path to devkitARM.
Then "make debug" or "make release" to compile (you will need gnu make).
To clean the files: "make clean"

If you set up your directories as follows:
.\gbaspc\(source to gbaspc)
.\gbaspc\vboy\(visualboy advance SDL, with visualboyadvance.exe renamed to vboy.exe)
.\gbaspc\insight-5.2.1\(insight debugger)
.\devkitarm\(devkitarm files)

You can use:
setup.bat - set up the sources for compiling.
debug.bat - start the debugger and vboy advance automatically for you, you still need to connect them though
run2.bat - runs the compiled gbaspc in vboy
run.bat - uses no$gba to run

----------------------------

Thoughts:

Using dynamic compilation to ARM.  Handling the 8 bit registers was a pain :).

Blocks are compiled until a branch is encountered, cycle times are added at the end.  24k in IWRAM and 32k EWRAM
right now for code buffers, I think this can be knocked down to 24k IWRAM with 24k EWRAM back probably once I
have a more efficent code caching scheme (than just clearing the cached table :P).

Interesting thing to test is how much BRR space is actually used.  If we are going for no extra RAM we can do
BRR on the fly.  This will be much slower thow.

The 64k of data is be stored in EWRAM.

DSP writes can be handled effectively with a jump table.  Writes/reads can be handled in general
with a read/write to the memory location, then a fix-up operation afterwards.  Fix-up simply uses a
jump table for the 64k address space, rom-space inefficient, but instruction wise it's awesome.

Timers are updated 2048 times per second.

----------------------------

GDB debugging

First: Compile source with -ggdb
Second: Start up vboy-sdl with -G game.elf
Third: Start up arm-gdb with game.elf
Fourth: Type "target remote localhost:55555" into console in gdb
Fifth: Start the program running from debugger
Sixth: Hit 'c' in vboy to break out, or set breakpoints

----------------------------

Source listing

Compile with -S
as -ashld file.o >list.asm

Map file

ld -M file.elf
readelf -l file.efl

----------------------------

Thanks to:
Snes9x authors
Zsnes authors
AntiResonance