Kodewerx
https://www.kodewerx.org/forum/

N64 RSP Disassembler
https://www.kodewerx.org/forum/viewtopic.php?f=2&t=1865
Page 1 of 1

Author:  HyperHacker [ Wed May 09, 2007 10:01 pm ]
Post subject:  N64 RSP Disassembler

I'm not sure if I understand the RSP correctly. Games load R4000 machine code into it at startup, and microcode (essentially an interpreted bytecode) in as necessary while they run, is that correct? If so I need a program that will disassemble a given file as either R4000 ASM or microcode, since I'm not sure which I'm dealing with. Does this exist?

It might help if I explain the situation: I zeroed out a block of data in Mario Kart 64, and it makes Mupen64 complain that it can't recognize the RSP code which has a checksum of zero (and then crash). So I've completely wiped out some RSP code, but I don't know if it's machine code or microcode. It starts out with D6 B4 01 19 00 06 FE 3D 00 00 00 00 00 00 2D FB. If my sources are accurate (not really likely), as microcode this would be an invalid instruction and a NOP, but it's entirely possible only part of the block is RSP code.

Author:  Hextator [ Thu May 10, 2007 1:53 pm ]
Post subject: 

How does the processor know to execute RISC or Microcode, anyhow? While you're waiting for such a program, you could help yourself by figuring out which sections of the code are what, if you're able to. I looked up Microcode and it looked pretty ridiculous.

I think x86 is pretty ridiculous too, since the instructions have varying lengths (as if it wasn't bad enough that it was in grotesque little endian format). Microcode can have varying length too, yes? That's what I gathered...

Author:  Parasyte [ Thu May 10, 2007 8:14 pm ]
Post subject: 

All N64 emulators that I am aware of do not interpret or emulate RSP uCode at all. They use High Level Emulation which will instead identify which uCode kernel is being used, and simulates its functionality. This is why games with modified uCode (the Star Wars games, Indiana Jones, NBA ShowTime, etc) do not run in any emulator.

Nemu64 has an RSP disassembler, but I do not know how accurate it is, or if it even does anything at all.

The separation of MIPS and RSP code is simple, because they are separate chips with their own run-facilities (PC, stack, GPRs, etc.) and I believe RSP has its own region of memory specifically for its uCode.

Page 1 of 1 All times are UTC - 8 hours [ DST ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/