From f02989649c62af0bc9cff449f6117679158bcd50 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 11 Feb 2018 20:32:45 -0500 Subject: [PATCH] Corrects effect of pc_is_outside_bios. --- Machines/MSX/Cartridges/ASCII16kb.hpp | 8 ++++++-- Machines/MSX/Cartridges/ASCII8kb.hpp | 16 ++++++++++++---- Machines/MSX/Cartridges/Konami.hpp | 14 ++++++++++---- Machines/MSX/Cartridges/KonamiWithSCC.hpp | 16 ++++++++++++---- 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/Machines/MSX/Cartridges/ASCII16kb.hpp b/Machines/MSX/Cartridges/ASCII16kb.hpp index 3b34f86a0..493894754 100644 --- a/Machines/MSX/Cartridges/ASCII16kb.hpp +++ b/Machines/MSX/Cartridges/ASCII16kb.hpp @@ -26,11 +26,15 @@ class ASCII16kbROMSlotHandler: public ROMSlotHandler { confidence_counter_.add_miss(); break; case 0xc: - if(pc_is_outside_bios && address == 0x6000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x6000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x4000, 0x4000, 0x4000); break; case 0xe: - if(pc_is_outside_bios && (address == 0x7000 || address == 0x77ff)) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x7000 || address == 0x77ff) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x4000, 0x8000, 0x4000); break; } diff --git a/Machines/MSX/Cartridges/ASCII8kb.hpp b/Machines/MSX/Cartridges/ASCII8kb.hpp index dab987e98..ab214e59a 100644 --- a/Machines/MSX/Cartridges/ASCII8kb.hpp +++ b/Machines/MSX/Cartridges/ASCII8kb.hpp @@ -26,19 +26,27 @@ class ASCII8kbROMSlotHandler: public ROMSlotHandler { confidence_counter_.add_miss(); break; case 0xc: - if(pc_is_outside_bios && (address == 0x6000 || address == 0x60ff)) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x6000 || address == 0x60ff) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0x4000, 0x2000); break; case 0xd: - if(pc_is_outside_bios && (address == 0x6800 || address == 0x68ff)) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x6800 || address == 0x68ff) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0x6000, 0x2000); break; case 0xe: - if(pc_is_outside_bios && (address == 0x7000 || address == 0x70ff)) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x7000 || address == 0x70ff) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0x8000, 0x2000); break; case 0xf: - if(pc_is_outside_bios && (address == 0x7800 || address == 0x78ff)) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x7800 || address == 0x78ff) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0xa000, 0x2000); break; } diff --git a/Machines/MSX/Cartridges/Konami.hpp b/Machines/MSX/Cartridges/Konami.hpp index 5d15d38ce..f61217eaa 100644 --- a/Machines/MSX/Cartridges/Konami.hpp +++ b/Machines/MSX/Cartridges/Konami.hpp @@ -20,21 +20,27 @@ class KonamiROMSlotHandler: public ROMSlotHandler { map_(map), slot_(slot) {} void write(uint16_t address, uint8_t value, bool pc_is_outside_bios) override { -// printf("K %04x[%c] ", address, pc_is_outside_bios ? '.' : '+'); +// printf("K %04x[%c]\n", address, pc_is_outside_bios ? '.' : '+'); switch(address >> 13) { default: if(pc_is_outside_bios) confidence_counter_.add_miss(); break; case 3: - if(pc_is_outside_bios && address == 0x6000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x6000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0x6000, 0x2000); break; case 4: - if(pc_is_outside_bios && address == 0x8000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x8000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0x8000, 0x2000); break; case 5: - if(pc_is_outside_bios && address == 0xa000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0xa000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0xa000, 0x2000); break; } diff --git a/Machines/MSX/Cartridges/KonamiWithSCC.hpp b/Machines/MSX/Cartridges/KonamiWithSCC.hpp index b7327d0df..9e6d03e9b 100644 --- a/Machines/MSX/Cartridges/KonamiWithSCC.hpp +++ b/Machines/MSX/Cartridges/KonamiWithSCC.hpp @@ -27,15 +27,21 @@ class KonamiWithSCCROMSlotHandler: public ROMSlotHandler { if(pc_is_outside_bios) confidence_counter_.add_miss(); break; case 0x0a: - if(pc_is_outside_bios && address == 0x5000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x5000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0x4000, 0x2000); break; case 0x0e: - if(pc_is_outside_bios && address == 0x7000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x7000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0x6000, 0x2000); break; case 0x12: - if(pc_is_outside_bios && address == 0x9000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0x9000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } if((value&0x3f) == 0x3f) { scc_is_visible_ = true; map_.unmap(slot_, 0x8000, 0x2000); @@ -53,7 +59,9 @@ class KonamiWithSCCROMSlotHandler: public ROMSlotHandler { } break; case 0x16: - if(pc_is_outside_bios && address == 0xb000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + if(pc_is_outside_bios) { + if(address == 0xb000) confidence_counter_.add_hit(); else confidence_counter_.add_equivocal(); + } map_.map(slot_, value * 0x2000, 0xa000, 0x2000); break; }