summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2020-03-14 12:05:49 +0100
committer Olivier Galibert <galibert@pobox.com>2020-03-14 12:05:59 +0100
commite4e91bd6bda031c2b2ebedb0bdf2759305688f73 (patch)
tree684dac3c0ebff6d1f136a1394b0732354aa9683f /src
parentb24e7a81e880057630cd92b6ff9d8305327c155b (diff)
ks0164: Turn it into a device (nw)
Diffstat (limited to 'src')
-rw-r--r--src/devices/cpu/ks0164/ks0164.cpp36
-rw-r--r--src/devices/cpu/ks0164/ks0164.h6
-rw-r--r--src/devices/sound/ks0164.cpp132
-rw-r--r--src/devices/sound/ks0164.h56
-rw-r--r--src/mame/drivers/dgpix.cpp69
5 files changed, 227 insertions, 72 deletions
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<util::disasm_interface> ks0164_device::create_disassembler()
+std::unique_ptr<util::disasm_interface> ks0164_cpu_device::create_disassembler()
{
return std::make_unique<ks0164_disassembler>();
}
-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<ks0164_cpu_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<cpu_device> m_maincpu;
- required_device<ks0164_device> m_soundcpu;
+ required_device<ks0164_device> m_sound;
required_ioport m_vblank;
- required_region_ptr<u16> m_sndrom;
- required_memory_bank m_sndrombank;
std::unique_ptr<u16[]> 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 */