Path to this page:
Subject: CVS commit: pkgsrc/emulators/jgenesis
From: pin
Date: 2025-04-26 12:22:32
Message id: 20250426102233.0F2E9FBE3@cvs.NetBSD.org
Log Message:
emulators/jgenesis: update to 0.9.0
Notable changes since the last release (v0.8.3):
Revamped low-pass filter options for Genesis / Sega CD / 32X that should be \
significantly more accurate to actual hardware than the v0.8.3 settings
Improved audio quality for all emulated systems via much higher-quality \
audio resampling
A rather large number of bugfixes for Genesis, Sega CD, 32X, SMS, Game Gear, \
SNES, Game Boy [Color]
Major bugfixes for Linux AppImage builds in Wayland
Save state files are now internally compressed using zstd, which should \
reduce save state file size by 70-80% in most cases
Basic CPU + CD-ROM drive overclocking options for Sega CD, which have fairly \
low compatibility but do help in some games
Full changelog below.
New Features
(Genesis / Sega CD / 32X) Replaced the low-pass filtering settings added in \
v0.8.3 with a new set of options that should be more accurate to actual hardware
New option to apply a first-order 3.39 KHz low-pass filter to Genesis \
audio output; this is ON by default (biggest change from previous default \
settings)
New option to apply a second-order 7.97 KHz low-pass filter to Sega CD \
PCM audio output; this is ON by default
New options to individually configure whether the Genesis low-pass \
filter is applied to Sega CD and 32X audio output; these are all OFF by default
(Genesis / SNES) Added a new video setting to disable deinterlacing in the \
handful of games that use interlaced display modes (e.g. Sonic the Hedgehog 2 in \
2P Vs. mode, Ys III (Genesis) with the in-game "Int Mode" option \
enabled, Air Strike Patrol in mission briefing screens)
Deinterlacing enabled matches the behavior in previous versions: \
normal-resolution interlaced modes display the same as progressive mode, and \
high-res interlaced modes make the graphics processor render all 448/480 lines \
every frame
(Sega CD) Added an option to overclock the sub CPU by decreasing the master \
clock divider (#138)
(Sega CD) Added an option to increase the disc drive speed when reading data \
tracks (#138)
This has low compatibility but can shorten loading times in some games. \
Compatibility is slightly higher when the sub CPU is overclocked
(Sega CD) Added an additional PCM chip interpolation option for 6-point \
cubic Hermite interpolation, which in some cases produces a slightly cleaner \
sound than 4-point cubic Hermite (the existing setting)
Added a new hotkey to quickly toggle whether overclocking settings are \
enabled, for the systems that support overclocking (this includes Sega CD's new \
drive speed setting)
This is mainly useful for Sega CD, where increasing the drive speed can \
shorten loading times during gameplay but almost always breaks FMVs and animated \
cutscenes
Improvements
Audio resampling code has been rewritten to use the windowed sinc \
interpolation algorithm, which is much higher quality than the previous \
resampling implementation at a relatively low performance cost (for most \
emulated systems)
Windowed sinc interpolation can be very performance-intensive for NES \
and GB/GBC audio resampling, so these two systems have a new audio setting to \
choose between windowed sinc interpolation and the old resampling algorithm \
(low-pass filter followed by nearest neighbor interpolation)
(Genesis) Slightly improved performance by optimizing VDP rendering and tile \
fetching code
(Genesis) Frontends now recognize .gen and .smd as file extensions for \
Genesis / Mega Drive ROM images (#149)
This includes attempting to auto-detect when a ROM image is interleaved \
(common for .smd files), and deinterleaving it during load
(SMS) The "crop vertical borders" video setting now defaults to \
enabled instead of disabled; unlike the left border, the vertical borders will \
only ever show the current backdrop color
(SMS) The SMS model setting now defaults to SMS1, which emulates a VDP \
hardware quirk that is required for the Japanese version of Ys to render \
correctly (#182)
(SMS / Game Gear) Reduced log level of a warning message that caused \
excessively verbose log output in Virtua Fighter Mini (#199)
(SNES) In games that use the SA-1 coprocessor, the SA-1 CPU now gets a wait \
cycle every time it accesses SA-1 BW-RAM, similar to actual hardware
The SA-1 CPU still runs faster than actual hardware in some cases \
because bus conflict wait cycles are not emulated
GUI: When opening a game that requires a BIOS ROM or firmware ROM (e.g. any \
Sega CD game), if the BIOS/firmware ROM path is not configured, the error window \
now contains a button to configure the appropriate ROM path and immediately \
launch the game
CLI: If no config file exists, the CLI will now attempt to write out the \
default config to the config path so that it can be edited manually if desired
Save state files are now internally compressed using zstd which should \
reduce save state file size by at least 50%, often by 70-80%
Frontends should now correctly handle files with uppercase file extensions
Multi-System Fixes
Fixed a performance bug in the audio resampling code that could have caused \
intermittent extremely poor performance due to performing arithmetic on \
subnormal floating-point numbers, which can be up to 100 times slower than \
normal floating-point arithmetic on some CPUs (#135)
Linux: AppImage builds now exclude all Wayland-related system libraries \
during packaging; this fixes the emulator failing to launch in some distros, \
e.g. Solus Plasma (#143)
Linux: AppImage builds now interpret relative paths in command-line \
arguments as being relative to the original working directory where the AppImage \
was launched from, not the AppImage internal runner directory (#147)
Linux/BSD CLI: For these platforms only and for the CLI only, reverted the \
change to estimate window scale factor because SDL_GetDisplayDPI does not return \
reliable values on Linux/BSD
Adjusted frame time sync's sleep implementation to fix frame time sync \
potentially causing slowdown on some platforms
Save state files are now explicitly versioned, which fixes potential \
crashing when attempting to load an incompatible save state file from a \
different version
Genesis / Mega Drive Fixes
Fixed the 68000 incorrectly being allowed to access audio RAM while the Z80 \
is on the bus; this fixes freezing in Joe & Mac (#144)
Fixed Z80 RESET not clearing the Z80's HALT status
Fixed writes to YM2612 F-num high / block registers ($A4-$A6 and $AC-$AE) \
taking effect immediately instead of after the next F-num low register write; \
this fixes some music glitches in Valis
Implemented more accurate emulation of how the YM2612 computes operator \
amplitude from phase and envelope attenuation
Fixed in-game saves not working correctly when Sonic & Knuckles is \
locked on to a cartridge with SRAM (e.g. Sonic 3)
Fixed certain revisions of QuackShot not loading correctly due to having \
non-standard cartridge ROM address mappings (#174)
Fixed some illegal 68000 opcodes incorrectly decoding to "valid" \
instructions (#184 / #185)
Fixed an edge case related to how sprite tile/pixel overflow interacts with \
H=0 sprite masking (#186)
Sega CD Fixes
Implemented a higher minimum seek time for small seek distances; this fixes \
Thunder Storm FX (JP) failing to boot (#178)
Fixed a regression introduced in v0.8.3 that caused PCM chip channels to \
skip the first sample after being enabled (this made little-to-no audible \
difference in practice because the first sample is usually 0)
Fixed slightly inaccurate emulation of PCM chip looping behavior at sample \
rates higher than 0x0800 / 32552 Hz
Fixed inaccurate emulation of CD-DA fader volumes 1-3 out of 1024 (should be \
50-60 dB of attenuation instead of complete silence)
Unmapped/unknown address accesses will now log an error instead of crashing \
the emulator
32X Fixes
Fixed a major bug in the PWM resampling code that caused PWM audio output to \
sound significantly more poppy and crackly than it's supposed to
Fixed a bug around synchronizing SH-2 accesses to 32X communication ports \
that could have caused writes to be skipped in some cases; this fixes freezing \
in the Sonic Robo Blast 32X demo (#160)
Significantly improved timing of 32X VDP interrupts for the SH-2s (#166)
Significantly improved synchronization between the SH-2s and the 68000
Fixed PWM DMA transfer rate via DREQ1 not taking the PWM timer interval into \
account; this fixes broken sound effects in BC Racers (#179)
Master System / Game Gear Fixes
Fixed the Z80's RETI instruction not correctly copying IFF2 to IFF1 like \
RETN does; this fixes Desert Strike from freezing when you press Start/Pause \
(#181)
Fixed incorrect handling of non-power-of-two ROM sizes, which fixes several \
homebrew games and demos (#201 / #203 / #204)
(Game Gear) Fixed the emulator crashing if a game enables the VDP's 224-line \
mode, as the homebrew GG Turrican does (#202)
SNES Fixes
Implemented more accurate clipping and truncation in Mode 7 intermediate \
calculations; this fixes glitched Mode 7 graphics in Tiny Toon Adventures: Wacky \
Sports Challenge (#161)
Mode 7 registers are now latched about 12 pixels before line rendering \
begins; this fixes a glitchy line near the bottom of the play area in Battle \
Clash, where the screen transitions from Mode 1 to Mode 7
Implemented an obscure behavior regarding the effects of writing to OAM \
during active display; this fixes incorrect sprite display in Uniracers' Vs. \
mode (#164)
Made a best effort at implementing the effects on sprites of toggling forced \
blanking during active display; this mostly fixes some test ROMs that exercise \
this (#162)
Adjusted behavior of APU communication ports when the 65816 writes to a port \
on the same cycle that the SPC700 cle
ars the port; this fixes Kishin Douji Zenki: Tenchi Meidou failing...
Files: