fix(fc): fix mmc3 board (#1529)

1. fix game Mickey's Safari in Letterland (USA)
2. fix game Incredible Crash Dummies, The (USA)
このコミットが含まれているのは:
曾耿森 2024-06-14 19:59:30 +08:00 committed by GitHub
コミット d76e79076f
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: B5690EEEBB952194
3個のファイルの変更22行の追加9行の削除

ファイルの表示

@ -17,6 +17,7 @@ struct HVC_TxROM : Interface { //MMC3
if(id == "HVC-TVROM" ) return new HVC_TxROM(Revision::TVROM);
if(id == "NES-QJ" ) return new HVC_TxROM(Revision::NESQJ);
if(id == "PAL-ZZ" ) return new HVC_TxROM(Revision::PALZZ);
if(id == "MC-ACC" ) return new HVC_TxROM(Revision::MCACC);
return nullptr;
}
@ -43,6 +44,7 @@ struct HVC_TxROM : Interface { //MMC3
TVROM,
NESQJ,
PALZZ,
MCACC,
} revision;
HVC_TxROM(Revision revision) : revision(revision) {}
@ -228,13 +230,21 @@ struct HVC_TxROM : Interface { //MMC3
}
auto ppuAddressBus(n14 address) -> void override {
if(!(characterAddress & 0x1000) && (address & 0x1000)) {
if(irqDelay == 0) {
if(irqCounter == 0) {
bool clocking = false;
if (revision != Revision::MCACC) {
clocking = !(characterAddress & 0x1000) && (address & 0x1000);
} else {
clocking = (characterAddress & 0x1000) && !(address & 0x1000);
}
if (clocking) {
if (irqDelay == 0) {
if (irqCounter == 0) {
irqCounter = irqLatch + 1;
}
if(--irqCounter == 0) {
if(irqEnable) irqLine = 1;
if (--irqCounter == 0) {
if (irqEnable) irqLine = 1;
}
}
irqDelay = 6;

ファイルの表示

@ -16620,9 +16620,9 @@ game
name: Incredible Crash Dummies, The (USA)
title: Incredible Crash Dummies, The (USA)
region: NTSC-U
board: HVC-TLROM
board: MC-ACC
chip
type: MMC3B
type: ACCLAIM-MC-ACC
memory
type: ROM
size: 0x20000
@ -22753,9 +22753,9 @@ game
name: Mickey's Safari in Letterland (USA)
title: Mickey's Safari in Letterland (USA)
region: NTSC-U
board: HVC-TLROM
board: MC-ACC
chip
type: MMC3B
type: ACCLAIM-MC-ACC
memory
type: ROM
size: 0x20000

ファイルの表示

@ -254,6 +254,9 @@ auto Famicom::analyzeINES(vector<u8>& data) -> string {
s += " board: HVC-HKROM\n";
s += " chip type=MMC6\n";
prgram = 1024;
} else if (submapper == 3) {
s += " board: MC-ACC\n";
s += " chip type=ACCLAIM-MC-ACC\n";
} else {
s += " board: HVC-TLROM\n";
s += " chip type=MMC3B\n";