Line 1:
Line 1:
−
Some of the Wii U's hardware components are available to and primarily used by the [[Hardware/Espresso|Espresso]]; including the [[GX2]], DSP and AX. These devices are mapped and available in [[Cafe OS]] userspace, used without the [[IOSU]]'s involvement.
+
Some of the Wii U's hardware components are available to and primarily used by the [[Hardware/Espresso|Espresso]]; including the [[GX2]], DSP and AX. These devices are mapped and available in [[Cafe OS]] userspace at 0xfc200000, used without the [[IOSU]]'s involvement.
==GX2 Registers==
==GX2 Registers==
Line 7:
Line 7:
| ppc = Full
| ppc = Full
| base = 0x0c200000
| base = 0x0c200000
−
| len = 0x30000
+
| len = 0x80000
| bits = 32
| bits = 32
−
| ppcirq = ??
+
| ppcirq = 2
−
| latteirq = ??
}}
}}
''See Also: [[GX2]]''
''See Also: [[GX2]]''
Line 25:
Line 24:
:Conceptual document explaining how to actually use the 3D engine, shader pipelines, caches, etc. Names registers, but does not give addresses (readers should cross-reference the 3D Register Reference Guide)
:Conceptual document explaining how to actually use the 3D engine, shader pipelines, caches, etc. Names registers, but does not give addresses (readers should cross-reference the 3D Register Reference Guide)
−
====Cafe OS====
+
===Cafe OS===
−
Cafe OS applies various APIs on top of the GX2's raw hardware registers - [[gx2.rpl]] and [[Coreinit.rpl#Screen|OSScreen]]. OSScreen is the easier of the two to reverse-engineer, and reveals some unknowns in the hardware. For example, it uses the registers at ''GpuF0MMReg'':0x6100 to set up one framebuffer - which matches the D1GRPH registers according to the RV630 Register Reference Guide (see chapter 2.7.1 - Primary Display Graphics Control Registers). However, the API ''also'' uses registers at ''GpuF0MMReg'':0x7100 identically; suggesting the existence of another display controller at that location. The Register Reference Guide does not list any registers at that address, suggesting some major differences between the GX2 and the RV630.
+
Cafe OS applies various APIs on top of the GX2's raw hardware registers - [[gx2.rpl]] and [[Coreinit.rpl#Screen|OSScreen]].
+
+
====OSScreen====
+
OSScreen is the easier of the two to reverse-engineer, and reveals some unknowns in the hardware. For example, it uses the registers at ''GpuF0MMReg'':0x6100 to set up one framebuffer - which matches the D1GRPH registers according to the RV630 Register Reference Guide (see chapter 2.7.1 - Primary Display Graphics Control Registers). However, the API ''also'' uses registers at ''GpuF0MMReg'':0x7100 identically; suggesting the existence of another display controller at that location. The Register Reference Guide does not list any registers at that address, suggesting some major differences between the GX2 and the RV630.
+
+
OSScreen uses the following D1 registers: D1CRTC_BLANK_CONTROL (sets D1CRTC_BLANK_DATA_EN), D1GRPH_ENABLE, D1GRPH_CONTROL (sets D1GRPH_DEPTH to 32bpp, D1GRPH_FORMAT to ARGB 8888, and D1GRPH_ARRAY_MODE to ARRAY_LINEAR_ALIGNED), D1GRPH_PRIMARY_SURFACE_ADDRESS, D1GRPH_PITCH, D1OVL_PITCH (for unknown reasons, the overlay is disabled) and an unknown register at ''GpuF0MMReg'':0x6914. As mentioned before, OSScreen also uses a set of registers 0x1000 bytes along from the D1 registers (GRPH_ENABLE at ''GpuF0MMReg'':0x7100); which could be for Gamepad video output.