GithubHelp home page GithubHelp logo

skylersaleh / skyemu Goto Github PK

View Code? Open in Web Editor NEW
752.0 21.0 44.0 361.67 MB

Game Boy Advance, Game Boy, Game Boy Color, and DS Emulator

Home Page: http://skyemu.app

License: MIT License

CMake 0.33% C 86.16% Python 0.49% HTML 0.01% C++ 6.15% Objective-C 0.58% Fortran 0.01% C# 0.56% Batchfile 0.06% Makefile 0.18% Java 0.47% Shell 0.12% OCaml 0.19% PowerShell 0.01% Cython 0.01% VBA 0.01% Tcl 0.01% Smalltalk 0.01% M4 0.57% Perl 4.12%
gameboy-emulator gameboy emulator gameboy-color wasm emulation gameboy-advance nintendo-ds

skyemu's Introduction

Windows Build Mac Build Linux Build Android Build iOS Build FreeBSD Build Web Build Discord Shield

SkyEmu

SkyEmu is a low level GameBoy, GameBoy Color, Game Boy Advance, and DS emulator. Its primary focus is to preserve these great systems for future generations while providing a good user experience through a good mixture of tradeoffs of accuracy, performance, features and usability.

Features

  • Highly accurate Game Boy Advance emulation
  • Game Boy and Game Boy Color Emulation
  • DS Emulation (Beta Quality)
  • High Quality Upscaling Shaders, Color Correction, and Screen Ghosting
  • Cross Platform: Windows, MacOS, Linux, FreeBSD, iOS, Android, and Web
  • Game Controller and Rumble Support with configureable keybinds
  • 4x Persistent Save State Slots with screenshot preview
  • Game fastforward and rewind support (supporting very long rewind times)
  • Action Replay Cheat Code Engine
  • Localization in Armenian, Chinese, Danish, Dutch, English, German, Greek, Italian, Polish, and Russian
  • Support for emulating the Real Time Clock and Solar Sensor
  • CPU, MMIO, and Memory Debuggers
  • Support for loading official BIOS and Boot ROM dumps
  • Support for loading roms compressed in .zip archives
  • REST-like API for asynchronous scripting and other automation

Download / Usage

Stable builds for all platforms can be downloaded for free at: https://github.com/skylersaleh/SkyEmu/releases

The latest version of the emulator can also be played without installing at the following address as a progressive web app:

https://web.skyemu.app/

The web app emulates everything locally on your machine using web assembly and javascript. Because of this all files stay local to your machine like the regular native build, however there is a performance cost to performing the emulation inside a web browser.

On Mobile platforms it is recommended to add this to the home screen and launch from there. This will prevent the web browser from auto deleting save files and will make the app full screen.

Note: Platform BIOS/Firmware files are not required as SkyEmu bundles open source replacement BIOS/stubs. However, it is strongly recommended to dump official BIOS/firmware as the open source replacements lack many of the features of the native firmware/BIOS (such as colorizing GB games and the startup splashes) and are not as accurate.

Discord Server

Discord Banner 2

Default Controls:

  • WASD: D-Pad
  • J: A button
  • K: B button
  • ': Select button
  • Enter: Start button
  • U: L shoulder
  • I: R shoulder

On mobile platforms an onscreen touch screen controller is provided.

Loading save files and BIOSs

On web builds save files and the BIOS can be loaded by dragging them onto the page or loading them using the ROM file picker. The GBA BIOS must be named gba_bios.bin for the emulator to pick it up. Save files must be named the name of the rom file with the extension .sav. So for example if the ROM was MyRomFile.gba the save file must be called MyRomFile.sav.

On native builds the above naming convention still applies, but the save/BIOS files must be instead located in the same folder as the ROM file, instead of being dragged or loaded in the emulator itself.

Native Build Instructions

Native builds are experimental currently but can be built using the following commands:

mkdir build
cd build
cmake .. 
cmake --build . 

The output binaries should be in the build/bin folder

Native builds support loading roms through the command line by specifying the path to the ROM as the first argument:

./SkyEmu path/to/rom.gba

Accuracy/Compatibility

SkyEmu has been tested on 100s of ROMs and most common games should be playable with no to minor bugs currently. However, the GBA emulation is significantly more accurate than the GB/GBC emulation.

GBA:

  • Per Pixel PPU Implementation capable of both scan line and mid scan line effects (SkyEmu and NanoBoyAdvance are the only GBA emulators released to support this)
  • Passes the AGS Aging Test ROM (SkyEmu is the second SW based GBA emulator to ever pass this)
  • Can run difficult to emulate GBA games such as the NES Classics Series, Golden Sun and Hello Kitty Miracle Fashion Maker
  • 100% Passes all ArmWrestler Tests
  • 100% Passes all FuzzARM tests
  • 100% Passes arm.gba and thumb.gba
  • Passes 2020/2020 GBA Suite timing tests when utilizing the official GBA BIOS (SkyEmu is one of the few emulators capable of passing this test).
  • Full instruction pipeline and prefetch emulation

