GithubHelp home page GithubHelp logo

powerlated / optimegba Goto Github PK

View Code? Open in Web Editor NEW
82.0 6.0 4.0 1.96 MB

Optime GBA - Nintendo Game Boy Advance (and WIP Nintendo DS) emulator, written in C# with .NET Core.

C# 100.00%
emulator dotnet dotnet-core game-boy-advance gba optime-gba

optimegba's Introduction

Welcome to Optime GBA!

Optime GBA is a work-in-progress Game Boy Advance and Nintendo DS emulator.

Current Progress

GBA

  • Timers and DMA are implemented
  • Audio is fully implemented and sounds great on all games
  • Near complete emulation of the Pixel Processing Unit (PPU)
  • Save files work for games using flash memory

Nintendo DS

  • Cold boot through firmware works
  • Booting many popular games, including New Super Mario Bros. and Pokémon Platinum

Future Plans

  • Further optimization
  • Seek out any unimplemented ARM7TDMI quirks that may remain

GBA

  • Implement remaining PPU features, fix PPU bugs
    • Sprite mosaic

Nintendo DS

  • Flash and EEPROM save memory
  • Nintendo DS extended 2D graphical features
  • 3D graphics
  • Dynamic recompiler, possibly in the far future

Controls

  • A - X
  • B - Z
  • X - S
  • Y - A
  • Start - Enter
  • Select - Backspace
  • Left - Left
  • Right - Right
  • Up - Up
  • Down - Down

Accessory Controls

  • Turbo - Tab, Space
  • Toggle Color Correction - F1
  • Toggle Sound FIFO A - F3
  • Toggle Sound FIFO B - F4
  • Toggle Sound PSG 1 - F5
  • Toggle Sound PSG 2 - F6
  • Toggle Sound PSG 3 - F7
  • Toggle Sound PSG 4 - F8
  • Fullscreen - ALT + Enter, F11

Screenshots

Pokémon Emerald Pokémon Mystery Dungeon: Red Rescue Team Kirby: Nightmare in Dreamland Kirby: Nightmare in Dreamland Pokémon Platinum

Running

For building and using Optime GBA, .NET 5 is recommended. You also need a CPU with AVX2 support because I completely overdid the renderer.

A compatible Game Boy Advance BIOS image is required to run the emulator. Place the BIOS in the emulator working directory (the root of the repository when using dotnet run) named as gba_bios.bin.

For running Nintendo DS games, official Nintendo DS firmware, ARM9 BIOS, and ARM7 BIOS dumps are required. Place the dumps named as firmware.bin, bios9.bin, bios7.bin, respectively, in the emulator working directory.

# OpenTK Debugger
dotnet run -c Release -p OptimeGBA-OpenTK.csproj
# Simple SDL Frontend 
dotnet run -c Release -p OptimeGBA-SDL.csproj

optimegba's People

Contributors

powerlated avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

optimegba's Issues

Library release without frontend

I'd like to separate the emulator code from frontend implementations so that I can easily implement my own frontend.

In short, move non-frontend code to OptimeGBA-Core.csproj and let frontend projects depend on the core project. This would make embedded resource lookup easier too.

If you think it's the right direction I am happy to contribute a PR.

image

Question

Not an issue, but how would i integrate this into unity? If i am allowed to do this

License

Your project is currently missing (as far as I can tell) a License file. What license is this code under?

Linux Support?

I don't know what plans you have at the moment, however based on (quickly) glancing at the code, it shouldn't be too difficult to make this work with Linux.

So my question is: Do you plan to support it? Would you accept PR's towards that goal?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.