推 rockmanx52: 其实就算BSNES后来也有妥协过把部分触发机制拿掉 现 08/05 11:46
→ rockmanx52: 在的模拟器记得都比实机不容易触发了 08/05 11:46
→ Append: 妥协过? 08/05 17:01
→ Append: 我对这个说法有点困惑,能解释得更详细一些吗? 08/05 17:18
→ Append: "妥协"指的是什么 / 把哪部分触发机制拿掉 / 现在的哪些 08/05 17:19
→ Append: 模拟器 / 比实机更不容易触发哪一些机制 08/05 17:19
推 rockmanx52: BSNES曾经在changelog上说过类似“提升洛克人X1.0的 08/06 09:34
→ rockmanx52: 可玩性” 但没有明确说有拿掉哪些触发机制 08/06 09:35
一时之间不知道去哪边找详细的changelog,
花了一小时左右爬了一下github的tag comment,
在v011找到
- Added basic ROM mirroring support.
Fixes copy protection issues in MMX, etc.
是这个吗?
→ rockmanx52: 总之现在所有模拟器都比实机不容易触发是这圈子的共 08/06 09:37
→ rockmanx52: 识 要用模拟器去验证什么动作会触发是浪费时间 要研 08/06 09:37
→ rockmanx52: 究请乖乖用实机 08/06 09:38
→ rockmanx52: BSNES的“妥协”是因为作者的目标是做出一款使用体验 08/06 09:40
→ rockmanx52: “与实机完全相同”的模拟器 所以减少X 1.0触发bug机 08/06 09:40
→ rockmanx52: 制的修改就是放弃了前面的坚持 08/06 09:40
我觉得是相反的。
我认为在这点上作者并没有放弃这个坚持,
因为这样比较符合实机的内存映射。
同时我并不认为用模拟器去验证如何触发是浪费时间。
Rockman X (1.0) 在日版卡带上面有个跳线+二极管的修正。
这个部分对照过电路后,效果会是“阻止 Bank $00-2F mirror到 $30-3F”。
这个部分我们有找到两组不同的人分别对此的讨论,
两组作法我们都有利用电路模拟工具验证过,我想应该是正确的。
bsnes 对此的应对方式,是 “记录下这个电路板上的内容”※注1
- 这个电路板上有12Mbit的ROM
mapping是 $00-2F:8000-FFFF
mirror到 $80-AF:8000-FFFF, $40-6F:0000-FFFF, $C0-EF:0000-FFFF
- 这个电路板上没有 SRAM。
毕竟这不能从 ROM 猜出来,而是实际上打开卡带才能看到有这个跳线,
也才能从他的电路与超任的 LoROM 规则去推算出这个 mapping 。
所以我认为 bsnes 在做的与其说是模拟一个 ROM 的执行,
而是模拟一个卡带的运作,包含其中的电路板上面的芯片,与这个外加跳线。
因此我认为这是符合实机情况的模拟方式;
相对的,放弃实作出这个跳线取消的 mapping ,会比较偏离实机运作的情况。
除此之外,bsnes 让我们能够自行定义卡带的内容,
因此我们透过 bsnes 达成以下的测试:
(1) 手动加上 $30-3F 的 mapping
这相当于取消了这个跳线修正的效果,会让爆炸计数器生效。
(2) 手动加上 SRAM
这会同时让 爆炸计数器/落下计数器/受伤计数器 三个机制同时生效,
这符合许多磁盘机玩家的记忆;
但确实有一些磁盘机能够躲过这个判定,
我无法判断里面是不是有刻意阻止SRAM读写?
理论上这有可能判断,因为ROM Header里面其实有纪录SRAM大小。
(3) 手动取消 $00-3F 到 $40-7F 的 mapping
这会让开场的demo中的X没有铠甲,以及全装甲密码进入关卡中被拔光装备。
这个机制之前有在 ZSNES 1.2 中看过。
如上,我觉得使用 bsnes 让我能够比较有系统地重现了上面的这些机制,
而且也因为(1)我们才能相信把跳线修正取消掉就会让爆炸计数器生效,
因此决定下去剪掉二极管,在实机上让原本修正过的卡带产生了爆炸计数器的效果。
所以我认为使用模拟器进行验证并没有在浪费时间。
不过我对于“现在所有模拟器都比实机不容易触发”这点很有兴趣,
虽然实机做了跳线修正后不太会触发这问题,而且把二极管剪掉之后能够重现,
但我想这边指的应该不是在说实机会不会触发,而是单指模拟器可以不会触发?
但我所知道的模拟器不太多,
目前我只知道 bsnes 主动避免这个触发,
snes9x 1.56-1.61 会触发这个问题,1.40-1.55不会,1.62后不会。
zsnes 一如既往地都会,snesgt会,
我满想知道还有哪些模拟器不容易触发?
※注1
bsnes 有纪录 Rockman X 1.0(J) 的 ROM 会对应到 SHVC-2A0N-01#A 的电路板。
那个 #A 描述的就是那个跳线修正;
但其实我们有看到同样是 1.0 的版本,却使用了不同的电路板。
XGOD 手上的 1.0 使用的电路版是 SHVC-2A0N-11,
我手上的 1.0 使用的电路板是 SHVC-2A0N-01。
两个卡带都能够让冰车击倒boss的时候不会破碎,因此我们相信这是1.0。
1.1在这个场合应该会立刻碎掉。
实际上两个电路板都有跳线,
同样都是一个电阻+一个二极管+切断原本的一个BA5输入,
主要是在74LS00的连接方式上有所差异,
因此可以从外观上看到跳线连接的方式不一样,
但内容都是1.0。
所以我满有兴趣的 - 为什么同一个 ROM 会用到不同的电路板?
除此之外也有点好奇 bsnes 当初知不知道有 RMX 1.0 也有对应到 SHVC-2A0N-11。
虽然我们也从他接线的方式判断出,这应该会有一样的效果,所以其实并不影响。