
Here are some common route for the last five mavericks: Most runners like to put Web Spider as early possible for RNG (luck) purposes. All that matters is that Jet Stingray is done before Web Spider and that Slash beast is done before Frost Walrus. While this makes the boss fight slightly more difficult, it puts a major RNG point at the beginning of the run, allowing for more efficient resets.Īfter Split Mushroom, the order of the next five stages doesn't really matter too much.
#Mega man x4 sprites code#
Disassembly shows the game going through the code we pulled and Memory shows data being written into RAM. Open the Memory and Dissasembly windows, and use the Step Into (F7) command. This snippet should be located in the Decompression Routine, so just copy the entire function.Ĩ0017008 bne v0, zero, L17024 Ĩ0017030 beq v0, zero, L17044 Ĩ0017050 beq v0, zero, L170a8 Ĩ0017058 bne a2, zero, L17078 Ĩ0017068 bne v1, zero, loop17060 Ĩ001708C bne v1, zero, loop1707c Ĩ0017098 bne a3, zero, loop17004 ĥ) To help confirm this is correct, use pSX's built in debugger and set a memory write breakpoint on $8016DEA8. G) Then you can enable "asm log" to get all the instructions.ģ) Use AdisasM to disassemble the RAM that was previously dumped and search for the final snippet of code that was executed in the assembly log. Tracing: Use the emulator's Save(F1),load(F3) + debugger's "total inst."Ī) Emulator F1 then F3 (set "total inst." to 0).ī) Break on Memory Write ($8016DEA8 in this case).ĭ) When break point occured, remember current "total inst." value.Į) Emulator F3 (set "total inst." to 0 again). I figure I better make sure I even found the correct routine before I start trying to figure out what it all does.ġ) Use GPU upload breakpoint to find where X's graphics are loaded into VRAM from and then dump the RAM.Ģ) Use tracing and assembly logs to find the code being executed. I've been messing around with PCSX Agemo Debugger and pSX's built in debugger the past couple of days and want to make sure I did everything correctly. Here are the files, perhaps someone recognizes the compression method and/or a tool exists already that would work on them.Īt any rate, I'll probably be stuck using a debugger and figuring out the decompression routine myself. ROCK_X6.DAT > ROCK_X688.BIN > ROCK_X68803.BIN = X (Shadow Armor) ROCK_X6.DAT > ROCK_X687.BIN > ROCK_X68703.BIN = X (Falcon Armor) ROCK_X6.DAT > ROCK_X686.BIN > ROCK_X68603.BIN = X (Ultimate Armor) ROCK_X5.DAT > ROCK_X594.BIN > ROCK_X59403.BIN = X (Falcon Armor) ROCK_X5.DAT > ROCK_X593.BIN > ROCK_X59303.BIN = X (Ultimate Armor) ROCK_X5.DAT > ROCK_X592.BIN > ROCK_X59203.BIN = X (Force Armor) - DUPLICATE PL02_U.ARC > PL02_U02.BIN = X (Ultimate Armor) Looking at the palettes stored in the files, I was able to determine what the compressed graphics were, despite not being able to view them. I found a tool called BioFAT that was able to split the game archives into parts. I know I can dump them with a VRAM viewer, but I'd like to increase my knowlegde and skills by figuring out the decompression routine I just need a bit of guidance on what I'm doing. The player sprites and weapons seem to be the only things that are compressed fortunately. Of course this means dealing with compression at times, and the game I'm currently working with is Mega Man X4 (X5-6 look to use the same compression method just by looking in Tile Molester). I'm spearheading the complete re-rip of graphic archives and replacing everything with data rips.
