All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- State management support for:
pad
,ppu
andcpu
- Structure of the BOS save file format, breaking change!
- Major bug related to OAM masking
- Greatly improved state management in BOS
- Support for MBC2
- Bumped EmuKit to improve Web runtime performance
- Extra react reference
- Major PPU related issue in state loading, which used to create PPU mode related issues
- Warning message in wasm-bindgen loading
- Unit test issue
- Memoised some of the class generation process
- Updated Emukit version, for faster performance
- Issue related with DMA transfer being triggered while loading state
- Sound glitch in loading save state, by setting proper sound raw values
- Unit test that was failing
- Improved Zippy format to include opaque feature support, for future proof
Licensee
enumeration with the description of the publisher of the ROM- Support for Zippy encoding format for fast compression
- New hashing crate that includes CRC-32 and CRC-32C implementations
- Issue with the web frontend and
hardReset()
implementation
- Support for cartridge region detection
- Bumped web packages
- Support for SIMD based color space conversion - #45
- Support for
window.requestAnimationFrame()
and game loop inversion of control - #26 - Custom Boot ROM support for CGB - #34
- Removed binary distribution from PyPi
- Bumped base rust version to fix issue with GitHub Action Deploy workflow
- Initial support for the
PyBoy
compatibility layer - #36 - Support for PyPi registry for the PyO3 package - #43
- Python interface file for base boytacean (
boytacean.pyi
) - Interface to custom boot ROM loading in Python
- Better
boot_dump.py
script with support for other string output formats - Improved error handling using the
Error
enum
- Issue related to interrupt timing, reduce interrupt to 20 cycles instead of 24
- Libretro issue with the loading of the base emulator info
retro_get_system_info()
- Support for Python 3 API - #36
next_frame()
method for frame by frame navigation- Support for palette switching option in Libretro - #37
- Made part of the frontend code conditional on
NODE_ENV = "development"
- Re-release of version
0.9.17
- Support for Python 3 API - #36
next_frame()
method for frame by frame navigation- Support for palette switching option in Libretro - #37
- Made part of the frontend code conditional on
NODE_ENV = "development"
- Bumped emukit version to fix a bug with zip file handling
- Support for ROM in zip files (Web frontend)
- Support for raw frame buffer
- Lazy evaluation of frame_buffer (on-demand) for DMG
- XRGB8888 support for Libretro frontend, for better color fidelity and faster render
- Support for save state - #7
- LibRetro save state support - #7
- Support for fast mode in SDL frontend
- Support for GameShark cheat codes - #33
- Made audio flush for libretro and sdl frontends flush by the end of the frame
- Improved MBC5 to support 9 bit ROM bank addresses
- Breaking issue with Libretro frontend and Linux
- Fix
window_counter
issue in PPU - Issue with BESS header testing
- Improved command line parsing with positional ROM path value
- Better CI/CD for releases
- Hidden test panel in Web UI
- Small issue with command line arguments
- New WASM build
- Build of a new release
- Issue with release life-cycle
- Issue with release life-cycle
- Better release life-cycle
- Support for image based testing
- Support for rumble, works for both mobile devices and Gamepads (web APIs)
- Bumped emukit to 0.8.8
- CGB-ACID2 test passing - #30
- Support for the
clock_m()
function - Benchmark CLI option in SDL
- Major performance improvements for the DMG specific code
- Support for displaying speed at which the CPU is running in Web mode, for debug purposes
- Headless execution mode in Boytacean SDL
- Many more parameters added for Boytacean SDL
- Small panic recovering issue
- Support for auto emulation mode selection
- Support for enabling and disabling audio channels
- Issue with CH2 envelope initialization
- Support for Game Boy Color (CGB) emulation! 🥳 - #8
- Support for CLI params in Boytacean SDL
- Support for
GameBoyConfig
structure that is passed to some comments - New
DMA
component
- Support for serial data transfer - #19
- Support for printing of images using Printer emulation - #19
- Support for display of logger and printer in Web panels
- Converted serial-sections strategy to event driven
ButtonSwitch
issues by updating the value strategy nad bumpingemukit
AudioGB
with display of canvas with no visibility
- Support for variable clock speed for APU, means variable audio speed
- Moved debug into the base emulator (from emukit)
- Support for audio channel 4 (noise) 🔈
- Better trigger support for audio channels 🔈
- Added CH4 public API method for WASM
- Envelope support for both channel 2 and 4 🔈
- Issue related to the wave length stop flag 🔈
- Support for CGB flag parsing
- Waveform plotting support
- Major JoyPad issue with Action/Select read in register
- Small issue with channel 3 audio and DAC disable
- Support for stereo sound 🔊
- APU
clock()
method withcycles
parameter, improving performance by an order of magnitude 💪
- Added reset of APU, which fixes annoying "garbage" data in buffer when restarting the state of the emulator
- Bumped emukit, fixing a lot of bugs
- Support for Audio 🔈!!! - #12
- Support for WASM engine version printing
- Build process for the docs.rs website
- Unused code issue
- Old compilation problem with
NUM_CPUS
generation
- Bumped emukit dependency
- Support for the
build.rs
generation file that creates thegen.rs
file - Support for benchmark in the SDL frontend
- Palette switching for the SDL frontend
- Bug with ROM title that included 0x0 characters in it
- V-Sync issue with SDL
- Bumped base emukit version
- Support for theme and palette selection
- Theme stored in
localStorage
- Canonical URL support for boytacean.joao.me
- Small help changes regarding Gamepad
- Emukit version bump
- Emukit version bump
- Made UI generic by extracting components into EmuKit 🎉
- More generic help panels
- Exclusion of files from
Cargo.toml
- Support for Ctrl+D (Speedup) and Ctrl+K (Keyboard toggle) shortcuts
- Initial help panel
- Palette debugging panel
- Android highlight color in buttons
- Android issue with arrow pointers
- More issues related with bad PPU handling
- Issue with background color and change of palette colors
- Issue related with STAT interrupt not being triggered for all conditions
- PPU issue related to the maximum number of objects/sprite per line being 10, issue detected by ACID test
- Object pixel drawing priority issue, issue detected by ACID test
- Issue associated with the wrongful flipping of 8x16 sprites, issue detected by ACID test
- Issue associated with drawing of window tiles, due to extra
update_stat()
operations, issue detected by ACID test
- Critical issue with loading of Boot ROM
- New default demo ROM
- Start and Select buttons order
- Small cosmetic changes
- Support for true fullscreen at a browser level
- Support for more flexible palette colors
- Support for setting palette colors using WASM
- Local storage usage for saving battery backed RAM
- Critical error that prevented physical keyboard from working ⌨️
- Support for responsive physical keyboard
- Better debug panel support
- Support for some
GET
parameters - Support for fullscreen on screen keyboard mode
- Arrow keys usage for on-screen Gamepad
- Wrong UX for keyboard focus and fullscreen
- Logic frequency control using on click UI and keyboard
- Support for on screen keyboard for Game Boy
- Support for remote ROM loading using URL - #3
- A whole new layout implemented using React.JS 🔥
- Instant boot support using the
GameBoy.boot()
method - Support for pending cycles in web version
- Improved drawing speed at the SDL example
- Better handling of
panic!()
in web version
- Issue related to STAT interrupt and H-Blank
- Issue related to overflow in sprite drawing
- Issue related to the RAM bank selection in some of the MBCs
- Support for 8x16 sprites
- Support for MBC5, think Pokemon Yellow
- Issue with MBC1 and Advanced ROM Banking Mode
- Issue related to LDC power of and return mode
- Support for drag and drop loading in SDL
- SDL fixes related to timing
- Support for drawing windows
- Initial experimental support for MBC3 (for Pokemon Red/Blue)
- Timer related issue, made test on inst timing pass
- Clear first frame issue, with
first_frame
flag
- License name in the
Cargo.toml
file
- Support for sprite drawing, works with Tetris
- Support for timers
- Initial working version 🥳
- Problem in the switching of the LCD mode