カテゴリ 重要度 ステータス 解決状況 登録日時 最終更新
クラッシュ/フリーズ解決済み修正済み2015-07-28 11:442018-08-24 21:30
 
テスターrainwarrior担当者rainwarriorソース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.)
追加情報 
 
添付ファイル