Step 2.x DMA Device

Technical discussion for those interested in Supermodel development and Model 3 reverse engineering. Prospective contributors welcome.
Forum rules
Keep it classy!

  • No ROM requests or links.
  • Do not ask to be a play tester.
  • Do not ask about release dates.
  • No drama!

Step 2.x DMA Device

Postby Bart » Sun May 29, 2016 10:55 pm

Findings related to the Model 3 Step 2.x DMA device will be posted here.

The Real3D DMA device is a bit more complicated than I recall. I didn't have much time to look at it tonight but I started by logging all 32-bit writes. It appears to be capable of accessing the Real3D register space directly, without having to do a DMA copy:

Code: Select all
Real3D: WriteDMARegister32: reg=10, data=80000000
Real3D: ReadDMARegister32: reg=14
Real3D: WriteDMARegister32: reg=10, data=80000004
Real3D: ReadDMARegister32: reg=14
Real3D: WriteDMARegister32: reg=10, data=80000008
Real3D: ReadDMARegister32: reg=14
Real3D: WriteDMARegister32: reg=10, data=8000000C
Real3D: ReadDMARegister32: reg=14
Real3D: WriteDMARegister32: reg=10, data=80000010
Real3D: ReadDMARegister32: reg=14
Real3D: WriteDMARegister32: reg=10, data=80000014
Real3D: ReadDMARegister32: reg=14
Real3D: WriteDMARegister32: reg=10, data=80000018
Real3D: ReadDMARegister32: reg=14
Real3D: WriteDMARegister32: reg=10, data=8000001C
Real3D: ReadDMARegister32: reg=14
Real3D: WriteDMARegister32: reg=10, data=80000020
Real3D: ReadDMARegister32: reg=14


I never realized before but Step 1.x games map the Real3D status registers to PowerPC memory at 0x84000000-0x84000020. On Step 2.x, they are only accessed through the DMA device and using the codes above. I will eventually simplify Real3D.cpp to handle these commands as status register reads. I also need to check and see if any games actually do anything with the values returned (other than checking the single status flag that we know about).

Games also write commands with the form 0x200000xx but no data seems to follow. Most of these do not correspond to the definitions in pro_constants.hh, by the way, so I think they are something entirely different. We know that in one case, Virtual On 2 expects a PCI ID code back and there is no mention of anything like this in pro_io_struct.hh. As far as I can tell, those data structures do not correspond to what Model 3 uses internally.
User avatar
Bart
Site Admin
 
Posts: 1995
Joined: Thu Sep 01, 2011 2:13 pm
Location: New York City

Return to The Dark Room

Who is online

Users browsing this forum: No registered users and 1 guest