fix: decouple VBlank ISR and main loop to prevent IRQ stack overflow
- Make handle_vblank strictly increment frame counter (frame++) - Move heavy frame logic (background updates, OAM updates, palette animations, and console stats) to update_frame() on the main thread synchronized with swiWaitForVBlank() - Eliminate 256-byte ARM9 IRQ stack (sp_irq) overflow caused by bg_update and iprintf that was corrupting DTCM stack and causing data aborts - Preserve all playfield entities on game over with top-screen defeat summary and smooth background deceleration Co-authored-by: Antigravity <antigravity@google.com>
This commit is contained in:
1 parent
91908d1f15
commit
496de1a31f
10 files changed
+171
-81
No files matched your search
@@ -42,8 +42,9 @@
|
||||
| **Paused** | **B** | Return to Main Menu |
|
||||
| **Paused** | **X** | Toggle background music ON/OFF |
|
||||
| **Paused** | **Y** | Toggle Normal / Hard mode and restart |
|
||||
| **Game Over** | **START** | Restart game |
|
||||
| **Game Over** | **A** or **START** | Restart game |
|
||||
| **Game Over** | **B** | Return to Main Menu |
|
||||
| **Game Over** | **R Trigger** | Swap top and bottom screens (`lcdSwap`) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user