Skip to content

v1.2.0: MJPEG, 60fps and Apple compatibility

Latest
Compare
Choose a tag to compare
@Staacks Staacks released this 05 Aug 18:53
· 24 commits to main since this release

Thanks to @Ikadzuchi's brilliant suggestion for a simplified method to encode MJPEG (see #17) and @kkitayam's implementation of bulk transfer mode for the USB Video Class in Tiny USB this release implements lossless MJPEG video instead of the original raw NV12 encoding. This in particular introduces two major features:

  • True 60fps (well, the exact frame rate that the Game Boy delivers, so something like 59.7Hz)
  • Full Apple compatibility (Intel-based Macs have been working before, but now M1/M2-based ones seem to be happy as well)
  • Overall better compatibility with software, in particular with many more Android apps than before.

The GB Interceptor now supports 30fps and 60fps, which can be set in the source settings of most host software. Note that 30fps offers a standard MJPEG stream that should work in every software, while the 60fps mode sends a stream of grayscale JPEGs, which technically is not part of the USB Video Class standard and might not be supported everywhere.

To OBS users: The current version 29.1.3 of OBS only supports the 30fps version, but I have submitted a patch to support the Interceptors's 60fps which has been accepted and should be part of the next OBS release.

All this comes with some drawbacks, which I think are a minor inconvenience at best and which should be fixable in post or the streaming software (i.e. OBS):

  • Green mode is only available in 30fps mode.
  • Because of Ikadzuchi's trick, the host device sees an image that is scaled up by a factor of 8, i.e. 1280x1152. (Since this is still less than typical FullHD, most host devices should handle this without a problem and be able to scale it back down if required.)
  • Frame blending is now limited to blending two subsequent frames in equal parts (which looks better in most flicker-transparancy situations anyway - as before you can disable it with the button next to the LEDs).
  • Contrast is slightly reduced (easily fixed in post or OBS).

Changelog regarding game compatibility:

  • Fix STAT interrupt synchronization freezes screen if triggered when jumping back to LY = 0. (Fixes freeze in cutscenes of Trip World and probably many others.)
  • Fix STAT interrupt triggered by the STAT interrupt bug that occurs on monochrome Game Boys, but not on GBC or GBA. Fixes Game Boy Camera (and possibly others) on monochrome Game Boys.

To update press and hold the [Flash] button (usually inside your case) while connecting the Interceptor via USB and drag the uf2 file below into its file system.

gbinterceptor_case.zip: I do no longer include the original 3d print designs in the release, in order to point you to improved versions from the community. If you prefer the original, you can download the STLs from the repository.