aarant / luvdis

Pure-Python Game Boy Advance Disassembler
MIT License
39 stars 2 forks source link

Example functions.cfg #1

Closed Mte90 closed 4 years ago

Mte90 commented 4 years ago

The readme refer to a functions.cfg file, I guess that is file is generic based on the various game boy and not for a game. An example file can be helpful to investigate the roms :-)

aarant commented 4 years ago

There is an example given on the main page:

# '#' starts a comment line.
# Function names are not mandatory; unknown funcs are named sub_<ADDRESS> when output.
arm_func 0x80000D0
thumb_func 0x800024C AgbMain
# If 'thumb_func' or 'arm_func' is omitted, the type is assumed to be 'thumb_func'.
# A module path may also be provided. Each time a new module is encountered, output switches to that path.
# Omitting the module will continue outputting to the same path.
0x80003b0 main.s CallCallbacks

These are not necessarily the same per game, although generally AgbMain is.

The function file is just used to help Luvdis discover functions and distinguish them from non-executable data. It should find some on its own based on push-call analysis, but the more you find manually the better the guessing will be.

You can loosen the requirements on function matching by passing

luvdis --min-calls 1 --min-length 1 ...

Note that while Luvdis will ARM functions as such, I haven't finished the ARM decoder yet so it doesn't analyze them. The vast majority of GBA functions are THUMB, anyway.