triviaquiz: Hook up question ROMs

This commit is contained in:
Dirk Best 2020-03-24 16:22:04 +01:00
parent 7a09fc9930
commit 36bd4c4cab

View File

@ -24,7 +24,6 @@
Norway sport 2
TODO:
* hook up questions ROMs
* sound
* nvram?
* https://www.tvspels-nostalgi.com/pcb_unk.htm shows red background. Faulty PCB adapter or bad emulation?
@ -32,6 +31,7 @@
#include "emu.h"
#include "cpu/tms9900/tms9995.h"
#include "machine/bankdev.h"
#include "video/tms9928a.h"
#include "screen.h"
@ -40,7 +40,8 @@ class triviaquiz_state : public driver_device
public:
triviaquiz_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
m_maincpu(*this, "maincpu"),
m_bankdev(*this, "bankdev")
{ }
void triviaquiz(machine_config &config);
@ -51,8 +52,10 @@ protected:
private:
required_device<tms9995_device> m_maincpu;
required_device<address_map_bank_device> m_bankdev;
void prg_map(address_map &map);
void romboard_map(address_map &map);
void io_map(address_map &map);
};
@ -60,8 +63,8 @@ private:
void triviaquiz_state::prg_map(address_map &map) // TODO: check everything
{
map(0x0000, 0x5fff).rom().region("maincpu", 0);
// map(0x6000, 0x6000).w
// map(0x6002, 0x6005).r
map(0x6000, 0x7fff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
map(0x6000, 0x6000).lw8(NAME([this] (uint8_t data) { m_bankdev->set_bank(data); }));
map(0x8000, 0x8000).rw("vdp", FUNC(tms9129_device::vram_read), FUNC(tms9129_device::vram_write));
map(0x8002, 0x8002).rw("vdp", FUNC(tms9129_device::register_read), FUNC(tms9129_device::register_write));
// map(0x8040, 0x8040).w
@ -74,6 +77,16 @@ void triviaquiz_state::prg_map(address_map &map) // TODO: check everything
map(0xe000, 0xe7ff).ram();
}
void triviaquiz_state::romboard_map(address_map &map)
{
map(0x00000, 0x00000).lr8(NAME([]() -> uint8_t { return 0x3e; })); // 00
map(0x20000, 0x27fff).rom().region("questions", 0x00000); // 10-13
map(0x40000, 0x47fff).rom().region("questions", 0x08000); // 20-23
map(0x60000, 0x67fff).rom().region("questions", 0x10000); // 30-33
map(0x80000, 0x87fff).rom().region("questions", 0x18000); // 40-43
map(0xa0000, 0xa7fff).rom().region("questions", 0x20000); // 50-53
}
void triviaquiz_state::io_map(address_map &map)
{
}
@ -142,6 +155,12 @@ void triviaquiz_state::triviaquiz(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &triviaquiz_state::prg_map);
m_maincpu->set_addrmap(AS_IO, &triviaquiz_state::io_map);
ADDRESS_MAP_BANK(config, m_bankdev, 0);
m_bankdev->set_addrmap(AS_PROGRAM, &triviaquiz_state::romboard_map);
m_bankdev->set_data_width(8);
m_bankdev->set_addr_width(20);
m_bankdev->set_stride(0x2000);
tms9129_device &vdp(TMS9129(config, "vdp", 10.738635_MHz_XTAL)); //TMS9129NL, 10.73864 XTAL on one PCB, 10.70000 on another
vdp.set_screen("screen");
vdp.set_vram_size(0x4000); // verified