decompme / decomp.me

Collaborative decompilation and reverse engineering website
https://decomp.me
MIT License
383 stars 119 forks source link

[PRESET] Create Compiler Presets for "Aironauts" #1343

Open bismurphy opened 2 months ago

bismurphy commented 2 months ago

I would like to create/update a compiler preset on decomp.me.

Hello!

I have recently started a light "Aironauts" decompilation project, at https://github.com/bismurphy/Aironauts-decomp. I have been using decomp.me to get started, and now that I have some working functions decompiled, it would be great to have a preset.

There are two key issues here. One is that this game does NOT appear to use ASPSX like all existing PlayStation games do, and therefore should not use maspsx. Please view the Makefile on the project above (https://github.com/bismurphy/Aironauts-decomp/blob/main/Makefile) to see this. Instead, I am using a simple Python script I made called "menospsx" (https://github.com/bismurphy/Aironauts-decomp/blob/main/tools/menospsx/menospsx.py) to do some very light cleanup on the assembly from the compiler.

The other issue is that this game seems to use GCC 2.8 for some functions, and 2.7 for others (specifically, I have been using 2.8.1-psx and 2.7.2-psx). I have not explored enough of the game to work out which parts use which, and it's possible that there are yet more GCC versions being used in different places. What this means is that ultimately, this game will need two different compiler options.

I think it would be a bit silly to make two whole presets just for this one game (especially since I'm probably the only person interested in this game), so ideally it would be nice if there could just be one preset with 2.7 or 2.8 (doesn't matter which), and be able to toggle over after making the scratch.

So far from what I've found, all the functions want -G0 -O2 -gcoff, regardless of which compiler is used. Presumably as more functions are decompiled we will narrow down the edge cases and may need to add more arguments.

It may end up being that the best way to fulfill the needs of this game is to allow independent selection of compiler and assembler on the site. Alternatively, there could maybe be a toggle in the Options to use either maspsx or menospsx?

I don't know enough about the site internals to start putting this together, but thought I would make the issue here to start a conversation, and hopefully an active maintainer might pick this up :)

Happy to work with anyone to iterate on this as needed, thank you for your time.