A couple of interesting things happened between the last update and now. Anthropic’s Fable 5 released and was taken away, an internal build of ape escape based off the demo was dumped.
This month I had decided to get a Claude subscription to see what all the Claude Code hype was about. I tried it on a few open questions I had about specific operations and the like and some old school design patterns for systems programming, as well as to see if it could figure out an issue I was having with pcsx-redux. It worked very well for those very targeted tasks and actually helped me resolve the issue with redux that I was having (path issue with a json that I didnt know existed).
I then hear about a ghidra MCP and am like hmmm this is interesting, scary as who wants to give ai write access to something you have spent hundreds of hours on but ill just give it read access. I set up LaurieWired’s ghidraMCP in eclipse (just in case i want to extend it) and tried it out. It was cool and again, useful when youre doing targeted tasks and dont want to be copy pasting C and assembly but for real broad analysis, I found it to be underwhelming to be honest.
Well it just so happened that a few days later Fable 5 gets released so I decided to try it out. I dont know how it would perform on a completely unannotated ghidra project but I asked it to analyze everything I had so far on the core CD system and give me an architectural overview. I wanted it to come up with its own assumptions based only on what was documented in the ghidra project and to categorize its findings based on confidence level. Those at the high confidence were 100% in line with my earlier independent findings, while there were some hallucinations in the medium confidence its not unexpected, you should never blindly rely on these tools and have to verify everything especially for projects like these. I do think though that with this model we are at the point where it saves more time in work than it takes going through and verifying everything.
However maybe its me just being a beginner but Claude speak for RE jargon is horrifying to me. Is it understandable? Big picture yeah but to me its so unnecessary, maybe its to minimize tokens but here is a sample of its cd architecture output:
CustomCdlReadN (0x20) macro: latches read globals (cdReadDestinationPtr(+Base),
totalSectorsToRead, remainingSectorsToRead, unkBufferPtr = entry’s done-flag ptr),
CdControl(CdlReadN, loc, …) (implicit Setloc), installs cd_ready_callback, state →
READN, mutates the entry to CdlPause without advancing the exec index (pre-queued
teardown: the same slot dispatches later as Pause, then advances).
Around April I reversed engineered most of the spu initialization function, so I asked Claude to find the game facing surface, sound api and sound driver functions, go through them all and build me an architectural overview and analysis of the sound engine. I wont know how it did until probably closer to fall though as I have to map out the sound engine myself first.
Overall it was a fun model to play around with and seems promising to assist with RE work so far but I don’t know if for me its 100 dollars a month worth. On the pro tier I was only getting 2 or 3 prompts out of it every 5 hours so not really useful if that’s your subscription. It did end up getting pulled for “National Security” concerns so maybe Anthropic is onto something here.
Next I tried out the internal ape escape build.
The internal build seems to be more closely related to the demo. The intro scene with Specter putting on the helmet uses the same textures in the demo and the time station has stage select in an extra room.
Something cool I noticed, this being a Japanese build is that there is audio saying sony computer entertainment and requiring the dualshock controller. This may explain why in cd_load_lookup_table we demute the CD.
Unlike the release build which has a real time title screen, the title screen on the build is a static texture and has 4 options instead of 2. The two aditional options are minigame and sound. The mini game menu allows you to pick between 4 with galaxy monkey replaced with a cheerleading game and an additional unfinished game titled ????. I dont know if galaxy monkey has been completely replaced but thats my assumption as there are only 4 mini game EXE. You can also run the opening cutscene, which hasnt been finalized, through this menu.
In game a debug menu and hitbox viewing can be accessed using specific button combinations as well as a free travel mode that allows you to move in the Y coordinate with the right analog and X with the left. The debug menu has some bar graphs which would be interesting to figure out what kind of data they map to. There are test levels, you can access all the gadgets immediately with a button combination, and can select area to spawn in when picking a stage.
There is a lot more than I can list but in my first thirty minutes of playing some things I found that show how the game isnt finished are:
- Voice acting and face and body textures missing from the polygon streamed cutscenes.
- Some enemies are missing like snorters, onions, creepers. (With galaxy monkeys missing this may mean snorters were created for that minigame)
- Broken collision detection with gabriesas.
- Monkeys in a location with different type of pants than the release build.
- Slightly different textures.
- Charu stage debrief has the music for the gladiator time attack instead of the warning sound effect with a different background texture as well.
I do wonder about modifying the release build by replacing the new time station with the old one for example. I think that would be super cool. For the next update I have been investigating the final two functions left in main. Through these I gained some insight into how the game knows what data to load before a state manager is called. I know I should be finishing the CD documentation but hey this is part of the CD and now I have a clearer picture of the overall CD system.