A multi-system emulator which emulates the following gaming consoles and simulators
- Game Boy Advance (GBA)
- Game Boy Color (GBC)
- Game Boy (GB)
- Nintendo Entertainment System (NES)
- Ms Pacman
- Pacman (supports both Midway and Namco versions)
- Space Invaders
- CHIP8
- S-CHIP
- XO-CHIP
- Game Of Life
Below mentioned gaming consoles are in roadmap
- Super Nintendo Entertainment System (SNES)
- Nintendo DS
- Nintendo 3DS
Supported features
- Supports GBA Bios
- GBA passes jsmolka/alysoha-tas's arm.gba, thumb.gba, memory.gba, flash and PPU tests
- GBA passes FuzzARM.gba
- GBA passes all the AGS test suite except for Prefetch and Wait Control Memory tests
- GBA passes most of the tonc's test suite
- GBA is able to play most of the GBA video roms
- GB / GBC supports NO MBC, MBC1, MBC2, MBC3 and MBC5
- Supports GB and GBC Bios
- GB / GBC implements Pixel Fetcher/FIFO
- GBC supports GB mode
- GB / GBC passes Tom Harte's CPU test (Was not tested against cycles)
- GB / GBC passes all of the Blargg tests except for Wave RAM tests (Wave Ram tests are under debug)
- GB / GBC passes many of the Moon Eye tests (Failing tests probably would pass with tweaks in the CONFIG.ini file)
- GB / GBC passes the RTC (rtc3test) tests
- GBC is able to play a slightly glitchy version of mezase.gbc (With few tweaks in the CONFIG.ini)
- GB has options for different palettes (Includes 'Gearboy', 'Sameboy' and 'BGB' palettes)
- NES supports NROM, MMC1, UxROM (002), CNROM, MMC3, AxROM and GxROM
- NES supports Zapper in Port 2 (using mouse clicks)
- NES supports battery backed PRG RAM
- NES passes Nestest (both official and un-official opcodes)
- NES passes Tom Harte's CPU test including cycles (both official and un-official opcodes)
- NES passes all of Blargg's CPU tests (both official and un-official opcodes)
- NES passes all of Blargg's CPU timing tests (both official and un-official opcodes)
- NES passes all of Blargg's CPU dummy read/write tests (both official and un-official opcodes)
- NES passes all CPU tests mentioned in Nes Dev Wiki (both official and un-official opcodes)
- NES passes all the Blargg's blargg_ppu_tests_2005.09.15b tests
- NES passes all the Blargg's blargg_apu_2005.07.30
- NES passes all the Blargg's sprite_overflow_tests
- NES passes all the Blargg's sprite_hit_tests_2005.10.05 tests
- NES passes all other APU tests except for DMC (DMC is not implemented yet)
- NES passes Blargg's vbl_nmi_timing and ppu_vbl_nmi tests
- NES passes Blargg's cpu_interrupt_v2 tests
- NES passes the OAM stress tests
- NES passes both Blargg's and Bisqwit's ppu_open_bus tests
- NES passes Bisqwit's cpu_exec_space tests
- NES passes all of Blargg's mmc3_irq_tests
- NES passes all of Blargg's mmc3_test/mmc3_test_2 expect for 4-scanline_timing.nes (This is under debug)
- Supports many Z80 test roms (Undocumented Opcode Tests are still not handled)
- Supports many c6502 test roms (both official and un-official opcodes)
- Supports many 8080 test roms (Undocumented Opcode Tests are still not handled)
- Chip8 supports CHIP8, S-CHIP and XO-CHIP modes
- Chip8 passes all Timendus's chip8-test-suite v4.2 expect for scrolling tests (Support is not implemented yet)
- Game Of Life supports Normal Mode and Torroidal Mode
- Supports Save States and Load States
- Has GUI based debugger support (For now, this is supported only in GB and GBC, currently in development for NES and GBA)
- Has CLI based debugger support (For now, this is supported only in NES and GBA, currently in developement for GB and GBC)
- Supports OTA updates
- Menu-bar based UI for Windows platform
- Internal GUI for platforms other than Windows
- Supports dynamic drag and drop of roms. This includes multiple rom files for Space Invaders and Pacman/MsPacman
Features under developement
- Support for scrolling requirement by Timendus's chip8-test-suite v4.2
- Support Link Cable for Gameboy and Gameboy Color
- Implement "Sync to Audio Playback Rate" to support audio for GBA and NES
- Implement ROM prefetch and review the currently implemented sequential and non sequential wait cycles
Known Major Issues
- GBA not so often exibits few minor graphical glitches. Suspected to be related to some startup or initialization not happening as expected.
- GB/GBC audio is still has lot of undesired interference. "Sync to Audio Playback Rate" is expected to help in resolving these issue.
Masquerade also provides some debugging facilites for homebrew developement.
-
QT5 based Debugger
- Not supported yet
-
ImGui based Debugger
- Not supported yet
-
Windows API based Debugger
- Not supported yet
-
Bare Metal (OLC) based Debugger
- Currently supported only when emulator runs in Gameboy and Gameboy Color modes
-
CLI based Debugger
- Currently supported only when emulator runs in Gameboy Advance and Nintendo Entertainment System modes
Gameboy Advance (Pokemon Ruby, Emerald and Sapphire)
Gameboy Advance (Pokemon Fire Red and Leaf Green)
Gameboy Color (Donkey Kong Country and Pokemon Crystal)
Gameboy (Prehistorik Man in 'BGB' palette and Pokemon Green in 'Gearboy' palette)
Nintendo Entertainment System (Super Mario Bros 3)
Nintendo Entertainment System (Super Mario Bros)
Nintendo Entertainment System (Zelda II: The Adventure of Link)
Nintendo Entertainment System (Kong Classic)
Ms Pacman
Pacman
Space Invader
Chip8 (Pong)
Game Of Life (Toroidal Mode)
As of now, masquerade is only tested for windows platform. There are plans to port this to other platforms in near future.
Not supported yet
Not supported yet
In windows platform, Windows API based user interface can be used for accessing various options of the emulator (whatever features not available via the menu-bar should be accessible via the CONFIG.ini)
In non-windows (and also supported in windows) based platforms, for now, only the bare metal user interface is supported (whatever features not available via the internal menu-window should be accessible via the CONFIG.ini)
- Forked version of One Lone Coder's Pixel Game Engine is used for Graphics (https://github.com/Kotambail-Hegde/olcPixelGameEngine)
- One Lone Coder's Sound Wave Engine is used for Audio (https://github.com/OneLoneCoder/olcSoundWaveEngine)
- Boost libraries to parse .ini files
- GB Pacdocs (https://gbdev.io/pandocs/)
- GB Dev Wiki (https://gbdev.gg8.se/wiki/articles/Memory_Bank_Controllers)
- Codeslinger's blog (http://www.codeslinger.co.uk/pages/projects/gameboy.html)
- Night Shade's blog for audio implementation (https://nightshade256.github.io/2021/03/27/gb-sound-emulation.html)
- Blargg Roms used for testing
- The Ultimate Gameboy Talk (https://github.com/drhelius/Gearboy)
- Antonio's blog (https://github.com/AntonioND/giibiiadvance/blob/master/docs/TCAGBD.pdf)
- Gearboy used for testing (https://github.com/drhelius/Gearboy)
- gbmulator used for testing (https://github.com/mpostaire/gbmulator)
- BGB and Sameboy for the palettes
- BGB for providing the inspiration for the GUI based debugger
- Emulator Development Discord Channel (https://discord.com/invite/emudev)
- gbatek (http://problemkaputt.de/gbatek-gba-reference.htm)
- TONC (https://gbadev.net/tonc/)
- NBA HW Docs (https://nba-emu.github.io/hw-docs/)
- GBA Docs (https://gbadev.net/gbadoc/)
- Dillonb blog for catridges (https://dillonbeliveau.com/2020/06/05/GBA-FLASH.html)
- Dillonb used for testing and also for providing the inspiration for the CLI based logger/debugger (https://github.com/Dillonb/gba/tree/master)
- NBA used for testing (https://github.com/nba-emu/NanoBoyAdvance)
- SkyEmu used for testing (https://github.com/skylersaleh/SkyEmu)
- jsmolka and alyosha-tas test roms
- AGS test roms and their source files from DenSinH (https://github.com/DenSinH/AGSTests/tree/main)
- NES Dev Wiki (https://www.nesdev.org/wiki/Nesdev_Wiki)
- Tom Harte tests for 6502 and SM82 cpu testing