Dave, I got the impression that you wasn't really sure where those F3DEX. and SW 2.0x ucode names come from. I found out last night that they are in DMEM.
Code:
If you know the following you can directly start HLE out of it.
HLE: High Level Emulation - first hacked out by Epsilon and RealityMan. (Authors of UltraHLE.)
The DMEM is filled from 0x04000fc0 - 0x04000fff with the following:
0x04000fc0: task
0x00000001 ... Graphics Task
0x00000002 ... Audio Task
0x04000fc4: flags?
0x00000002 ... DP wait
0x04000fc8: bootcode
0x04000fcc: bootcode length
0x04000fd0: ucode
0x04000fd4: ucode length
0x04000fd8: ucode data
0x04000fdc: ucode data length
0x04000fe0: dram stack (for matrices)
0x04000fe4: dram stack length
0x04000fe8: ?
0x04000fec: ?
0x04000ff0: display list
0x04000ff4: display list length
0x04000ff8: ?
0x04000ffc: ?
I call function PrintDMEMinfo() (in debug.c.txt) once per game in RDPProcessDList() and in the ucode data part are those ucode names and some other stuff. These are ripped off from the output:
mario64:
Code:
RSP SW Version: 2.0D, 04-01-96 SGI U64 GFX SW TEAM: S Anderson, S Carr, H Cheng, K Luster, R Moore, N Pooley, A Srinivasan
Zelda OOT:
Code:
RSP Gfx ucode F3DZEX.NoN fifo 2.06H Yoshitaka Yasumoto 1998 Nintendo...
RSP Gfx[Safe] S2DEX fifo 2.05 Yoshitaka Yasumoto 1998 Nintendo...
in debug.c.txt is a working function for printing ucode, ucode data, and dlist to file dmem.txt, use it if you want. Probably you already know all of this, but in case you don't and for others who want to know i decided to post this stuff.
And finally a question: Is the data from address found in [0x04000fd0] loaded to the RSP or how does the ucodes work? is it like a GFX "BIOS" which is loaded for every dlist? I really doubt it is loaded every time a new dlist comes so there must be some flag that gets set if ucode is to be changed? Or am i totally lost here?