Skip to content

v0.1.8

Compare
Choose a tag to compare
@cubicibo cubicibo released this 02 Aug 15:38
· 177 commits to main since this release
60cc4ad

SUPer v0.1.8
Credits to Masstock for the many tips, testing and feedback that made this update as complete as it is!

Front-end
• Add a command line client (guizero can be removed from requirements.txt if you prefer to use the cli over the gui)
• Add an option to further tune acquisition rate (for compression when animations are used).
• Update existing tooltips and add more.
• Compatibility mode tickbox now disables cropping.
• DTS checkbox is automatically ticked and cannot be unticked for PES+MUI output.
• Auto-add SUP extension on GUI if none provided.
• Try to fix a rare bug where the GUI kept using the first selected BDNXML file.

Back-end:
Rendering:
• Optimise composition objects together to better distribute the palette entries.
• Use palette update to undisplay graphics in the middle of a palette animation.
• Implement double buffering to decouple decoding and rendering to let hardware decoders perform multitasking! (*)
• Implement NORMAL CASE object redefinition, used if worthwile.
• Implement palette updates buffering to perform screen updates while long object decoding is in progress.
• Implement events dropping to ensure necessary object definitions are feasible and stream is strictly compliant. (**)
• Reduce memory usage and fix numerous small issues.
PG bytestream:
• Re-implement PTS and DTS computation to be identical to Scenarist BD.
• Fix a bug that caused the penultimate display set of an epoch to refresh the object.
• Prevent the usage of the palette entry ID 255, apparently it should not be used.
• Cycle through palettes ID when palette version overflows to increase compatibility.
• Remove the work-around for palette updates with two objects.
• Add auto-cropping of objects to minimize transfer time on hardware decoders.
Parsing:
• Escape BDNXML files to avoid a crash on badly encoded data.
• Filter out zero duration events in BDNXML (events where InTC == OutTC)

Notes:
(*) Hardware decoders are designed to perform decoding and rendering at the same time. It is possible to continuously decode incoming display sets as long as the decoder does not write to the memory region that the renderer is reading! This is alleviated by performing double buffering and using the numerous palettes.
(**) the dropped event is generally one or two frames long at 23.976-29.97 fps and should go unnoticed.