News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: Need help in reverse engineering an old GBA game  (Read 455 times)

mycomments2017

  • Newbie
  • *
  • Posts: 1
    • View Profile
Need help in reverse engineering an old GBA game
« on: February 14, 2018, 06:58:06 am »
> What game do you want to reverse engineer?
>> Tetris Attack, more specifically 'Dr. Mario & Puzzle League' https://www.mariowiki.com/Dr._Mario_%26_Puzzle_League (the 'Puzzle League' part)

> What is the problem with it?
>> The game shows rolling credits every time I score > 10000 points, it's annoying to me. I want to remove the 'rolling credits' even if I achieved 20000 points.

> What help do you need?
>> I obviously don't have the source. I have some prior experience with cracking dos/windows programs from the past (for my own amusement). In dos/win I could inspect the module for symbols/strings and could for example set a breakpoint on WM_SETTEXT and then patch instructions from there. I need a similar framework for GBA, & more specifically to be able to examine the module for strings/symbols && set breakpoints ,, step using the debugger && eventually patch the binary/rom.

> What have you tried?
>> I have successfully run the game using mGBA on windows. Furthermore I see that mGBA has Tools->Start GDB Server option (?).

> More specifically, what do you need?
>>
1. Some help maybe on how to attach a debugger (which debugger?) to GBA emulator (which emulator?) and step over/step in & examine registers & memory.
2. Some sort of tool that allows to disassemble/decompile & search for symbols/strings in binary rom (ida?)

FAST6191

  • Hero Member
  • *****
  • Posts: 2372
    • View Profile
Re: Need help in reverse engineering an old GBA game
« Reply #1 on: February 14, 2018, 12:40:43 pm »
http://problemkaputt.de/gba.htm#debug is the generally suggested debugger for the GBA these days. There are some others like VBA-sdl-h but no$gba is good and available for free these days.

If you are more familiar with X86 and IDA then... it is a bit more barebones in ROM hacking world. The very best it has to offer, which most would probably say is the NES emulator FCEUX, is http://www.fceux.com/web/help/fceux.html?Debugger.html and while the GBA is somewhere up there it is still not PC style. Still it should be able to do what you ask there. You might be able to smack IDA hard enough to do something as well, however I don't know what modules there are for the GBA these days (most people go for newer systems with it).

Forest for the trees. I could not find a video of the event ( https://www.youtube.com/watch?v=txQR_3vtmA8 and https://www.youtube.com/watch?v=CRvPR0vN6rM appeared to have no such thing, don't know if there was an option I missed them fiddling with for the TAS one) but if it is just simple graphics and you don't care then you might be able to take a tile editor and just make it transparent. While nerfing the instructions to do such a thing is a perfectly valid route it can be very effective to find the decorative thing and make it invisible -- I recall I think it was either final fantasy or castlevania GBA portraits that people were removing like that.

I do have some light documentation on the GBA http://www.romhacking.net/forum/index.php?topic=14708
But between what it sounds like you already know and
http://problemkaputt.de/gbatek.htm
http://imrannazar.com/ARM-Opcode-Map
https://www.cs.rit.edu/~tjh8300/CowBite/CowBiteSpec.htm
http://blog.quirk.es/2008/12/things-you-never-wanted-to-know-about.html
http://www.coranac.com/tonc/text/asm.htm
and
https://www.romhacking.net/documents/361/
You will probably be better off.