mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-17 19:21:30 +12:00
[GSP::GPU] Implement SetLCDForceBlack
This commit is contained in:
parent
3ccba6db40
commit
994cb875c1
3 changed files with 17 additions and 1 deletions
|
@ -27,6 +27,7 @@ class GPUService {
|
||||||
// Service commands
|
// Service commands
|
||||||
void acquireRight(u32 messagePointer);
|
void acquireRight(u32 messagePointer);
|
||||||
void registerInterruptRelayQueue(u32 messagePointer);
|
void registerInterruptRelayQueue(u32 messagePointer);
|
||||||
|
void setLCDForceBlack(u32 messagePointer);
|
||||||
void writeHwRegs(u32 messagePointer);
|
void writeHwRegs(u32 messagePointer);
|
||||||
void writeHwRegsWithMask(u32 messagePointer);
|
void writeHwRegsWithMask(u32 messagePointer);
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,11 @@ void Kernel::arbitrateAddress() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ArbitrationType::Signal:
|
||||||
|
printf("Broken ArbitrateAddress (type == SIGNAL)\n");
|
||||||
|
switchThread(0);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Helpers::panic("ArbitrateAddress: Unimplemented type %s", arbitrationTypeToString(type));
|
Helpers::panic("ArbitrateAddress: Unimplemented type %s", arbitrationTypeToString(type));
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,8 @@ namespace GPUCommands {
|
||||||
AcquireRight = 0x00160042,
|
AcquireRight = 0x00160042,
|
||||||
RegisterInterruptRelayQueue = 0x00130042,
|
RegisterInterruptRelayQueue = 0x00130042,
|
||||||
WriteHwRegs = 0x00010082,
|
WriteHwRegs = 0x00010082,
|
||||||
WriteHwRegsWithMask = 0x00020084
|
WriteHwRegsWithMask = 0x00020084,
|
||||||
|
SetLCDForceBlack = 0x000B0040
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +27,7 @@ void GPUService::handleSyncRequest(u32 messagePointer) {
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case GPUCommands::AcquireRight: acquireRight(messagePointer); break;
|
case GPUCommands::AcquireRight: acquireRight(messagePointer); break;
|
||||||
case GPUCommands::RegisterInterruptRelayQueue: registerInterruptRelayQueue(messagePointer); break;
|
case GPUCommands::RegisterInterruptRelayQueue: registerInterruptRelayQueue(messagePointer); break;
|
||||||
|
case GPUCommands::SetLCDForceBlack: setLCDForceBlack(messagePointer); break;
|
||||||
case GPUCommands::WriteHwRegs: writeHwRegs(messagePointer); break;
|
case GPUCommands::WriteHwRegs: writeHwRegs(messagePointer); break;
|
||||||
case GPUCommands::WriteHwRegsWithMask: writeHwRegsWithMask(messagePointer); break;
|
case GPUCommands::WriteHwRegsWithMask: writeHwRegsWithMask(messagePointer); break;
|
||||||
; default: Helpers::panic("GPU service requested. Command: %08X\n", command);
|
; default: Helpers::panic("GPU service requested. Command: %08X\n", command);
|
||||||
|
@ -145,3 +147,11 @@ void GPUService::writeHwRegsWithMask(u32 messagePointer) {
|
||||||
|
|
||||||
mem.write32(messagePointer + 4, Result::Success);
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GPUService::setLCDForceBlack(u32 messagePointer) {
|
||||||
|
u32 flag = mem.read32(messagePointer + 4);
|
||||||
|
|
||||||
|
if (flag != 0) {
|
||||||
|
printf("Filled both LCDs with black\n");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue