mirror of
https://github.com/jiangzhengwenjz/gbadisasm.git
synced 2026-01-26 01:55:41 +00:00
Game Boy Advance disassembler
| config | ||
| .gitignore | ||
| add_syms_to_asm.py | ||
| capstone-3.0.5-rc2.tar.gz | ||
| disasm.c | ||
| fireemblem8.cfg | ||
| fireemblem8_ida.cfg | ||
| gbadisasm.h | ||
| main.c | ||
| Makefile | ||
| pokeruby.cfg | ||
| README.md | ||
GBADISASM
This is a simple disassembler for Game Boy Advance games.
Usage
gbadisasm rom_file -c config_file -l link_address -s
rom_file: the GBA rom to disassemble.-c config_file(optional, but necessary for good output): a config file that gives hints to the disassembler.-l link_address(optional): where the rom is linked to -- defaults to 0x8000000.-s(optional): assume there's no rom header when present.
Config File
The config file consists of a list of statements, one per line. Lines beginning with # are treated as comments. An config file alttpafs.cfg for The Legend of Zelda: A Link to the Past and Four Swords (U) is provided as an example.
Config File Statement Format
Note: <> means optional. [] means you need to replace with your own address/name/number.
arm_func [function_address] <[function_name]> <f>: specify an ARM function. The letterfmeans you're sure this is a function (so it will never be changed to a normal label).thumb_func [function_address] <[function_name]> <f>: specify a THUMB function. The letterfmeans you're sure this is a function (so it will never be changed to a normal label).arm_label [label_address]: specify an ARM label. It may be changed to a function during analysis.thumb_label [label_address]: specify a THUMB label. It may be changed to a function during analysis.arm_far_jump [jump_target_address]: specify an ARM far jump target (i.e. aBLtarget but not a function).thumb_far_jump [jump_target_address]: specify a THUMB far jump target (i.e. aBLtarget but not a function).jump_table [jump_table_address] [count]: specify a jump table withcounttargets. This only works with jump tables generated by agbcc variants.pool_label [pool_label_address] [count]: specify a pool label withcountof 32-bit words.data_label [data_label_address]: specify a data label. This results in.byteoutput.
Output Format
The program prints assembly code to stdout. The output should work with this header, with .syntax unified specifed.