File tree Expand file tree Collapse file tree 6 files changed +44
-41
lines changed
Expand file tree Collapse file tree 6 files changed +44
-41
lines changed Original file line number Diff line number Diff line change @@ -415,10 +415,12 @@ void myIrqHandlerVBlank(void) {
415415 reset ();
416416 }
417417
418+ u8 screenIpc = 0x6 ;
419+
418420 if (0 == (REG_KEYINPUT & screenSwapHotkey ) && 0 == (REG_EXTKEYINPUT & (((screenSwapHotkey >> 10 ) & 3 ) | ((screenSwapHotkey >> 6 ) & 0xC0 )))) {
419421 if (swapTimer == 60 ){
420422 swapTimer = 0 ;
421- IPC_SendSync ( 0x7 ) ;
423+ screenIpc = 0x7 ;
422424 mainScreen ++ ;
423425 if (mainScreen > 2 ) {
424426 mainScreen = 0 ;
@@ -522,7 +524,7 @@ void myIrqHandlerVBlank(void) {
522524
523525 // Swap screens
524526 if (mainScreen > 0 ) {
525- IPC_SendSync (0x6 );
527+ IPC_SendSync (screenIpc );
526528 }
527529
528530 if (sharedAddr [0 ] == 0x524F5245 ) { // 'EROR'
Original file line number Diff line number Diff line change @@ -643,17 +643,16 @@ void myIrqHandlerIPC(void) {
643643 break ;
644644 #endif // FOTO
645645 #endif // NODSIWARE
646+ case 0x7 :
647+ ce9 -> mainScreen ++ ;
648+ if (ce9 -> mainScreen > 2 )
649+ ce9 -> mainScreen = 0 ;
646650 case 0x6 :
647651 if (ce9 -> mainScreen == 1 )
648652 REG_POWERCNT &= ~POWER_SWAP_LCDS ;
649653 else if (ce9 -> mainScreen == 2 )
650654 REG_POWERCNT |= POWER_SWAP_LCDS ;
651655 break ;
652- case 0x7 :
653- ce9 -> mainScreen ++ ;
654- if (ce9 -> mainScreen > 2 )
655- ce9 -> mainScreen = 0 ;
656- break ;
657656 case 0x9 :
658657 inGameMenu ((s32 * )0 );
659658 break ;
Original file line number Diff line number Diff line change @@ -1842,10 +1842,22 @@ void myIrqHandlerVBlank(void) {
18421842 }
18431843 }
18441844
1845+ if (afterSwapTimer > 0 ) {
1846+ if (afterSwapTimer == 60 * 3 ) {
1847+ if (lockMutex (& saveMutex )) {
1848+ saveMainScreenSetting ();
1849+ }
1850+ unlockMutex (& saveMutex );
1851+ afterSwapTimer = 0 ;
1852+ } else afterSwapTimer ++ ;
1853+ }
1854+
1855+ u8 screenIpc = 0x6 ;
1856+
18451857 if (0 == (REG_KEYINPUT & screenSwapHotkey ) && 0 == (REG_EXTKEYINPUT & (((screenSwapHotkey >> 10 ) & 3 ) | ((screenSwapHotkey >> 6 ) & 0xC0 )))) {
18461858 if (swapTimer == 60 ){
18471859 swapTimer = 0 ;
1848- IPC_SendSync ( 0x7 ) ;
1860+ screenIpc = 0x7 ;
18491861 mainScreen ++ ;
18501862 if (mainScreen > 2 ) {
18511863 mainScreen = 0 ;
@@ -1857,16 +1869,6 @@ void myIrqHandlerVBlank(void) {
18571869 swapTimer = 0 ;
18581870 }
18591871
1860- if (afterSwapTimer > 0 ) {
1861- if (afterSwapTimer == 60 * 3 ) {
1862- if (lockMutex (& saveMutex )) {
1863- saveMainScreenSetting ();
1864- }
1865- unlockMutex (& saveMutex );
1866- afterSwapTimer = 0 ;
1867- } else afterSwapTimer ++ ;
1868- }
1869-
18701872#ifdef TWLSDK
18711873 if (sharedAddr [3 ] == (vu32 )0x54495845 ) {
18721874 returnToLoader (false);
@@ -1999,7 +2001,7 @@ void myIrqHandlerVBlank(void) {
19992001
20002002 // Fix ARM9 VCount IRQ settings for color LUT and/or swap screens
20012003 if ((valueBits & useColorLut ) || (mainScreen > 0 )) {
2002- IPC_SendSync (0x6 );
2004+ IPC_SendSync (screenIpc );
20032005 }
20042006
20052007 if (sharedAddr [0 ] == 0x524F5245 ) { // 'EROR'
Original file line number Diff line number Diff line change @@ -757,10 +757,22 @@ void myIrqHandlerVBlank(void) {
757757 restoreBakData ();
758758 }
759759
760+ if (afterSwapTimer > 0 ) {
761+ if (afterSwapTimer == 60 * 3 ) {
762+ bakData ();
763+ saveMainScreenSetting ();
764+ restoreBakData ();
765+
766+ afterSwapTimer = 0 ;
767+ } else afterSwapTimer ++ ;
768+ }
769+
770+ u8 screenIpc = 0x6 ;
771+
760772 if (0 == (REG_KEYINPUT & screenSwapHotkey ) && 0 == (REG_EXTKEYINPUT & (((screenSwapHotkey >> 10 ) & 3 ) | ((screenSwapHotkey >> 6 ) & 0xC0 )))) {
761773 if (swapTimer == 60 ){
762774 swapTimer = 0 ;
763- IPC_SendSync ( 0x7 ) ;
775+ screenIpc = 0x7 ;
764776 mainScreen ++ ;
765777 if (mainScreen > 2 ) {
766778 mainScreen = 0 ;
@@ -772,16 +784,6 @@ void myIrqHandlerVBlank(void) {
772784 swapTimer = 0 ;
773785 }
774786
775- if (afterSwapTimer > 0 ) {
776- if (afterSwapTimer == 60 * 3 ) {
777- bakData ();
778- saveMainScreenSetting ();
779- restoreBakData ();
780-
781- afterSwapTimer = 0 ;
782- } else afterSwapTimer ++ ;
783- }
784-
785787 if (0 == (REG_KEYINPUT & (KEY_L | KEY_R | KEY_DOWN | KEY_B ))) {
786788 if (returnTimer == 60 * 2 ) {
787789 IPC_SendSync (0x5 );
@@ -886,7 +888,7 @@ void myIrqHandlerVBlank(void) {
886888
887889 // Fix ARM9 VCount IRQ settings for color LUT and/or swap screens
888890 if ((valueBits & useColorLut ) || (mainScreen > 0 )) {
889- IPC_SendSync (0x6 );
891+ IPC_SendSync (screenIpc );
890892 }
891893
892894 if (sharedAddr [0 ] == 0x524F5245 ) { // 'EROR'
Original file line number Diff line number Diff line change @@ -1654,6 +1654,10 @@ void myIrqHandlerIPC(void) {
16541654 reset (0xFFFFFFFF , 0 );
16551655 #endif
16561656 break ;
1657+ case 0x7 :
1658+ ce9 -> mainScreen ++ ;
1659+ if (ce9 -> mainScreen > 2 )
1660+ ce9 -> mainScreen = 0 ;
16571661 case 0x6 : {
16581662 if (ce9 -> valueBits & useColorLut ) {
16591663 if (!(ce9 -> valueBits & colorLutBlockVCount )) {
@@ -1698,11 +1702,6 @@ void myIrqHandlerIPC(void) {
16981702 else if (ce9 -> mainScreen == 2 )
16991703 REG_POWERCNT |= POWER_SWAP_LCDS ;
17001704 } break ;
1701- case 0x7 :
1702- ce9 -> mainScreen ++ ;
1703- if (ce9 -> mainScreen > 2 )
1704- ce9 -> mainScreen = 0 ;
1705- break ;
17061705 case 0x9 :
17071706 inGameMenu ((s32 * )0 );
17081707 break ;
Original file line number Diff line number Diff line change @@ -298,6 +298,10 @@ void myIrqHandlerIPC(void) {
298298 sharedAddr [3 ] = 0x54495845 ;
299299 reset (0 , 0 );
300300 break ;
301+ case 0x7 :
302+ ce9 -> mainScreen ++ ;
303+ if (ce9 -> mainScreen > 2 )
304+ ce9 -> mainScreen = 0 ;
301305 case 0x6 : {
302306 if (ce9 -> valueBits & useColorLut ) {
303307 if (!(ce9 -> valueBits & colorLutBlockVCount )) {
@@ -319,11 +323,6 @@ void myIrqHandlerIPC(void) {
319323 else if (ce9 -> mainScreen == 2 )
320324 REG_POWERCNT |= POWER_SWAP_LCDS ;
321325 } break ;
322- case 0x7 :
323- ce9 -> mainScreen ++ ;
324- if (ce9 -> mainScreen > 2 )
325- ce9 -> mainScreen = 0 ;
326- break ;
327326 case 0x9 :
328327 inGameMenu ((s32 * )0 );
329328 break ;
You can’t perform that action at this time.
0 commit comments