c64 fcc: don't use romh for external rom (nw)

This commit is contained in:
hap 2019-05-13 16:12:01 +02:00
parent 19158e52c6
commit 87f72ffe10
7 changed files with 13 additions and 9 deletions

View File

@ -6674,7 +6674,7 @@
<dataarea name="roml" size="0x8000"> <!-- c64 cpu -->
<rom name="fcc_rom2" size="0x8000" crc="1680163b" sha1="ddd7154c6ccd6aed9d99c1b7892c3513f0aa2b47" />
</dataarea>
<dataarea name="romh" size="0x8000"> <!-- cartridge cpu -->
<dataarea name="romx" size="0x8000"> <!-- cartridge cpu -->
<rom name="fcc_rom1" size="0x8000" crc="2949836a" sha1="9e6283095df9e3f4802ed0c654101f8e37168bf6" />
</dataarea>
@ -6695,7 +6695,7 @@
<dataarea name="roml" size="0x8000"> <!-- c64 cpu -->
<rom name="fcc_rom2" size="0x8000" crc="181be1a4" sha1="4c84ca97a94c2577bf1c7ce4acc5fe12ec284751" />
</dataarea>
<dataarea name="romh" size="0x8000"> <!-- cartridge cpu -->
<dataarea name="romx" size="0x8000"> <!-- cartridge cpu -->
<rom name="fcc_rom1" size="0x8000" crc="a45b6090" sha1="a9912f82364bb424df9eced39fb709b3ba8a7f9e" />
</dataarea>
@ -6716,7 +6716,7 @@
<dataarea name="roml" size="0x8000"> <!-- c64 cpu -->
<rom name="fcc_rom2" size="0x8000" crc="8fc0f156" sha1="c843729870e7ce59bb64b60ebec028f7200f93d1" />
</dataarea>
<dataarea name="romh" size="0x8000"> <!-- cartridge cpu -->
<dataarea name="romx" size="0x8000"> <!-- cartridge cpu -->
<rom name="fcc_rom1" size="0x8000" crc="2949836a" sha1="9e6283095df9e3f4802ed0c654101f8e37168bf6" />
</dataarea>

View File

@ -405,7 +405,7 @@ int buscard_t::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
int buscard_t::c64_exrom_r(offs_t offset, int sphi2, int ba, int rw)
{
return !pd_pgm1(offset, sphi2) | m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
return (!pd_pgm1(offset, sphi2)) | m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}

View File

@ -31,6 +31,7 @@ device_c64_expansion_card_interface::device_c64_expansion_card_interface(const m
device_slot_card_interface(mconfig, device),
m_roml(*this, "roml"),
m_romh(*this, "romh"),
m_romx(*this, "romx"),
m_nvram(*this, "nvram"),
m_game(1),
m_exrom(1)
@ -193,6 +194,7 @@ image_init_result c64_expansion_slot_device::call_load()
// Commodore 64/128 cartridge
load_software_region("roml", m_card->m_roml);
load_software_region("romh", m_card->m_romh);
load_software_region("romx", m_card->m_romx);
load_software_region("nvram", m_card->m_nvram);
if (get_feature("exrom") != nullptr) m_card->m_exrom = atol(get_feature("exrom"));

View File

@ -97,7 +97,7 @@ public:
int dotclock() { return phi2() * 8; }
int hiram() { return m_hiram; }
int loram() { return m_loram; }
void set_passthrough();
protected:
@ -157,6 +157,7 @@ protected:
optional_shared_ptr<uint8_t> m_roml;
optional_shared_ptr<uint8_t> m_romh;
optional_shared_ptr<uint8_t> m_romx;
optional_shared_ptr<uint8_t> m_nvram;
int m_game;

View File

@ -28,6 +28,7 @@ DEFINE_DEVICE_TYPE(C64_FCC, c64_final_chesscard_device, "c64_fcc", "Final ChessC
void c64_final_chesscard_device::c64_fcc_map(address_map &map)
{
map(0x0000, 0x1fff).rw(FUNC(c64_final_chesscard_device::nvram_r), FUNC(c64_final_chesscard_device::nvram_w)); // A13-A15 = low
//map(0x6000, 0x6000).noprw(); // N/C
map(0x7f00, 0x7f00).mirror(0x00ff).r(m_sublatch, FUNC(generic_latch_8_device::read)).w(m_mainlatch, FUNC(generic_latch_8_device::write)); // A8-A14 = high
map(0x8000, 0xffff).r(FUNC(c64_final_chesscard_device::rom_r));
}
@ -39,7 +40,7 @@ void c64_final_chesscard_device::c64_fcc_map(address_map &map)
void c64_final_chesscard_device::device_add_mconfig(machine_config &config)
{
M65SC02(config, m_maincpu, XTAL(5'000'000));
M65SC02(config, m_maincpu, 5_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &c64_final_chesscard_device::c64_fcc_map);
config.m_perfect_cpu_quantum = subtag("maincpu");

View File

@ -58,7 +58,7 @@ private:
int m_hidden;
DECLARE_WRITE_LINE_MEMBER(mainlatch_int) { m_slot->nmi_w(state); }
DECLARE_READ8_MEMBER(rom_r) { return m_romh[offset]; } // cartridge cpu rom
DECLARE_READ8_MEMBER(rom_r) { return m_romx[offset]; } // cartridge cpu rom
DECLARE_READ8_MEMBER(nvram_r) { return m_nvram[offset & m_nvram.mask()]; }
DECLARE_WRITE8_MEMBER(nvram_w) { m_nvram[offset & m_nvram.mask()] = data; }

View File

@ -11,7 +11,7 @@
#include "emu.h"
#include "finalchs.h"
#include "cpu/m6502/m65c02.h"
#include "cpu/m6502/m65sc02.h"
WRITE8_MEMBER( isa8_finalchs_device::io7ff8_write )
{
@ -73,7 +73,7 @@ DEFINE_DEVICE_TYPE(ISA8_FINALCHS, isa8_finalchs_device, "isa_finalchs", "Final C
void isa8_finalchs_device::device_add_mconfig(machine_config &config)
{
m65c02_device &cpu(M65C02(config, "maincpu", 5000000));
m65sc02_device &cpu(M65SC02(config, "maincpu", 5_MHz_XTAL));
cpu.set_addrmap(AS_PROGRAM, &isa8_finalchs_device::finalchs_mem);
}