Skip to content

Releases: Baekalfen/PyBoy

v2.6.0

16 May 19:45

Choose a tag to compare

  • Dummy Serial implementation for better game compatibility
  • Limit requirement of Cython to <3.1 while incompatible
  • Fix LCD/sound crash related to games switching to double-speed mode

v2.5.4

09 May 19:45

Choose a tag to compare

  • First arm64 releases for manylinux and musllinux
  • Fix crash in rewind on Linux

v2.5.3

30 Apr 12:56

Choose a tag to compare

  • Improvements to Pokemon Pinball wrapper
  • Default titlebar now shows "PyBoy". Show stats using --title-status.
  • Fix debug view in CGB mode
  • Fix game compatibility with upper bits in input register 0xFF00

v2.5.2

01 Apr 08:10

Choose a tag to compare

  • Fix multi-threading issue with SDL2
  • Change default log level to warning (still minimal spam)
  • Fix Masterball value in Pokemon Pinball wrapper
  • Fix pyboy --help to not crash
  • Fix game-over in Kirby wrapper

v2.5.1

21 Feb 11:39

Choose a tag to compare

  • Fix --no-sound-emulation
  • Hide internal .event attribute from WindowEvent and improve __eq__ method.

v2.5.0

17 Feb 14:34

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

Choose a tag to compare

  • Python 3.13 support

v2.4.0

07 Oct 11:01

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

Choose a tag to compare

  • GameShark cheats support
  • Added frame limiter to null window

v2.2.2

13 Jul 17:18

Choose a tag to compare

  • 20% faster with rendering
  • 7% faster without rendering
  • Fix address boundary issue in pyboy.memory