GB:

  • Passes all of Blargg's CPU instruction tests
  • Passes DMG and GBC acid2 PPU conformance tests
  • Passes MBCtest
  • Dotclk based PPU implementation
  • Anti-aliased audio synthesis with support for APU changes per sample (supports Pikachu's voice in Pokemon Yellow/Pokemon Pinball)

Birds of a Feather

  • Pokemon Bot: A discord bot that can connect to SkyEmu to allow your discord users to play GB/GBC/GBA/NDS games.
  • Panda3DS: Panda themed HLE 3DS emulator
  • NanoBoyAdvance: A Game Boy Advance emulator focusing on hardware research and cycle-accurate emulation
  • Dust: DS emulator for desktop devices and the web
  • Kaizen: Experimental work-in-progress low-level N64 emulator

skyemu's People

Contributors

bannmannutt avatar densinh avatar eepykami avatar greata1exander avatar kim-dewelski avatar kingboxnt avatar kylon avatar ladystarbreeze avatar nadiaholmquist avatar neilpang avatar offtkp avatar powerlated avatar simonen64 avatar skylersaleh avatar udxs 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skyemu's Issues

Doom 2 is unplayable.

Pink screen for the background in the start menu, and then during the game, all you can see is the gun.
skemu doom2
sky emu doom 2

007 night fire screeching glitching sounds.

There are screeching glitch sounds through the intro of nightfire, and into the start of the game. Not sure if it gets better as you play.

This persists, even while using the official bios.

Text corruption in Lufia

image

This seems to be caused by spurious hflip flags being included on the tile data for the text background layer.

Tracing through DMA and cpu memory transactions, there is two potential culprit writes from the CPU, both by PC (0x0807a4f2):

image

The disassembly of the game ROM seems to show a complex expression leading to those writes.

image

Best guess currently is this is caused by incorrect latching/open bus emulation, as this value may be created by ORing a previous value onto itself, and there is portions in the game where VRAM seems to be being cleared with open bus values.

Need for speed flickering graphics on title menu

There's about 3-5 pixels in a long strip at the bottom of the menu on Need for Speed - Porsche Unleashed that keeps flickering, on the screen where you have all the options after pressing start.

This persists, even while using the official bios.

Super Mario Bros. Deluxe Emulation Issue

There's 2 problems with this game;
Firstly, the game loads graphics way too fast before loading it, causing a graphical issue on the main menu (there's usually a white screen when it tries to load),
And secondly, the game start to slowed down when there's few sprites on screen at the time.

[Feature Request] Android Native Build

This issue is to track the feature request for an Android Native build to create SkyEmu.apk

In theory the current code base supports this, but the CI infrastructure and build system need updates to produce the android apks.

This request was forked out of this issue: #36 (comment)

A GUI ?

Good work. One question. What about GUI ? I don't liked to do the command line to load the roms, you know. And again, good work. Amazing!

Corrupted/Slow Audio on Wario Land 4

Audio gets distorted after playing intro for a bit.

This seems to because of a spurious setting in TM0CNT_H (IRQ Enable is disabled). Enabling the IRQ for this timer resolves the corruption.

Cant open .sav files in SkyEmu

Okay, so a while back i discovered SkyEmu when it couldn't import/export .sav files, now that it does support importing files i tried to test it, the bios loaded fine but I can't figure out how to open .sav files. Whenever i drag and drop the file, nothing happens. I quadruple checked that the name of the file was the same as the rom, but it still doesn't work. Please help ๐Ÿ˜ƒ (web version by the way)

[Feature Request] Support for retroachievements.org

Hello everybody!

Greetings, I was wondering if it's possible,
for developers to add support for: retroachievements.org ?
It would be just perfect, playing the GB, GBC and GBA games,
unlocking the achievements of each specific game.

Another thing, in the future will there be an APK version
to install on android devices?
Thanks in advance for everyone's attention.
Bye see you later.

Mario Kart - Super Circuit: track renders incorrectly

The track in Mario Kart - Super Circuit seems to render incorrectly, with a strange rightward curve.

Here is a screenshot, showing the right side of the track curving to the right and the tree growing on the track itself.

Schermafbeelding 2022-07-11 om 21 29 13

As a comparison, here is a screenshot from mGBA showing the track's right side being straight and the tree to the right of it in the grass. The sprites are in identical spots, so it seems the rendering of the background layer is at fault.

Schermafbeelding 2022-07-11 om 21 29 39

This was using the web version (in Safari), with a BIOS loaded.

[Feature Request] Shaders

The following features were requested from reddit:

  • Toggle for screen ghosting
  • LCD shader
  • Upscaling Shader
  • Integer upscaling
  • Color Correction

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.