mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 05:32:47 +00:00
Hopefully fix #466 - now it resets the GPU/LCD into a known state instead of leaving the previous one on
This commit is contained in:
parent
4890e4116f
commit
915cb2d13e
@ -19,6 +19,9 @@
|
|||||||
#include <types.h>
|
#include <types.h>
|
||||||
#include <vram.h>
|
#include <vram.h>
|
||||||
|
|
||||||
|
#include "arm/timer.h"
|
||||||
|
|
||||||
|
#include "hw/mcu.h"
|
||||||
#include "hw/gpulcd.h"
|
#include "hw/gpulcd.h"
|
||||||
|
|
||||||
/* LCD Configuration Registers */
|
/* LCD Configuration Registers */
|
||||||
@ -48,7 +51,7 @@ void LCD_Deinitialize(void)
|
|||||||
{
|
{
|
||||||
*REG_LCD(0x244) = 0;
|
*REG_LCD(0x244) = 0;
|
||||||
*REG_LCD(0xA44) = 0;
|
*REG_LCD(0xA44) = 0;
|
||||||
*REG_LCD(0x00C) = 0;
|
*REG_LCD(0x00C) = 0x10001;
|
||||||
*REG_LCD(0x014) = 0;
|
*REG_LCD(0x014) = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,76 +150,82 @@ void GPU_SetFramebufferMode(u32 screen, u8 mode)
|
|||||||
|
|
||||||
void GPU_Init(void)
|
void GPU_Init(void)
|
||||||
{
|
{
|
||||||
|
if (*REG_GPU_CNT == 0x1007F) {
|
||||||
|
MCU_PushToLCD(false);
|
||||||
|
|
||||||
|
LCD_Deinitialize();
|
||||||
|
*REG_GPU_CNT = 0x10001;
|
||||||
|
TIMER_WaitTicks(CLK_MS_TO_TICKS(40));
|
||||||
|
}
|
||||||
|
|
||||||
LCD_Initialize(0x20);
|
LCD_Initialize(0x20);
|
||||||
|
|
||||||
if (*REG_GPU_CNT != 0x1007F) {
|
*REG_GPU_CNT = 0x1007F;
|
||||||
*REG_GPU_CNT = 0x1007F;
|
*GPU_PDC(0, 0x00) = 0x000001C2;
|
||||||
*GPU_PDC(0, 0x00) = 0x000001C2;
|
*GPU_PDC(0, 0x04) = 0x000000D1;
|
||||||
*GPU_PDC(0, 0x04) = 0x000000D1;
|
*GPU_PDC(0, 0x08) = 0x000001C1;
|
||||||
*GPU_PDC(0, 0x08) = 0x000001C1;
|
*GPU_PDC(0, 0x0C) = 0x000001C1;
|
||||||
*GPU_PDC(0, 0x0C) = 0x000001C1;
|
*GPU_PDC(0, 0x10) = 0x00000000;
|
||||||
*GPU_PDC(0, 0x10) = 0x00000000;
|
*GPU_PDC(0, 0x14) = 0x000000CF;
|
||||||
*GPU_PDC(0, 0x14) = 0x000000CF;
|
*GPU_PDC(0, 0x18) = 0x000000D1;
|
||||||
*GPU_PDC(0, 0x18) = 0x000000D1;
|
*GPU_PDC(0, 0x1C) = 0x01C501C1;
|
||||||
*GPU_PDC(0, 0x1C) = 0x01C501C1;
|
*GPU_PDC(0, 0x20) = 0x00010000;
|
||||||
*GPU_PDC(0, 0x20) = 0x00010000;
|
*GPU_PDC(0, 0x24) = 0x0000019D;
|
||||||
*GPU_PDC(0, 0x24) = 0x0000019D;
|
*GPU_PDC(0, 0x28) = 0x00000002;
|
||||||
*GPU_PDC(0, 0x28) = 0x00000002;
|
*GPU_PDC(0, 0x2C) = 0x00000192;
|
||||||
*GPU_PDC(0, 0x2C) = 0x00000192;
|
*GPU_PDC(0, 0x30) = 0x00000192;
|
||||||
*GPU_PDC(0, 0x30) = 0x00000192;
|
*GPU_PDC(0, 0x34) = 0x00000192;
|
||||||
*GPU_PDC(0, 0x34) = 0x00000192;
|
*GPU_PDC(0, 0x38) = 0x00000001;
|
||||||
*GPU_PDC(0, 0x38) = 0x00000001;
|
*GPU_PDC(0, 0x3C) = 0x00000002;
|
||||||
*GPU_PDC(0, 0x3C) = 0x00000002;
|
*GPU_PDC(0, 0x40) = 0x01960192;
|
||||||
*GPU_PDC(0, 0x40) = 0x01960192;
|
*GPU_PDC(0, 0x44) = 0x00000000;
|
||||||
*GPU_PDC(0, 0x44) = 0x00000000;
|
*GPU_PDC(0, 0x48) = 0x00000000;
|
||||||
*GPU_PDC(0, 0x48) = 0x00000000;
|
*GPU_PDC(0, 0x5C) = 0x00F00190;
|
||||||
*GPU_PDC(0, 0x5C) = 0x00F00190;
|
*GPU_PDC(0, 0x60) = 0x01C100D1;
|
||||||
*GPU_PDC(0, 0x60) = 0x01C100D1;
|
*GPU_PDC(0, 0x64) = 0x01920002;
|
||||||
*GPU_PDC(0, 0x64) = 0x01920002;
|
*GPU_PDC(0, 0x68) = VRAM_START;
|
||||||
*GPU_PDC(0, 0x68) = VRAM_START;
|
*GPU_PDC(0, 0x6C) = VRAM_START;
|
||||||
*GPU_PDC(0, 0x6C) = VRAM_START;
|
*GPU_PDC(0, 0x70) = 0x00080340;
|
||||||
*GPU_PDC(0, 0x70) = 0x00080340;
|
*GPU_PDC(0, 0x74) = 0x00010501;
|
||||||
*GPU_PDC(0, 0x74) = 0x00010501;
|
*GPU_PDC(0, 0x78) = 0x00000000;
|
||||||
*GPU_PDC(0, 0x78) = 0x00000000;
|
*GPU_PDC(0, 0x90) = 0x000003C0;
|
||||||
*GPU_PDC(0, 0x90) = 0x000003C0;
|
*GPU_PDC(0, 0x94) = VRAM_START;
|
||||||
*GPU_PDC(0, 0x94) = VRAM_START;
|
*GPU_PDC(0, 0x98) = VRAM_START;
|
||||||
*GPU_PDC(0, 0x98) = VRAM_START;
|
*GPU_PDC(0, 0x9C) = 0x00000000;
|
||||||
*GPU_PDC(0, 0x9C) = 0x00000000;
|
|
||||||
|
|
||||||
for (u32 i = 0; i < 256; i++)
|
for (u32 i = 0; i < 256; i++)
|
||||||
*GPU_PDC(0, 0x84) = 0x10101 * i;
|
*GPU_PDC(0, 0x84) = 0x10101 * i;
|
||||||
|
|
||||||
*GPU_PDC(1, 0x00) = 0x000001C2;
|
*GPU_PDC(1, 0x00) = 0x000001C2;
|
||||||
*GPU_PDC(1, 0x04) = 0x000000D1;
|
*GPU_PDC(1, 0x04) = 0x000000D1;
|
||||||
*GPU_PDC(1, 0x08) = 0x000001C1;
|
*GPU_PDC(1, 0x08) = 0x000001C1;
|
||||||
*GPU_PDC(1, 0x0C) = 0x000001C1;
|
*GPU_PDC(1, 0x0C) = 0x000001C1;
|
||||||
*GPU_PDC(1, 0x10) = 0x000000CD;
|
*GPU_PDC(1, 0x10) = 0x000000CD;
|
||||||
*GPU_PDC(1, 0x14) = 0x000000CF;
|
*GPU_PDC(1, 0x14) = 0x000000CF;
|
||||||
*GPU_PDC(1, 0x18) = 0x000000D1;
|
*GPU_PDC(1, 0x18) = 0x000000D1;
|
||||||
*GPU_PDC(1, 0x1C) = 0x01C501C1;
|
*GPU_PDC(1, 0x1C) = 0x01C501C1;
|
||||||
*GPU_PDC(1, 0x20) = 0x00010000;
|
*GPU_PDC(1, 0x20) = 0x00010000;
|
||||||
*GPU_PDC(1, 0x24) = 0x0000019D;
|
*GPU_PDC(1, 0x24) = 0x0000019D;
|
||||||
*GPU_PDC(1, 0x28) = 0x00000052;
|
*GPU_PDC(1, 0x28) = 0x00000052;
|
||||||
*GPU_PDC(1, 0x2C) = 0x00000192;
|
*GPU_PDC(1, 0x2C) = 0x00000192;
|
||||||
*GPU_PDC(1, 0x30) = 0x00000192;
|
*GPU_PDC(1, 0x30) = 0x00000192;
|
||||||
*GPU_PDC(1, 0x34) = 0x0000004F;
|
*GPU_PDC(1, 0x34) = 0x0000004F;
|
||||||
*GPU_PDC(1, 0x38) = 0x00000050;
|
*GPU_PDC(1, 0x38) = 0x00000050;
|
||||||
*GPU_PDC(1, 0x3C) = 0x00000052;
|
*GPU_PDC(1, 0x3C) = 0x00000052;
|
||||||
*GPU_PDC(1, 0x40) = 0x01980194;
|
*GPU_PDC(1, 0x40) = 0x01980194;
|
||||||
*GPU_PDC(1, 0x44) = 0x00000000;
|
*GPU_PDC(1, 0x44) = 0x00000000;
|
||||||
*GPU_PDC(1, 0x48) = 0x00000011;
|
*GPU_PDC(1, 0x48) = 0x00000011;
|
||||||
*GPU_PDC(1, 0x5C) = 0x00F00140;
|
*GPU_PDC(1, 0x5C) = 0x00F00140;
|
||||||
*GPU_PDC(1, 0x60) = 0x01C100d1;
|
*GPU_PDC(1, 0x60) = 0x01C100d1;
|
||||||
*GPU_PDC(1, 0x64) = 0x01920052;
|
*GPU_PDC(1, 0x64) = 0x01920052;
|
||||||
*GPU_PDC(1, 0x68) = VRAM_START;
|
*GPU_PDC(1, 0x68) = VRAM_START;
|
||||||
*GPU_PDC(1, 0x6C) = VRAM_START;
|
*GPU_PDC(1, 0x6C) = VRAM_START;
|
||||||
*GPU_PDC(1, 0x70) = 0x00080300;
|
*GPU_PDC(1, 0x70) = 0x00080300;
|
||||||
*GPU_PDC(1, 0x74) = 0x00010501;
|
*GPU_PDC(1, 0x74) = 0x00010501;
|
||||||
*GPU_PDC(1, 0x78) = 0x00000000;
|
*GPU_PDC(1, 0x78) = 0x00000000;
|
||||||
*GPU_PDC(1, 0x90) = 0x000003C0;
|
*GPU_PDC(1, 0x90) = 0x000003C0;
|
||||||
*GPU_PDC(1, 0x9C) = 0x00000000;
|
*GPU_PDC(1, 0x9C) = 0x00000000;
|
||||||
|
|
||||||
for (u32 i = 0; i < 256; i++)
|
for (u32 i = 0; i < 256; i++)
|
||||||
*GPU_PDC(1, 0x84) = 0x10101 * i;
|
*GPU_PDC(1, 0x84) = 0x10101 * i;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user