Skip to content

Releases: nba-emu/NanoBoyAdvance

NanoBoyAdvance 1.8.1

02 Apr 07:31
Compare
Choose a tag to compare

Please backup your save files before updating to be safe.

Changelog

  • UI: implement an option to pause the emulator when the window is inactive
  • UI: improve lack of response to input changes in the sprite viewer when the emulator is paused
  • UI: replace QOpenGLWidget with QWidget (thanks @GranMinigun)
  • UI: fix solar sensor level menu that has been broken in 1.8.0 (fixes #370)
  • GPIO: fix broken deserialization of port directions
  • APU: MP2K HLE: handle corrupted wave info addresses (fixes #362)
  • APU: PSG L/R volume must be remapped from 0-7 to 1-8
  • GameDB: Japanese Boktai releases have a solar sensor (thanks @raphaelr)
  • Redirect stdout on Windows (thanks @GranMinigun)

NanoBoyAdvance 1.8.0

18 Feb 23:18
Compare
Choose a tag to compare

Please backup your save files before updating to be safe.

Changelog

  • UI: implement "Sharp" video filter for better nearest interpolation at non-integer scales (thanks GranMinigun)
  • UI: implemented PPU viewers for palettes, tiles, backgrounds and sprites
  • UI: add an option to set the audio volume
  • UI: do not unpause emulator after loading a new ROM
  • Input: fix input dropping regression introduced in NBA 1.7.1
  • Input: move from SDL game controller to SDL joystick API (fixes broken mapping on some controllers)
  • APU: MP2K HLE: interpolate envelopes and use floating-point math
  • APU: MP2K HLE: implement a better reverb algorithm
  • APU: MP2K HLE: add an option to force-enable reverb
  • APU: remove "Zombie" mode emulation (does not appear to exist on GBA)
  • APU: fix mid-note envelope frequency changes
  • APU: FIFO writes should happen in place
  • APU: reset FIFOs on overflow
  • APU: add master-enable checks for 16-bit/32-bit IO writes
  • PPU: fix sprite pixels from previous scanline displayed in the last scanline
  • PPU: more accurate update of attribute buffer for OBJWIN sprites (fixes #275)
  • PPU: more accurate emulation of horizontal and vertical sprite mosaic (fixes #322)
  • PPU: more accurate handling of mid-frame vertical mosaic reconfiguration
  • PPU: fix out-of-bounds bitmap fetches in Mode 3 to 5
  • DMA: fix incorrect mapping of DMA channel to APU FIFO
  • Timer: somewhat handle timer overflow during one cycle enable delay (thanks alyosha)
  • Game Pak: simulate ~6 ms EEPROM device busy period after write (not yet accurate to cartridges that e.g. have been in the freezer for 30 minutes)
  • Game Pak: emulate the Mask ROM internal address register
  • Audio: fix clicking artifacts when using Sinc resampling
  • Audio: fix incorrect liner interpolation in Cosine resampling
  • PlatformCore: fixed hang when fast-forwarding while the emulator is paused
  • Misc: implemented support for unicode paths

NanoBoyAdvance 1.7.1

15 May 21:04
Compare
Choose a tag to compare

Please backup your save files before updating to be safe.

Changelog

  • PPU: disallow out-of-bounds BG VRAM tile fetches and return open bus (fixes #298)
  • Core: do not skip to the next event if the CPU woke up during a DMA (fixes #297)
  • KeyPad: always request IRQs from the emulator (not the calling) thread (fixes #290)
  • GameDB: fix entries for a bunch of Classic NES and Famicom Mini titles (fixes #302)
  • IO: do not enter STOP mode when it is not implemented
  • mGBA log: clear the message buffer after printing the message
  • mGBA log: flush STDOUT after each message
  • Catch fmt::system_error when fmt::print() fails to write to STDOUT (fixes #301)

NanoBoyAdvance 1.7

26 Mar 17:13
Compare
Choose a tag to compare

This is a major release with lots of code changed. Please backup your save files before updating to be safe.

Changelog

  • UI: implement a 'Use integer scaling' option
  • UI: allow limiting the screen scale
  • UI: allow accessing the menu during fullscreen gameplay
  • UI: allow setting a custom save folder
  • Core: implement save compatibility with mGBA 0.10.0+
  • Core: implement basic support for the mGBA logging interface
  • PPU: rewrite the PPU to be mostly cycle-accurate (fixes #241, #230, #229, #208, #141)
  • PPU: implement the GREENSWAP register
  • PPU: use the 6-th green channel bit during blending
  • PPU: round the blending result to the nearest integer
  • ARM: fix a minor timing oversight in ARM mode
  • ARM: SWP and SWPB should lock the bus (no DMA interleave is possible)
  • ARM: do not force-align mis-aligned PC in ARM mode
  • Bus: allow the CPU to execute idle cycles in parallel to DMA
  • Bus: more accurately emulate disabling the prefetch buffer
  • Bus: force the first CPU access after a DMA to be non-sequential
  • Bus: implement penalty for ROM code access during the last ROM prefetch cycle (fixes #203)
  • IRQ: delay IO writes by one cycle
  • IRQ: delay update of the IE&IF condition for unhalting the CPU
  • SIO: implement basic serial transfer timing (fixes #282)
  • APU: emulate the master enable bit
  • APU: cancel a potentially pending event whan starting a channel (fixes #278)
  • Scheduler: allow for (de)serialization of events for save states

Notes

On Linux make sure SDL2, GLEW and Qt5 are installed

NanoBoyAdvance 1.6

13 Aug 18:57
3a43a77
Compare
Choose a tag to compare

Changelog

  • 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

Notes

On Linux make sure SDL2, GLEW and Qt5 are installed

NanoBoyAdvance 1.5

29 May 17:52
Compare
Choose a tag to compare

Linux installation instructions:

  • install SDL2, GLEW and Qt5

Changelog

  • 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)

NanoBoyAdvance 1.4

20 Dec 21:06
Compare
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

Changelog

  • 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

NanoboyAdvance 1.3

01 Feb 00:20
Compare
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

NanoboyAdvance 1.2

30 Jul 22:34
c7c8b90
Compare
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.

NanoboyAdvance 1.1

10 May 23:15
37f681a
Compare
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