PDA

View Full Version : How is RCP emulated?



WildNinji
January 5th, 2005, 02:33
Hi, I am studing the n64 inners in order to understand if we can find a way to do LLE emulation somehow.
I can't understand some details in RCP emulation.
(don't fear to use tecnical terminology or details in you replies)

The RCP runs in parallel with the CPU. How do the two syncronize? How do the current emus simulate this parallelism?
Mupen does something like runRSPCycles(100);
Is there a complete list of RSP opcodes?
The one by anarko and the other by bpoint are wrong/outdated AFAIK.
How do task are submitted to the RSP?
The RDP is not reprogrammable, isn't it?

This is enough for now, I hope someone with the needed knowledge will find some time to answer these questions.
I'll be back in the next days with new questions :)

WildNinji
January 5th, 2005, 17:12
I found the RSP interpreter by zilmar. Reading its code is helping me to understand many details.
Too bad that the RSP source has not been updated since 2001 :(


How do task are submitted to the RSP?It seems that RSP tasks are submitted via SP_{RD,WR}_LEN once SP_STATUS is cleared. So break should stop the RSP by setting some bits on SP_STATUS.
This means that everytime a gfx is shown, before sending the associated DL, the gfx ucode has be to DMA'd to IMEM. Is this correct?


The RDP is not reprogrammable, isn't it?
The RDP execute commands that someone (the RDP ucode?) synthetize to DMEM.
I think that RDP is started/stopped/operated via DP command registers. Is this correct?

This leaves me with two new questions

What are the DP span registers used for?
I found them in anarko's n64ops#h.txt
Once RSP opcodes are emulated and RDP commands executed, what is left for a true LLE emulation?