Skip to content
Choose a tag to compare


  • UI: implement game controller selection and remapping
  • UI: enable loading ROMs from archives (Zip, 7z, RAR4)
  • UI: enable loading ROMs via Drag & Drop onto the main window
  • UI: fix occasional crashes when loading a ROM while the emulator is running
  • UI: fix screen clearing and stop audio if ROM could not be loaded
  • UI: unpause the emulator if a ROM is loaded
  • UI: add an option to unlock the aspect ratio
  • Core: implement Solar Sensor emulation (for Boktai I and II)
  • Core: implement experimental save state support
  • Save Memory: automatically detect EEPROM save sizes (closes #219)
  • ARM: fix switch between FIQ and non-user/system modes
  • PPU: delay H-blank IRQs by four cycles (fixes #89, fixes #175)
  • PPU: disable VRAM mirror at 06018000h in bitmap modes (fixes #102)
  • PPU: latch BGX/Y writes at the beginning of each scanline (fixes #176)
  • PPU: delay scanline rendering by 32 cycles (fixes #93)
  • PPU: properly initialise WIN0/1 state after reset (fixes #223)
  • PPU: 2D OBJs should wraparound horizontally (fixes #224)
  • PPU: move rendering to a secondary thread for better performance
  • PPU: improve DMA3 video transfer timing
  • PPU: respect WININ/WINOUT if Alpha OBJ does not have a blend source
  • IRQ: add 16-bit IO access handlers to avoid scheduling multiple events
  • IRQ: assign (preliminary) priorities to events for IRQ raise and acknowledge/disable events
  • Timer: be explicit about IO write event order
  • RTC: enable 24h-mode by default (fixes #136)
  • RTC: multiple small fixes and accuracy improvements


On Linux make sure SDL2, GLEW and Qt5 are installed

Choose a tag to compare

Linux installation instructions:

  • install SDL2, GLEW and Qt5


  • ARM: force CPSR/SPSR bit 4 to one (fixes Banjo-Kazooie: Grunty's Revenge)
  • Bus: Game Pak access sometimes incurs a one-cycle penalty when prefetch is active
  • Bus: HALT incurs a two-cycle penalty
  • DMA: make access pattern (more) accurate for ROM to ROM and other weird DMAs.
  • DMA: move the second internal cycle at the end of the transfer
  • DMA: handle more changes to the control register during a transfer
  • IRQ: rework interrupt delay emulation (once again)
  • Timer: writing to the control register takes one cycle to apply
  • PPU: apply horizontal sprite mosaic as a post-process
  • APU: model FIFO as a buffer of seven (not eight) 32-bit words (thanks Gericom) (fixes #101)
  • APU: high bits of SOUND2CNT_L should return zero
  • Input: make KEYINPUT updates atomic to avoid incorrect game resets (from the Key IRQ)
  • UI: maintain a list of recently opened files for quick loading
  • UI: allow loading ROMs via process arguments
  • UI: add shortcuts for fullscreen and window scale
  • UI: implement a workaround for the broken menu bar during fullscreen on Windows
  • UI: hide the FPS counter by default and add an option to unhide it
  • OpenGL: fix a black screen issue on some Intel integrated GPUs
  • macOS: build NanoBoyAdvance as an App Bundle (thanks nadiaholmquist)
Choose a tag to compare

macOS installation instructions:

  • install brew if you haven't already
  • install Qt5 from brew: brew install qt@5

Linux installation instructions:

  • install SDL2, GLEW and Qt5


  • Audio: added a high-quality software/HLE mixer for the MusicPlayer2000 sound engine
  • Platform: added a new Qt frontend with OpenGL post-processing options
  • PPU: render sprites one scanline ahead (fixes #130)
  • PPU: fix an off-by-one in the OBJ draw loop
  • PPU: apply OAM draw limit only on OAM (instead of pixel) boundaries for now
  • PPU: fix Mode4 transparency (fixes #169)
  • PPU: emulate BG enable delay (fixes #94)
  • PPU: update internal (affine) X/Y registers only if the BG is enabled (fixes #177)
  • Memory: handle 16-bit KEYCNT writes (fixes #152)
  • Memory: HALTCNT and POSTFLG should only be writable from BIOS code
  • Memory: mask top two bits of the IE register
  • DMA: each DMA channel should have its own memory data register (MDR)
  • CPU: rework IRQ signal propagation delay
  • CPU: improve IRQ exception timing
  • CPU: emulate user-mode LDM bus conflict
  • CPU: handle invalid CPU modes
  • CPU: emulate MSR user-mode restrictions
  • CPU: boot into supervisor mode instead of system mode
  • CPU: handle rD=r15 edge-case in CMP/CMN/TST and TEQ
  • CPU: Thumb ALU shifts now mask the shift amount
  • CPU: fix unsigned multiply-long timing
  • EEPROM: fix address masking
Choose a tag to compare
  • ARM: handle CMP, CMN, TST and TEQ with rD = 15
  • ARM: handle mode switches when the register bank does not change.
  • ARM: removed errorneous user-mode switch from LDRT/STRT opcodes.
  • DMA: allow DMAs to take priority over the CPU in the middle of an instruction
  • DMA: delay DMA startup by two cycles and account for 2I internal cycles
  • DMA: force ROM accesses to increment source address mode
  • DMA: respect source address mode setting for FIFO DMA
  • DMA: force FIFO DMA to use word sized accesses
  • DMA: handle manual disable (via enable flag) more gracefully
  • Timer: respect cascade flag in sample rate calculation
  • APU: emulate DAC enable bits (fixes #64)
  • PPU: match WIN0/1 trigger logic to hardware (thanks @destoer)
  • PPU: fix H-blank IRQ timing (once again)
  • PPU: better handle internal affine registers when multiple BG modes are used in a single frame.
  • PPU: handle invalid BG modes 6 and 7 (thanks @ladystarbreeze)
  • PPU: update internal affine & mosaic registers at the start of H-blank, not at the end.
  • MMIO: do not fallthrough on SOUNDBIAS writes (fixes #125)
  • Keypad: implemented keypad IRQ (thanks @destoer)
  • Serial: implemented a serial IRQ stub
  • SDL: always call glewInit() (fixes #129 )
  • SDL: use binary directory as current working directory
Choose a tag to compare
  • CPU: Optimized GamePak prefetch buffer emulation

  • CPU: Reading prefetched GamePak memory engages the GamePak prefetcher.

  • CPU: Delay all IRQs by four cycles (fixes James Pond)

  • CPU: Handle pipeline flush for halfword reads

  • CPU: Force next ARM instruction fetch to be sequential if the condition isn't met.

  • CPU: Optimized ADC and SBC flag calculations

  • DMA: Ignore repeat-flag for immediate DMAs

  • DMA: Mask source and destination addresses on write.

  • DMA: Properly disable non-repeating FIFO DMA (fixes #97)

  • Timer: Greatly optimized emulation efficiency, timers now are scheduled.

  • Memory: Fix unaligned S16 reads from out-of-bounds ROM

  • Memory: Allow read/write to POSTFLG register

  • Memory: Allow read from WAVE_RAM registers

  • Memory: Fix unaligned S8/S16 reads from SRAM

  • Memory: Handle DMA reads from open bus addresses (fixes #109)

  • Memory: Improved GPIO bus emulation

  • Memory: Force-align 16-bit expanded 8-bit VRAM and PRAM writes.

  • PPU: Raise H-blank IRQs after 960 cycles instead of 1006 (fixes #89)

  • PPU: Handle OBJ priority hijacking (fixes #99)

  • PPU: Respect per-scanline cycle limit for OBJ rendering (fixes #98)

  • PPU: Handle odd tile numbers in 256-color OBJs (fixes #106)

  • PPU: Emulate tile number limit for 256-color OBJs

  • PPU: Latch internal affine registers on mode switch (fixes #90)

  • PPU: Handle setting V-count setting to the current V-count value.

  • PPU: Make V-count IRQ edge-triggered

  • PPU: Fixed broken semi-transparency logic

  • APU: Clamp samples before converting to S16 format (fixes #100)

  • APU: Use BLEP resampler to improve quality of direct audio.

  • RTC: Fix off-by-one error in the day of month.

  • GameDB: Added save type override for Acrobat Kid (Japan)

  • GameDB: Added save type override for Baldur's Gate - Dark Alliance

  • GameDB: Added save type override for 007 - Everything or Nothing

  • GameDB: Added save type override for Super Monkey Ball Jr.

  • GameDB: Fixed save type override for Classic NES - Legend of Zelda

  • Common/DSP: Linearly interpolate CosineResampler lookup-table

  • Common/DSP: Added a BLEP resampler

  • Miscellaneous: Do not sync to audio by default

  • Miscellaneous: Experimental, optional hack to increase audio sample rate in games which use the M4A/Sappy sound engine. This will break games and is thus not turned on by default.

Choose a tag to compare
  • implemented GLSL shader support
  • fix broken Vsync on Windows and presumably macOS
  • fix crash when no keymap.toml is present

macOS instructions:

  • You need to install SDL2 via brew: brew install sdl2
Choose a tag to compare