Subject: CVS commit: pkgsrc/emulators/jgenesis
From: pin
Date: 2024-11-27 14:16:09
Message id: 20241127131609.E72C3FC7D@cvs.NetBSD.org

Log Message:
emulators/jgenesis: update to 0.8.2

v0.8.2

Mostly frontend improvements, the highlights being improved video/audio sync and \ 
more flexible

input/hotkey mapping. Also adds Genesis overclocking support.

Input/hotkey configuration is not compatible with previous versions; input \ 
configuration is now stored in a different format, and all input-related \ 
settings will one-time revert to defaults if using a config file from a previous \ 
version

Save states are not compatible with previous versions
New Features

    Video/audio sync improvements which should enable significantly improved \ 
frame pacing without needing to rely on 60Hz VSync (which can cause very \ 
noticeable input latency on some platforms)
        Added a new "frame time sync" option that uses the host system \ 
clock to match the emulated system's framerate and frame timing as closely as \ 
possible without relying on host GPU synchronization (i.e. VSync)
        Added a new option for dynamic audio resampling ratio, which \ 
periodically adjusts the audio resampling ratio to try and avoid audio buffer \ 
underflows and overflows (which both cause audio popping)
            This is implemented in a very conservative way in order to avoid \ 
audible differences in audio pitch, so it is not completely guaranteed to \ 
prevent audio buffer underflow/overflow
        Audio sync now checks the audio buffer size every 16 samples enqueued \ 
rather than only checking once per frame, which should significantly reduce \ 
stuttering when audio sync is enabled without VSync or frame time sync
        Adjusted default sync/audio settings values to hopefully make stuttering \ 
and audio popping less likely when running with default settings
        In the GUI, video/audio sync settings have been moved to a new window \ 
under Settings > Synchronization
    Input mapping overhaul to make input mapping/configuration more flexible \ 
(#134 / #137)
        Keyboard and gamepad settings are no longer separate configurations; \ 
each system now supports up to 2 mappings for each emulated button where each \ 
mapping can be a keyboard key, a gamepad input, or a mouse button
        Key/input/button combinations (2 or 3 simultaneous inputs) are now \ 
supported for mappings in addition to individual keys/inputs
        Hotkeys can now be mapped to gamepad inputs, mouse buttons, and \ 
combinations in addition to individual keyboard keys
        Each input settings window now has a button to apply one of two keyboard \ 
presets for P1 inputs, one with arrow keys mapped to the d-pad and one with WASD \ 
mapped to the d-pad
    Added a new set of hotkeys for saving/loading specific save state slots (#134)
    (Genesis / Sega CD / 32X) Added an option to overclock the main Genesis CPU \ 
(the 68000) by decreasing the master clock divider, which can reduce or \ 
eliminate slowdown in games (#133)
        Note that this is a fairly naive form of overclocking that works very \ 
well in many games but very poorly in some games; use with caution
        As far as SCD/32X, from my testing overclocking the 68000 almost always \ 
causes problems in 32X games (which are normally bottlenecked on SH-2 speed \ 
anyway), but it does fix slowdown in some Sega CD games
    (SMS / Game Gear) Replaced the "double Z80 CPU speed" setting with \ 
an option to overclock at finer granularity by decreasing the Z80 master clock \ 
divider
        Same caveat as above regarding this form of overclocking working very \ 
poorly in some games, and this is more of an issue for SMS/Game Gear than it is \ 
for Genesis/Sega CD
    Added an option to only hide the mouse cursor when in fullscreen, in \ 
addition to the previous settings of "always hide" and "never \ 
hide"
    Added an option to change the fullscreen mode from borderless to exclusive
    Added an option to change the audio output frequency from 48000 Hz to 44100 Hz

Improvements

    (Genesis / Sega CD) Slightly improved performance by advancing the emulated \ 
clock in larger intervals while a long VDP DMA is in progress
    (32X) Slightly improved performance by optimizing SH-2 instruction decoding
    (GB) Improved video frame delivery behavior when the PPU is powered off to \ 
make it play a little nicer with VSync and frame time sync
    The emulator window is now explicitly focused/raised when a game is loaded; \ 
previously this wouldn't always happen automatically, particularly on Windows

Fixes

    (Sega CD) Slightly extended the delay between a game sending a CDD Play/Read \ 
command and the CD drive reading the first sector; this fixes Time Gal having \ 
excruciatingly long "load times"
        "Load times" in quotes because the game was actually getting \ 
confused and repeatedly re-reading the same CD-ROM sectors until various \ 
interrupts happened to trigger at exactly the right times relative to each other
    (Sega CD) Fixed a bug where some backend settings would not correctly \ 
persist after loading a save state (they would temporarily revert to what they \ 
were when the save state was created)

v0.8.1

Small release with mostly bugfixes and a few save state-related features

SMS/Game Gear and NES save states are not compatible with previous versions, \ 
other systems' save states should be compatible
Features

    Made the game save file and save state locations configurable (#132)
        Can be set to the same folder as the ROM image (same as previous \ 
behavior), subdirectories in the emulator folder, or custom paths
    Added a new --load-save-state <SLOT> command-line arg to load a \ 
specific save state slot at game launch (#132)
    Added an option to attempt to load the most recently saved state when \ 
launching a game
        If this option is set when there are no save states or the most recent \ 
state cannot be loaded, the game will boot normally
    (Game Gear) Added an option to render at SMS resolution (256x192) instead of \ 
native resolution (160x144)
        The expanded parts of the frame often contain garbage because they \ 
weren't meant to be visible, but they sometimes contain an expanded playfield

Fixes

    (Sega CD) Fixed a bug where loading a save state could possibly crash the \ 
emulator due to a stack overflow; this was particularly likely to happen on \ 
Windows due to the small default stack size
        This was caused by the state deserialization code inadvertently \ 
deserializing some very large arrays into the stack before moving them to the \ 
heap, rather than deserializing directly into the heap
    (SMS/Game Gear) Fixed the VDP display disabled implementation so that it \ 
properly blanks the display rather than leaving the previous frame onscreen
    (SMS) Fixed the NTSC/PAL and SMS Model settings not having any effect when \ 
loading a game from a .zip/.7z file rather than a .sms file
    (NES) Fixed multiple bugs related to how the PPU determines what color to \ 
display when rendering is disabled while PPUADDR points to palette RAM; this \ 
fixes Micro Machines having a solid gray bar in the middle of the title screen, \ 
as well as several test ROMs that rely on this hardware quirk for high-color \ 
display (#53 / #55 / #56)
    GUI: Saving or loading a save state slot from the GUI window now also \ 
changes the selected save state slot
    CLI: Fixed

    the 32X option missing from the help text for the --hardware arg (#131)
    The video memory viewer window now renders without VSync; this fixes likely \ 
stuttering and audio popping while the memory viewer window is open

Files:
RevisionActionfile
1.5modifypkgsrc/emulators/jgenesis/Makefile
1.5modifypkgsrc/emulators/jgenesis/cargo-depends.mk
1.5modifypkgsrc/emulators/jgenesis/distinfo
1.3removepkgsrc/emulators/jgenesis/patches/patch-Cargo.toml
1.3removepkgsrc/emulators/jgenesis/patches/patch-frontend_jgenesis-renderer_Cargo.toml