Q: What is GBAATM?

A: It is a program that lets you cheat on GBA games

Long A: It is a program that takes cheat codes for GBA games and converts them into machine language that is embedded into the games. It is useful for people who don't have a way of cheating in games -- in emulators without a cheat engine for example. Furthermore you can add slow motion to your games in conjunction with the cheats or by itself.

Q: What cheat codes are supported?

A: RAW (VBA) codes and encrypted and unencrypted Codebreaker and Gameshark v3 (GSSP) codes. Note that GS v3 codes are the same as CB codes whereas GS v1 and v2 codes were the same as AR v1 and v2. GS v1 and v2 codes will NOT work. .CHT (EmuCheat) formatted codes can also be imported and are converted to the Codebreaker format.

Q: How do I use GBAATM?

A: Select the GBA game that you want to patch.
   Select the file to save the patched game as.
   Select the patches you want to use.
   Configure the keys for the patches if you wish to.
   If you are using cheats either paste them into the edit box or load the text file with the cheats.
   If you are using cheats then select the code type.
   If you want a trainer menu to show on boot then check the box and read below for info on how to use it
   Click Patch Game!

   NOTE: Most of the time you will not need to change the settings but...

   If you experience slowdowns in game (that aren't caused by the slomo of course) then:
      Change the execution counter if your game is running slow (shouldn't need to be altered)

   If the slomo, enable/disable, execution counter, and/or the codes don't seem to be working properly:
      Change the RAM to use to the next value in the list
      0x3007FA0 and 0x3007FC0 will usually be safe places for free RAM

Trainer Menu
------------------------------------------------------------------------------------------------------------------
The labels you give the cheats are what will appear in the menu. If you want to change the default background, selection bar, font texture then create a bitmap that is either 24 or 32bit (not RLE) of the correct dimensions with whatever tool you want and import it with the corresponding button. The offsets for the start of the cheat selection area are from 0,42 to 239,139 if you want to dim the background like the default. The menu text can span from 1-3 lines with 26 characters on each line. It is autocentered for both width and height. / is used as a new line. 

ex: COOL GAME/TRAINER/BY SOME DUDE would display

      COOL GAME
       TRAINER
     BY SOME DUDE

The menu was handcoded in asm while learning GBA specific functionality at the same time so it isn't the best but it works well enough for now. I will be working on a better menu system but wanted to get this released in the meantime.

Also there is an in-game key combo to get back to the menu (Select+Down+Left) but be forewarned that it WILL trash the video RAM because there is no possible way short of flash cart specific PSRAM functionality to save that much data. Note as well that the in-game menu will blink because I am using Mode 3 (15bit bitmap mode) to draw the menu and I can't make a 75K buffer in game obviously so it draws directly to the video RAM. This will be alleviated once I move to a tile based menu.
