Skip to content

v1.0.1: MacOS support, DMG fixes, Everdrive, ...

Compare
Choose a tag to compare
@Staacks Staacks released this 30 Dec 14:33
· 82 commits to main since this release

This release improves MacOS compatibility and fixes several issues on the original Game Boy (DMG). Note that while it now works perfectly on Intel CPU on MacOS, the video seems to be broken on Apple CPUs (probably M1 and M2), but this is only a guess from trying it on one MacBook each (see #1).

  • Improved MacOS support (see #1)
  • Fix several glitches on the original Game Boy (DMG) as it shows a different address on the cartridge bus while it accesses VRAM. (Glitches include garbage tiles in Zelda, unreadable score during pause in Tetris and probably many more.)
  • Allow restart without waiting for the Game Boy to be turned off. (Fixing Everdrive support.)
  • Fix USB frame transmission being initiated outside hblank/vblank (should fix occasionally dropped frames and some minor graphics glitches)
  • More robust detection to resync after a DMA to OAM transfer in cases when the idle loop is not visible on the bus (fixing Donkey Kong Land on DMG)
  • Allow setting arbitrary framerates below 29fps
  • Add PPU sync for tight loops using the STAT register to wait for vblank.
  • Added support for DMA from cartridge. (untested)
  • Output version string when connecting via serial
  • Improved USB descriptors: Device name and calculation of bitrate limits.
  • Due to some additional checks when reading from memory (see DMA VRAM issue above) the rp2040 clock had to be increased further to 250MHz. I hope that I can dial this back when I have some time for optimizations.

Note that in order to build this version from code, you will have to use my TinyUSB branch instead of the Pico SDK version until my fix for MacOS has been merged there.