SNES游戏《DKC2》中的一个古老BUG:旋转木桶的谜题

2025-07-01

在老旧的SNES模拟器ZSNES中,《Donkey Kong Country 2》存在一个臭名昭著的BUG:某些关卡中的旋转木桶无法正常工作。作者深入研究了该BUG的成因,发现其根源在于ZSNES未正确模拟开放总线行为。通过反汇编游戏代码并分析65816处理器的工作机制,作者最终确认BUG的产生是因为一条指令的地址模式错误,将绝对寻址误写为立即寻址。纠正该错误后,旋转木桶便能正常工作。

阅读更多
游戏 游戏BUG 65816

Sega Genesis 声卡 YM2612 模拟器开发详解(第一部分)

2025-03-29

本文是关于模拟世嘉 Genesis 游戏机主声卡 Yamaha YM2612(也称为 OPN2)系列文章的第一篇。作者详细介绍了 YM2612 在 Genesis 中的集成方式以及 CPU 如何与其交互。文章深入探讨了 YM2612 的架构、工作原理,包括其 6 个音频通道、4 个正弦波发生器(算子)、8 种算法以及其他功能,例如低频振荡器 (LFO)、两个硬件定时器和一个 DAC 通道。文章还分析了 68000 CPU 和 Z80 CPU 之间的交互,以及 YM2612 的寄存器映射和读写方式,并解释了一些游戏在不同型号的 Genesis 主机上出现音频问题的根本原因,例如 Earthworm Jim 和 Hellfire。最后,文章还介绍了 DAC 通道的模拟方法,为开发 YM2612 模拟器提供了宝贵的参考。

阅读更多

世嘉CD PCM音频芯片的低通滤波器改进

2025-02-17

本文探讨了世嘉CD PCM音频芯片声音质量差的原因,并提出了一种解决方案:使用低通滤波器改善音频质量。文章深入分析了不同Genesis型号的音频硬件差异,以及低通滤波器在音频处理中的作用。作者通过实验比较了不同类型的低通滤波器(Butterworth IIR滤波器)的效果,并提供了相应的代码示例。最终,作者成功地改善了世嘉CD PCM音频的音质,并总结了在软件中实现IIR滤波器时需要注意的细节。

阅读更多

SNES 和 PlayStation 平台 Cubic ADPCM 插值

2024-11-15

本文探讨了如何通过改进音频插值算法来提升 SNES 和 PlayStation 模拟器的音质。文章介绍了使用三次 Hermite 插值替代原有的高斯插值方法,并提供了具体的代码示例。通过对比实际游戏音频片段,展示了 Hermite 插值在清晰度和锐度方面的提升,尤其是在 SNES 游戏中效果显著,例如《超级银河战士》和《大金刚2》。虽然 PlayStation 游戏受容量限制较小,但在某些游戏中,例如《洛克人8》和《北欧女神》,Hermite 插值也能带来一定的音质提升。

阅读更多