推 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。
雖然我們也從他接線的方式判斷出,這應該會有一樣的效果,所以其實並不影響。
--
███◣ ◢██◣ ◢██◣ █ ◢█ ◣ ◢ ◢██◣ ◣ █
█ ██ █ ██ █ ██ █◢█◤ █◣◢█ █ ██ █◣ █
█ ██ █ ██ █ ██◤ ████ █ ██ ██◣█ @ ptt.cc
███◤ █ ██ █ ██◣ █◥◤█ ████ ████
█◥█◣ █ ██ █ ██ █◥█◣ █ █ █ ██ █◥██ 鴉片(Append)
█ ◥█ ◥██◤ ◥██◤ █ ◥█ █ █ █ ██ █ ◥█twitch.tv/append
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.47.181 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Rockman/M.1722920203.A.4FD.html
留言