I moved away from the debug menu because I wasn't really making much progress, every time I try to make a patch to make it properly initialize the debug data the game just crashes.
Instead I moved into analysis of the PSX version, I still want to have the map viewer support it (it's not going well, the map format is insanely different compared to the original).
However I did find something!
So the game strings mention two interesting weapons: the JL-2 and JL-9. I also remember a dev in the dev level mentioning something like "have you found the JL-9 yet?" and that has been quite a mystery for me, especially because there's absolutely NOTHING about it online.
Disassembly confirmed that the JL-9 is available through some method still unknown to me but it probably involves an undocumented button combination, JL-2 is documented like this on gamefaqs:
Ignore the invalid passcode message. During gameplay hold R1 and press Circle to refill health and energy, get 2000 credits and all the items.
All the items include the JL-2 as the last weapon, it's a weapon that takes a moment to fire and lays massive devastation and has a huge cooldown.
Eventually, through good old RAM searches in the emulator, I found that address 14577E holds the 1 byte ID of the current weapon, so freezing it at 0D reveals... the JL-9!
It's basically a JL-2 that shoots really fast and has more potential for devastation.
Now seeing this I'm flooded by a flashback, I must have seen this image somewhere already but I have absolutely no idea where, apparently there's some way to upgrade the JL-2 to JL-9 or something? Right now I don't know but I'm working on getting to an actual answer
Oh also now I'm trying out all the values and WTF IS THIS??
I might have found another unused weapon, this might be the RP-16 but I don't think I've ever seen this sprite... or have I?? Once again I have that weird sense of deja vu
here's a table:
| 00 | No weapon (internally labeled as INVALID GUN) |
| 01 | RP-16? |
| 02 | RP-22 |
| 03 | RP-32 |
| 04 | SG-A1 |
| 05 | AC-88 |
| 06 | PA-31 |
| 07 | EM-4 |
| 08 | PL-1 |
| 09 | UV-9 |
| 0A | GL-303 |
| 0B | AR-7 |
| 0C | JL-2 |
| 0D | JL-9 |
Analysis update
Unlocking the JL-9 normally involves:
- Warping to the final mission on HARD with code MFM4 (I'm not sure if it's Loose Cannon or No Remorse difficulty because the password lists on gamefaqs don't use the proper names). This sets a flag that contributes to the unlock.
- There's some kind of event in the level that needs to be triggered and sets the next flag. I still don't know if it's just beating the level or something else but sounds like it's going to be really difficult to check, but I might try that by freezing my health to max
- Once back at the main menu, likely after beating the game, go back to the password screen and insert the L0SR code. Fun fact: inserting the L0SR code without the flag set by warping to the last level in hard mode specifically disables the JL-9 from unlocking, another fun fact is that the first letter in the code is optional and could be anything, only 0SR is considered for the enable condition.
- Load a level and press R1 + Circle (that's the normal button combination to trigger cheats when L0SR is active). The JL-9 should be awarded.
There are still many unknowns because I'm still investigating this, since it requires decoding level script code and I haven't even managed to get halfway to properly parsing levels yet. Still the hard mode completion looks like something interesting to try.
I managed to do an emulator confirmation:
Setting main memory address 6739D to "01" and then inserting L0SR in the password screen and starting the game does indeed put the JL-9 in the inventory right next to the JL-2, so that's ONE part of the mystery solved, the only thing left to find is what sets that byte to 01 in that level