VB-GBA-HelpWanted is an experimental Game Boy Advance (GBA) emulator written entirely in VB.NET.
This project has recently made massive progress in its development! The core components (CPU, Memory, Graphics) are highly functional, with recent fixes enabling complex 3D raycasting games like GTA Advance to run smoothly without crashing.
This project is a work in progress and we are looking for passionate developers, retro-gaming enthusiasts, and VB.NET wizards to join the effort!
Whether you're an expert in emulator development or simply want to learn more about the GBA architecture, your contributions are welcome. We still need help with:
- Perfecting PPU (Graphics) edge cases and ObjWindow clipping
- Improving audio (APU) DMA synchronization
- Further general debugging and refactoring
- โ Game Saves: Full support for EEPROM, SRAM, and Flash memory backup (.sav files) with background auto-save.
- โ Save States: Functionality to save and load instantaneous emulator states (up to 9 slots).
- โ UI & UX Improvements: Drag & drop ROM loading, accurate Window Scaling (1x-4x), Pause/Resume, and smart audio mute on background.
- โ Fixed compilation errors related to array syntax formatting (VB.NET trailing commas).
- โ Fixed CPU Instruction Fetch alignment (resolved crashes to BIOS)
- โ Implemented fast HLE for Math SWIs (Div, DivArm, Sqrt) bypassing BIOS bugs
- โ Fixed CycleCount accumulator preventing infinite loops in heavy ARM games
- โ Corrected HBlank IRQ generation and VBlank DISPSTAT timings
To achieve a fully complete and accurate GBA emulator, the following features and systems still need to be implemented:
- Cycle-Accurate Timings: Implementing Memory Waitstates and CPU Prefetch Buffer simulation.
- Accurate DMA: Stalling the CPU correctly during DMA transfers rather than executing them instantly.
- Full APU (Audio): Complete implementation of PSG channels 1-4 (Square, Wave, Noise) and accurate DirectSound mixing.
- Advanced PPU Features: Color Special Effects (Alpha Blending, Fade in/out), Window clipping for OBJs, and Mosaic effects.
- Game Saves & RTC: Real Time Clock (RTC) for games like Pokรฉmon (Hardware saves are already implemented!).
- Input: Gamepad/Controller support.
Check out our CONTRIBUTING.md to see how you can get involved.
- Visual Studio 2022 (or newer) with .NET desktop development workload
- Windows OS (for WinForms UI)
- Clone the repository:
git clone https://github.com/tiadiff/VB.NET-GBAEmulator-HelpWanted.git - Open
WinFormsApp1.slnin Visual Studio - Build the solution (Ctrl+Shift+B)
- Run the project (F5)
GBACore.vb: Main emulator core classGBACore.CPU.*.vb: ARM7TDMI CPU implementationGBACore.Memory.vb: Memory Map and Memory AccessGBACore.Graphics.vb: PPU ImplementationForm1.vb,DebuggerForm.vb,MemoryViewerForm.vb: WinForms UI and Debugging Tools