hornet.cpp, nwk-tr.cpp: made use of arrays, killed some trampolines and tag lookups, and other minor cleanups

This commit is contained in:
Ivan Vangelista 2021-05-06 18:44:03 +02:00
parent 05afa5bfbc
commit da16930c37
2 changed files with 265 additions and 379 deletions

View File

@ -377,30 +377,23 @@ public:
hornet_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_workram(*this, "workram"),
m_sharc_dataram0(*this, "sharc_dataram0"),
m_sharc_dataram1(*this, "sharc_dataram1"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_k056800(*this, "k056800"),
m_gn680(*this, "gn680"),
m_dsp(*this, "dsp"),
m_dsp2(*this, "dsp2"),
m_k037122_1(*this, "k037122_1"),
m_k037122_2(*this, "k037122_2"),
m_dsp(*this, {"dsp", "dsp2"}), // TODO: hardcoded tags in machine/konpc.cpp
m_k037122(*this, "k037122_%u", 0U),
m_adc12138(*this, "adc12138"),
m_konppc(*this, "konppc"),
m_lan_eeprom(*this, "lan_eeprom"),
m_voodoo(*this, "voodoo%u", 0U),
m_in0(*this, "IN0"),
m_in1(*this, "IN1"),
m_in2(*this, "IN2"),
m_in(*this, "IN%u", 0U),
m_dsw(*this, "DSW"),
m_eepromout(*this, "EEPROMOUT"),
m_analog1(*this, "ANALOG1"),
m_analog2(*this, "ANALOG2"),
m_analog(*this, "ANALOG%u", 1U),
m_pcb_digit(*this, "pcbdigit%u", 0U),
m_user3_ptr(*this, "user3"),
m_user5_ptr(*this, "user5"),
m_comm_board_rom(*this, "comm_board"),
m_comm_bank(*this, "comm_bank"),
m_lan_ds2401(*this, "lan_serial_id"),
m_watchdog(*this, "watchdog")
{ }
@ -424,25 +417,23 @@ private:
static const int m_sound_timer_usec = 2800;
required_shared_ptr<uint32_t> m_workram;
required_shared_ptr<uint32_t> m_sharc_dataram0;
optional_shared_ptr<uint32_t> m_sharc_dataram1;
required_device<ppc4xx_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<k056800_device> m_k056800;
optional_device<cpu_device> m_gn680;
required_device<adsp21062_device> m_dsp;
optional_device<adsp21062_device> m_dsp2;
optional_device<k037122_device> m_k037122_1;
optional_device<k037122_device> m_k037122_2;
optional_device_array<adsp21062_device, 2> m_dsp;
optional_device_array<k037122_device, 2> m_k037122;
required_device<adc12138_device> m_adc12138;
required_device<konppc_device> m_konppc;
optional_device<eeprom_serial_93cxx_device> m_lan_eeprom;
optional_device_array<voodoo_device, 2> m_voodoo;
required_ioport m_in0, m_in1, m_in2, m_dsw;
optional_ioport m_eepromout, m_analog1, m_analog2;
required_ioport_array<3> m_in;
required_ioport m_dsw;
optional_ioport m_eepromout;
optional_ioport_array<2> m_analog;
output_finder<2> m_pcb_digit;
optional_region_ptr<uint8_t> m_user3_ptr;
optional_region_ptr<uint8_t> m_user5_ptr;
optional_region_ptr<uint32_t> m_comm_board_rom;
optional_memory_bank m_comm_bank;
optional_device<ds2401_device> m_lan_ds2401;
required_device<watchdog_timer_device> m_watchdog;
@ -469,12 +460,6 @@ private:
void gn680_sysctrl(uint16_t data);
uint16_t gn680_latch_r();
void gn680_latch_w(offs_t offset, uint16_t data);
uint32_t dsp_dataram0_r(offs_t offset);
void dsp_dataram0_w(offs_t offset, uint32_t data);
uint32_t dsp_dataram1_r(offs_t offset);
void dsp_dataram1_w(offs_t offset, uint32_t data);
DECLARE_WRITE_LINE_MEMBER(voodoo_vblank_0);
DECLARE_WRITE_LINE_MEMBER(voodoo_vblank_1);
void soundtimer_en_w(uint16_t data);
void soundtimer_count_w(uint16_t data);
double adc12138_input_callback(uint8_t input);
@ -504,56 +489,46 @@ private:
uint32_t hornet_state::hornet_k037122_sram_r(offs_t offset)
{
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122_2 : m_k037122_1;
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122[1] : m_k037122[0];
return k037122->sram_r(offset);
}
void hornet_state::hornet_k037122_sram_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122_2 : m_k037122_1;
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122[1] : m_k037122[0];
k037122->sram_w(offset, data, mem_mask);
}
uint32_t hornet_state::hornet_k037122_char_r(offs_t offset)
{
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122_2 : m_k037122_1;
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122[1] : m_k037122[0];
return k037122->char_r(offset);
}
void hornet_state::hornet_k037122_char_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122_2 : m_k037122_1;
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122[1] : m_k037122[0];
k037122->char_w(offset, data, mem_mask);
}
uint32_t hornet_state::hornet_k037122_reg_r(offs_t offset)
{
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122_2 : m_k037122_1;
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122[1] : m_k037122[0];
return k037122->reg_r(offset);
}
void hornet_state::hornet_k037122_reg_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122_2 : m_k037122_1;
k037122_device *k037122 = m_konppc->get_cgboard_id() ? m_k037122[1] : m_k037122[0];
k037122->reg_w(offset, data, mem_mask);
}
WRITE_LINE_MEMBER(hornet_state::voodoo_vblank_0)
{
m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
}
WRITE_LINE_MEMBER(hornet_state::voodoo_vblank_1)
{
m_maincpu->set_input_line(INPUT_LINE_IRQ1, state);
}
uint32_t hornet_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_voodoo[0]->voodoo_update(bitmap, cliprect);
m_k037122_1->tile_draw(screen, bitmap, cliprect);
m_k037122[0]->tile_draw(screen, bitmap, cliprect);
return 0;
}
@ -562,7 +537,7 @@ uint32_t hornet_state::screen_update_rscreen(screen_device &screen, bitmap_rgb32
{
m_voodoo[1]->voodoo_update(bitmap, cliprect);
m_k037122_2->tile_draw(screen, bitmap, cliprect);
m_k037122[1]->tile_draw(screen, bitmap, cliprect);
return 0;
}
@ -575,17 +550,17 @@ uint8_t hornet_state::sysreg_r(offs_t offset)
switch (offset)
{
case 0: /* I/O port 0 */
r = m_in0->read();
case 0: // I/O port 0
r = m_in[0]->read();
break;
case 1: /* I/O port 1 */
r = m_in1->read();
case 1: // I/O port 1
r = m_in[1]->read();
break;
case 2: /* I/O port 2 */
r = m_in2->read();
case 2: // I/O port 2
r = m_in[2]->read();
break;
case 3: /* I/O port 3 */
case 3: // I/O port 3
/*
0x80 = JVSINIT (JAMMA I/F SENSE)
0x40 = COMMST
@ -599,7 +574,7 @@ uint8_t hornet_state::sysreg_r(offs_t offset)
r |= m_adc12138->do_r() | (m_adc12138->eoc_r() << 2);
break;
case 4: /* I/O port 4 - DIP switches */
case 4: // I/O port 4 - DIP switches
r = m_dsw->read();
break;
@ -613,16 +588,16 @@ void hornet_state::sysreg_w(offs_t offset, uint8_t data)
{
switch (offset)
{
case 0: /* 7seg LEDs on PCB */
case 0: // 7seg LEDs on PCB
case 1:
m_pcb_digit[offset] = bitswap<8>(~data,7,0,1,2,3,4,5,6) & 0x7f;
break;
case 2: /* Parallel data register */
case 2: // Parallel data register
osd_printf_debug("Parallel data = %02X\n", data);
break;
case 3: /* System Register 0 */
case 3: // System Register 0
/*
0x80 = EEPWEN (EEPROM write enable)
0x40 = EEPCS (EEPROM CS)
@ -636,7 +611,7 @@ void hornet_state::sysreg_w(offs_t offset, uint8_t data)
osd_printf_debug("System register 0 = %02X\n", data);
break;
case 4: /* System Register 1 */
case 4: // System Register 1
/*
0x80 = SNDRES (sound reset)
0x40 = COMRES (COM reset)
@ -656,7 +631,7 @@ void hornet_state::sysreg_w(offs_t offset, uint8_t data)
osd_printf_debug("System register 1 = %02X\n", data);
break;
case 5: /* Sound Control Register */
case 5: // Sound Control Register
/*
0x80 = MODE1
0x40 = MUTE1
@ -670,7 +645,7 @@ void hornet_state::sysreg_w(offs_t offset, uint8_t data)
osd_printf_debug("Sound control register = %02X\n", data);
break;
case 6: /* WDT Register */
case 6: // WDT Register
/*
0x80 = WDTCLK
*/
@ -678,7 +653,7 @@ void hornet_state::sysreg_w(offs_t offset, uint8_t data)
m_watchdog->watchdog_reset();
break;
case 7: /* CG Control Register */
case 7: // CG Control Register
/*
0x80 = EXRES1
0x40 = EXRES0
@ -719,9 +694,8 @@ void hornet_state::comm1_w(offs_t offset, uint32_t data, uint32_t mem_mask)
void hornet_state::comm_rombank_w(uint32_t data)
{
int bank = data >> 24;
uint8_t *usr3 = memregion("user3")->base();
if (usr3 != nullptr)
membank("bank1")->set_entry(bank & 0x7f);
if (m_comm_board_rom.found())
m_comm_bank->set_entry(bank & 0x7f);
}
uint32_t hornet_state::comm0_unk_r(offs_t offset, uint32_t mem_mask)
@ -779,7 +753,7 @@ void hornet_state::soundtimer_count_w(uint16_t data)
void hornet_state::hornet_map(address_map &map)
{
map(0x00000000, 0x003fffff).ram().share("workram"); /* Work RAM */
map(0x00000000, 0x003fffff).ram().share(m_workram);
map(0x74000000, 0x740000ff).rw(FUNC(hornet_state::hornet_k037122_reg_r), FUNC(hornet_state::hornet_k037122_reg_w));
map(0x74020000, 0x7403ffff).rw(FUNC(hornet_state::hornet_k037122_sram_r), FUNC(hornet_state::hornet_k037122_sram_w));
map(0x74040000, 0x7407ffff).rw(FUNC(hornet_state::hornet_k037122_char_r), FUNC(hornet_state::hornet_k037122_char_w));
@ -789,9 +763,9 @@ void hornet_state::hornet_map(address_map &map)
map(0x7d010000, 0x7d01ffff).w(FUNC(hornet_state::sysreg_w));
map(0x7d020000, 0x7d021fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); /* M48T58Y RTC/NVRAM */
map(0x7d030000, 0x7d03000f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
map(0x7e000000, 0x7e7fffff).rom().region("user2", 0); /* Data ROM */
map(0x7f000000, 0x7f3fffff).rom().region("user1", 0);
map(0x7fc00000, 0x7fffffff).rom().region("user1", 0); /* Program ROM */
map(0x7e000000, 0x7e7fffff).rom().region("datarom", 0);
map(0x7f000000, 0x7f3fffff).rom().region("prgrom", 0);
map(0x7fc00000, 0x7fffffff).rom().region("prgrom", 0);
}
void hornet_state::hornet_lan_map(address_map &map)
@ -817,11 +791,11 @@ void hornet_state::sscope2_map(address_map &map)
{
sscope_map(map);
map(0x7d040004, 0x7d040007).rw(FUNC(hornet_state::comm_eeprom_r), FUNC(hornet_state::comm_eeprom_w));
map(0x7d042000, 0x7d043fff).ram(); /* COMM BOARD 0 */
map(0x7d042000, 0x7d043fff).ram(); // COMM BOARD 0
map(0x7d044000, 0x7d044007).r(FUNC(hornet_state::comm0_unk_r));
map(0x7d048000, 0x7d048003).w(FUNC(hornet_state::comm1_w));
map(0x7d04a000, 0x7d04a003).w(FUNC(hornet_state::comm_rombank_w));
map(0x7d050000, 0x7d05ffff).bankr("bank1"); /* COMM BOARD 1 */
map(0x7d050000, 0x7d05ffff).bankr(m_comm_bank); // COMM BOARD 1
}
/*****************************************************************************/
@ -829,8 +803,8 @@ void hornet_state::sscope2_map(address_map &map)
void hornet_state::sound_memmap(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x100000, 0x10ffff).ram(); /* Work RAM */
map(0x200000, 0x200fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); /* Ricoh RF5C400 */
map(0x100000, 0x10ffff).ram(); // Work RAM
map(0x200000, 0x200fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); // Ricoh RF5C400
map(0x300000, 0x30001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
map(0x480000, 0x480001).nopw();
map(0x4c0000, 0x4c0001).nopw();
@ -880,46 +854,26 @@ void hornet_state::gn680_memmap(address_map &map)
/*****************************************************************************/
uint32_t hornet_state::dsp_dataram0_r(offs_t offset)
{
return m_sharc_dataram0[offset] & 0xffff;
}
void hornet_state::dsp_dataram0_w(offs_t offset, uint32_t data)
{
m_sharc_dataram0[offset] = data;
}
uint32_t hornet_state::dsp_dataram1_r(offs_t offset)
{
return m_sharc_dataram1[offset] & 0xffff;
}
void hornet_state::dsp_dataram1_w(offs_t offset, uint32_t data)
{
m_sharc_dataram1[offset] = data;
}
void hornet_state::sharc0_map(address_map &map)
{
map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w));
map(0x0500000, 0x05fffff).rw(FUNC(hornet_state::dsp_dataram0_r), FUNC(hornet_state::dsp_dataram0_w)).share("sharc_dataram0");
map(0x0500000, 0x05fffff).ram().share("sharc0_dataram").umask32(0x0000ffff);
map(0x1400000, 0x14fffff).ram();
map(0x2400000, 0x27fffff).rw("voodoo0", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w));
map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w));
map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_0_r), FUNC(konppc_device::K033906_0_w));
map(0x3600000, 0x37fffff).bankr("bank5");
map(0x3600000, 0x37fffff).bankr("master_cgboard_bank");
}
void hornet_state::sharc1_map(address_map &map)
{
map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_1_shared_sharc_r), FUNC(konppc_device::cgboard_1_shared_sharc_w));
map(0x0500000, 0x05fffff).rw(FUNC(hornet_state::dsp_dataram1_r), FUNC(hornet_state::dsp_dataram1_w)).share("sharc_dataram1");
map(0x0500000, 0x05fffff).ram().share("sharc1_dataram").umask32(0x0000ffff);
map(0x1400000, 0x14fffff).ram();
map(0x2400000, 0x27fffff).rw("voodoo1", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w));
map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_1_comm_sharc_r), FUNC(konppc_device::cgboard_1_comm_sharc_w));
map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_1_r), FUNC(konppc_device::K033906_1_w));
map(0x3600000, 0x37fffff).bankr("bank6");
map(0x3600000, 0x37fffff).bankr("slave_cgboard_bank");
}
/*****************************************************************************/
@ -1102,10 +1056,10 @@ void hornet_state::machine_start()
m_jvs_sdata_ptr = 0;
m_jvs_sdata = make_unique_clear<uint8_t[]>(1024);
/* set conservative DRC options */
// set conservative DRC options
m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
/* configure fast RAM regions for DRC */
// configure fast RAM regions for DRC
m_maincpu->ppcdrc_add_fastram(0x00000000, 0x003fffff, false, m_workram);
save_pointer(NAME(m_jvs_sdata), 1024);
@ -1116,22 +1070,21 @@ void hornet_state::machine_start()
void hornet_state::machine_reset()
{
memory_region* comm_region = memregion("user3");
if (comm_region != nullptr)
if (m_comm_board_rom.found())
{
uint8_t* comm_rom = comm_region->base();
membank("bank1")->configure_entries(0, comm_region->bytes() / 0x10000, comm_rom, 0x10000);
membank("bank1")->set_entry(0);
m_comm_bank->configure_entries(0, m_comm_board_rom.bytes() / 0x10000, &m_comm_board_rom[0], 0x10000);
m_comm_bank->set_entry(0);
}
m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
if (m_dsp2 != nullptr)
m_dsp2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_dsp[0]->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
if (m_dsp[1].found())
m_dsp[1]->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
if (m_user5_ptr)
if (memregion("master_cgboard"))
{
membank("bank5")->set_base(m_user5_ptr);
membank("bank6")->set_base(m_user5_ptr);
membank("master_cgboard_bank")->set_base(memregion("master_cgboard")->base());
if (membank("slave_cgboard_bank"))
membank("slave_cgboard_bank")->set_base(memregion("master_cgboard")->base());
}
}
@ -1140,8 +1093,8 @@ double hornet_state::adc12138_input_callback(uint8_t input)
int value = 0;
switch (input)
{
case 0: value = m_analog1.read_safe(0); break;
case 1: value = m_analog2.read_safe(0); break;
case 0: value = m_analog[0].read_safe(0); break;
case 1: value = m_analog[1].read_safe(0); break;
}
return (double)(value) / 2047.0;
@ -1149,16 +1102,16 @@ double hornet_state::adc12138_input_callback(uint8_t input)
void hornet_state::hornet(machine_config &config)
{
/* basic machine hardware */
PPC403GA(config, m_maincpu, XTAL(64'000'000) / 2); /* PowerPC 403GA 32MHz */
// basic machine hardware
PPC403GA(config, m_maincpu, XTAL(64'000'000) / 2); // PowerPC 403GA 32MHz
m_maincpu->set_addrmap(AS_PROGRAM, &hornet_state::hornet_map);
M68000(config, m_audiocpu, XTAL(64'000'000) / 4); /* 16MHz */
M68000(config, m_audiocpu, XTAL(64'000'000) / 4); // 16MHz
m_audiocpu->set_addrmap(AS_PROGRAM, &hornet_state::sound_memmap);
ADSP21062(config, m_dsp, XTAL(36'000'000));
m_dsp->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
m_dsp->set_addrmap(AS_DATA, &hornet_state::sharc0_map);
ADSP21062(config, m_dsp[0], XTAL(36'000'000));
m_dsp[0]->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
m_dsp[0]->set_addrmap(AS_DATA, &hornet_state::sharc0_map);
config.set_maximum_quantum(attotime::from_hz(6000));
@ -1171,12 +1124,12 @@ void hornet_state::hornet(machine_config &config)
m_voodoo[0]->set_fbmem(2);
m_voodoo[0]->set_tmumem(4,0);
m_voodoo[0]->set_screen_tag("screen");
m_voodoo[0]->set_cpu_tag("dsp");
m_voodoo[0]->vblank_callback().set(FUNC(hornet_state::voodoo_vblank_0));
m_voodoo[0]->set_cpu_tag(m_dsp[0]);
m_voodoo[0]->vblank_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
K033906(config, "k033906_1", 0, "voodoo0");
/* video hardware */
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
// default 24KHz parameter in both 037122 and voodoo, input clock correct? (58~Hz Vsync, 50MHz/3 or 64MHz/4?)
screen.set_raw(XTAL(64'000'000) / 4, 644, 41, 41 + 512, 428, 27, 27 + 384);
@ -1184,9 +1137,9 @@ void hornet_state::hornet(machine_config &config)
PALETTE(config, "palette").set_entries(65536);
K037122(config, m_k037122_1, 0);
m_k037122_1->set_screen("screen");
m_k037122_1->set_palette("palette");
K037122(config, m_k037122[0], 0);
m_k037122[0]->set_screen("screen");
m_k037122[0]->set_palette("palette");
K056800(config, m_k056800, XTAL(16'934'400));
m_k056800->int_callback().set_inputline(m_audiocpu, M68K_IRQ_2);
@ -1223,7 +1176,7 @@ void hornet_state::terabrst(machine_config &config) //todo: add K056800 from I/O
m_maincpu->set_addrmap(AS_PROGRAM, &hornet_state::terabrst_map);
M68000(config, m_gn680, XTAL(32'000'000) / 2); /* 16MHz */
M68000(config, m_gn680, XTAL(32'000'000) / 2); // 16MHz
m_gn680->set_addrmap(AS_PROGRAM, &hornet_state::gn680_memmap);
}
@ -1233,16 +1186,16 @@ void hornet_state::sscope(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &hornet_state::sscope_map);
ADSP21062(config, m_dsp2, XTAL(36'000'000));
m_dsp2->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
m_dsp2->set_addrmap(AS_DATA, &hornet_state::sharc1_map);
ADSP21062(config, m_dsp[1], XTAL(36'000'000));
m_dsp[1]->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
m_dsp[1]->set_addrmap(AS_DATA, &hornet_state::sharc1_map);
m_k037122_1->set_screen("lscreen");
m_k037122_1->set_palette("palette");
m_k037122[0]->set_screen("lscreen");
m_k037122[0]->set_palette("palette");
K037122(config, m_k037122_2, 0); // unknown input clock
m_k037122_2->set_screen("rscreen");
m_k037122_2->set_palette("palette");
K037122(config, m_k037122[1], 0); // unknown input clock
m_k037122[1]->set_screen("rscreen");
m_k037122[1]->set_palette("palette");
m_voodoo[0]->set_screen_tag("lscreen");
@ -1250,12 +1203,12 @@ void hornet_state::sscope(machine_config &config)
m_voodoo[1]->set_fbmem(2);
m_voodoo[1]->set_tmumem(4, 0);
m_voodoo[1]->set_screen_tag("rscreen");
m_voodoo[1]->set_cpu_tag("dsp2");
m_voodoo[1]->vblank_callback().set(FUNC(hornet_state::voodoo_vblank_1));
m_voodoo[1]->set_cpu_tag(m_dsp[1]);
m_voodoo[1]->vblank_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ1);
K033906(config, "k033906_2", 0, "voodoo1");
/* video hardware */
// video hardware
config.device_remove("screen");
screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
@ -1284,15 +1237,15 @@ void hornet_state::sscope2(machine_config &config)
m_voodoo[0]->set_fbmem(2);
m_voodoo[0]->set_tmumem(4,0);
m_voodoo[0]->set_screen_tag("lscreen");
m_voodoo[0]->set_cpu_tag("dsp");
m_voodoo[0]->vblank_callback().set(FUNC(hornet_state::voodoo_vblank_0));
m_voodoo[0]->set_cpu_tag(m_dsp[0]);
m_voodoo[0]->vblank_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
VOODOO_2(config.replace(), m_voodoo[1], STD_VOODOO_2_CLOCK);
m_voodoo[1]->set_fbmem(2);
m_voodoo[1]->set_tmumem(4,0);
m_voodoo[1]->set_screen_tag("rscreen");
m_voodoo[1]->set_cpu_tag("dsp2");
m_voodoo[1]->vblank_callback().set(FUNC(hornet_state::voodoo_vblank_1));
m_voodoo[1]->set_cpu_tag(m_dsp[1]);
m_voodoo[1]->vblank_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ1);
DS2401(config, "lan_serial_id");
EEPROM_93C46_16BIT(config, "lan_eeprom");
@ -1441,25 +1394,25 @@ void hornet_state::jamma_jvs_cmd_exec()
void hornet_state::init_hornet()
{
m_konppc->set_cgboard_texture_bank(0, "bank5", memregion("user5")->base());
m_konppc->set_cgboard_texture_bank(0, "master_cgboard_bank", memregion("master_cgboard")->base());
m_maincpu->ppc4xx_spu_set_tx_handler(write8smo_delegate(*this, FUNC(hornet_state::jamma_jvs_w)));
m_dsp->enable_recompiler();
m_dsp[0]->enable_recompiler();
}
void hornet_state::init_sscope()
{
m_konppc->set_cgboard_texture_bank(0, "bank5", memregion("user5")->base());
m_konppc->set_cgboard_texture_bank(1, "bank6", memregion("user5")->base());
m_konppc->set_cgboard_texture_bank(0, "master_cgboard_bank", memregion("master_cgboard")->base());
m_konppc->set_cgboard_texture_bank(1, "slave_cgboard_bank", memregion("master_cgboard")->base());
m_maincpu->ppc4xx_spu_set_tx_handler(write8smo_delegate(*this, FUNC(hornet_state::jamma_jvs_w)));
}
void hornet_state::init_sscope2() //fixme: eventually set sscope2 to load gfx roms from the comm board
{
m_konppc->set_cgboard_texture_bank(0, "bank5", memregion("user5")->base());
m_konppc->set_cgboard_texture_bank(1, "bank6", memregion("user5")->base());
m_konppc->set_cgboard_texture_bank(0, "master_cgboard_bank", memregion("master_cgboard")->base());
m_konppc->set_cgboard_texture_bank(1, "slave_cgboard_bank", memregion("master_cgboard")->base());
m_maincpu->ppc4xx_spu_set_tx_handler(write8smo_delegate(*this, FUNC(hornet_state::jamma_jvs_w)));
}
@ -1467,20 +1420,20 @@ void hornet_state::init_sscope2() //fixme: eventually set sscope2 to load gfx ro
/*****************************************************************************/
ROM_START(sscope)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD16_WORD_SWAP("830d01.27p", 0x200000, 0x200000, CRC(de9b3dfa) SHA1(660652a5f745cb04687481c3626d8a43cd169193) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", ROMREGION_ERASE00) // Data roms
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
ROM_REGION(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD( "830a14.32u", 0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
ROM_LOAD32_WORD( "830a13.24u", 0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
ROM_REGION16_LE(0x1000000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x1000000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "830a09.16p", 0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
ROM_LOAD( "830a10.14p", 0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
@ -1490,20 +1443,20 @@ ROM_START(sscope)
ROM_END
ROM_START(sscopec)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD16_WORD_SWAP("830c01.27p", 0x200000, 0x200000, CRC(87682449) SHA1(6ccaa5bac86e947e01a6aae568a75f002421fe5b) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", ROMREGION_ERASE00) // Data roms
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
ROM_REGION(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD( "830a14.32u", 0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
ROM_LOAD32_WORD( "830a13.24u", 0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
ROM_REGION16_LE(0x1000000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x1000000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "830a09.16p", 0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
ROM_LOAD( "830a10.14p", 0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
@ -1512,20 +1465,20 @@ ROM_START(sscopec)
ROM_END
ROM_START(sscopeb)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD16_WORD_SWAP("830b01.27p", 0x200000, 0x200000, CRC(3b6bb075) SHA1(babc134c3a20c7cdcaa735d5f1fd5cab38667a14) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", ROMREGION_ERASE00) // Data roms
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
ROM_REGION(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD( "830a14.32u", 0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
ROM_LOAD32_WORD( "830a13.24u", 0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
ROM_REGION16_LE(0x1000000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x1000000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "830a09.16p", 0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
ROM_LOAD( "830a10.14p", 0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
@ -1534,20 +1487,20 @@ ROM_START(sscopeb)
ROM_END
ROM_START(sscopea)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD16_WORD_SWAP("830a01.27p", 0x200000, 0x200000, CRC(39e353f1) SHA1(569b06969ae7a690f6d6e63cc3b5336061663a37) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", ROMREGION_ERASE00) // Data roms
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
ROM_REGION(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD( "830a14.32u", 0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
ROM_LOAD32_WORD( "830a13.24u", 0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
ROM_REGION16_LE(0x1000000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x1000000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "830a09.16p", 0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
ROM_LOAD( "830a10.14p", 0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
@ -1556,23 +1509,23 @@ ROM_START(sscopea)
ROM_END
ROM_START(sscope2)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD16_WORD_SWAP("931d01.bin", 0x200000, 0x200000, CRC(4065fde6) SHA1(84f2dedc3e8f61651b22c0a21433a64993e1b9e2) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", 0) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP("931a04.bin", 0x000000, 0x200000, CRC(4f5917e6) SHA1(a63a107f1d6d9756e4ab0965d72ea446f0692814) )
ROM_REGION32_BE(0x800000, "user3", 0) /* Comm board roms */
ROM_REGION32_BE(0x800000, "comm_board", 0) // Comm board roms
ROM_LOAD("931a19.bin", 0x000000, 0x400000, CRC(0417b528) SHA1(ebd7f06b83256b94784de164f9d0642bfb2c94d4) )
ROM_LOAD("931a20.bin", 0x400000, 0x400000, CRC(d367a4c9) SHA1(8bf029841d9d3be20dea0423240bfec825477a1d) )
ROM_REGION(0x800000, "user5", ROMREGION_ERASE00) /* CG Board texture roms */
ROM_REGION(0x800000, "master_cgboard", ROMREGION_ERASE00) // CG Board texture roms
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP("931a08.bin", 0x000000, 0x80000, CRC(1597d604) SHA1(a1eab4d25907930b59ea558b484c3b6ddcb9303c) )
ROM_REGION16_LE(0xc00000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0xc00000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "931a09.bin", 0x000000, 0x400000, CRC(694c354c) SHA1(42f54254a5959e1b341f2801f1ad032c4ed6f329) )
ROM_LOAD( "931a10.bin", 0x400000, 0x400000, CRC(78ceb519) SHA1(e61c0d21b6dc37a9293e72814474f5aee59115ad) )
ROM_LOAD( "931a11.bin", 0x800000, 0x400000, CRC(9c8362b2) SHA1(a8158c4db386e2bbd61dc9a600720f07a1eba294) )
@ -1580,32 +1533,32 @@ ROM_START(sscope2)
ROM_REGION(0x2000, "m48t58",0)
ROM_LOAD( "m48t58y-70pc1", 0x000000, 0x002000, CRC(d4e69d7a) SHA1(1e29eecf4886e5e098a388dedd5f3901c2bb65e5) )
ROM_REGION(0x8, "lan_serial_id", 0) /* LAN Board DS2401 */
ROM_REGION(0x8, "lan_serial_id", 0) // LAN Board DS2401
ROM_LOAD( "ds2401.16g", 0x000000, 0x000008, BAD_DUMP CRC(bae36d0b) SHA1(4dd5915888d5718356b40bbe897f2470e410176a) ) // hand built
ROM_REGION16_BE(0x80, "lan_eeprom", 0) /* LAN Board AT93C46 */
ROM_REGION16_BE(0x80, "lan_eeprom", 0) // LAN Board AT93C46
ROM_LOAD( "at93c46.8g", 0x000000, 0x000080, BAD_DUMP CRC(cc63c213) SHA1(fb20e56fb73a887dc7b6db49efd1f8a18b959152) ) // hand built
ROM_END
ROM_START(gradius4)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD16_WORD_SWAP( "837c01.27p", 0x200000, 0x200000, CRC(ce003123) SHA1(15e33997be2c1b3f71998627c540db378680a7a1) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", 0) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP( "837a04.16t", 0x000000, 0x200000, CRC(18453b59) SHA1(3c75a54d8c09c0796223b42d30fb3867a911a074) )
ROM_LOAD32_WORD_SWAP( "837a05.14t", 0x000002, 0x200000, CRC(77178633) SHA1(ececdd501d0692390325c8dad6dbb068808a8b26) )
ROM_REGION32_BE(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION32_BE(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "837a14.32u", 0x000002, 0x400000, CRC(ff1b5d18) SHA1(7a38362170133dcc6ea01eb62981845917b85c36) )
ROM_LOAD32_WORD_SWAP( "837a13.24u", 0x000000, 0x400000, CRC(d86e10ff) SHA1(6de1179d7081d9a93ab6df47692d3efc190c38ba) )
ROM_LOAD32_WORD_SWAP( "837a16.32v", 0x800002, 0x400000, CRC(bb7a7558) SHA1(8c8cc062793c2dcfa72657b6ea0813d7223a0b87) )
ROM_LOAD32_WORD_SWAP( "837a15.24v", 0x800000, 0x400000, CRC(e0620737) SHA1(c14078cdb44f75c7c956b3627045d8494941d6b4) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP( "837a08.7s", 0x000000, 0x080000, CRC(c3a7ff56) SHA1(9d8d033277d560b58da151338d14b4758a9235ea) )
ROM_REGION16_LE(0x800000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x800000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "837a09.16p", 0x000000, 0x400000, CRC(fb8f3dc2) SHA1(69e314ac06308c5a24309abc3d7b05af6c0302a8) )
ROM_LOAD( "837a10.14p", 0x400000, 0x400000, CRC(1419cad2) SHA1(a6369a5c29813fa51e8246d0c091736f32994f3d) )
@ -1614,24 +1567,24 @@ ROM_START(gradius4)
ROM_END
ROM_START(nbapbp)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD16_WORD_SWAP( "778a01.27p", 0x200000, 0x200000, CRC(e70019ce) SHA1(8b187b6e670fdc88771da08a56685cd621b139dc) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", 0) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP( "778a04.16t", 0x000000, 0x400000, CRC(62c70132) SHA1(405aed149fc51e0adfa3ace3c644e47d53cf1ee3) )
ROM_LOAD32_WORD_SWAP( "778a05.14t", 0x000002, 0x400000, CRC(03249803) SHA1(f632a5f1dfa0a8500407214df0ec8d98ce09bc2b) )
ROM_REGION32_BE(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION32_BE(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "778a14.32u", 0x000002, 0x400000, CRC(db0c278d) SHA1(bb9884b6cdcdb707fff7e56e92e2ede062abcfd3) )
ROM_LOAD32_WORD_SWAP( "778a13.24u", 0x000000, 0x400000, CRC(47fda9cc) SHA1(4aae01c1f1861b4b12a3f9de6b39eb4d11a9736b) )
ROM_LOAD32_WORD_SWAP( "778a16.32v", 0x800002, 0x400000, CRC(6c0f46ea) SHA1(c6b9fbe14e13114a91a5925a0b46496260539687) )
ROM_LOAD32_WORD_SWAP( "778a15.24v", 0x800000, 0x400000, CRC(d176ad0d) SHA1(2be755dfa3f60379d396734809bbaaaad49e0db5) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP( "778a08.7s", 0x000000, 0x080000, CRC(6259b4bf) SHA1(d0c38870495c9a07984b4b85e736d6477dd44832) )
ROM_REGION16_LE(0x1000000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x1000000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "778a09.16p", 0x000000, 0x400000, CRC(e8c6fd93) SHA1(dd378b67b3b7dd932e4b39fbf4321e706522247f) )
ROM_LOAD( "778a10.14p", 0x400000, 0x400000, CRC(c6a0857b) SHA1(976734ba56460fcc090619fbba043a3d888c4f4e) )
ROM_LOAD( "778a11.12p", 0x800000, 0x400000, CRC(40199382) SHA1(bee268adf9b6634a4f6bb39278ecd02f2bdcb1f4) )
@ -1642,24 +1595,24 @@ ROM_START(nbapbp)
ROM_END
ROM_START(nbapbpa) // only the PowerPC program rom present in the archive
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD16_WORD_SWAP( "778b01.27p", 0x200000, 0x200000, CRC(8dca96b5) SHA1(7dfa38c4be6c3547ee9c7ad104282510e205ab37) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", 0) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP( "778a04.16t", 0x000000, 0x400000, CRC(62c70132) SHA1(405aed149fc51e0adfa3ace3c644e47d53cf1ee3) )
ROM_LOAD32_WORD_SWAP( "778a05.14t", 0x000002, 0x400000, CRC(03249803) SHA1(f632a5f1dfa0a8500407214df0ec8d98ce09bc2b) )
ROM_REGION32_BE(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION32_BE(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "778a14.32u", 0x000002, 0x400000, CRC(db0c278d) SHA1(bb9884b6cdcdb707fff7e56e92e2ede062abcfd3) )
ROM_LOAD32_WORD_SWAP( "778a13.24u", 0x000000, 0x400000, CRC(47fda9cc) SHA1(4aae01c1f1861b4b12a3f9de6b39eb4d11a9736b) )
ROM_LOAD32_WORD_SWAP( "778a16.32v", 0x800002, 0x400000, CRC(6c0f46ea) SHA1(c6b9fbe14e13114a91a5925a0b46496260539687) )
ROM_LOAD32_WORD_SWAP( "778a15.24v", 0x800000, 0x400000, CRC(d176ad0d) SHA1(2be755dfa3f60379d396734809bbaaaad49e0db5) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP( "778a08.7s", 0x000000, 0x080000, CRC(6259b4bf) SHA1(d0c38870495c9a07984b4b85e736d6477dd44832) )
ROM_REGION16_LE(0x1000000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x1000000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "778a09.16p", 0x000000, 0x400000, CRC(e8c6fd93) SHA1(dd378b67b3b7dd932e4b39fbf4321e706522247f) )
ROM_LOAD( "778a10.14p", 0x400000, 0x400000, CRC(c6a0857b) SHA1(976734ba56460fcc090619fbba043a3d888c4f4e) )
ROM_LOAD( "778a11.12p", 0x800000, 0x400000, CRC(40199382) SHA1(bee268adf9b6634a4f6bb39278ecd02f2bdcb1f4) )
@ -1670,26 +1623,26 @@ ROM_START(nbapbpa) // only the PowerPC program rom present in the archive
ROM_END
ROM_START(terabrst)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD32_WORD_SWAP( "715l02.25p", 0x000000, 0x200000, CRC(79586f19) SHA1(8dcfed5d101ebe49d958a7a38d5472323f75dd1d) )
ROM_LOAD32_WORD_SWAP( "715l03.22p", 0x000002, 0x200000, CRC(c193021e) SHA1(c934b7c4bdab0ceff0f1699fcf2fb7d90e2e8962) )
ROM_REGION32_BE(0x800000, "user2", 0) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP( "715a04.16t", 0x000000, 0x200000, CRC(00d9567e) SHA1(fe372399ad0ae89d557c93c3145b38e3ed0f714d) )
ROM_LOAD32_WORD_SWAP( "715a05.14t", 0x000002, 0x200000, CRC(462d53bf) SHA1(0216a84358571de6791365c69a1fa8fe2784148d) )
ROM_REGION32_BE(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION32_BE(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "715a14.32u", 0x000002, 0x400000, CRC(bbb36be3) SHA1(c828d0af0546db02e87afe68423b9447db7c7e51) )
ROM_LOAD32_WORD_SWAP( "715a13.24u", 0x000000, 0x400000, CRC(dbff58a1) SHA1(f0c60bb2cbf268cfcbdd65606ebb18f1b4839c0e) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP( "715a08.7s", 0x000000, 0x080000, CRC(3aa2f4a5) SHA1(bb43e5f5ef4ac51f228d4d825be66d3c720d51ea) )
ROM_REGION16_LE(0x1000000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x1000000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "715a09.16p", 0x000000, 0x400000, CRC(65845866) SHA1(d2a63d0deef1901e6fa21b55c5f96e1f781dceda) )
ROM_LOAD( "715a10.14p", 0x400000, 0x400000, CRC(294fe71b) SHA1(ac5fff5627df1cee4f1e1867377f208b34334899) )
ROM_REGION(0x20000, "gn680", 0) /* 68K Program */
ROM_REGION(0x20000, "gn680", 0) // 68K Program
ROM_LOAD16_WORD_SWAP( "715a17.20k", 0x000000, 0x020000, CRC(f0b7ba0c) SHA1(863b260824b0ae2f890ba84d1c9a8f436891b1ff) )
ROM_REGION(0x2000, "m48t58",0)
@ -1697,26 +1650,26 @@ ROM_START(terabrst)
ROM_END
ROM_START(terabrsta)
ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */
ROM_REGION32_BE(0x400000, "prgrom", 0) // PowerPC program
ROM_LOAD32_WORD_SWAP( "715a02.25p", 0x000000, 0x200000, CRC(070c48b3) SHA1(066cefbd34d8f6476083417471114f782bef97fb) )
ROM_LOAD32_WORD_SWAP( "715a03.22p", 0x000002, 0x200000, CRC(f77d242f) SHA1(7680e4abcccd549b3f6d1d245f64631fab57e80d) )
ROM_REGION32_BE(0x800000, "user2", 0) /* Data roms */
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP( "715a04.16t", 0x000000, 0x200000, CRC(00d9567e) SHA1(fe372399ad0ae89d557c93c3145b38e3ed0f714d) )
ROM_LOAD32_WORD_SWAP( "715a05.14t", 0x000002, 0x200000, CRC(462d53bf) SHA1(0216a84358571de6791365c69a1fa8fe2784148d) )
ROM_REGION32_BE(0x1000000, "user5", 0) /* CG Board texture roms */
ROM_REGION32_BE(0x1000000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "715a14.32u", 0x000002, 0x400000, CRC(bbb36be3) SHA1(c828d0af0546db02e87afe68423b9447db7c7e51) )
ROM_LOAD32_WORD_SWAP( "715a13.24u", 0x000000, 0x400000, CRC(dbff58a1) SHA1(f0c60bb2cbf268cfcbdd65606ebb18f1b4839c0e) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */
ROM_REGION(0x80000, "audiocpu", 0) // 68K Program
ROM_LOAD16_WORD_SWAP( "715a08.7s", 0x000000, 0x080000, CRC(3aa2f4a5) SHA1(bb43e5f5ef4ac51f228d4d825be66d3c720d51ea) )
ROM_REGION16_LE(0x1000000, "rfsnd", 0) /* PCM sample roms */
ROM_REGION16_LE(0x1000000, "rfsnd", 0) // PCM sample roms
ROM_LOAD( "715a09.16p", 0x000000, 0x400000, CRC(65845866) SHA1(d2a63d0deef1901e6fa21b55c5f96e1f781dceda) )
ROM_LOAD( "715a10.14p", 0x400000, 0x400000, CRC(294fe71b) SHA1(ac5fff5627df1cee4f1e1867377f208b34334899) )
ROM_REGION(0x20000, "gn680", 0) /* 68K Program */
ROM_REGION(0x20000, "gn680", 0) // 68K Program
ROM_LOAD16_WORD_SWAP( "715a17.20k", 0x000000, 0x020000, CRC(f0b7ba0c) SHA1(863b260824b0ae2f890ba84d1c9a8f436891b1ff) )
ROM_REGION(0x2000, "m48t58",0)
@ -1724,15 +1677,15 @@ ROM_START(terabrsta)
ROM_END
ROM_START(thrilldbu) // GE713UF sticker, does not have the chip at 2G since it uses the rev A network board
ROM_REGION32_BE(0x400000, "user1", ROMREGION_ERASEFF) // PowerPC program roms
ROM_REGION32_BE(0x400000, "prgrom", ROMREGION_ERASEFF) // PowerPC program roms
ROM_LOAD16_WORD_SWAP("713ab01.27p", 0x200000, 0x200000, CRC(a005d728) SHA1(8e265b1bb3adb7db2d342d3c0e3361a7174cb54d) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION32_BE(0x800000, "user2", 0) // Data roms
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP("713a04.16t", 0x000000, 0x200000, CRC(c994aaa8) SHA1(d82b9930a11e5384ad583684a27c95beec03cd5a) )
ROM_LOAD32_WORD_SWAP("713a05.14t", 0x000002, 0x200000, CRC(6f1e6802) SHA1(91f8a170327e9b4ee6a64aee0c106b981a317e69) )
ROM_REGION32_BE(0x800000, "user5", 0) // CG Board texture roms
ROM_REGION32_BE(0x800000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "713a13.24u", 0x000000, 0x400000, CRC(b795c66b) SHA1(6e50de0d5cc444ffaa0fec7ada8c07f643374bb2) )
ROM_LOAD32_WORD_SWAP( "713a14.32u", 0x000002, 0x400000, CRC(5275a629) SHA1(16fadef06975f0f3625cac8f84e2e77ed7d75e15) )

View File

@ -296,23 +296,15 @@ public:
m_work_ram(*this, "work_ram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_dsp(*this, "dsp"),
m_dsp2(*this, "dsp2"),
m_dsp(*this, {"dsp", "dsp2"}), // TODO: hardcoded tags in machine/konpc.cpp
m_k056800(*this, "k056800"),
m_k001604_1(*this, "k001604_1"),
m_k001604_2(*this, "k001604_2"),
m_k001604(*this, "k001604_%u", 1U),
m_konppc(*this, "konppc"),
m_adc12138(*this, "adc12138"),
m_voodoo(*this, "voodoo%u", 0U),
m_in0(*this, "IN0"),
m_in1(*this, "IN1"),
m_in2(*this, "IN2"),
m_in(*this, "IN%u", 0U),
m_dsw(*this, "DSW"),
m_analog1(*this, "ANALOG1"),
m_analog2(*this, "ANALOG2"),
m_analog3(*this, "ANALOG3"),
m_analog4(*this, "ANALOG4"),
m_analog5(*this, "ANALOG5"),
m_analog(*this, "ANALOG%u", 1U),
m_pcb_digit(*this, "pcbdigit%u", 0U),
m_palette(*this, "palette"),
m_generic_paletteram_32(*this, "paletteram")
@ -321,7 +313,6 @@ public:
void thrilld(machine_config &config);
void nwktr(machine_config &config);
void init_nwktr();
void init_racingj();
void init_thrilld();
@ -336,47 +327,38 @@ private:
required_shared_ptr<uint32_t> m_work_ram;
required_device<ppc_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<adsp21062_device> m_dsp;
required_device<adsp21062_device> m_dsp2;
required_device_array<adsp21062_device, 2> m_dsp;
required_device<k056800_device> m_k056800;
required_device<k001604_device> m_k001604_1;
required_device<k001604_device> m_k001604_2;
required_device_array<k001604_device, 2> m_k001604;
required_device<konppc_device> m_konppc;
required_device<adc12138_device> m_adc12138;
required_device_array<voodoo_device, 2> m_voodoo;
required_ioport m_in0, m_in1, m_in2, m_dsw, m_analog1, m_analog2, m_analog3, m_analog4, m_analog5;
required_ioport_array<3> m_in;
required_ioport m_dsw;
required_ioport_array<5> m_analog;
output_finder<2> m_pcb_digit;
required_device<palette_device> m_palette;
required_shared_ptr<uint32_t> m_generic_paletteram_32;
emu_timer *m_sound_irq_timer;
std::unique_ptr<uint32_t[]> m_sharc0_dataram;
std::unique_ptr<uint32_t[]> m_sharc1_dataram;
void paletteram32_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
uint32_t nwktr_k001604_tile_r(offs_t offset);
void nwktr_k001604_tile_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
uint32_t nwktr_k001604_char_r(offs_t offset);
void nwktr_k001604_char_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
uint32_t nwktr_k001604_reg_r(offs_t offset);
void nwktr_k001604_reg_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
uint32_t k001604_tile_r(offs_t offset);
void k001604_tile_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
uint32_t k001604_char_r(offs_t offset);
void k001604_char_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
uint32_t k001604_reg_r(offs_t offset);
void k001604_reg_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
uint8_t sysreg_r(offs_t offset);
void sysreg_w(offs_t offset, uint8_t data);
uint32_t dsp_dataram0_r(offs_t offset);
void dsp_dataram0_w(offs_t offset, uint32_t data);
uint32_t dsp_dataram1_r(offs_t offset);
void dsp_dataram1_w(offs_t offset, uint32_t data);
void soundtimer_en_w(uint16_t data);
void soundtimer_count_w(uint16_t data);
DECLARE_WRITE_LINE_MEMBER(voodoo_vblank_0);
DECLARE_WRITE_LINE_MEMBER(voodoo_vblank_1);
double adc12138_input_callback(uint8_t input);
TIMER_CALLBACK_MEMBER(sound_irq);
uint32_t screen_update_lscreen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_rscreen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
template <uint8_t Which> uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void nwktr_map(address_map &map);
void ppc_map(address_map &map);
void sharc0_map(address_map &map);
void sharc1_map(address_map &map);
void sound_memmap(address_map &map);
@ -389,71 +371,53 @@ void nwktr_state::paletteram32_w(offs_t offset, uint32_t data, uint32_t mem_mask
m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
WRITE_LINE_MEMBER(nwktr_state::voodoo_vblank_0)
uint32_t nwktr_state::k001604_tile_r(offs_t offset)
{
m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
}
WRITE_LINE_MEMBER(nwktr_state::voodoo_vblank_1)
{
m_maincpu->set_input_line(INPUT_LINE_IRQ1, state);
}
uint32_t nwktr_state::nwktr_k001604_tile_r(offs_t offset)
{
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604_2 : m_k001604_1);
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604[1] : m_k001604[0]);
return k001604->tile_r(offset);
}
void nwktr_state::nwktr_k001604_tile_w(offs_t offset, uint32_t data, uint32_t mem_mask)
void nwktr_state::k001604_tile_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604_2 : m_k001604_1);
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604[1] : m_k001604[0]);
k001604->tile_w(offset, data, mem_mask);
}
uint32_t nwktr_state::nwktr_k001604_char_r(offs_t offset)
uint32_t nwktr_state::k001604_char_r(offs_t offset)
{
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604_2 : m_k001604_1);
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604[1] : m_k001604[0]);
return k001604->char_r(offset);
}
void nwktr_state::nwktr_k001604_char_w(offs_t offset, uint32_t data, uint32_t mem_mask)
void nwktr_state::k001604_char_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604_2 : m_k001604_1);
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604[1] : m_k001604[0]);
k001604->char_w(offset, data, mem_mask);
}
uint32_t nwktr_state::nwktr_k001604_reg_r(offs_t offset)
uint32_t nwktr_state::k001604_reg_r(offs_t offset)
{
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604_2 : m_k001604_1);
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604[1] : m_k001604[0]);
return k001604->reg_r(offset);
}
void nwktr_state::nwktr_k001604_reg_w(offs_t offset, uint32_t data, uint32_t mem_mask)
void nwktr_state::k001604_reg_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604_2 : m_k001604_1);
k001604_device *k001604 = (m_konppc->get_cgboard_id() ? m_k001604[1] : m_k001604[0]);
k001604->reg_w(offset, data, mem_mask);
}
uint32_t nwktr_state::screen_update_lscreen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
template <uint8_t Which>
uint32_t nwktr_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(m_palette->pen(0), cliprect);
m_voodoo[0]->voodoo_update(bitmap, cliprect);
m_k001604_1->draw_front_layer(screen, bitmap, cliprect);
m_voodoo[Which]->voodoo_update(bitmap, cliprect);
m_k001604[Which]->draw_front_layer(screen, bitmap, cliprect);
return 0;
}
uint32_t nwktr_state::screen_update_rscreen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(m_palette->pen(0), cliprect);
m_voodoo[1]->voodoo_update(bitmap, cliprect);
m_k001604_2->draw_front_layer(screen, bitmap, cliprect);
return 0;
}
/*****************************************************************************/
@ -464,13 +428,13 @@ uint8_t nwktr_state::sysreg_r(offs_t offset)
switch (offset)
{
case 0:
r = m_in0->read();
r = m_in[0]->read();
break;
case 1:
r = m_in1->read();
r = m_in[1]->read();
break;
case 2:
r = m_in2->read();
r = m_in[2]->read();
break;
case 3:
r = m_adc12138->do_r() | (m_adc12138->eoc_r() << 2);
@ -491,7 +455,7 @@ void nwktr_state::sysreg_w(offs_t offset, uint8_t data)
{
case 0:
case 1:
m_pcb_digit[offset] = bitswap<7>(~data,0,1,2,3,4,5,6);
m_pcb_digit[offset] = bitswap<7>(~data , 0, 1, 2, 3, 4, 5, 6);
break;
case 4:
@ -567,13 +531,13 @@ void nwktr_state::machine_start()
m_sound_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nwktr_state::sound_irq), this));
}
void nwktr_state::nwktr_map(address_map &map)
void nwktr_state::ppc_map(address_map &map)
{
map(0x00000000, 0x003fffff).ram().share("work_ram"); // Work RAM
map(0x74000000, 0x740000ff).rw(FUNC(nwktr_state::nwktr_k001604_reg_r), FUNC(nwktr_state::nwktr_k001604_reg_w));
map(0x00000000, 0x003fffff).ram().share(m_work_ram);
map(0x74000000, 0x740000ff).rw(FUNC(nwktr_state::k001604_reg_r), FUNC(nwktr_state::k001604_reg_w));
map(0x74010000, 0x7401ffff).ram().w(FUNC(nwktr_state::paletteram32_w)).share("paletteram");
map(0x74020000, 0x7403ffff).rw(FUNC(nwktr_state::nwktr_k001604_tile_r), FUNC(nwktr_state::nwktr_k001604_tile_w));
map(0x74040000, 0x7407ffff).rw(FUNC(nwktr_state::nwktr_k001604_char_r), FUNC(nwktr_state::nwktr_k001604_char_w));
map(0x74020000, 0x7403ffff).rw(FUNC(nwktr_state::k001604_tile_r), FUNC(nwktr_state::k001604_tile_w));
map(0x74040000, 0x7407ffff).rw(FUNC(nwktr_state::k001604_char_r), FUNC(nwktr_state::k001604_char_w));
map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
map(0x7d000000, 0x7d00ffff).r(FUNC(nwktr_state::sysreg_r));
@ -582,9 +546,9 @@ void nwktr_state::nwktr_map(address_map &map)
map(0x7d030000, 0x7d03000f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
map(0x7d040000, 0x7d04ffff).rw("gn676_lan", FUNC(konami_gn676_lan_device::lanc1_r), FUNC(konami_gn676_lan_device::lanc1_w));
map(0x7d050000, 0x7d05ffff).rw("gn676_lan", FUNC(konami_gn676_lan_device::lanc2_r), FUNC(konami_gn676_lan_device::lanc2_w));
map(0x7e000000, 0x7e7fffff).rom().region("user2", 0); /* Data ROM */
map(0x7f000000, 0x7f1fffff).rom().region("user1", 0);
map(0x7fe00000, 0x7fffffff).rom().region("user1", 0); /* Program ROM */
map(0x7e000000, 0x7e7fffff).rom().region("datarom", 0);
map(0x7f000000, 0x7f1fffff).rom().region("prgrom", 0);
map(0x7fe00000, 0x7fffffff).rom().region("prgrom", 0);
}
/*****************************************************************************/
@ -601,47 +565,26 @@ void nwktr_state::sound_memmap(address_map &map)
/*****************************************************************************/
uint32_t nwktr_state::dsp_dataram0_r(offs_t offset)
{
return m_sharc0_dataram[offset] & 0xffff;
}
void nwktr_state::dsp_dataram0_w(offs_t offset, uint32_t data)
{
m_sharc0_dataram[offset] = data;
}
uint32_t nwktr_state::dsp_dataram1_r(offs_t offset)
{
return m_sharc1_dataram[offset] & 0xffff;
}
void nwktr_state::dsp_dataram1_w(offs_t offset, uint32_t data)
{
m_sharc1_dataram[offset] = data;
}
void nwktr_state::sharc0_map(address_map &map)
{
map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w));
map(0x0500000, 0x05fffff).rw(FUNC(nwktr_state::dsp_dataram0_r), FUNC(nwktr_state::dsp_dataram0_w));
map(0x0500000, 0x05fffff).ram().share("sharc0_dataram").umask32(0x0000ffff);
map(0x1400000, 0x14fffff).ram();
map(0x2400000, 0x27fffff).rw(m_konppc, FUNC(konppc_device::nwk_voodoo_0_r), FUNC(konppc_device::nwk_voodoo_0_w));
map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w));
map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_0_r), FUNC(konppc_device::K033906_0_w));
map(0x3600000, 0x37fffff).bankr("bank5");
map(0x3600000, 0x37fffff).bankr("master_cgboard_bank");
}
void nwktr_state::sharc1_map(address_map &map)
{
map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_1_shared_sharc_r), FUNC(konppc_device::cgboard_1_shared_sharc_w));
map(0x0500000, 0x05fffff).rw(FUNC(nwktr_state::dsp_dataram1_r), FUNC(nwktr_state::dsp_dataram1_w));
map(0x0500000, 0x05fffff).ram().share("sharc1_dataram").umask32(0x0000ffff);
map(0x1400000, 0x14fffff).ram();
map(0x2400000, 0x27fffff).rw(m_konppc, FUNC(konppc_device::nwk_voodoo_0_r), FUNC(konppc_device::nwk_voodoo_0_w));
map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_1_comm_sharc_r), FUNC(konppc_device::cgboard_1_comm_sharc_w));
map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_1_r), FUNC(konppc_device::K033906_1_w));
map(0x3600000, 0x37fffff).bankr("bank6");
map(0x3600000, 0x37fffff).bankr("slave_cgboard_bank");
}
/*****************************************************************************/
@ -715,11 +658,11 @@ double nwktr_state::adc12138_input_callback(uint8_t input)
int value = 0;
switch (input)
{
case 0: value = m_analog1->read(); break;
case 1: value = m_analog2->read(); break;
case 2: value = m_analog3->read(); break;
case 3: value = m_analog4->read(); break;
case 4: value = m_analog5->read(); break;
case 0: value = m_analog[0]->read(); break;
case 1: value = m_analog[1]->read(); break;
case 2: value = m_analog[2]->read(); break;
case 3: value = m_analog[3]->read(); break;
case 4: value = m_analog[4]->read(); break;
}
return (double)(value) / 4095.0;
@ -727,26 +670,26 @@ double nwktr_state::adc12138_input_callback(uint8_t input)
void nwktr_state::machine_reset()
{
m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_dsp2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_dsp[0]->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_dsp[1]->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
}
void nwktr_state::nwktr(machine_config &config)
{
// basic machine hardware
PPC403GA(config, m_maincpu, XTAL(64'000'000)/2); // PowerPC 403GA 32MHz
m_maincpu->set_addrmap(AS_PROGRAM, &nwktr_state::nwktr_map);
m_maincpu->set_addrmap(AS_PROGRAM, &nwktr_state::ppc_map);
M68000(config, m_audiocpu, XTAL(64'000'000)/4); // 16MHz
m_audiocpu->set_addrmap(AS_PROGRAM, &nwktr_state::sound_memmap);
ADSP21062(config, m_dsp, XTAL(36'000'000));
m_dsp->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
m_dsp->set_addrmap(AS_DATA, &nwktr_state::sharc0_map);
ADSP21062(config, m_dsp[0], XTAL(36'000'000));
m_dsp[0]->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
m_dsp[0]->set_addrmap(AS_DATA, &nwktr_state::sharc0_map);
ADSP21062(config, m_dsp2, XTAL(36'000'000));
m_dsp2->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
m_dsp2->set_addrmap(AS_DATA, &nwktr_state::sharc1_map);
ADSP21062(config, m_dsp[1], XTAL(36'000'000));
m_dsp[1]->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
m_dsp[1]->set_addrmap(AS_DATA, &nwktr_state::sharc1_map);
config.set_maximum_quantum(attotime::from_hz(9000));
@ -763,41 +706,41 @@ void nwktr_state::nwktr(machine_config &config)
m_voodoo[0]->set_fbmem(2);
m_voodoo[0]->set_tmumem(2,2);
m_voodoo[0]->set_screen_tag("lscreen");
m_voodoo[0]->set_cpu_tag(m_dsp);
m_voodoo[0]->vblank_callback().set(FUNC(nwktr_state::voodoo_vblank_0));
m_voodoo[0]->set_cpu_tag(m_dsp[0]);
m_voodoo[0]->vblank_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
VOODOO_1(config, m_voodoo[1], XTAL(50'000'000));
m_voodoo[1]->set_fbmem(2);
m_voodoo[1]->set_tmumem(2,2);
m_voodoo[1]->set_screen_tag("rscreen");
m_voodoo[1]->set_cpu_tag(m_dsp);
m_voodoo[1]->vblank_callback().set(FUNC(nwktr_state::voodoo_vblank_1));
m_voodoo[1]->set_cpu_tag(m_dsp[1]);
m_voodoo[1]->vblank_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ1);
screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
// default 24KHz parameter in both 001604 and voodoo, input clock correct? (58~Hz Vsync, 50MHz/3 or 64MHz/4?)
lscreen.set_raw(XTAL(64'000'000) / 4, 644, 44, 44 + 512, 450, 31, 31 + 400);
lscreen.set_screen_update(FUNC(nwktr_state::screen_update_lscreen));
lscreen.set_screen_update(FUNC(nwktr_state::screen_update<0>));
screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER)); // for unused/debug screen from slave CG board
// resolution currently unknown, input clock correct? (60~Hz Vsync, 50MHz/3 or 64MHz/4?)
rscreen.set_raw(XTAL(64'000'000) / 4, 644, 44, 44 + 512, 450, 31, 31 + 400);
rscreen.set_screen_update(FUNC(nwktr_state::screen_update_rscreen));
rscreen.set_screen_update(FUNC(nwktr_state::screen_update<1>));
PALETTE(config, m_palette).set_entries(65536);
K001604(config, m_k001604_1, 0);
m_k001604_1->set_layer_size(0);
m_k001604_1->set_roz_size(1);
m_k001604_1->set_txt_mem_offset(0); // correct?
m_k001604_1->set_roz_mem_offset(0); // correct?
m_k001604_1->set_palette(m_palette);
K001604(config, m_k001604[0], 0);
m_k001604[0]->set_layer_size(0);
m_k001604[0]->set_roz_size(1);
m_k001604[0]->set_txt_mem_offset(0); // correct?
m_k001604[0]->set_roz_mem_offset(0); // correct?
m_k001604[0]->set_palette(m_palette);
K001604(config, m_k001604_2, 0);
m_k001604_2->set_layer_size(0);
m_k001604_2->set_roz_size(1);
m_k001604_2->set_txt_mem_offset(0); // correct?
m_k001604_2->set_roz_mem_offset(0); // correct?
m_k001604_2->set_palette(m_palette);
K001604(config, m_k001604[1], 0);
m_k001604[1]->set_layer_size(0);
m_k001604[1]->set_roz_size(1);
m_k001604[1]->set_txt_mem_offset(0); // correct?
m_k001604[1]->set_roz_mem_offset(0); // correct?
m_k001604[1]->set_palette(m_palette);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -820,50 +763,40 @@ void nwktr_state::thrilld(machine_config &config)
{
nwktr(config);
m_k001604_1->set_layer_size(1);
m_k001604[0]->set_layer_size(1);
m_k001604_2->set_layer_size(1);
m_k001604[1]->set_layer_size(1);
}
/*****************************************************************************/
void nwktr_state::init_nwktr()
{
m_sharc0_dataram = std::make_unique<uint32_t[]>(0x100000 / 4);
m_sharc1_dataram = std::make_unique<uint32_t[]>(0x100000 / 4);
}
void nwktr_state::init_racingj()
{
m_konppc->set_cgboard_texture_bank(0, "bank5", memregion("user5")->base());
m_konppc->set_cgboard_texture_bank(0, "bank6", memregion("user6")->base()); // for some reason, additional CG roms are located on the slave CG board...
init_nwktr();
m_konppc->set_cgboard_texture_bank(0, "master_cgboard_bank", memregion("master_cgboard")->base());
m_konppc->set_cgboard_texture_bank(0, "slave_cgboard_bank", memregion("slave_cgboard")->base()); // for some reason, additional CG roms are located on the slave CG board...
}
void nwktr_state::init_thrilld()
{
m_konppc->set_cgboard_texture_bank(0, "bank5", memregion("user5")->base());
m_konppc->set_cgboard_texture_bank(0, "bank6", memregion("user5")->base()); // ...while this is not the case for thrilld
init_nwktr();
m_konppc->set_cgboard_texture_bank(0, "master_cgboard_bank", memregion("master_cgboard")->base());
m_konppc->set_cgboard_texture_bank(0, "slave_cgboard_bank", memregion("master_cgboard")->base()); // ...while this is not the case for thrilld
}
/*****************************************************************************/
ROM_START(racingj)
ROM_REGION32_BE(0x200000, "user1", 0) // PowerPC program roms
ROM_REGION32_BE(0x200000, "prgrom", 0) // PowerPC program roms
ROM_LOAD16_WORD_SWAP("676gnc01.27p", 0x000000, 0x200000, CRC(690346b5) SHA1(157ab6788382ef4f5a8772f08819f54d0856fcc8) )
ROM_REGION32_BE(0x800000, "user2", 0) // Data roms
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP("676a04.16t", 0x000000, 0x200000, CRC(d7808cb6) SHA1(0668fae5bb94cc120fe196d4b18200f7b512317f) )
ROM_LOAD32_WORD_SWAP("676a05.14t", 0x000002, 0x200000, CRC(fb4de1ad) SHA1(f6aa4eb1b5d22901a2aaf899ed3237a9dfdc55b5) )
ROM_REGION32_BE(0x800000, "user5", 0) // Master CG Board texture roms
ROM_REGION32_BE(0x800000, "master_cgboard", 0) // Master CG Board texture roms
ROM_LOAD32_WORD_SWAP( "676a13.8x", 0x000000, 0x400000, CRC(29077763) SHA1(ee087ca0d41966ca0fd10727055bb1dcd05a0873) )
ROM_LOAD32_WORD_SWAP( "676a14.16x", 0x000002, 0x400000, CRC(50a7e3c0) SHA1(7468a66111a3ddf7c043cd400fa175cae5f65632) )
ROM_REGION32_BE(0x800000, "user6", 0) // Slave CG Board texture roms
ROM_REGION32_BE(0x800000, "slave_cgboard", 0) // Slave CG Board texture roms
ROM_LOAD32_WORD_SWAP( "676a13.8x", 0x000000, 0x400000, CRC(29077763) SHA1(ee087ca0d41966ca0fd10727055bb1dcd05a0873) )
ROM_LOAD32_WORD_SWAP( "676a14.16x", 0x000002, 0x400000, CRC(50a7e3c0) SHA1(7468a66111a3ddf7c043cd400fa175cae5f65632) )
@ -879,19 +812,19 @@ ROM_START(racingj)
ROM_END
ROM_START(racingj2)
ROM_REGION32_BE(0x200000, "user1", 0) // PowerPC program roms
ROM_REGION32_BE(0x200000, "prgrom", 0) // PowerPC program roms
ROM_LOAD16_WORD_SWAP("888a01.27p", 0x000000, 0x200000, CRC(d077890a) SHA1(08b252324cf46fbcdb95e8f9312287920cd87c5d) )
ROM_REGION32_BE(0x800000, "user2", 0) // Data roms
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP( "676a04.16t", 0x000000, 0x200000, CRC(d7808cb6) SHA1(0668fae5bb94cc120fe196d4b18200f7b512317f) )
ROM_LOAD32_WORD_SWAP( "676a05.14t", 0x000002, 0x200000, CRC(fb4de1ad) SHA1(f6aa4eb1b5d22901a2aaf899ed3237a9dfdc55b5) )
ROM_LOAD32_WORD_SWAP( "888a06.12t", 0x400000, 0x200000, CRC(00cbec4d) SHA1(1ce7807d86e90edbf4eecba462a27c725f5ad862) )
ROM_REGION32_BE(0x800000, "user5", 0) // Master CG Board texture roms
ROM_REGION32_BE(0x800000, "master_cgboard", 0) // Master CG Board texture roms
ROM_LOAD32_WORD_SWAP( "888a13.8x", 0x000000, 0x400000, CRC(2292f530) SHA1(0f4d1332708fd5366a065e0a928cc9610558b42d) )
ROM_LOAD32_WORD_SWAP( "888a14.16x", 0x000002, 0x400000, CRC(6a834a26) SHA1(d1fbd7ae6afd05f0edac4efde12a5a45aa2bc7df) )
ROM_REGION32_BE(0x800000, "user6", 0) // Slave CG Board texture roms
ROM_REGION32_BE(0x800000, "slave_cgboard", 0) // Slave CG Board texture roms
ROM_LOAD32_WORD_SWAP( "888a13.8x", 0x000000, 0x400000, CRC(2292f530) SHA1(0f4d1332708fd5366a065e0a928cc9610558b42d) )
ROM_LOAD32_WORD_SWAP( "888a14.16x", 0x000002, 0x400000, CRC(6a834a26) SHA1(d1fbd7ae6afd05f0edac4efde12a5a45aa2bc7df) )
@ -910,19 +843,19 @@ ROM_START(racingj2)
ROM_END
ROM_START(racingj2j)
ROM_REGION32_BE(0x200000, "user1", 0) // PowerPC program roms
ROM_REGION32_BE(0x200000, "prgrom", 0) // PowerPC program roms
ROM_LOAD16_WORD_SWAP("888a01.27p", 0x000000, 0x200000, CRC(d077890a) SHA1(08b252324cf46fbcdb95e8f9312287920cd87c5d) )
ROM_REGION32_BE(0x800000, "user2", 0) // Data roms
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP( "676a04.16t", 0x000000, 0x200000, CRC(d7808cb6) SHA1(0668fae5bb94cc120fe196d4b18200f7b512317f) )
ROM_LOAD32_WORD_SWAP( "676a05.14t", 0x000002, 0x200000, CRC(fb4de1ad) SHA1(f6aa4eb1b5d22901a2aaf899ed3237a9dfdc55b5) )
ROM_LOAD32_WORD_SWAP( "888a06.12t", 0x400000, 0x200000, CRC(00cbec4d) SHA1(1ce7807d86e90edbf4eecba462a27c725f5ad862) )
ROM_REGION32_BE(0x800000, "user5", 0) // Master CG Board texture roms
ROM_REGION32_BE(0x800000, "master_cgboard", 0) // Master CG Board texture roms
ROM_LOAD32_WORD_SWAP( "888a13.8x", 0x000000, 0x400000, CRC(2292f530) SHA1(0f4d1332708fd5366a065e0a928cc9610558b42d) )
ROM_LOAD32_WORD_SWAP( "888a14.16x", 0x000002, 0x400000, CRC(6a834a26) SHA1(d1fbd7ae6afd05f0edac4efde12a5a45aa2bc7df) )
ROM_REGION32_BE(0x800000, "user6", 0) // Slave CG Board texture roms
ROM_REGION32_BE(0x800000, "slave_cgboard", 0) // Slave CG Board texture roms
ROM_LOAD32_WORD_SWAP( "888a13.8x", 0x000000, 0x400000, CRC(2292f530) SHA1(0f4d1332708fd5366a065e0a928cc9610558b42d) )
ROM_LOAD32_WORD_SWAP( "888a14.16x", 0x000002, 0x400000, CRC(6a834a26) SHA1(d1fbd7ae6afd05f0edac4efde12a5a45aa2bc7df) )
@ -941,14 +874,14 @@ ROM_START(racingj2j)
ROM_END
ROM_START(thrilld)
ROM_REGION32_BE(0x200000, "user1", 0) // PowerPC program roms
ROM_REGION32_BE(0x200000, "prgrom", 0) // PowerPC program roms
ROM_LOAD16_WORD_SWAP("713be01.27p", 0x000000, 0x200000, CRC(d84a7723) SHA1(f4e9e08591b7e5e8419266dbe744d56a185384ed) )
ROM_REGION32_BE(0x800000, "user2", 0) // Data roms
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP("713a04.16t", 0x000000, 0x200000, CRC(c994aaa8) SHA1(d82b9930a11e5384ad583684a27c95beec03cd5a) )
ROM_LOAD32_WORD_SWAP("713a05.14t", 0x000002, 0x200000, CRC(6f1e6802) SHA1(91f8a170327e9b4ee6a64aee0c106b981a317e69) )
ROM_REGION32_BE(0x800000, "user5", 0) // CG Board texture roms
ROM_REGION32_BE(0x800000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "713a13.8x", 0x000000, 0x400000, CRC(b795c66b) SHA1(6e50de0d5cc444ffaa0fec7ada8c07f643374bb2) )
ROM_LOAD32_WORD_SWAP( "713a14.16x", 0x000002, 0x400000, CRC(5275a629) SHA1(16fadef06975f0f3625cac8f84e2e77ed7d75e15) )
@ -967,14 +900,14 @@ ROM_START(thrilld)
ROM_END
ROM_START(thrilldb)
ROM_REGION32_BE(0x200000, "user1", 0) // PowerPC program roms
ROM_REGION32_BE(0x200000, "prgrom", 0) // PowerPC program roms
ROM_LOAD16_WORD_SWAP("713bb01.27p", 0x000000, 0x200000, CRC(535fe4e8) SHA1(acd8194a4dafce289dbdfd874f0b799f25aeb73f) )
ROM_REGION32_BE(0x800000, "user2", 0) // Data roms
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP("713a04.16t", 0x000000, 0x200000, CRC(c994aaa8) SHA1(d82b9930a11e5384ad583684a27c95beec03cd5a) )
ROM_LOAD32_WORD_SWAP("713a05.14t", 0x000002, 0x200000, CRC(6f1e6802) SHA1(91f8a170327e9b4ee6a64aee0c106b981a317e69) )
ROM_REGION32_BE(0x800000, "user5", 0) // CG Board texture roms
ROM_REGION32_BE(0x800000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "713a13.8x", 0x000000, 0x400000, CRC(b795c66b) SHA1(6e50de0d5cc444ffaa0fec7ada8c07f643374bb2) )
ROM_LOAD32_WORD_SWAP( "713a14.16x", 0x000002, 0x400000, CRC(5275a629) SHA1(16fadef06975f0f3625cac8f84e2e77ed7d75e15) )
@ -993,14 +926,14 @@ ROM_START(thrilldb)
ROM_END
ROM_START(thrilldbe)
ROM_REGION32_BE(0x200000, "user1", 0) // PowerPC program roms
ROM_REGION32_BE(0x200000, "prgrom", 0) // PowerPC program roms
ROM_LOAD16_WORD_SWAP("713bb01.27p", 0x000000, 0x200000, CRC(535fe4e8) SHA1(acd8194a4dafce289dbdfd874f0b799f25aeb73f) )
ROM_REGION32_BE(0x800000, "user2", 0) // Data roms
ROM_REGION32_BE(0x800000, "datarom", 0) // Data roms
ROM_LOAD32_WORD_SWAP("713a04.16t", 0x000000, 0x200000, CRC(c994aaa8) SHA1(d82b9930a11e5384ad583684a27c95beec03cd5a) )
ROM_LOAD32_WORD_SWAP("713a05.14t", 0x000002, 0x200000, CRC(6f1e6802) SHA1(91f8a170327e9b4ee6a64aee0c106b981a317e69) )
ROM_REGION32_BE(0x800000, "user5", 0) // CG Board texture roms
ROM_REGION32_BE(0x800000, "master_cgboard", 0) // CG Board texture roms
ROM_LOAD32_WORD_SWAP( "713a13.8x", 0x000000, 0x400000, CRC(b795c66b) SHA1(6e50de0d5cc444ffaa0fec7ada8c07f643374bb2) )
ROM_LOAD32_WORD_SWAP( "713a14.16x", 0x000002, 0x400000, CRC(5275a629) SHA1(16fadef06975f0f3625cac8f84e2e77ed7d75e15) )