NanoBoyAdvance

Émulateur v1.8.1

Nouvel émulateur open source, "cycle-accurate" écrit en C++ demandant l'installation de la librairie SDL2 et supportant macOS 10.15 minimum.

La version pour processeur Intel est également disponible ici.

Dernière mise à jour :

Plateformes

Game Boy Advance

Architecture

Mac OS X - macOS Mac OS X - macOS Intel x86 Intel x86 Apple Silicon Apple Silicon 64 bits 64 bits SDL Library SDL Library

Téléchargement et liens

Historique des versions

v1.8.3
This is a patch release updating NanoBoyAdvance to Qt 6. #### Please backup your save files before updating to be safe. # Changelog - Core: Improved fast-forwarding, adding 2x, 4x and 8x options alongside infinite - UI: Set default filter to nearest - Platform: Upgrade to Qt 6 - Platform: Fix controller lag on macOS - CI: Pivot Windows builds to MSVC, remove macOS Intel builds - Remove broken links from README, remove COMPILING and move its instructions to README - Update dependencies
v1.8.2
**Please backup your save files before updating to be safe.** # Changelog - UI: implement LCD1x shader (thanks @DestinyXZ9) - ARM: implement multiplication carry algorithm (thanks @zaydlang, @calc84maniac) - ARM: fix LDM^ bus conflict logic breaks in user mode - ARM: fix out-of-bounds accesses when switching in or out of an invalid CPU mode - ARM: optimize GPR and SPSR reads - ARM: optimize LSL, LSR, ASR and ROR arithmetic - DMA: allow CPU internal ticks during CPUDMA transition cycles - PPU: correctly reset OBJ mosaic Y counter (thanks @j-mattsson)
v1.8.1
**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)
v1.8.0
**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
v1.7.1
**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)
v1.7
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
v1.6
# 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
v1.5
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)
v1.4
macOS installation instructions: - install [brew](https://brew.sh/) 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
v1.3
- 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
v1.2
- 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.
v1.1
- 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`
v1.0

Aucun détail pour cette version.

Captures d'écran

Street Fighter dans NanoBoyAdvance