GSP Services: Difference between revisions
mNo edit summary |
mNo edit summary |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
__TOC__ | |||
{{Anchor|GSPGPU}}{{Anchor|gsp::Gpu}} | |||
= GSP service "gsp::Gpu" = | = GSP service "gsp::Gpu" = | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 56: | Line 57: | ||
| | | | ||
| No | | No | ||
| RegisterInterruptEvents | | RegisterInterruptEvents (Stubbed) | ||
|- | |- | ||
| 0x000B0040 | | 0x000B0040 | ||
| | | | ||
| | | Usually not (see below) | ||
| [[GSPGPU:SetLcdForceBlack|SetLcdForceBlack]] | | [[GSPGPU:SetLcdForceBlack|SetLcdForceBlack]] | ||
|- | |- | ||
Line 71: | Line 72: | ||
| | | | ||
| No | | No | ||
| SetDisplayTransfer | | [[GSPGPU:SetDisplayTransfer|SetDisplayTransfer]] | ||
|- | |- | ||
| 0x000E0180 | | 0x000E0180 | ||
| | | | ||
| No | | No | ||
| SetTextureCopy | | [[GSPGPU:SetTextureCopy|SetTextureCopy]] | ||
|- | |- | ||
| 0x000F0200 | | 0x000F0200 | ||
| | | | ||
| No | | No | ||
| SetMemoryFill | | [[GSPGPU:SetMemoryFill|SetMemoryFill]] | ||
|- | |- | ||
| 0x00100040 | | 0x00100040 | ||
| | | | ||
| No | | No | ||
| SetAxiConfigQoSMode | | [[GSPGPU:SetAxiConfigQoSMode|SetAxiConfigQoSMode]] | ||
|- | |- | ||
| 0x00110040 | | 0x00110040 | ||
| | | | ||
| No | | No | ||
| SetPerfLogMode | | [[GSPGPU:SetPerfLogMode|SetPerfLogMode]] | ||
|- | |- | ||
| 0x00120000 | | 0x00120000 | ||
| | | | ||
| No | | No | ||
| GetPerfLog | | [[GSPGPU:GetPerfLog|GetPerfLog]] | ||
|- | |- | ||
| 0x00130042 | | 0x00130042 | ||
Line 166: | Line 167: | ||
The GSP module starts a thread for handling commands for each service session, a maximum of 4 processes can use this service at once. Official applications have an optional code-path which [[GSPGPU:WriteHWRegs|writes]] to registers during initialization, this is normally not used however. | The GSP module starts a thread for handling commands for each service session, a maximum of 4 processes can use this service at once. Official applications have an optional code-path which [[GSPGPU:WriteHWRegs|writes]] to registers during initialization, this is normally not used however. | ||
If a process has acquired rights, attempting | If a process has forcefully acquired rights (ErrDisp), attempting [[GSPGPU:SetLcdForceBlack|unset LCDs black-fill]] from another process will fail. | ||
Saving/restoring VRAM requires bit0 of process [[GSPGPU:RegisterInterruptRelayQueue|flags]] to be set. | Saving/restoring VRAM requires bit0 of process [[GSPGPU:RegisterInterruptRelayQueue|flags]] to be set. | ||
{{Anchor|GSPLCD}}{{Anchor|gsp::Lcd}} | |||
= GSP service "gsp::Lcd" = | = GSP service "gsp::Lcd" = | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 178: | Line 180: | ||
| 0x00010040 | | 0x00010040 | ||
| | | | ||
| [[GSPLCD: | | [[GSPLCD:EnableABL|EnableABL]] | ||
|- | |- | ||
| 0x00020040 | | 0x00020040 | ||
| | | | ||
| [[GSPLCD: | | [[GSPLCD:DisableABL|DisableABL]] | ||
|- | |- | ||
| 0x00030080 | | 0x00030080 | ||
Line 194: | Line 196: | ||
| 0x00050140 | | 0x00050140 | ||
| | | | ||
| [[GSPLCD: | | [[GSPLCD:SetABLArea|SetABLArea]] | ||
|- | |- | ||
| 0x00060140 | | 0x00060140 | ||
Line 275: | Line 277: | ||
=New3DS= | =New3DS= | ||
There's separate GSP-module titles for Old3DS and New3DS. PTM CheckNew3DS is only used by the New3DS title, for copying that flag into a state field. Elsewhere that field is checked for running additional code only on New3DS, for processing various state / using [[QTM_Services|QTM]] commands. | There's separate GSP-module titles for Old3DS and New3DS. PTM CheckNew3DS is only used by the New3DS title, for copying that flag into a state field. Elsewhere that field is checked for running additional code only on New3DS, for processing various state / using [[QTM_Services|QTM]] commands. | ||
[[Category:Services]] |