From e4e91bd6bda031c2b2ebedb0bdf2759305688f73 Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Sat, 14 Mar 2020 12:05:49 +0100 Subject: ks0164: Turn it into a device (nw) --- scripts/src/sound.lua | 12 ++++ scripts/target/mame/arcade.lua | 1 + src/devices/cpu/ks0164/ks0164.cpp | 36 +++++------ src/devices/cpu/ks0164/ks0164.h | 6 +- src/devices/sound/ks0164.cpp | 132 ++++++++++++++++++++++++++++++++++++++ src/devices/sound/ks0164.h | 56 ++++++++++++++++ src/mame/drivers/dgpix.cpp | 69 ++++++-------------- 7 files changed, 240 insertions(+), 72 deletions(-) create mode 100644 src/devices/sound/ks0164.cpp create mode 100644 src/devices/sound/ks0164.h diff --git a/scripts/src/sound.lua b/scripts/src/sound.lua index fdf1ea43f66..2cacf8fbac5 100644 --- a/scripts/src/sound.lua +++ b/scripts/src/sound.lua @@ -1553,3 +1553,15 @@ if (SOUNDS["VGMVIZ"]~=null) then MAME_DIR .. "src/devices/sound/vgm_visualizer.h", } end + +--------------------------------------------------- +-- +--@src/devices/sound/ks0164.h,SOUNDS["KS0164"] = true +--------------------------------------------------- + +if (SOUNDS["KS0164"]~=null) then + files { + MAME_DIR .. "src/devices/sound/ks0164.cpp", + MAME_DIR .. "src/devices/sound/ks0164.h", + } +end diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 5b4eb9dcbcb..059f6a1ffce 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -280,6 +280,7 @@ SOUNDS["MM5837"] = true --SOUNDS["DAVE"] = true SOUNDS["LC7535"] = true --SOUNDS["UPD934G"] = true +SOUNDS["KS0164"] = true -------------------------------------------------- -- specify available video cores diff --git a/src/devices/cpu/ks0164/ks0164.cpp b/src/devices/cpu/ks0164/ks0164.cpp index 83739ac5f19..23be7eaae13 100644 --- a/src/devices/cpu/ks0164/ks0164.cpp +++ b/src/devices/cpu/ks0164/ks0164.cpp @@ -8,20 +8,20 @@ #include "ks0164d.h" #include "debugger.h" -DEFINE_DEVICE_TYPE(KS0164, ks0164_device, "ks0164", "Samsung KS0164 audio processor") +DEFINE_DEVICE_TYPE(KS0164CPU, ks0164_cpu_device, "ks0164cpu", "Samsung KS0164 audio processor") -const u16 ks0164_device::imask[16] = { +const u16 ks0164_cpu_device::imask[16] = { 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff }; -ks0164_device::ks0164_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cpu_device(mconfig, KS0164, tag, owner, clock) +ks0164_cpu_device::ks0164_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : cpu_device(mconfig, KS0164CPU, tag, owner, clock) , m_program_config("program", ENDIANNESS_BIG, 16, 16) { } -void ks0164_device::device_start() +void ks0164_cpu_device::device_start() { m_program = &space(AS_PROGRAM); m_program_cache = m_program->cache<1, 0, ENDIANNESS_BIG>(); @@ -48,29 +48,29 @@ void ks0164_device::device_start() memset(m_r, 0, sizeof(m_r)); } -void ks0164_device::device_reset() +void ks0164_cpu_device::device_reset() { m_irq = 1; memset(m_r, 0, sizeof(m_r)); m_r[R_PSW] = F_I; } -uint32_t ks0164_device::execute_min_cycles() const noexcept +uint32_t ks0164_cpu_device::execute_min_cycles() const noexcept { return 1; } -uint32_t ks0164_device::execute_max_cycles() const noexcept +uint32_t ks0164_cpu_device::execute_max_cycles() const noexcept { return 5; } -uint32_t ks0164_device::execute_input_lines() const noexcept +uint32_t ks0164_cpu_device::execute_input_lines() const noexcept { return 16; } -void ks0164_device::execute_set_input(int inputnum, int state) +void ks0164_cpu_device::execute_set_input(int inputnum, int state) { if(state) m_irq |= 1 << inputnum; @@ -78,19 +78,19 @@ void ks0164_device::execute_set_input(int inputnum, int state) m_irq &= ~(1 << inputnum); } -device_memory_interface::space_config_vector ks0164_device::memory_space_config() const +device_memory_interface::space_config_vector ks0164_cpu_device::memory_space_config() const { return space_config_vector { std::make_pair(AS_PROGRAM, &m_program_config) }; } -std::unique_ptr ks0164_device::create_disassembler() +std::unique_ptr ks0164_cpu_device::create_disassembler() { return std::make_unique(); } -void ks0164_device::state_string_export(const device_state_entry &entry, std::string &str) const +void ks0164_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const { switch(entry.index()) { case STATE_GENFLAGS: @@ -105,7 +105,7 @@ void ks0164_device::state_string_export(const device_state_entry &entry, std::st } } -void ks0164_device::handle_irq() +void ks0164_cpu_device::handle_irq() { u16 mask = m_irq & imask[m_r[R_PSW] & 15]; if(mask) { @@ -130,7 +130,7 @@ void ks0164_device::handle_irq() } } -u16 ks0164_device::snz(u16 r) +u16 ks0164_cpu_device::snz(u16 r) { u16 f = 0; if(!r) @@ -141,7 +141,7 @@ u16 ks0164_device::snz(u16 r) return r; } -void ks0164_device::do_alu(u16 opcode, u16 v2) +void ks0164_cpu_device::do_alu(u16 opcode, u16 v2) { int r = (opcode >> 8) & 7; switch((opcode >> 11) & 7) { @@ -227,12 +227,12 @@ void ks0164_device::do_alu(u16 opcode, u16 v2) } } -void ks0164_device::unk(u16 opcode) +void ks0164_cpu_device::unk(u16 opcode) { logerror("Unknown opcode %04x at address %04x\n", opcode, m_r[R_PC]-2); } -void ks0164_device::execute_run() +void ks0164_cpu_device::execute_run() { while(m_icount > 0) { if(m_irq) diff --git a/src/devices/cpu/ks0164/ks0164.h b/src/devices/cpu/ks0164/ks0164.h index 12bcdde987f..cdad1b693d9 100644 --- a/src/devices/cpu/ks0164/ks0164.h +++ b/src/devices/cpu/ks0164/ks0164.h @@ -8,10 +8,10 @@ #pragma once -class ks0164_device : public cpu_device +class ks0164_cpu_device : public cpu_device { public: - ks0164_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ks0164_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: enum { @@ -69,6 +69,6 @@ enum { KS0164_PC, }; -DECLARE_DEVICE_TYPE(KS0164, ks0164_device) +DECLARE_DEVICE_TYPE(KS0164CPU, ks0164_cpu_device) #endif diff --git a/src/devices/sound/ks0164.cpp b/src/devices/sound/ks0164.cpp new file mode 100644 index 00000000000..fdc3cebaf9b --- /dev/null +++ b/src/devices/sound/ks0164.cpp @@ -0,0 +1,132 @@ +// license:BSD-3-Clause +// copyright-holders:Olivier Galibert + +// Yamaha KS0164/30B, rompler/dsp combo + +#include "emu.h" +#include "ks0164.h" + + +DEFINE_DEVICE_TYPE(KS0164, ks0164_device, "ks0164", "Samsung KS0164 wavetable chip") + +ks0164_device::ks0164_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, KS0164, tag, owner, clock), + device_sound_interface(mconfig, *this), + device_memory_interface(mconfig, *this), + m_mem_region(*this, DEVICE_SELF), + m_cpu(*this, "cpu"), + m_mem_config("mem", ENDIANNESS_BIG, 16, 23) +{ +} + +device_memory_interface::space_config_vector ks0164_device::memory_space_config() const +{ + return space_config_vector { + std::make_pair(0, &m_mem_config) + }; +} + +void ks0164_device::device_add_mconfig(machine_config &config) +{ + KS0164CPU(config, m_cpu, DERIVED_CLOCK(1, 6)); + m_cpu->set_addrmap(AS_PROGRAM, &ks0164_device::cpu_map); +} + +void ks0164_device::device_start() +{ + if(!has_configured_map(0) && m_mem_region) { + u32 size = m_mem_region->bytes(); + u32 rend = size-1; + + // Round up to the nearest power-of-two-minus-one + u32 rmask = rend; + rmask |= rmask >> 1; + rmask |= rmask >> 2; + rmask |= rmask >> 4; + rmask |= rmask >> 8; + rmask |= rmask >> 16; + // Mirror over the high bits. rmask is a + // power-of-two-minus-one, so the xor works + space().install_rom(0, rend, ((1 << 23) - 1) ^ rmask, m_mem_region->base()); + } + + m_stream = stream_alloc(0, 2, 44100); + m_mem_cache = space().cache<1, 0, ENDIANNESS_BIG>(); +} + +void ks0164_device::device_reset() +{ + m_bank1_select = 0; + m_bank1_base = 0; + m_bank2_select = 0; + m_bank2_base = 0; +} + +u16 ks0164_device::vec_r(offs_t offset, u16 mem_mask) +{ + return m_mem_cache->read_word(offset << 1, mem_mask); +} + +u16 ks0164_device::rom_r(offs_t offset, u16 mem_mask) +{ + return m_mem_cache->read_word((offset << 1) + 0x80, mem_mask); +} + +u16 ks0164_device::bank1_r(offs_t offset, u16 mem_mask) +{ + return m_mem_cache->read_word(((offset << 1) & 0x3fff) | m_bank1_base, mem_mask); +} + +void ks0164_device::bank1_w(offs_t offset, u16 data, u16 mem_mask) +{ + m_mem_cache->write_word(((offset << 1) & 0x3fff) | m_bank1_base, data, mem_mask); +} + +u16 ks0164_device::bank2_r(offs_t offset, u16 mem_mask) +{ + return m_mem_cache->read_word(((offset << 1) & 0x3fff) | m_bank2_base, mem_mask); +} + +void ks0164_device::bank2_w(offs_t offset, u16 data, u16 mem_mask) +{ + m_mem_cache->write_word(((offset << 1) & 0x3fff) | m_bank2_base, data, mem_mask); +} + +u16 ks0164_device::bank1_select_r() +{ + return m_bank1_select; +} + +void ks0164_device::bank1_select_w(offs_t, u16 data, u16 mem_mask) +{ + COMBINE_DATA(&m_bank1_select); + m_bank1_base = m_bank1_select << 14; +} + +u16 ks0164_device::bank2_select_r() +{ + return m_bank2_select; +} + +void ks0164_device::bank2_select_w(offs_t, u16 data, u16 mem_mask) +{ + COMBINE_DATA(&m_bank2_select); + m_bank2_base = m_bank2_select << 14; +} + +void ks0164_device::cpu_map(address_map &map) +{ + map(0x0000, 0x001f).r(FUNC(ks0164_device::vec_r)); + + map(0x0062, 0x0063).rw(FUNC(ks0164_device::bank1_select_r), FUNC(ks0164_device::bank1_select_w)); + map(0x0064, 0x0065).rw(FUNC(ks0164_device::bank2_select_r), FUNC(ks0164_device::bank2_select_w)); + + map(0x0080, 0x3fff).r(FUNC(ks0164_device::rom_r)); + map(0x4000, 0x7fff).rw(FUNC(ks0164_device::bank1_r), FUNC(ks0164_device::bank1_w)); + map(0x8000, 0xbfff).rw(FUNC(ks0164_device::bank2_r), FUNC(ks0164_device::bank2_w)); + map(0xe000, 0xffff).ram(); +} + +void ks0164_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) +{ +} diff --git a/src/devices/sound/ks0164.h b/src/devices/sound/ks0164.h new file mode 100644 index 00000000000..3a6c6c4629d --- /dev/null +++ b/src/devices/sound/ks0164.h @@ -0,0 +1,56 @@ +// license:BSD-3-Clause +// copyright-holders:Olivier Galibert, David Carne + +// Samsung KS0164 wavetable chip + +#ifndef DEVICES_SOUND_KS0164_H +#define DEVICES_SOUND_KS0164_H + +#pragma once + +#include "cpu/ks0164/ks0164.h" + +class ks0164_device : public device_t, public device_sound_interface, public device_memory_interface +{ +public: + ks0164_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 16934400); + + void mpu401_data_w(u8 data); + void mpu401_ctrl_w(u8 data); + u8 mpu401_data_r(); + u8 mpu401_status_r(); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + virtual void device_add_mconfig(machine_config &config) override; + virtual space_config_vector memory_space_config() const override; + +private: + optional_memory_region m_mem_region; + required_device m_cpu; + address_space_config m_mem_config; + sound_stream *m_stream; + memory_access_cache<1, 0, ENDIANNESS_BIG> *m_mem_cache; + + u16 m_bank1_select, m_bank2_select; + u32 m_bank1_base, m_bank2_base; + + void cpu_map(address_map &map); + + u16 vec_r(offs_t offset, u16 mem_mask); + u16 rom_r(offs_t offset, u16 mem_mask); + u16 bank1_r(offs_t offset, u16 mem_mask); + void bank1_w(offs_t offset, u16 data, u16 mem_mask); + u16 bank2_r(offs_t offset, u16 mem_mask); + void bank2_w(offs_t offset, u16 data, u16 mem_mask); + u16 bank1_select_r(); + void bank1_select_w(offs_t, u16 data, u16 mem_mask); + u16 bank2_select_r(); + void bank2_select_w(offs_t, u16 data, u16 mem_mask); +}; + +DECLARE_DEVICE_TYPE(KS0164, ks0164_device) + +#endif diff --git a/src/mame/drivers/dgpix.cpp b/src/mame/drivers/dgpix.cpp index 5214a49169a..dc698c6caeb 100644 --- a/src/mame/drivers/dgpix.cpp +++ b/src/mame/drivers/dgpix.cpp @@ -153,10 +153,11 @@ Notes: #include "emu.h" #include "cpu/e132xs/e132xs.h" -#include "cpu/ks0164/ks0164.h" +#include "sound/ks0164.h" #include "machine/nvram.h" #include "emupal.h" #include "screen.h" +#include "speaker.h" class dgpix_state : public driver_device @@ -166,10 +167,8 @@ public: driver_device(mconfig, type, tag), m_flash(*this, "flash"), m_maincpu(*this, "maincpu"), - m_soundcpu(*this, "soundcpu"), - m_vblank(*this, "VBLANK"), - m_sndrom(*this, "soundcpu"), - m_sndrombank(*this, "sndrombank") + m_sound(*this, "ks1064"), + m_vblank(*this, "VBLANK") { } void dgpix(machine_config &config); @@ -190,10 +189,8 @@ private: required_memory_region m_flash; required_device m_maincpu; - required_device m_soundcpu; + required_device m_sound; required_ioport m_vblank; - required_region_ptr m_sndrom; - required_memory_bank m_sndrombank; std::unique_ptr m_vram; int m_vbuffer; @@ -201,8 +198,6 @@ private: int m_old_vbuf; u32 m_flash_cmd; s32 m_first_offset; - u16 m_sndrombank_val; - u16 m_sndrombank_mask; u32 flash_r(offs_t offset); void flash_w(offs_t offset, u32 data, u32 mem_mask = ~0); @@ -215,23 +210,8 @@ private: u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void mem_map(address_map &map); void io_map(address_map &map); - void snd_map(address_map &map); - u16 snd_rom_bank_r(); - void snd_rom_bank_w(offs_t, u16 data, u16 mem_mask); }; -u16 dgpix_state::snd_rom_bank_r() -{ - return m_sndrombank->entry(); -} - -void dgpix_state::snd_rom_bank_w(offs_t, u16 data, u16 mem_mask) -{ - COMBINE_DATA(&m_sndrombank_val); - logerror("bank4000 = %04x\n", m_sndrombank_val); - m_sndrombank->set_entry(m_sndrombank_val & m_sndrombank_mask); -} - u32 dgpix_state::flash_r(offs_t offset) { u32 *ROM = (u32 *)m_flash->base(); @@ -365,15 +345,6 @@ void dgpix_state::io_map(address_map &map) map(0x0c84, 0x0c87).nopr(); // sound status, checks bit 0x40 and 0x80 } -void dgpix_state::snd_map(address_map &map) -{ - map(0x0000, 0x3fff).rom(); - map(0x0020, 0x007f).unmaprw(); - map(0x0062, 0x0063).rw(FUNC(dgpix_state::snd_rom_bank_r), FUNC(dgpix_state::snd_rom_bank_w)); - map(0x4000, 0x7fff).bankr("sndrombank"); - map(0xe000, 0xffff).ram(); -} - static INPUT_PORTS_START( dgpix ) PORT_START("VBLANK") PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") @@ -438,11 +409,6 @@ void dgpix_state::machine_start() save_item(NAME(m_flash_cmd)); save_item(NAME(m_first_offset)); save_item(NAME(m_old_vbuf)); - save_item(NAME(m_sndrombank_val)); - - m_sndrombank->configure_entries(0, m_sndrom.bytes()/0x4000, m_sndrom, 0x4000); - m_sndrombank->set_entry(0); - m_sndrombank_mask = m_sndrom.bytes()/0x4000 - 1; } void dgpix_state::machine_reset() @@ -451,9 +417,6 @@ void dgpix_state::machine_reset() m_flash_cmd = 0; m_first_offset = -1; m_old_vbuf = 3; - - m_sndrombank_val = 0; - m_sndrombank->set_entry(0); } @@ -463,9 +426,6 @@ void dgpix_state::dgpix(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &dgpix_state::mem_map); m_maincpu->set_addrmap(AS_IO, &dgpix_state::io_map); - KS0164(config, m_soundcpu, 16.9344_MHz_XTAL); - m_soundcpu->set_addrmap(AS_PROGRAM, &dgpix_state::snd_map); - NVRAM(config, "nvram", nvram_device::DEFAULT_NONE); /* video hardware */ @@ -478,6 +438,13 @@ void dgpix_state::dgpix(machine_config &config) screen.set_palette("palette"); PALETTE(config, "palette", palette_device::BGR_555); + + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); + + KS0164(config, m_sound, 16.9344_MHz_XTAL); + m_sound->add_route(0, "lspeaker", 1.0); + m_sound->add_route(1, "rspeaker", 1.0); } @@ -496,7 +463,7 @@ ROM_START( elfin ) ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(eb56d7ca) SHA1(7c1cfcc68579cf3bdd9707da7d745a410223b8d9) ) ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(cbf64ef4) SHA1(1a231872ee14e6d718c3f8888185ede7483e79dd) ) /* game settings & highscores are saved in here */ - ROM_REGION( 0x400000, "soundcpu", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "flash.u10", 0x000000, 0x400000, CRC(d378fe55) SHA1(5cc7bc5ae258cd48816857793a262e7c6c330795) ) ROM_REGION( 0x1000, "cpu2", ROMREGION_ERASEFF ) /* PIC */ @@ -518,7 +485,7 @@ ROM_START( jumpjump ) ROM_LOAD16_WORD_SWAP( "jumpjump.u8", 0x1800000, 0x400000, CRC(210dfd8b) SHA1(a1aee4ec8c01832e77d2e4e334a62c246d7e3635) ) ROM_LOAD16_WORD_SWAP( "jumpjump.u9", 0x1c00000, 0x400000, CRC(16d1e352) SHA1(3c43974fb8d90b0c84472dd9f2167eb983142095) ) - ROM_REGION( 0x400000, "soundcpu", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "jumpjump.u10", 0x000000, 0x400000, CRC(2152ecce) SHA1(522d389952a07fa0830ca8aaa6de3aacf834e32e) ) ROM_REGION( 0x1000, "cpu2", ROMREGION_ERASEFF ) /* PIC */ @@ -543,7 +510,7 @@ ROM_START( xfiles ) ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(231ad82a) SHA1(a1cc5c4122605e564d51137f1dca2afa82616202) ) ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(d68994b7) SHA1(c1752d6795f7aaa6beef73643327205a1c32f0f5) ) - ROM_REGION( 0x400000, "soundcpu", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "flash.u10", 0x0000000, 0x400000, CRC(1af33cda) SHA1(9bbcfb07a4a5bcff3efc1c7bcc51bc16c47ca9e6) ) ROM_REGION( 0x1000, "cpu2", 0 ) /* PIC */ @@ -576,7 +543,7 @@ ROM_START( xfilesk ) ROM_LOAD16_WORD_SWAP( "u8.bin", 0x1800000, 0x400000, CRC(3b2c2bc1) SHA1(1c07fb5bd8a8c9b5fb169e6400fef845f3aee7aa) ) ROM_LOAD16_WORD_SWAP( "u9.bin", 0x1c00000, 0x400000, CRC(6ecdd1eb) SHA1(e26c9711e589865cc75ec693d382758fa52528b8) ) - ROM_REGION( 0x400000, "soundcpu", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "u10.bin", 0x0000000, 0x400000, CRC(f2ef1eb9) SHA1(d033d140fce6716d7d78509aa5387829f0a1404c) ) ROM_REGION( 0x1000, "cpu2", 0 ) /* PIC */ @@ -600,7 +567,7 @@ ROM_START( kdynastg ) ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(1016b61c) SHA1(eab4934e1f41cc26259e5187a94ceebd45888a94) ) ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(093d9243) SHA1(2a643acc7144193aaa3606a84b0c67aadb4c543b) ) - ROM_REGION( 0x400000, "soundcpu", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "flash.u10", 0x0000000, 0x400000, CRC(3f103cb1) SHA1(2ff9bd73f3005f09d872018b81c915b01d6703f5) ) ROM_REGION( 0x1000, "cpu2", 0 ) /* PIC */ @@ -624,7 +591,7 @@ ROM_START( fmaniac3 ) ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(dc08a224) SHA1(4d14145eb84ad13674296f81e90b9d60403fa0de) ) ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(c1fee95f) SHA1(0ed5ed9fa18e7da9242a6df2c210c46de25a2281) ) - ROM_REGION( 0x400000, "soundcpu", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "flash.u10", 0x000000, 0x400000, CRC(dfeb91a0) SHA1(a4a79073c3f6135957ea8a4a66a9c71a3a39893c) ) ROM_REGION( 0x1000, "cpu2", ROMREGION_ERASEFF ) /* PIC */ -- cgit v1.2.3