Skip to content

Releases: Baekalfen/PyBoy

v2.5.0

17 Feb 14:34
Compare
Choose a tag to compare
  • Sound is no longer in beta, and no longer muted by default
  • Control sound sample rate, volume or disable entirely
  • Introduce API for sound. Sound buffer is provided frame-by-frame.[1]
  • Introduce PyBoyException as the base-exception for PyBoy
  • Introduce exceptions when accessing features that are not enabled
  • Actually release the GIL for improved multi-threading support
  • Blank out first frame after enabling LCD (emulation accuracy)
  • Implement consistent frame-cycles. Each tick is targeting 70224 emulated CPU cycles.[1]
  • Fix bug when using CGB boot ROM with DMG game ROM
  • Fix no_input to ignore SDL2 input but keep API input
  • Fix a lot of small issues related to determinism and save/load state
  • Added documentation for plugin-kwargs on PyBoy constructor
  • Python 3.8 support removed as it's past end-of-life
  • Fix stepping with debugger after v2.4.0
  • Add set_time_left to Super Mario Land wrapper
  • More consistent handling of cartridge names in DMG/CGB mode

[1]: When the game enables/disables the LCD, the timing will be shorter than 70224 emulated cycles. Therefore the sound buffer will also be shorter than 16.667ms (60 FPS).

NOTE: If you depend on exact timing of a frame (assume a specific start block in Tetris etc.) then expect these to have changed. These changes improve emulation correctness, and I cannot promise specific frame timings between releases.
Although I don't expect this to become a regular occurrence.

v2.4.1

13 Nov 15:40
Compare
Choose a tag to compare
  • Python 3.13 support

v2.4.0

07 Oct 11:01
Compare
Choose a tag to compare
  • Massive performance improvements (10-40%!)
  • CPU and memory timings have been corrected* (passes Blargg's tests!)
  • If you're making a plugin, then note that post_tick is now only called once at the end of pyboy.tick. Not for every frame.
  • Clarify in docs that reads from pyboy.memory might return a memoryview in the future.
  • If you're running pytest locally, TEST_CI has been removed and you now have to specifically set TEST_VERBOSE_IMAGES=1 to see debug images.

*If you depend on exact timing of a frame (assume a specific start block in Tetris etc.) then expect these to have changed. This change improves emulation correctness, and I cannot promise specific frame timings between releases.

v2.3.0

14 Sep 20:07
Compare
Choose a tag to compare
  • GameShark cheats support
  • Added frame limiter to null window

v2.2.2

13 Jul 17:18
Compare
Choose a tag to compare
  • 20% faster with rendering
  • 7% faster without rendering
  • Fix address boundary issue in pyboy.memory

v2.2.1

03 Jul 00:30
Compare
Choose a tag to compare
  • First PyBoy version built with NumPy 2
  • Remove OpenGL Accelerate as it has issues with NumPy 2
  • Small internal improvements

v2.2.0

12 Jun 18:43
Compare
Choose a tag to compare
  • Introduce PyBoyRegisterFile to access CPU registers

v2.1.0

27 May 07:48
Compare
Choose a tag to compare
  • Fix Pokemon game wrapper for API v2.0
  • Document log_level on PyBoy constructor
  • Improved documentation on hooks
  • Added Pokemon Pinball game wrapper
  • Fix broken RTC
  • Introduce experimental RTC locking API

v2.0.3

22 Apr 09:00
Compare
Choose a tag to compare
  • Fix missing .py files in sdist package

v2.0.2

18 Apr 16:03
Compare
Choose a tag to compare
  • Desperately trying to do a full and functional deploy while fighting PyPI limits
  • Breakpoints optimized internally
  • Drastically reduced PyPI file sizes (slightly faster pip install)