| カテゴリ | 重要度 | ステータス | 解決状況 | 登録日時 | 最終更新 |
|---|---|---|---|---|---|
クラッシュ/フリーズ | 低 | 解決済み | 修正済み | 2015-07-28 11:44 | 2022-12-05 14:26 |
| テスター | rainwarrior | 担当者 | rainwarrior | ソース | nintendo/nes.cpp |
| バージョン | 0.163 | 発生バージョン | 修正バージョン | 0.201 | |
| 修正コミット | プルリク | ||||
| フラグ | |||||
| セット | nes | ||||
| セット詳細 | |||||
| 概 要 | iNES Mapper 31が1MB以外のサイズのROMでクラッシュする。 | ||||
| 詳 細 | The mapper 31 implementation will crash if the ROM size is not 1MB. 512k test ROM: https://dl.dropboxusercontent.com/u/883356/pico.nes 1MB test ROM: http://rainwarrior.ca/projects/nes/2a03puritans.nes For 512k, the high bit of the 8-bit bank selectors should be irrelevant. Banks 0x7F and 0xFF should select the same bank. 256k and smaller ROMs using this mapper may eventually appear (always a power of 2). I can produce test ROMs of any desired size if necessary. The relevant file is: mame/src/emu/bus/nes/2a03pur.c Suggested implementation: 1. Add a bitwise AND mask to the register writes. Line 101: m_reg[offset & 7] = data & mask; 2. Set the appropriate bits for mask during device_start() function based on ROM size at load time. | ||||
| 再現手順 | 1. Open 512k test ROM (pico.nes) 2. Observe immediate crash due to out of bounds memory access. (After making change, should also verify that 1MB test rom, 2a03puritans.nes still works.) | ||||
| 追加情報 | |||||
| 添付ファイル | |||||