Skip to content

tiadiff/VB.NET-GBAEmulator-HelpWanted

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

VB-GBA-HelpWanted ๐ŸŽฎ

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.

๐Ÿค We Need Your Help! (Cercasi Contributori!)

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

๐ŸŒŸ Recent Milestones Achieved:

  • โœ… 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

๐Ÿ—บ๏ธ Development Roadmap (What's Missing)

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.

๐Ÿš€ Getting Started

Prerequisites

  • Visual Studio 2022 (or newer) with .NET desktop development workload
  • Windows OS (for WinForms UI)

Building

  1. Clone the repository: git clone https://github.com/tiadiff/VB.NET-GBAEmulator-HelpWanted.git
  2. Open WinFormsApp1.sln in Visual Studio
  3. Build the solution (Ctrl+Shift+B)
  4. Run the project (F5)

๐Ÿ“ Project Structure

  • GBACore.vb: Main emulator core class
  • GBACore.CPU.*.vb: ARM7TDMI CPU implementation
  • GBACore.Memory.vb: Memory Map and Memory Access
  • GBACore.Graphics.vb: PPU Implementation
  • Form1.vb, DebuggerForm.vb, MemoryViewerForm.vb: WinForms UI and Debugging Tools

About

A collaborative project to build a GBA emulator from scratch in VB.NET. Join us and help bring classic games to life! ๐Ÿš€

Topics

Resources

Contributing

Stars

Watchers

Forks

Contributors