Open Issues Need Help
View All on GitHubAI Summary: This issue outlines Phase 4 of a Game Boy emulator project, focusing on implementing a complete interrupt controller. It involves designing the controller, handling IF/IE memory mapping, wiring up all interrupt sources (VBlank, LCD STAT, Timer, Serial, Joypad), and integrating with the CPU, MMU, and other subsystems. The goal is to achieve cycle-accurate interrupt handling, including IME/IE/IF logic and HALT bug edge cases, to pass Blargg and Mooneye interrupt test ROMs.
AI Summary: This task involves adding comprehensive unit and integration tests for the system's interrupt controller. It requires covering various aspects like IF/IE masking, request/service logic, priority handling, CPU interrupt processing (IME, stack, PC, flags), and tricky edge cases such as the HALT/STOP bug and IME delay. The goal is to achieve 100% test coverage and verify all interrupt controller scenarios.
AI Summary: This issue outlines the implementation of a CPU's Interrupt Service Routine (ISR) and its integration. It requires polling an interrupt controller, servicing pending interrupts by clearing flags, pushing the Program Counter, and jumping to the correct vector. Key tasks include implementing EI/DI/RETI semantics with an IME enable delay, handling the HALT bug, and managing STOP edge cases, all validated by comprehensive unit tests and Blargg's interrupt timing tests.
AI Summary: This task involves comprehensively documenting the interrupt controller, including its public API, usage patterns, and the semantics of IF/IE register bits and masking. A key part of the work is to list all known edge cases, such as IME delay, the HALT bug, and STOP behavior. The updated documentation should be integrated into the project's README and a dedicated Interrupt Controller markdown file for both AI and human maintainers.
AI Summary: The task is to implement a test harness for Blargg and Mooneye interrupt test ROMs. This harness must automate pass/fail detection using memory or serial output signatures, provide actionable debugging information for failures, and include documentation for its use and result interpretation.
AI Summary: This issue focuses on wiring up interrupt requests from various Game Boy components (PPU, Timer, Joypad, Serial) to an `InterruptController`. The task involves updating each subsystem to trigger its respective interrupt (VBlank/LCD STAT, Timer, Joypad on button press, and a placeholder for Serial transfer complete) and adding unit tests to verify correct integration.