Repository navigation
overlay: finish Gaspar (mountable turret update) - #173
Merged
mateuszklysz merged 1 commit intoOct 13, 2026
Merged
Conversation
FUN_L09_00304c80, the last pending function of l09. The sound-probe global D_0013E5BC is declared as an array (retail keeps its store ahead of the moby loads), and the case-0 zero stores follow the order that frees the vars register last.
Decompilation progress
1 newly matched function (3,492 B)
Compared with main (e934c0a). C_FUZZY uses main's last measurement. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Before
Gaspar (level 09) had one pending function.
FUN_L09_00304c80After
It is exact, so Gaspar is complete. One commit, gated, on current main (#171).
It is the turret the hero mounts: he sits in it, aims with the stick and fires the two barrels in turn. Nothing to port (rac1-decomp has it as asm only, and no other planet has a matched copy); written from an m2c draft. The unit is in
OVERLAY_SN_UNITS, so it builds with SN cc1 like the rest of003033a0.c.Things worth a look
D_0013E5BC(also read byclamp_voice_position_to_collision; namedsound_probe_ignore) is declared as an array and written[0] = moby: as a plain scalar the compiler assumes it can't alias the moby fields and hoists the loads above the store, where retail keeps the store first.vars->unk40 = 0has to come last in source; the scheduler first emits the store that frees the vars register (checked with-fsched-verbose).$f20; the stick y invert has its ownstick_y;D_L09_00161CC0isf32[2]with the sda attribute so Ps2EeAs reaches it through$gp(commented); the two*= 0.97flines are swapped and the barrel select isvars->barrel == 0 ? 4 : 3.D_L09_00180440andD_L09_00166E00get file-local struct types (no shared header uses them); moby and hero fields come from the shared headers. No configure.py entries, no compiler flags.Verification
make elfends withPASS: reconstructed boot ELF matches retailmake overlaysends withPASS: all 2780 overlay functions in C match retail, with their 17232 copies in other placesmake checkpasses