楼主:
playlive (player)
2025-02-14 22:00:46jgenesis v0.9.0
以下是机翻润饰
自上次发布 (v0.8.3) 以来的重要变更:
- 彻底修改了 Genesis / Sega CD / 32X 的低通滤波器选项,与 v0.8.3 的设定相比,
应该更准确地模拟实际硬件。
- 透过更高品质的音讯重新采样,提高了所有模拟系统的音讯品质。
- 大量修正 Genesis、Sega CD、32X、SMS、Game Gear、SNES、Game Boy [Color] 的
错误。
- 大幅修正 Linux AppImage 版本在 Wayland 中的错误。
- 储存状态档案现在使用 zstd 进行内部压缩,在大多数情况下应该会减少 70-80% 的
档案大小。
- 为 Sega CD 新增基本的 CPU + CD-ROM 光驱超频选项,相容性较低,但确实有助于
某些游戏。
完整的变更日志如下。
新功能
- (Genesis / Sega CD / 32X) 使用一组新的选项取代了 v0.8.3 中新增的低通滤波设定
,这些选项应该更准确地模拟实际硬件。
* 新增将一阶 3.39 KHz 低通滤波器应用于 Genesis 音讯输出的选项;
默认为开启(与先前默认设定的最大变更)。
* 新增将二阶 7.97 KHz 低通滤波器应用于 Sega CD PCM 音讯输出的选项;
默认为开启。
* 新增个别设定 Genesis 低通滤波器是否应用于 Sega CD 和 32X 音讯输出的选项
;这些默认都为关闭。
- (Genesis / SNES) 新增一个新的视讯设定,以停用少数使用交错显示模式的游戏中的
反交错(例如《音速小子 2》在 2P 对战模式中,《伊苏 III》(Genesis)启用了
游戏中的“Int Mode”选项,《Air Strike Patrol》在任务简报画面中)。
* 启用反交错符合先前版本的行为:正常分辨率的交错模式显示与渐进模式相同,
而高分辨率的交错模式则使图形处理器每帧渲染所有 448/480 行。
- (Sega CD) 新增一个选项,可透过降低主时脉分频器来超频子 CPU 。
- (Sega CD) 新增一个选项,可以在读取资料轨道时提高光驱速度 。
* 它的相容性较低,但可以缩短某些游戏的加载时间。当子 CPU 超频时,
相容性会稍微提高。
- (Sega CD) 为 6 点立方 Hermite 插值新增一个额外的 PCM 芯片插值选项,在某些情
况下,它产生的声音比 4 点立方 Hermite(现有设定)稍微干净一些。
- 新增一个新的热键,可以快速切换是否启用超频设定,适用于支援超频的系统(包括
Sega CD 新增的光驱速度设定)。
* 这主要用于 Sega CD,其中提高光驱速度可以缩短游戏过程中的加载时间,但
几乎总是会破坏 FMV 和动画过场动画。
改进
- 重写了音讯重新采样程式码,以使用视窗化 sinc 插值算法,该算法的品质比先前
的重新采样实作高得多,而且效能成本相对较低(对于大多数模拟系统)。
* 视窗化 sinc 插值对于 NES 和 GB/GBC 音讯重新采样来说效能非常密集,
因此这两个系统都有一个新的音讯设定,可以在视窗化 sinc 插值和旧的
重新采样算法(低通滤波器后接最近邻插值)之间进行选择。
- (Genesis) 透过最佳化 VDP 渲染和砖块提取程式码,稍微提高了效能。
- (Genesis) 前端现在将 .gen 和 .smd 识别为 Genesis / Mega Drive ROM 映像的档案
副档名。
* 这包括尝试自动侦测 ROM 映像何时被交错(.smd 档案常见),并在加载时将其
解交错。
- (SMS) “裁剪垂直边框”视讯设定现在默认为启用而不是停用;与左边框不同,
垂直边框只会显示目前的背景颜色。
- (SMS) SMS 模型设定现在默认为 SMS1,它模拟了 VDP 硬件的一个怪癖,
这是日文版《伊苏》正确渲染所必需的。
- (SMS / Game Gear) 降低了导致《Virtua Fighter Mini》中过于冗长的日志输出的警
告讯息的日志等级。
- (SNES) 在使用 SA-1 协处理器的游戏中,SA-1 CPU 现在每次存取 SA-1 BW-RAM 时都
会获得一个等待周期,类似于实际硬件。
* SA-1 CPU 在某些情况下仍然比实际硬件执行速度更快,因为总线冲突等待周期
没有被模拟。
- GUI:开启需要 BIOS ROM 或韧体 ROM 的游戏(例如任何 Sega CD 游戏)时,
如果未设定 BIOS/韧体 ROM 路径,则错误视窗现在包含一个按钮,
用于设定适当的 ROM 路径并立即启动游戏。
- CLI:如果不存在设定档,CLI 现在会尝试将默认设定写入设定路径,
以便可以根据需要手动编辑。
- 储存状态档案现在使用 zstd 进行内部压缩,这应该会减少至少 50% 的储存状态档案
大小,通常减少 70-80%。
- 前端现在应该可以正确处理具有大写档案副档名的档案。
多系统修正
- 修正音讯重新采样程式码中的效能错误,该错误可能由于对次正规化浮点数执行
算术运算而导致间歇性极差的效能,在某些 CPU 上,这种运算可能比正常浮点数算术
慢 100 倍。
- Linux:AppImage 版本现在在封装期间排除所有与 Wayland 相关的系统函式库;
这修正模拟器在某些发行版(例如 Solus Plasma)中无法启动的问题。
- Linux/BSD CLI:仅针对这些平台且仅针对 CLI,还原了估计视窗缩放因子的变更,
因为 SDL_GetDisplayDPI 在 Linux/BSD 上传回的数值不可靠。
- 调整了帧时间同步的睡眠实作,以修正帧时间同步可能导致某些平台速度变慢的问题。
- 储存状态档案现在被明确地版本化,这修正尝试从不同版本加载不相容的储存状态档案
时可能发生的当机。
Genesis / Mega Drive 修正
- 修正 68000 被错误地允许在 Z80 占用总线时存取音讯 RAM 的问题;
这修正《战斗原始人》中的冻结。
- 修正 Z80 RESET 未清除 Z80 的 HALT 状态的问题。
- 修正写入 YM2612 F-num high / block 暂存器($A4-$A6 和 $AC-$AE)立即生效
而不是在下次写入 F-num low 暂存器后生效的问题;这修正《Valis》中
的一些音乐故障。
- 实作了更准确的模拟,即 YM2612 如何从相位和封包衰减计算运算子振幅。
- 修正当《音速小子与纳克鲁斯》锁定到具有 SRAM 的卡匣(例如《音速小子 3》)时,
游戏内储存无法正确运作的问题。
- 修正由于具有非标准的卡匣 ROM 位址映射,某些版本的《QuackShot》无法正确加载的
问题 。
- 修正一些错误的 68000 运算码错误地解码为“有效”指令的问题。
- 修正一个与 sprite 砖块/像素溢位如何与 H=0 sprite 遮罩互动相关的边缘情况。
Sega CD 修正
- 为小寻找距离实作了更高的最小寻找时间;这修正《Thunder Storm FX》(JP)无法启
动的问题。
- 修正 v0.8.3 中引入的一个回归错误,该错误导致 PCM 芯片通道在启用后跳过第一个
样本的问题(由于第一个样本通常为 0,因此实际上没有听觉差异)。
- 修正在高于 0x0800 / 32552 Hz 的取样率下,PCM 芯片循环行为的模拟略微不准确的
问题。
- 修正 CD-DA 音量衰减 1-3(共 1024 级)的模拟不准确的问题(应该是 50-60 dB 的
衰减,而不是完全静音)。
- 未映射/未知的位址存取现在会记录错误,而不是让模拟器当机。
32X 修正
- 修正 PWM 重新采样程式码中的一个重大错误,该错误导致 PWM 音讯输出听起来比预期
的更爆音和噼啪声。
- 修正一个与将 SH-2 存取同步到 32X 通讯埠相关的错误,该错误可能导致在某些情况
下跳过写入;这修正《Sonic Robo Blast 32X》展示版中的冻结。
- 显著改善了 32X VDP 中断对 SH-2 的定时。
- 显著改善了 SH-2 和 68000 之间的同步。
- 修正透过 DREQ1 的 PWM DMA 传输速率未考虑 PWM 计时器间隔的问题;这修正
《BC Racers》中损坏的音效 。
Master System / Game Gear 修正
- 修正 Z80 的 RETI 指令未像 RETN 一样正确地将 IFF2 复制到 IFF1 的问题;这修正
《Desert Strike》在您按下 Start/Pause 时冻结的问题 。
- 修正对非二的幂的 ROM 大小的处理不正确的问题,这修正几个自制游戏和展示。
- (Game Gear) 修正如果游戏启用 VDP 的 224 行模式(就像自制游戏《GG Turrican》
那样),模拟器当机的问题。
SNES 修正
- 在模式 7 中间计算中实作了更准确的剪裁和截断;这修正《Tiny Toon Adventures:
Wacky Sports Challenge》中损坏的模式 7 图形。
- 模式 7 暂存器现在会在扫描线开始前约 12 像素处锁存;这修正了《Battle Clash》
在游戏区域底部附近,画面从 Mode 1 转换到 Mode 7 时出现的
glitchy line (错误线条) 问题。
- 尽力实作了在活动显示期间切换强制消隐对 sprite 的影响;这主要修正一些测试此功
能的测试 ROM。
- 调整了 APU 通讯埠的行为,当 65816 在同一周期内写入一个埠时,SPC700 清除该埠
;这修正《鬼神童子-天地鸣动》无法启动的问题。
Game Boy [Color] 修正
- 实作了一个模糊的行为,其中脉冲通道在通电后应该输出恒定的 0,直到第一个相位增
量之后;这修正《大工の源さん ロボット帝国の野望》中缺失的语音样本。
- 修正一个与脉冲通道相位计数器在透过 NR13/NR14/NR23/NR24 进行频率变更的同一
周期内重新加载相关的错误;这与上述变更结合,修正《携帯电獣テレファング》中
缺失的语音样本。
- 为硬件怪癖新增模拟,其中模式 2 STAT 中断似乎每帧触发 145 次,而不是 144 次;
这修正《GBVideoPlayer》。
- CGB 调色盘 RAM 自动递增标志现在默认为 1。
- 稍微调整了与启动 PPU 相关的定时;这与上述变更结合,修正《GBVideoPlayer2》。
- 修正一个边缘情况,其中在行开始时写入 LYC 未在某些条件下触发 LY=LYC STAT 中断
;这修正《SQRKZ》自制游戏标题画面上的故障图形。
- OBJ 调色盘 RAM 的内容现在在通电时随机化。
https://github.com/jsgroth/jgenesis/releases/tag/v0.9.0