mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
-cpu/e132xs: Use word addressing for I/O.
* There are no byte enable or write strobe signals for I/O, and there's only a single operand size, so word addresses make more sense. * Also changed STBS/STWS to allow any valid signed or unsigned value of the applicable size. This allows vamphalf attract mode to work as well as the storage test. -misc/limenko.cpp: Better input types for spotty.
This commit is contained in:
parent
362218a74d
commit
79db8d2a59
@ -136,8 +136,8 @@ void hyperstone_xs_device::iram_16k_map(address_map &map)
|
||||
|
||||
void hyperstone_x_device::internal_io_map(address_map &map)
|
||||
{
|
||||
map(0x7000, 0x77ff).w(FUNC(hyperstone_x_device::power_down_w));
|
||||
map(0x7800, 0x7fff).w(FUNC(hyperstone_x_device::sleep_w));
|
||||
map(0x1c00, 0x1dff).w(FUNC(hyperstone_x_device::power_down_w));
|
||||
map(0x1e00, 0x1fff).w(FUNC(hyperstone_x_device::sleep_w));
|
||||
}
|
||||
|
||||
|
||||
@ -157,7 +157,7 @@ hyperstone_device::hyperstone_device(
|
||||
address_map_constructor internal_map)
|
||||
: cpu_device(mconfig, type, tag, owner, clock)
|
||||
, m_program_config("program", ENDIANNESS_BIG, prg_data_width, 32, 0, internal_map)
|
||||
, m_io_config("io", ENDIANNESS_BIG, io_data_width, io_addr_bits)
|
||||
, m_io_config("io", ENDIANNESS_BIG, io_data_width, io_addr_bits, (io_data_width == 16) ? -1 : -2)
|
||||
, m_cache(CACHE_SIZE + sizeof(hyperstone_device))
|
||||
, m_drcuml(nullptr)
|
||||
, m_drcfe(nullptr)
|
||||
@ -203,7 +203,7 @@ hyperstone_x_device::hyperstone_x_device(
|
||||
uint32_t io_addr_bits,
|
||||
address_map_constructor internal_map)
|
||||
: hyperstone_device(mconfig, type, tag, owner, clock, prg_data_width, io_data_width, io_addr_bits, internal_map)
|
||||
, m_internal_config("internal", ENDIANNESS_BIG, 32, 10 + 3 + 2, 0, address_map_constructor(FUNC(hyperstone_x_device::internal_io_map), this))
|
||||
, m_internal_config("internal", ENDIANNESS_BIG, 32, 10 + 3, -2, address_map_constructor(FUNC(hyperstone_x_device::internal_io_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -215,7 +215,7 @@ hyperstone_x_device::hyperstone_x_device(
|
||||
e116_device::e116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_device(
|
||||
mconfig, E116, tag, owner, clock,
|
||||
16, 16, 6 + 3 + 2, address_map_constructor(FUNC(e116_device::iram_4k_map), this))
|
||||
16, 16, 6 + 3, address_map_constructor(FUNC(e116_device::iram_4k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -227,7 +227,7 @@ e116_device::e116_device(const machine_config &mconfig, const char *tag, device_
|
||||
e116x_device::e116x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_x_device(
|
||||
mconfig, E116X, tag, owner, clock,
|
||||
16, 16, 6 + 3 + 2, address_map_constructor(FUNC(e116x_device::iram_8k_map), this))
|
||||
16, 16, 6 + 3, address_map_constructor(FUNC(e116x_device::iram_8k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -239,7 +239,7 @@ e116x_device::e116x_device(const machine_config &mconfig, const char *tag, devic
|
||||
e116xs_device::e116xs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_xs_device(
|
||||
mconfig, E116XS, tag, owner, clock,
|
||||
16, 16, 6 + 3 + 2, address_map_constructor(FUNC(e116xs_device::iram_16k_map), this))
|
||||
16, 16, 6 + 3, address_map_constructor(FUNC(e116xs_device::iram_16k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -251,7 +251,7 @@ e116xs_device::e116xs_device(const machine_config &mconfig, const char *tag, dev
|
||||
e116xsr_device::e116xsr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_xsr_device(
|
||||
mconfig, E116XSR, tag, owner, clock,
|
||||
16, 16, 6 + 3 + 2, address_map_constructor(FUNC(e116xsr_device::iram_16k_map), this))
|
||||
16, 16, 6 + 3, address_map_constructor(FUNC(e116xsr_device::iram_16k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -263,7 +263,7 @@ e116xsr_device::e116xsr_device(const machine_config &mconfig, const char *tag, d
|
||||
e132_device::e132_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_device(
|
||||
mconfig, E132, tag, owner, clock,
|
||||
32, 32, 10 + 3 + 2, address_map_constructor(FUNC(e132_device::iram_4k_map), this))
|
||||
32, 32, 10 + 3, address_map_constructor(FUNC(e132_device::iram_4k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -275,7 +275,7 @@ e132_device::e132_device(const machine_config &mconfig, const char *tag, device_
|
||||
e132x_device::e132x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_x_device(
|
||||
mconfig, E132X, tag, owner, clock,
|
||||
32, 32, 10 + 3 + 2, address_map_constructor(FUNC(e132x_device::iram_8k_map), this))
|
||||
32, 32, 10 + 3, address_map_constructor(FUNC(e132x_device::iram_8k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -287,7 +287,7 @@ e132x_device::e132x_device(const machine_config &mconfig, const char *tag, devic
|
||||
e132xs_device::e132xs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_xs_device(
|
||||
mconfig, E132XS, tag, owner, clock,
|
||||
32, 32, 10 + 3 + 2, address_map_constructor(FUNC(e132xs_device::iram_16k_map), this))
|
||||
32, 32, 10 + 3, address_map_constructor(FUNC(e132xs_device::iram_16k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -299,7 +299,7 @@ e132xs_device::e132xs_device(const machine_config &mconfig, const char *tag, dev
|
||||
e132xsr_device::e132xsr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_xsr_device(
|
||||
mconfig, E132XSR, tag, owner, clock,
|
||||
32, 32, 10 + 3 + 2, address_map_constructor(FUNC(e132xsr_device::iram_16k_map), this))
|
||||
32, 32, 10 + 3, address_map_constructor(FUNC(e132xsr_device::iram_16k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -311,7 +311,7 @@ e132xsr_device::e132xsr_device(const machine_config &mconfig, const char *tag, d
|
||||
gms30c2116_device::gms30c2116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_device(
|
||||
mconfig, GMS30C2116, tag, owner, clock,
|
||||
16, 16, 6 + 3 + 2, address_map_constructor(FUNC(gms30c2116_device::iram_4k_map), this))
|
||||
16, 16, 6 + 3, address_map_constructor(FUNC(gms30c2116_device::iram_4k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -323,7 +323,7 @@ gms30c2116_device::gms30c2116_device(const machine_config &mconfig, const char *
|
||||
gms30c2132_device::gms30c2132_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_device(
|
||||
mconfig, GMS30C2132, tag, owner, clock,
|
||||
32, 32, 10 + 3 + 2, address_map_constructor(FUNC(gms30c2132_device::iram_4k_map), this))
|
||||
32, 32, 10 + 3, address_map_constructor(FUNC(gms30c2132_device::iram_4k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -335,7 +335,7 @@ gms30c2132_device::gms30c2132_device(const machine_config &mconfig, const char *
|
||||
gms30c2216_device::gms30c2216_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_x_device(
|
||||
mconfig, GMS30C2216, tag, owner, clock,
|
||||
16, 16, 6 + 3 + 2, address_map_constructor(FUNC(gms30c2216_device::iram_8k_map), this))
|
||||
16, 16, 6 + 3, address_map_constructor(FUNC(gms30c2216_device::iram_8k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -347,7 +347,7 @@ gms30c2216_device::gms30c2216_device(const machine_config &mconfig, const char *
|
||||
gms30c2232_device::gms30c2232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: hyperstone_x_device(
|
||||
mconfig, GMS30C2232, tag, owner, clock,
|
||||
32, 32, 10 + 3 + 2, address_map_constructor(FUNC(gms30c2232_device::iram_8k_map), this))
|
||||
32, 32, 10 + 3, address_map_constructor(FUNC(gms30c2232_device::iram_8k_map), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -1535,14 +1535,14 @@ void hyperstone_device::device_start()
|
||||
if (iospace.data_width() == 16)
|
||||
{
|
||||
iospace.specific(m_io16);
|
||||
m_read_io = w_r_delegate([this] (offs_t address) -> uint32_t { return m_io16.read_word((address >> 11) & 0x7ffc); });
|
||||
m_write_io = w_w_delegate([this] (offs_t address, uint32_t data) { m_io16.write_word((address >> 11) & 0x7ffc, uint16_t(data)); });
|
||||
m_read_io = w_r_delegate([this] (offs_t address) -> uint32_t { return m_io16.read_word(address >> 13); });
|
||||
m_write_io = w_w_delegate([this] (offs_t address, uint32_t data) { m_io16.write_word(address >> 13, uint16_t(data)); });
|
||||
}
|
||||
else
|
||||
{
|
||||
iospace.specific(m_io32);
|
||||
m_read_io = w_r_delegate([this] (offs_t address) -> uint32_t { return m_io32.read_dword((address >> 11) & 0x7ffc); });
|
||||
m_write_io = w_w_delegate([this] (offs_t address, uint32_t data) { m_io32.write_dword((address >> 11) & 0x7ffc, data); });
|
||||
m_read_io = w_r_delegate([this] (offs_t address) -> uint32_t { return m_io32.read_dword(address >> 13); });
|
||||
m_write_io = w_w_delegate([this] (offs_t address, uint32_t data) { m_io32.write_dword(address >> 13, data); });
|
||||
}
|
||||
|
||||
m_timer = timer_alloc(FUNC(hyperstone_device::timer_callback), this);
|
||||
@ -1694,17 +1694,17 @@ void hyperstone_x_device::device_start()
|
||||
[this] (offs_t address) -> uint32_t
|
||||
{
|
||||
if (!BIT(address, 27))
|
||||
return m_io16.read_word((address >> 11) & 0x7ffc);
|
||||
return m_io16.read_word(address >> 13);
|
||||
else
|
||||
return m_internal_specific.read_dword((address >> 11) & 0x7ffc);
|
||||
return m_internal_specific.read_dword(address >> 13);
|
||||
});
|
||||
m_write_io = w_w_delegate(
|
||||
[this] (offs_t address, uint32_t data)
|
||||
{
|
||||
if (!BIT(address, 27))
|
||||
m_io16.write_word((address >> 11) & 0x7ffc, uint16_t(data));
|
||||
m_io16.write_word(address >> 13, uint16_t(data));
|
||||
else
|
||||
m_internal_specific.write_dword((address >> 11) & 0x7ffc, data);
|
||||
m_internal_specific.write_dword(address >> 13, data);
|
||||
});
|
||||
}
|
||||
else
|
||||
@ -1713,17 +1713,17 @@ void hyperstone_x_device::device_start()
|
||||
[this] (offs_t address) -> uint32_t
|
||||
{
|
||||
if (!BIT(address, 27))
|
||||
return m_io32.read_dword((address >> 11) & 0x7ffc);
|
||||
return m_io32.read_dword(address >> 13);
|
||||
else
|
||||
return m_internal_specific.read_dword((address >> 11) & 0x7ffc);
|
||||
return m_internal_specific.read_dword(address >> 13);
|
||||
});
|
||||
m_write_io = w_w_delegate(
|
||||
[this] (offs_t address, uint32_t data)
|
||||
{
|
||||
if (!BIT(address, 27))
|
||||
m_io32.write_dword((address >> 11) & 0x7ffc, data);
|
||||
m_io32.write_dword(address >> 13, data);
|
||||
else
|
||||
m_internal_specific.write_dword((address >> 11) & 0x7ffc, data);
|
||||
m_internal_specific.write_dword(address >> 13, data);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -283,8 +283,8 @@ protected:
|
||||
memory_access<32, 1, 0, ENDIANNESS_BIG>::specific m_specific16;
|
||||
memory_access<32, 2, 0, ENDIANNESS_BIG>::specific m_specific32;
|
||||
|
||||
memory_access< 6 + 3 + 2, 1, 0, ENDIANNESS_BIG>::specific m_io16;
|
||||
memory_access<10 + 3 + 2, 2, 0, ENDIANNESS_BIG>::specific m_io32;
|
||||
memory_access< 6 + 3, 1, -1, ENDIANNESS_BIG>::specific m_io16;
|
||||
memory_access<10 + 3, 2, -2, ENDIANNESS_BIG>::specific m_io32;
|
||||
|
||||
b_r_delegate m_read_byte;
|
||||
hw_r_delegate m_read_halfword;
|
||||
@ -634,7 +634,7 @@ protected:
|
||||
const address_space_config m_internal_config;
|
||||
|
||||
private:
|
||||
memory_access<10 + 3 + 2, 2, 0, ENDIANNESS_BIG>::specific m_internal_specific;
|
||||
memory_access<10 + 3, 2, -2, ENDIANNESS_BIG>::specific m_internal_specific;
|
||||
};
|
||||
|
||||
|
||||
|
@ -519,7 +519,7 @@ void hyperstone_device::static_generate_io_accessor(drcuml_block &block, uml::co
|
||||
|
||||
// write:
|
||||
const uml::operand_size size = (space(AS_IO).data_width() == 16) ? uml::SIZE_WORD : uml::SIZE_DWORD;
|
||||
UML_ROLAND(block, I4, I0, 21, 0x7ffc);
|
||||
UML_SHR(block, I4, I0, 13);
|
||||
if (iswrite)
|
||||
UML_WRITE(block, I4, I1, size, SPACE_IO);
|
||||
else
|
||||
@ -541,7 +541,7 @@ void hyperstone_x_device::static_generate_io_accessor(drcuml_block &block, uml::
|
||||
const int internal = label++;
|
||||
const int done = label++;
|
||||
|
||||
UML_ROLAND(block, I4, I0, 21, 0x7ffc);
|
||||
UML_SHR(block, I4, I0, 13);
|
||||
UML_TEST(block, I0, 1 << 27);
|
||||
UML_JMPc(block, uml::COND_NZ, internal);
|
||||
|
||||
|
@ -3033,11 +3033,11 @@ void hyperstone_device::generate_stxx1(drcuml_block &block, compiler_state &comp
|
||||
if (sub_type == 0)
|
||||
{
|
||||
const int no_exception = compiler.next_label();
|
||||
//UML_SEXT(block, I0, I1, SIZE_BYTE);
|
||||
//UML_CMP(block, I0, I1);
|
||||
//UML_JMPc(block, uml::COND_E, no_exception);
|
||||
UML_TEST(block, I1, 0xffffff00);
|
||||
UML_JMPc(block, uml::COND_Z, no_exception);
|
||||
UML_SEXT(block, I0, I1, SIZE_BYTE);
|
||||
UML_CMP(block, I0, I1);
|
||||
UML_JMPc(block, uml::COND_E, no_exception);
|
||||
generate_raise_exception(block, compiler, desc, TRAPNO_RANGE_ERROR);
|
||||
UML_LABEL(block, no_exception);
|
||||
}
|
||||
@ -3051,11 +3051,11 @@ void hyperstone_device::generate_stxx1(drcuml_block &block, compiler_state &comp
|
||||
if (extra_s & 1)
|
||||
{
|
||||
const int no_exception = compiler.next_label();
|
||||
//UML_SEXT(block, I0, I1, SIZE_WORD);
|
||||
//UML_CMP(block, I0, I1);
|
||||
//UML_JMPc(block, uml::COND_E, no_exception);
|
||||
UML_TEST(block, I1, 0xffff0000);
|
||||
UML_JMPc(block, uml::COND_Z, no_exception);
|
||||
UML_SEXT(block, I0, I1, SIZE_WORD);
|
||||
UML_CMP(block, I0, I1);
|
||||
UML_JMPc(block, uml::COND_E, no_exception);
|
||||
generate_raise_exception(block, compiler, desc, TRAPNO_RANGE_ERROR);
|
||||
UML_LABEL(block, no_exception);
|
||||
}
|
||||
@ -3172,11 +3172,11 @@ void hyperstone_device::generate_stxx2(drcuml_block &block, compiler_state &comp
|
||||
if (sub_type == 0)
|
||||
{
|
||||
const int no_exception = compiler.next_label();
|
||||
//UML_SEXT(block, I0, I1, SIZE_BYTE);
|
||||
//UML_CMP(block, I0, I1);
|
||||
//UML_JMPc(block, uml::COND_E, no_exception);
|
||||
UML_TEST(block, I1, 0xffffff00);
|
||||
UML_JMPc(block, uml::COND_Z, no_exception);
|
||||
UML_SEXT(block, I0, I1, SIZE_BYTE);
|
||||
UML_CMP(block, I0, I1);
|
||||
UML_JMPc(block, uml::COND_E, no_exception);
|
||||
generate_raise_exception(block, compiler, desc, TRAPNO_RANGE_ERROR);
|
||||
UML_LABEL(block, no_exception);
|
||||
}
|
||||
@ -3197,11 +3197,11 @@ void hyperstone_device::generate_stxx2(drcuml_block &block, compiler_state &comp
|
||||
if (extra_s & 1)
|
||||
{
|
||||
const int no_exception = compiler.next_label();
|
||||
//UML_SEXT(block, I0, I1, SIZE_WORD);
|
||||
//UML_CMP(block, I0, I1);
|
||||
//UML_JMPc(block, uml::COND_E, no_exception);
|
||||
UML_TEST(block, I1, 0xffff0000);
|
||||
UML_JMPc(block, uml::COND_Z, no_exception);
|
||||
UML_SEXT(block, I0, I1, SIZE_WORD);
|
||||
UML_CMP(block, I0, I1);
|
||||
UML_JMPc(block, uml::COND_E, no_exception);
|
||||
generate_raise_exception(block, compiler, desc, TRAPNO_RANGE_ERROR);
|
||||
UML_LABEL(block, no_exception);
|
||||
}
|
||||
|
@ -1845,8 +1845,7 @@ void hyperstone_device::hyperstone_stxx1()
|
||||
{
|
||||
case 0: // STBS.D
|
||||
WRITE_B(dreg + extra_s, uint8_t(sreg));
|
||||
//if (int8_t(uint8_t(sreg)) != int32_t(sreg))
|
||||
if (uint8_t(sreg) != sreg)
|
||||
if ((uint8_t(sreg) != sreg) && (int8_t(uint8_t(sreg)) != int32_t(sreg)))
|
||||
execute_exception(TRAPNO_RANGE_ERROR);
|
||||
break;
|
||||
|
||||
@ -1856,8 +1855,7 @@ void hyperstone_device::hyperstone_stxx1()
|
||||
|
||||
case 2: // STHS.D, STHU.D
|
||||
WRITE_HW(dreg + (extra_s & ~1), uint16_t(sreg));
|
||||
//if ((extra_s & 1) && (int16_t(uint16_t(sreg)) != int32_t(sreg)))
|
||||
if ((extra_s & 1) && (uint16_t(sreg) != sreg))
|
||||
if ((extra_s & 1) && (uint16_t(sreg) != sreg) && (int16_t(uint16_t(sreg)) != int32_t(sreg)))
|
||||
execute_exception(TRAPNO_RANGE_ERROR);
|
||||
break;
|
||||
|
||||
@ -1965,8 +1963,7 @@ void hyperstone_device::hyperstone_stxx2()
|
||||
{
|
||||
case 0: // STBS.N
|
||||
WRITE_B(dreg, (uint8_t)sreg);
|
||||
//range_error = int8_t(uint8_t(sreg)) != int32_t(sreg);
|
||||
range_error = uint8_t(sreg) != sreg;
|
||||
range_error = (uint8_t(sreg) != sreg) && (int8_t(uint8_t(sreg)) != int32_t(sreg));
|
||||
(DstGlobal ? m_core->global_regs : m_core->local_regs)[dst_code] += extra_s;
|
||||
if (range_error)
|
||||
execute_exception(TRAPNO_RANGE_ERROR);
|
||||
@ -1979,8 +1976,7 @@ void hyperstone_device::hyperstone_stxx2()
|
||||
|
||||
case 2: // STHS.N, STHU.N
|
||||
WRITE_HW(dreg, (uint16_t)sreg);
|
||||
//range_error = (extra_s & 1) && (int16_t(uint16_t(sreg)) != int32_t(sreg));
|
||||
range_error = (extra_s & 1) && (uint16_t(sreg) != sreg);
|
||||
range_error = (extra_s & 1) && (uint16_t(sreg) != sreg) && (int16_t(uint16_t(sreg)) != int32_t(sreg));
|
||||
(DstGlobal ? m_core->global_regs : m_core->local_regs)[dst_code] += extra_s & ~1;
|
||||
if (range_error)
|
||||
execute_exception(TRAPNO_RANGE_ERROR);
|
||||
|
@ -6,6 +6,12 @@
|
||||
#include "emu.h"
|
||||
#include "ks0164.h"
|
||||
|
||||
#define LOG_KEYON (1U << 1)
|
||||
#define LOG_SERIAL (1U << 2)
|
||||
|
||||
//#define VERBOSE (LOG_GENERAL | LOG_KEYON | LOG_SERIAL)
|
||||
#include "logmacro.h"
|
||||
|
||||
|
||||
DEFINE_DEVICE_TYPE(KS0164, ks0164_device, "ks0164", "Samsung KS0164 Wavetable Synthesizer")
|
||||
|
||||
@ -153,7 +159,7 @@ TIMER_CALLBACK_MEMBER(ks0164_device::irq_timer_tick)
|
||||
|
||||
void ks0164_device::tra_complete()
|
||||
{
|
||||
logerror("transmit done\n");
|
||||
LOGMASKED(LOG_SERIAL, "transmit done\n");
|
||||
}
|
||||
|
||||
void ks0164_device::rcv_complete()
|
||||
@ -163,7 +169,7 @@ void ks0164_device::rcv_complete()
|
||||
m_midi_in_active = true;
|
||||
m_cpu->set_input_line(6, ASSERT_LINE);
|
||||
|
||||
logerror("recieved %02x\n", m_midi_in);
|
||||
LOGMASKED(LOG_SERIAL, "recieved %02x\n", m_midi_in);
|
||||
}
|
||||
|
||||
void ks0164_device::tra_callback()
|
||||
@ -180,7 +186,7 @@ u8 ks0164_device::midi_r()
|
||||
|
||||
void ks0164_device::midi_w(u8 data)
|
||||
{
|
||||
logerror("want to transmit %02x\n", data);
|
||||
LOG("want to transmit %02x\n", data);
|
||||
}
|
||||
|
||||
u8 ks0164_device::midi_status_r()
|
||||
@ -191,7 +197,7 @@ u8 ks0164_device::midi_status_r()
|
||||
|
||||
void ks0164_device::midi_status_w(u8 data)
|
||||
{
|
||||
logerror("midi status_w %02x\n", data);
|
||||
LOG("midi status_w %02x\n", data);
|
||||
}
|
||||
|
||||
|
||||
@ -336,9 +342,9 @@ void ks0164_device::voice_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
u16 old = m_sregs[m_voice_select & 0x1f][offset];
|
||||
COMBINE_DATA(&m_sregs[m_voice_select & 0x1f][offset]);
|
||||
if(0 && m_sregs[m_voice_select & 0x1f][offset] != old && offset == 0)
|
||||
logerror("voice %02x.%02x = %04x @ %04x (%04x)\n", m_voice_select & 0x1f, offset, m_sregs[m_voice_select & 0x1f][offset], mem_mask, m_cpu->pc());
|
||||
LOGMASKED(LOG_KEYON, "voice %02x.%02x = %04x @ %04x (%04x)\n", m_voice_select & 0x1f, offset, m_sregs[m_voice_select & 0x1f][offset], mem_mask, m_cpu->pc());
|
||||
if(offset == 0 && (data & 1) && !(old & 1))
|
||||
logerror("keyon %02x mode=%04x (%s %c %c %c %c) cur=%02x%04x.%04x loop=%02x%04x.%04x end=%02x%04x.%04x pitch=%x.%03x 10=%02x/%02x:%02x/%02x 14=%03x/%03x:%03x/%03x 18=%04x/%04x c=%04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x\n",
|
||||
LOGMASKED(LOG_KEYON, "keyon %02x mode=%04x (%s %c %c %c %c) cur=%02x%04x.%04x loop=%02x%04x.%04x end=%02x%04x.%04x pitch=%x.%03x 10=%02x/%02x:%02x/%02x 14=%03x/%03x:%03x/%03x 18=%04x/%04x c=%04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x\n",
|
||||
m_voice_select,
|
||||
|
||||
m_sregs[m_voice_select & 0x1f][0x00],
|
||||
@ -419,7 +425,7 @@ u8 ks0164_device::irqen_77_r()
|
||||
void ks0164_device::irqen_77_w(u8 data)
|
||||
{
|
||||
m_irqen_77 = data;
|
||||
logerror("irqen_77 = %02x (%04x)\n", m_irqen_77, m_cpu->pc());
|
||||
LOG("irqen_77 = %02x (%04x)\n", m_irqen_77, m_cpu->pc());
|
||||
}
|
||||
|
||||
u8 ks0164_device::unk60_r()
|
||||
@ -430,7 +436,7 @@ u8 ks0164_device::unk60_r()
|
||||
void ks0164_device::unk60_w(u8 data)
|
||||
{
|
||||
m_unk60 = data;
|
||||
logerror("unk60 = %02x (%04x)\n", m_unk60, m_cpu->pc());
|
||||
LOG("unk60 = %02x (%04x)\n", m_unk60, m_cpu->pc());
|
||||
}
|
||||
|
||||
u8 ks0164_device::voice_select_r()
|
||||
@ -490,7 +496,7 @@ void ks0164_device::sound_stream_update(sound_stream &stream, std::vector<read_s
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror("Sample mode %04x\n", regs[0] & 0x8400);
|
||||
LOG("Sample mode %04x\n", regs[0] & 0x8400);
|
||||
samp0 = samp1 = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -178,17 +178,17 @@ uint32_t mosaicf2_state::input_port_1_r()
|
||||
|
||||
void mosaicf2_state::mosaicf2_io(address_map &map)
|
||||
{
|
||||
map(0x4003, 0x4003).r("oki", FUNC(okim6295_device::read));
|
||||
map(0x4813, 0x4813).r("ymsnd", FUNC(ym2151_device::status_r));
|
||||
map(0x5000, 0x5003).portr("P1");
|
||||
map(0x5200, 0x5203).r(FUNC(mosaicf2_state::input_port_1_r));
|
||||
map(0x5400, 0x5403).portr("EEPROMIN");
|
||||
map(0x6003, 0x6003).w("oki", FUNC(okim6295_device::write));
|
||||
map(0x6803, 0x6803).w("ymsnd", FUNC(ym2151_device::data_w));
|
||||
map(0x6813, 0x6813).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x7000, 0x7003).portw("EEPROMCLK");
|
||||
map(0x7200, 0x7203).portw("EEPROMCS");
|
||||
map(0x7400, 0x7403).portw("EEPROMOUT");
|
||||
map(0x1000, 0x1000).umask32(0x000000ff).r("oki", FUNC(okim6295_device::read));
|
||||
map(0x1204, 0x1204).umask32(0x000000ff).r("ymsnd", FUNC(ym2151_device::status_r));
|
||||
map(0x1400, 0x1400).portr("P1");
|
||||
map(0x1480, 0x1480).r(FUNC(mosaicf2_state::input_port_1_r));
|
||||
map(0x1500, 0x1500).portr("EEPROMIN");
|
||||
map(0x1800, 0x1800).umask32(0x000000ff).w("oki", FUNC(okim6295_device::write));
|
||||
map(0x1a00, 0x1a00).umask32(0x000000ff).w("ymsnd", FUNC(ym2151_device::data_w));
|
||||
map(0x1a04, 0x1a04).umask32(0x000000ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x1c00, 0x1c00).portw("EEPROMCLK");
|
||||
map(0x1c80, 0x1c80).portw("EEPROMCS");
|
||||
map(0x1d00, 0x1d00).portw("EEPROMOUT");
|
||||
}
|
||||
|
||||
|
||||
@ -338,36 +338,36 @@ void royalpk2_state::royalpk2_map(address_map &map)
|
||||
|
||||
void royalpk2_state::royalpk2_io(address_map &map)
|
||||
{
|
||||
// map(0x4000, 0x41ff).readonly().share("nvram"); // seems to expect to read NVRAM from here
|
||||
//map(0x1000, 0x107f).readonly().share("nvram"); // seems to expect to read NVRAM from here
|
||||
|
||||
map(0x4603, 0x4603).r("oki", FUNC(okim6295_device::read));
|
||||
map(0x1180, 0x1180).umask32(0x000000ff).r("oki", FUNC(okim6295_device::read));
|
||||
|
||||
map(0x4800, 0x4803).portr("P1");
|
||||
map(0x4900, 0x4903).portr("SYSTEM_P2");
|
||||
map(0x1200, 0x1200).portr("P1");
|
||||
map(0x1240, 0x1240).portr("SYSTEM_P2");
|
||||
|
||||
map(0x4a00, 0x4a03).portr("EEPROMIN");
|
||||
map(0x1280, 0x1280).portr("EEPROMIN");
|
||||
|
||||
map(0x4b00, 0x4b03).r(FUNC(royalpk2_state::protection_response_r));
|
||||
map(0x12c0, 0x12c0).r(FUNC(royalpk2_state::protection_response_r));
|
||||
|
||||
map(0x6000, 0x61ff).ram().share("nvram");
|
||||
map(0x1800, 0x187f).ram().share("nvram");
|
||||
|
||||
map(0x6603, 0x6603).w("oki", FUNC(okim6295_device::write));
|
||||
map(0x1980, 0x1980).umask32(0x000000ff).w("oki", FUNC(okim6295_device::write));
|
||||
|
||||
map(0x6800, 0x6803).portw("EEPROMCLK");
|
||||
map(0x6900, 0x6903).portw("EEPROMCS");
|
||||
map(0x6a00, 0x6a03).portw("EEPROMOUT");
|
||||
map(0x1a00, 0x1a00).portw("EEPROMCLK");
|
||||
map(0x1a40, 0x1a40).portw("EEPROMCS");
|
||||
map(0x1a80, 0x1a80).portw("EEPROMOUT");
|
||||
|
||||
// map(0x6b00, 0x6b03).nopw(); // bits 8, 9, 10 and 13, 14 used
|
||||
//map(0x1ac0, 0x1ac0).nopw(); // bits 8, 9, 10 and 13, 14 used
|
||||
|
||||
map(0x6c03, 0x6c03).lw8(NAME([this] (uint8_t data) { m_okibank->set_entry(data & 0x03); })); // TODO: double check this
|
||||
map(0x1b00, 0x1b00).lw32(NAME([this] (uint32_t data) { m_okibank->set_entry(data & 0x03); })); // TODO: double check this
|
||||
|
||||
map(0x6d00, 0x6d03).w(FUNC(royalpk2_state::protection_seed_w));
|
||||
map(0x1b40, 0x1b40).w(FUNC(royalpk2_state::protection_seed_w));
|
||||
|
||||
map(0x7000, 0x7003).w(FUNC(royalpk2_state::outputs_w<0>));
|
||||
map(0x7100, 0x7103).w(FUNC(royalpk2_state::outputs_w<1>));
|
||||
map(0x7200, 0x7203).w(FUNC(royalpk2_state::outputs_w<2>));
|
||||
map(0x7300, 0x7303).w(FUNC(royalpk2_state::outputs_w<3>));
|
||||
map(0x7400, 0x7403).w(FUNC(royalpk2_state::outputs_w<4>));
|
||||
map(0x1c00, 0x1c00).w(FUNC(royalpk2_state::outputs_w<0>));
|
||||
map(0x1c40, 0x1c40).w(FUNC(royalpk2_state::outputs_w<1>));
|
||||
map(0x1c80, 0x1c80).w(FUNC(royalpk2_state::outputs_w<2>));
|
||||
map(0x1cc0, 0x1cc0).w(FUNC(royalpk2_state::outputs_w<3>));
|
||||
map(0x1d00, 0x1d00).w(FUNC(royalpk2_state::outputs_w<4>));
|
||||
}
|
||||
|
||||
void royalpk2_state::oki_map(address_map &map)
|
||||
|
@ -210,11 +210,6 @@ private:
|
||||
|
||||
u32 vblank_r();
|
||||
|
||||
void mpu401_data_w(offs_t, u32 data, u32 mem_mask);
|
||||
void mpu401_ctrl_w(offs_t, u32 data, u32 mem_mask);
|
||||
u32 mpu401_data_r(offs_t, u32 mem_mask);
|
||||
u32 mpu401_status_r();
|
||||
|
||||
u16 flash_raw_rom_r(offs_t offset);
|
||||
|
||||
required_ioport m_vblank;
|
||||
@ -272,30 +267,6 @@ private:
|
||||
required_memory_region m_ks0164_bank;
|
||||
};
|
||||
|
||||
void dgpix_state::mpu401_data_w(offs_t, u32 data, u32 mem_mask)
|
||||
{
|
||||
if(ACCESSING_BITS_0_7)
|
||||
m_sound->mpu401_data_w(data);
|
||||
}
|
||||
|
||||
void dgpix_state::mpu401_ctrl_w(offs_t, u32 data, u32 mem_mask)
|
||||
{
|
||||
if(ACCESSING_BITS_0_7)
|
||||
m_sound->mpu401_ctrl_w(data);
|
||||
}
|
||||
|
||||
u32 dgpix_state::mpu401_data_r(offs_t, u32 mem_mask)
|
||||
{
|
||||
if(ACCESSING_BITS_0_7)
|
||||
return m_sound->mpu401_data_r();
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 dgpix_state::mpu401_status_r()
|
||||
{
|
||||
return m_sound->mpu401_status_r();
|
||||
}
|
||||
|
||||
u16 dgpix_state::flash_r(offs_t offset)
|
||||
{
|
||||
const auto bank = offset / 0x200000;
|
||||
@ -398,13 +369,13 @@ void dgpix_bmkey_state::mem_map(address_map &map)
|
||||
|
||||
void dgpix_state::io_map(address_map &map)
|
||||
{
|
||||
map(0x0200, 0x0203).nopr(); // used to sync with the protecion PIC? tested bits 0 and 1
|
||||
map(0x0400, 0x0403).rw(FUNC(dgpix_state::vblank_r), FUNC(dgpix_state::vbuffer_w));
|
||||
map(0x0a10, 0x0a13).portr("INPUTS");
|
||||
map(0x0200, 0x0203).w(FUNC(dgpix_state::coin_w));
|
||||
map(0x0c00, 0x0c03).nopw(); // writes only: 1, 0, 1 at startup
|
||||
map(0x0c80, 0x0c83).rw(FUNC(dgpix_state::mpu401_data_r), FUNC(dgpix_state::mpu401_data_w));
|
||||
map(0x0c84, 0x0c87).rw(FUNC(dgpix_state::mpu401_status_r), FUNC(dgpix_state::mpu401_ctrl_w));
|
||||
map(0x0080, 0x0080).nopr(); // used to sync with the protecion PIC? tested bits 0 and 1
|
||||
map(0x0080, 0x0080).w(FUNC(dgpix_state::coin_w));
|
||||
map(0x0100, 0x0100).rw(FUNC(dgpix_state::vblank_r), FUNC(dgpix_state::vbuffer_w));
|
||||
map(0x0284, 0x0284).portr("INPUTS");
|
||||
map(0x0300, 0x0300).nopw(); // writes only: 1, 0, 1 at startup
|
||||
map(0x0320, 0x0320).umask32(0x000000ff).rw(m_sound, FUNC(ks0164_device::mpu401_data_r), FUNC(ks0164_device::mpu401_data_w));
|
||||
map(0x0321, 0x0321).umask32(0x000000ff).rw(m_sound, FUNC(ks0164_device::mpu401_status_r), FUNC(ks0164_device::mpu401_ctrl_w));
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( dgpix )
|
||||
|
@ -270,12 +270,12 @@ void limenko_state::limenko_map(address_map &map)
|
||||
|
||||
void limenko_state::limenko_io_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x0003).portr("IN0");
|
||||
map(0x0800, 0x0803).portr("IN1");
|
||||
map(0x1000, 0x1003).portr("IN2");
|
||||
map(0x4000, 0x4003).w(FUNC(limenko_state::coincounter_w));
|
||||
map(0x4800, 0x4803).portw("EEPROMOUT");
|
||||
map(0x5000, 0x5003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x00ff0000).cswidth(32);
|
||||
map(0x0000, 0x0000).portr("IN0");
|
||||
map(0x0200, 0x0200).portr("IN1");
|
||||
map(0x0400, 0x0400).portr("IN2");
|
||||
map(0x1000, 0x1000).w(FUNC(limenko_state::coincounter_w));
|
||||
map(0x1200, 0x1200).portw("EEPROMOUT");
|
||||
map(0x1400, 0x1400).umask32(0x00ff0000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
||||
}
|
||||
|
||||
|
||||
@ -298,12 +298,12 @@ void limenko_state::spotty_map(address_map &map)
|
||||
|
||||
void limenko_state::spotty_io_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x0003).portr("IN0");
|
||||
map(0x0800, 0x0803).portr("IN1");
|
||||
map(0x0800, 0x0803).nopw(); // hopper related
|
||||
map(0x1000, 0x1003).portr("IN2");
|
||||
map(0x4800, 0x4803).portw("EEPROMOUT");
|
||||
map(0x5000, 0x5003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x00ff0000).cswidth(32);
|
||||
map(0x0000, 0x0000).portr("IN0");
|
||||
map(0x0200, 0x0200).portr("IN1");
|
||||
map(0x0200, 0x0200).nopw(); // hopper related
|
||||
map(0x0400, 0x0400).portr("IN2");
|
||||
map(0x1200, 0x1200).portw("EEPROMOUT");
|
||||
map(0x1400, 0x1400).umask32(0x00ff0000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
||||
}
|
||||
|
||||
|
||||
@ -634,13 +634,13 @@ INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START(spotty)
|
||||
PORT_START("IN0")
|
||||
PORT_BIT(0x00010000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_NAME("Hold 1")
|
||||
PORT_BIT(0x00020000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_NAME("Hold 2")
|
||||
PORT_BIT(0x00040000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_NAME("Hold 3")
|
||||
PORT_BIT(0x00080000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_NAME("Hold 4")
|
||||
PORT_BIT(0x00100000, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Bet")
|
||||
PORT_BIT(0x00200000, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Stop")
|
||||
PORT_BIT(0x00400000, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Change")
|
||||
PORT_BIT(0x00010000, IP_ACTIVE_LOW, IPT_POKER_HOLD1)
|
||||
PORT_BIT(0x00020000, IP_ACTIVE_LOW, IPT_POKER_HOLD2)
|
||||
PORT_BIT(0x00040000, IP_ACTIVE_LOW, IPT_POKER_HOLD3)
|
||||
PORT_BIT(0x00080000, IP_ACTIVE_LOW, IPT_POKER_HOLD4)
|
||||
PORT_BIT(0x00100000, IP_ACTIVE_LOW, IPT_GAMBLE_BET)
|
||||
PORT_BIT(0x00200000, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE) PORT_NAME("Stop")
|
||||
PORT_BIT(0x00400000, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL) PORT_NAME("Change")
|
||||
PORT_BIT(0x00800000, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0xff00ffff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
|
||||
@ -649,9 +649,9 @@ static INPUT_PORTS_START(spotty)
|
||||
PORT_BIT(0x00020000, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x00040000, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x00080000, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x00100000, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("Prize Hopper 1")
|
||||
PORT_BIT(0x00200000, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_NAME("Prize Hopper 2")
|
||||
PORT_BIT(0x00400000, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_NAME("Prize Hopper 3")
|
||||
PORT_BIT(0x00100000, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Prize Hopper 1")
|
||||
PORT_BIT(0x00200000, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Prize Hopper 2")
|
||||
PORT_BIT(0x00400000, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Prize Hopper 3")
|
||||
PORT_BIT(0x00800000, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0xff00ffff, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
|
||||
@ -1001,7 +1001,7 @@ Spotty
|
||||
| SW1 SW2 32MHz CG_ROM3 |
|
||||
+---------------------------------+
|
||||
|
||||
Hyundia GMS30C2232 (Hyperstone core)
|
||||
Hyundai GMS30C2232 (Hyperstone core)
|
||||
Atmel AT89C4051 (8051 MCU with internal code)
|
||||
SYS L2D HYP Ver 1.0 ASIC Express
|
||||
EEPROM 93C46
|
||||
|
@ -94,8 +94,8 @@ private:
|
||||
uint8_t m_control = 0;
|
||||
uint8_t m_key_matrix_select = 0;
|
||||
|
||||
void control_w(uint8_t data);
|
||||
void key_matrix_w(uint8_t data);
|
||||
void control_w(uint32_t data);
|
||||
void key_matrix_w(uint32_t data);
|
||||
|
||||
uint32_t key_matrix_r();
|
||||
|
||||
@ -128,7 +128,7 @@ void mjsenpu_state::vram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
||||
COMBINE_DATA(&m_vram[BIT(m_control, 0)][offset]);
|
||||
}
|
||||
|
||||
void mjsenpu_state::control_w(uint8_t data)
|
||||
void mjsenpu_state::control_w(uint32_t data)
|
||||
{
|
||||
// bit 0x80 is always set? (sometimes disabled during screen transitions briefly, could be display enable?)
|
||||
|
||||
@ -143,13 +143,13 @@ void mjsenpu_state::control_w(uint8_t data)
|
||||
machine().bookkeeping().coin_counter_w(0, BIT(data, 1)); // coin or key-in
|
||||
|
||||
// bit 0x01 alternates frequently, using as video buffer, but that's a complete guess
|
||||
m_control = data;
|
||||
m_control = uint8_t(data);
|
||||
|
||||
// if (data &~0x9e)
|
||||
// logerror("control_w %02x\n", data);
|
||||
}
|
||||
|
||||
void mjsenpu_state::key_matrix_w(uint8_t data)
|
||||
void mjsenpu_state::key_matrix_w(uint32_t data)
|
||||
{
|
||||
if ((data & 0xe0) != 0x80)
|
||||
logerror("key_matrix_w %02x\n", data);
|
||||
@ -157,7 +157,7 @@ void mjsenpu_state::key_matrix_w(uint8_t data)
|
||||
// bit 0 to 4: Key matrix select
|
||||
// Bit 5 to 6: unknown, always clear?
|
||||
// bit 7: unknown, always set?
|
||||
m_key_matrix_select = data;
|
||||
m_key_matrix_select = uint8_t(data);
|
||||
}
|
||||
|
||||
uint32_t mjsenpu_state::key_matrix_r()
|
||||
@ -190,18 +190,18 @@ void mjsenpu_state::main_map(address_map &map)
|
||||
|
||||
void mjsenpu_state::main_portmap(address_map &map)
|
||||
{
|
||||
map(0x4000, 0x4003).r(FUNC(mjsenpu_state::key_matrix_r));
|
||||
map(0x4010, 0x4013).portr("IN1");
|
||||
map(0x1000, 0x1000).r(FUNC(mjsenpu_state::key_matrix_r));
|
||||
map(0x1004, 0x1004).portr("IN1");
|
||||
|
||||
map(0x4023, 0x4023).w(FUNC(mjsenpu_state::control_w));
|
||||
map(0x1008, 0x1008).w(FUNC(mjsenpu_state::control_w));
|
||||
|
||||
map(0x4030, 0x4033).portr("DSW1");
|
||||
map(0x4040, 0x4043).portr("DSW2");
|
||||
map(0x4050, 0x4053).portr("DSW3");
|
||||
map(0x100c, 0x100c).portr("DSW1");
|
||||
map(0x1010, 0x1010).portr("DSW2");
|
||||
map(0x1014, 0x1014).portr("DSW3");
|
||||
|
||||
map(0x4063, 0x4063).w(FUNC(mjsenpu_state::key_matrix_w));
|
||||
map(0x1018, 0x1018).w(FUNC(mjsenpu_state::key_matrix_w));
|
||||
|
||||
map(0x4073, 0x4073).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x101c, 0x101c).umask32(0x000000ff).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( mjsenpu )
|
||||
|
@ -249,18 +249,18 @@ void pasha2_state::pasha2_map(address_map &map)
|
||||
|
||||
void pasha2_state::pasha2_io(address_map &map)
|
||||
{
|
||||
map(0x08, 0x09).nopr(); //sound status?
|
||||
map(0x18, 0x19).nopr(); //sound status?
|
||||
map(0x20, 0x21).w(FUNC(pasha2_state::pasha2_lamps_w));
|
||||
map(0x40, 0x41).portr("COINS");
|
||||
map(0x60, 0x61).portr("DSW");
|
||||
map(0x80, 0x81).portr("INPUTS");
|
||||
map(0xa0, 0xa1).nopw(); //soundlatch?
|
||||
map(0xc0, 0xc1).w(FUNC(pasha2_state::misc_w));
|
||||
map(0xe1, 0xe1).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0xe5, 0xe5).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0xe8, 0xe9).w(FUNC(pasha2_state::oki_bank_w<0>));
|
||||
map(0xec, 0xed).w(FUNC(pasha2_state::oki_bank_w<1>));
|
||||
map(0x02, 0x02).nopr(); //sound status?
|
||||
map(0x06, 0x06).nopr(); //sound status?
|
||||
map(0x08, 0x08).w(FUNC(pasha2_state::pasha2_lamps_w));
|
||||
map(0x10, 0x10).portr("COINS");
|
||||
map(0x18, 0x18).portr("DSW");
|
||||
map(0x20, 0x20).portr("INPUTS");
|
||||
map(0x28, 0x28).nopw(); //soundlatch?
|
||||
map(0x30, 0x30).w(FUNC(pasha2_state::misc_w));
|
||||
map(0x38, 0x38).umask16(0x00ff).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x39, 0x39).umask16(0x00ff).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x3a, 0x3a).w(FUNC(pasha2_state::oki_bank_w<0>));
|
||||
map(0x3b, 0x3b).w(FUNC(pasha2_state::oki_bank_w<1>));
|
||||
}
|
||||
|
||||
void pasha2_state::zdrum_audio_map(address_map &map)
|
||||
|
@ -144,11 +144,8 @@ public:
|
||||
ioport_value boonggab_photo_sensors_r();
|
||||
|
||||
u16 eeprom_r();
|
||||
u32 eeprom32_r();
|
||||
void eeprom_w(u16 data);
|
||||
void eeprom32_w(u32 data);
|
||||
void flipscreen_w(u16 data);
|
||||
void flipscreen32_w(u32 data);
|
||||
u16 vram_r(offs_t offset) { return m_tiles[offset]; }
|
||||
void vram_w(offs_t offset, u16 data, u16 mem_mask = ~0) { COMBINE_DATA(&m_tiles[offset]); }
|
||||
|
||||
@ -167,7 +164,7 @@ public:
|
||||
protected:
|
||||
virtual void video_start() override ATTR_COLD;
|
||||
|
||||
u32 m_flip_bit;
|
||||
u16 m_flip_bit;
|
||||
u8 m_palshift;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -212,7 +209,6 @@ private:
|
||||
|
||||
u32 aoh_speedup_r();
|
||||
|
||||
void aoh_oki_bank_w(u32 data);
|
||||
void boonggab_oki_bank_w(u16 data);
|
||||
void mrkicker_oki_bank_w(u16 data);
|
||||
void qs1000_p3_w(u8 data);
|
||||
@ -222,18 +218,20 @@ private:
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void handle_flipped_visible_area(screen_device &screen);
|
||||
void aoh_io(address_map &map) ATTR_COLD;
|
||||
void aoh_map(address_map &map) ATTR_COLD;
|
||||
void banked_oki_map(address_map &map) ATTR_COLD;
|
||||
void boonggab_io(address_map &map) ATTR_COLD;
|
||||
|
||||
void vamphalf_io(address_map &map) ATTR_COLD;
|
||||
void coolmini_io(address_map &map) ATTR_COLD;
|
||||
void mrkicker_io(address_map &map) ATTR_COLD;
|
||||
void suplup_io(address_map &map) ATTR_COLD;
|
||||
void jmpbreak_io(address_map &map) ATTR_COLD;
|
||||
void worldadv_io(address_map &map) ATTR_COLD;
|
||||
void mrdig_io(address_map &map) ATTR_COLD;
|
||||
void mrkicker_io(address_map &map) ATTR_COLD;
|
||||
void solitaire_io(address_map &map) ATTR_COLD;
|
||||
void suplup_io(address_map &map) ATTR_COLD;
|
||||
void vamphalf_io(address_map &map) ATTR_COLD;
|
||||
void mrdig_io(address_map &map) ATTR_COLD;
|
||||
void aoh_map(address_map &map) ATTR_COLD;
|
||||
void aoh_io(address_map &map) ATTR_COLD;
|
||||
void boonggab_io(address_map &map) ATTR_COLD;
|
||||
|
||||
void banked_oki_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
class vamphalf_qdsp_state : public vamphalf_state
|
||||
@ -306,11 +304,6 @@ u16 vamphalf_state::eeprom_r()
|
||||
return m_eeprom->do_read();
|
||||
}
|
||||
|
||||
u32 vamphalf_state::eeprom32_r()
|
||||
{
|
||||
return m_eeprom->do_read();
|
||||
}
|
||||
|
||||
void vamphalf_state::eeprom_w(u16 data)
|
||||
{
|
||||
m_eeprom->di_write(data & 0x01);
|
||||
@ -320,13 +313,6 @@ void vamphalf_state::eeprom_w(u16 data)
|
||||
// data & 8?
|
||||
}
|
||||
|
||||
void vamphalf_state::eeprom32_w(u32 data)
|
||||
{
|
||||
m_eeprom->di_write(data & 0x01);
|
||||
m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
|
||||
m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
|
||||
}
|
||||
|
||||
void vamphalf_nvram_state::finalgdr_eeprom_w(u32 data)
|
||||
{
|
||||
m_eeprom->di_write((data & 0x4000) >> 14);
|
||||
@ -346,11 +332,6 @@ void vamphalf_state::flipscreen_w(u16 data)
|
||||
m_flipscreen = data & m_flip_bit;
|
||||
}
|
||||
|
||||
void vamphalf_state::flipscreen32_w(u32 data)
|
||||
{
|
||||
m_flipscreen = data & m_flip_bit;
|
||||
}
|
||||
|
||||
void vamphalf_state::jmpbreak_flipscreen_w(u16 data)
|
||||
{
|
||||
m_flipscreen = data & 0x8000;
|
||||
@ -432,11 +413,6 @@ void vamphalf_nvram_state::finalgdr_prize_w(u32 data)
|
||||
}
|
||||
}
|
||||
|
||||
void vamphalf_state::aoh_oki_bank_w(u32 data)
|
||||
{
|
||||
m_okibank->set_entry(data & 0x3);
|
||||
}
|
||||
|
||||
void vamphalf_state::boonggab_oki_bank_w(u16 data)
|
||||
{
|
||||
m_okibank->set_entry(data & 0x7);
|
||||
@ -471,7 +447,7 @@ void vamphalf_state::boonggab_lamps_w(offs_t offset, u16 data)
|
||||
// data & 0x0020 == lamp 12 on
|
||||
// data & 0x0040 == lamp 13 on
|
||||
}
|
||||
else if (offset == 2)
|
||||
else if (offset == 1)
|
||||
{
|
||||
// data & 0x0100 == lamp 0 on
|
||||
// data & 0x0200 == lamp 1 on
|
||||
@ -519,145 +495,145 @@ void vamphalf_qdsp_state::yorijori_32bit_map(address_map &map)
|
||||
|
||||
void vamphalf_state::vamphalf_io(address_map &map)
|
||||
{
|
||||
map(0x0c1, 0x0c1).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x141, 0x141).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x145, 0x145).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x1c0, 0x1c1).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x240, 0x241).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x600, 0x601).portr("SYSTEM");
|
||||
map(0x604, 0x605).portr("P1_P2");
|
||||
map(0x608, 0x609).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x030, 0x030).umask16(0x00ff).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x050, 0x050).umask16(0x00ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x051, 0x051).umask16(0x00ff).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x070, 0x070).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x090, 0x090).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x180, 0x180).portr("SYSTEM");
|
||||
map(0x181, 0x181).portr("P1_P2");
|
||||
map(0x182, 0x182).w(FUNC(vamphalf_state::eeprom_w));
|
||||
}
|
||||
|
||||
void vamphalf_qdsp_state::misncrft_io(address_map &map)
|
||||
{
|
||||
map(0x100, 0x101).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x200, 0x201).portr("P1_P2");
|
||||
map(0x240, 0x241).portr("SYSTEM");
|
||||
map(0x3c0, 0x3c1).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x401, 0x401).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
||||
map(0x580, 0x581).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x040, 0x040).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x080, 0x080).portr("P1_P2");
|
||||
map(0x090, 0x090).portr("SYSTEM");
|
||||
map(0x0f0, 0x0f0).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x100, 0x100).umask16(0x00ff).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
||||
map(0x160, 0x161).r(FUNC(vamphalf_state::eeprom_r));
|
||||
}
|
||||
|
||||
void vamphalf_state::coolmini_io(address_map &map)
|
||||
{
|
||||
map(0x200, 0x201).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x300, 0x301).portr("SYSTEM");
|
||||
map(0x304, 0x305).portr("P1_P2");
|
||||
map(0x308, 0x309).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x4c1, 0x4c1).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x541, 0x541).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x545, 0x545).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x7c0, 0x7c1).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x080, 0x080).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x0c0, 0x0c0).portr("SYSTEM");
|
||||
map(0x0c1, 0x0c1).portr("P1_P2");
|
||||
map(0x0c2, 0x0c2).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x130, 0x130).umask16(0x00ff).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x150, 0x150).umask16(0x00ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x151, 0x151).umask16(0x00ff).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x1f0, 0x1f0).r(FUNC(vamphalf_state::eeprom_r));
|
||||
}
|
||||
|
||||
void vamphalf_state::mrkicker_io(address_map &map)
|
||||
{
|
||||
coolmini_io(map);
|
||||
|
||||
map(0x000, 0x001).w(FUNC(vamphalf_state::mrkicker_oki_bank_w));
|
||||
map(0x000, 0x000).w(FUNC(vamphalf_state::mrkicker_oki_bank_w));
|
||||
}
|
||||
|
||||
void vamphalf_state::suplup_io(address_map &map)
|
||||
{
|
||||
map(0x020, 0x021).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x040, 0x041).portr("P1_P2");
|
||||
map(0x060, 0x061).portr("SYSTEM");
|
||||
map(0x081, 0x081).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x0c1, 0x0c1).w("ymsnd", FUNC(ym2151_device::address_w)).umask16(0x00ff);
|
||||
map(0x0c5, 0x0c5).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
|
||||
map(0x100, 0x101).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x008, 0x008).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x010, 0x010).portr("P1_P2");
|
||||
map(0x018, 0x018).portr("SYSTEM");
|
||||
map(0x020, 0x020).umask16(0x00ff).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x030, 0x030).umask16(0x00ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x031, 0x031).umask16(0x00ff).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x040, 0x040).r(FUNC(vamphalf_state::eeprom_r));
|
||||
}
|
||||
|
||||
void vamphalf_qdsp_state::wyvernwg_io(address_map &map)
|
||||
{
|
||||
map(0x1800, 0x1803).rw(FUNC(vamphalf_qdsp_state::wyvernwg_prot_r), FUNC(vamphalf_qdsp_state::wyvernwg_prot_w));
|
||||
map(0x2000, 0x2003).w(FUNC(vamphalf_state::flipscreen32_w));
|
||||
map(0x2800, 0x2803).portr("P1_P2");
|
||||
map(0x3000, 0x3003).portr("SYSTEM");
|
||||
map(0x5400, 0x5403).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32);
|
||||
map(0x7000, 0x7003).w(FUNC(vamphalf_state::eeprom32_w));
|
||||
map(0x7c00, 0x7c03).r(FUNC(vamphalf_state::eeprom32_r));
|
||||
map(0x0600, 0x0600).rw(FUNC(vamphalf_qdsp_state::wyvernwg_prot_r), FUNC(vamphalf_qdsp_state::wyvernwg_prot_w));
|
||||
map(0x0800, 0x0800).umask32(0x0000ffff).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x0a00, 0x0a00).portr("P1_P2");
|
||||
map(0x0c00, 0x0c00).portr("SYSTEM");
|
||||
map(0x1500, 0x1500).umask32(0x000000ff).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
||||
map(0x1c00, 0x1c00).umask32(0x0000ffff).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x1f00, 0x1f00).umask32(0x0000ffff).r(FUNC(vamphalf_state::eeprom_r));
|
||||
}
|
||||
|
||||
void vamphalf_nvram_state::finalgdr_io(address_map &map)
|
||||
{
|
||||
map(0x2400, 0x2403).r(FUNC(vamphalf_nvram_state::finalgdr_prot_r));
|
||||
map(0x2800, 0x2803).w(FUNC(vamphalf_nvram_state::finalgdr_backupram_bank_w));
|
||||
map(0x2c00, 0x2dff).rw(FUNC(vamphalf_nvram_state::finalgdr_backupram_r), FUNC(vamphalf_nvram_state::finalgdr_backupram_w));
|
||||
map(0x3000, 0x3007).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
|
||||
map(0x3402, 0x3402).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x3800, 0x3803).portr("P1_P2");
|
||||
map(0x3c00, 0x3c03).portr("SYSTEM");
|
||||
map(0x4400, 0x4403).r(FUNC(vamphalf_state::eeprom32_r));
|
||||
map(0x6000, 0x6003).nopr(); //?
|
||||
map(0x6000, 0x6003).w(FUNC(vamphalf_nvram_state::finalgdr_eeprom_w));
|
||||
map(0x6040, 0x6043).w(FUNC(vamphalf_nvram_state::finalgdr_prot_w));
|
||||
map(0x6060, 0x6063).w(FUNC(vamphalf_nvram_state::finalgdr_prize_w));
|
||||
//map(0x6080, 0x6083).w(FUNC(vamphalf_nvram_state::flipscreen32_w)); //?
|
||||
map(0x60a0, 0x60a3).w(FUNC(vamphalf_nvram_state::finalgdr_oki_bank_w));
|
||||
map(0x0900, 0x0900).r(FUNC(vamphalf_nvram_state::finalgdr_prot_r));
|
||||
map(0x0a00, 0x0a00).w(FUNC(vamphalf_nvram_state::finalgdr_backupram_bank_w));
|
||||
map(0x0b00, 0x0b7f).rw(FUNC(vamphalf_nvram_state::finalgdr_backupram_r), FUNC(vamphalf_nvram_state::finalgdr_backupram_w));
|
||||
map(0x0c00, 0x0c01).umask32(0x0000ff00).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
|
||||
map(0x0d00, 0x0d00).umask32(0x0000ff00).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x0e00, 0x0e00).portr("P1_P2");
|
||||
map(0x0f00, 0x0f00).portr("SYSTEM");
|
||||
map(0x1100, 0x1100).umask32(0x0000ffff).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x1800, 0x1800).nopr(); //?
|
||||
map(0x1800, 0x1800).w(FUNC(vamphalf_nvram_state::finalgdr_eeprom_w));
|
||||
map(0x1810, 0x1810).w(FUNC(vamphalf_nvram_state::finalgdr_prot_w));
|
||||
map(0x1818, 0x1818).w(FUNC(vamphalf_nvram_state::finalgdr_prize_w));
|
||||
//map(0x1820, 0x1820).w(FUNC(vamphalf_nvram_state::flipscreen32_w)); //?
|
||||
map(0x1828, 0x1828).w(FUNC(vamphalf_nvram_state::finalgdr_oki_bank_w));
|
||||
}
|
||||
|
||||
void vamphalf_nvram_state::mrkickera_io(address_map &map)
|
||||
{
|
||||
map(0x2400, 0x2403).r(FUNC(vamphalf_state::eeprom32_r));
|
||||
map(0x4000, 0x4003).nopr(); //?
|
||||
map(0x4000, 0x4003).w(FUNC(vamphalf_nvram_state::finalgdr_eeprom_w));
|
||||
map(0x4040, 0x4043).w(FUNC(vamphalf_nvram_state::finalgdr_prot_w));
|
||||
map(0x4084, 0x4087).nopw(); //?
|
||||
map(0x40a0, 0x40a3).w(FUNC(vamphalf_nvram_state::finalgdr_oki_bank_w));
|
||||
map(0x6400, 0x6403).r(FUNC(vamphalf_nvram_state::finalgdr_prot_r));
|
||||
map(0x7000, 0x7007).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
|
||||
map(0x7402, 0x7402).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x7800, 0x7803).portr("P1_P2");
|
||||
map(0x7c00, 0x7c03).portr("SYSTEM");
|
||||
map(0x0900, 0x0900).umask32(0x0000ffff).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x1000, 0x1000).nopr(); //?
|
||||
map(0x1000, 0x1000).w(FUNC(vamphalf_nvram_state::finalgdr_eeprom_w));
|
||||
map(0x1010, 0x1010).w(FUNC(vamphalf_nvram_state::finalgdr_prot_w));
|
||||
map(0x1021, 0x1021).nopw(); //?
|
||||
map(0x1028, 0x1028).w(FUNC(vamphalf_nvram_state::finalgdr_oki_bank_w));
|
||||
map(0x1900, 0x1900).r(FUNC(vamphalf_nvram_state::finalgdr_prot_r));
|
||||
map(0x1c00, 0x1c01).umask32(0x0000ff00).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
|
||||
map(0x1d00, 0x1d00).umask32(0x0000ff00).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x1e00, 0x1e00).portr("P1_P2");
|
||||
map(0x1f00, 0x1f00).portr("SYSTEM");
|
||||
}
|
||||
|
||||
void vamphalf_state::jmpbreak_io(address_map &map)
|
||||
{
|
||||
map(0x0c0, 0x0c1).noprw(); // ?
|
||||
map(0x100, 0x101).nopw(); // ?
|
||||
map(0x240, 0x241).portr("P1_P2");
|
||||
map(0x280, 0x281).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x2c0, 0x2c1).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x441, 0x441).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x540, 0x541).portr("SYSTEM");
|
||||
map(0x681, 0x681).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x685, 0x685).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x030, 0x030).noprw(); // ?
|
||||
map(0x040, 0x040).nopw(); // ?
|
||||
map(0x090, 0x090).portr("P1_P2");
|
||||
map(0x0a0, 0x0a0).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x0b0, 0x0b0).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x110, 0x110).umask16(0x00ff).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x150, 0x150).portr("SYSTEM");
|
||||
map(0x1a0, 0x1a0).umask16(0x00ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x1a1, 0x1a1).umask16(0x00ff).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
}
|
||||
|
||||
void vamphalf_state::worldadv_io(address_map &map)
|
||||
{
|
||||
map(0x180, 0x181).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x280, 0x281).portr("P1_P2");
|
||||
map(0x340, 0x341).portr("SYSTEM");
|
||||
map(0x641, 0x641).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x701, 0x701).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x705, 0x705).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x780, 0x781).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x060, 0x060).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x0a0, 0x0a0).portr("P1_P2");
|
||||
map(0x0d0, 0x0d0).portr("SYSTEM");
|
||||
map(0x190, 0x190).umask16(0x00ff).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x1c0, 0x1c0).umask16(0x00ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x1c1, 0x1c1).umask16(0x00ff).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x1e0, 0x1e0).r(FUNC(vamphalf_state::eeprom_r));
|
||||
}
|
||||
|
||||
void vamphalf_state::solitaire_io(address_map &map)
|
||||
{
|
||||
map(0x000, 0x001).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x0c0, 0x0c1).portr("P1_P2");
|
||||
map(0x141, 0x141).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x440, 0x441).portr("SYSTEM");
|
||||
// map(0x504, 0x50b) // lamps
|
||||
map(0x581, 0x581).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x585, 0x585).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x680, 0x681).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x000, 0x000).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x030, 0x030).portr("P1_P2");
|
||||
map(0x050, 0x050).umask16(0x00ff).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x110, 0x110).portr("SYSTEM");
|
||||
//map(0x141, 0x142) // lamps
|
||||
map(0x160, 0x160).umask16(0x00ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x161, 0x161).umask16(0x00ff).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x1a0, 0x1a0).w(FUNC(vamphalf_state::eeprom_w));
|
||||
}
|
||||
|
||||
void vamphalf_state::mrdig_io(address_map &map)
|
||||
{
|
||||
map(0x081, 0x081).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x0c1, 0x0c1).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x0c5, 0x0c5).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x180, 0x181).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x280, 0x281).portr("SYSTEM");
|
||||
map(0x3c0, 0x3c1).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x500, 0x501).portr("P1_P2");
|
||||
map(0x020, 0x020).umask16(0x00ff).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x030, 0x030).umask16(0x00ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x031, 0x031).umask16(0x00ff).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x060, 0x060).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x0a0, 0x0a0).portr("SYSTEM");
|
||||
map(0x0f0, 0x0f0).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x140, 0x140).portr("P1_P2");
|
||||
}
|
||||
|
||||
void vamphalf_state::aoh_map(address_map &map)
|
||||
@ -672,39 +648,39 @@ void vamphalf_state::aoh_map(address_map &map)
|
||||
|
||||
void vamphalf_state::aoh_io(address_map &map)
|
||||
{
|
||||
map(0x0480, 0x0483).w(FUNC(vamphalf_state::eeprom32_w));
|
||||
map(0x0622, 0x0622).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x0662, 0x0662).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x0640, 0x0647).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
|
||||
map(0x0680, 0x0683).w(FUNC(vamphalf_state::aoh_oki_bank_w));
|
||||
map(0x0120, 0x0120).umask32(0x0000ffff).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x0188, 0x0188).umask32(0x0000ff00).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x0190, 0x0191).umask32(0x0000ff00).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
|
||||
map(0x0198, 0x0198).umask32(0x0000ff00).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x01a0, 0x01a0).umask32(0x0000ffff).w(FUNC(vamphalf_state::mrkicker_oki_bank_w));
|
||||
}
|
||||
|
||||
void vamphalf_state::boonggab_io(address_map &map)
|
||||
{
|
||||
map(0x0c0, 0x0c1).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x200, 0x201).noprw(); // seems unused
|
||||
map(0x300, 0x301).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x400, 0x401).portr("SYSTEM");
|
||||
map(0x404, 0x405).portr("P1_P2");
|
||||
map(0x408, 0x409).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x410, 0x411).w(FUNC(vamphalf_state::boonggab_prize_w));
|
||||
map(0x414, 0x41b).w(FUNC(vamphalf_state::boonggab_lamps_w));
|
||||
map(0x600, 0x601).w(FUNC(vamphalf_state::boonggab_oki_bank_w));
|
||||
map(0x701, 0x701).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x741, 0x741).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x745, 0x745).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
map(0x030, 0x030).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x080, 0x080).noprw(); // seems unused
|
||||
map(0x0c0, 0x0c0).w(FUNC(vamphalf_state::flipscreen_w));
|
||||
map(0x100, 0x100).portr("SYSTEM");
|
||||
map(0x101, 0x101).portr("P1_P2");
|
||||
map(0x102, 0x102).w(FUNC(vamphalf_state::eeprom_w));
|
||||
map(0x104, 0x104).w(FUNC(vamphalf_state::boonggab_prize_w));
|
||||
map(0x105, 0x106).w(FUNC(vamphalf_state::boonggab_lamps_w));
|
||||
map(0x180, 0x180).w(FUNC(vamphalf_state::boonggab_oki_bank_w));
|
||||
map(0x1c0, 0x1c0).umask16(0x00ff).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x1d0, 0x1d0).umask16(0x00ff).w("ymsnd", FUNC(ym2151_device::address_w));
|
||||
map(0x1d1, 0x1d1).umask16(0x00ff).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
|
||||
}
|
||||
|
||||
void vamphalf_qdsp_state::yorijori_io(address_map &map)
|
||||
{
|
||||
map(0x2400, 0x2403).r(FUNC(vamphalf_qdsp_state::finalgdr_prot_r));
|
||||
map(0x3400, 0x3403).portr("P1_P2");
|
||||
map(0x3800, 0x3803).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x0000ff00).cswidth(32);
|
||||
map(0x3c00, 0x3c03).portr("SYSTEM");
|
||||
map(0x4400, 0x4403).r(FUNC(vamphalf_state::eeprom32_r));
|
||||
map(0x6000, 0x6003).nopr(); //?
|
||||
map(0x6000, 0x6003).w(FUNC(vamphalf_qdsp_state::yorijori_eeprom_w));
|
||||
map(0x6040, 0x6043).w(FUNC(vamphalf_qdsp_state::finalgdr_prot_w));
|
||||
map(0x0900, 0x0900).r(FUNC(vamphalf_qdsp_state::finalgdr_prot_r));
|
||||
map(0x0d00, 0x0d00).portr("P1_P2");
|
||||
map(0x0e00, 0x0e00).umask32(0x0000ff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
||||
map(0x0f00, 0x0f00).portr("SYSTEM");
|
||||
map(0x1100, 0x1100).umask32(0x0000ffff).r(FUNC(vamphalf_state::eeprom_r));
|
||||
map(0x1800, 0x1800).nopr(); //?
|
||||
map(0x1800, 0x1800).w(FUNC(vamphalf_qdsp_state::yorijori_eeprom_w));
|
||||
map(0x1810, 0x1810).w(FUNC(vamphalf_qdsp_state::finalgdr_prot_w));
|
||||
}
|
||||
|
||||
void vamphalf_state::banked_oki_map(address_map &map)
|
||||
|
@ -353,13 +353,13 @@ void gstream_state::gstream_oki_4040_w(uint32_t data)
|
||||
|
||||
void gstream_state::gstream_io(address_map &map)
|
||||
{
|
||||
map(0x4000, 0x4003).portr("IN0");
|
||||
map(0x4010, 0x4013).portr("IN1");
|
||||
map(0x4020, 0x4023).portr("IN2"); // extra coin switches etc
|
||||
map(0x4030, 0x4033).w(FUNC(gstream_state::gstream_oki_banking_w)); // oki banking
|
||||
map(0x4040, 0x4043).w(FUNC(gstream_state::gstream_oki_4040_w)); // some clocking?
|
||||
map(0x4053, 0x4053).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // music and samples
|
||||
map(0x4063, 0x4063).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // music and samples
|
||||
map(0x1000, 0x1000).portr("IN0");
|
||||
map(0x1004, 0x1004).portr("IN1");
|
||||
map(0x1008, 0x1008).portr("IN2"); // extra coin switches etc
|
||||
map(0x100c, 0x100c).w(FUNC(gstream_state::gstream_oki_banking_w)); // oki banking
|
||||
map(0x1010, 0x1010).w(FUNC(gstream_state::gstream_oki_4040_w)); // some clocking?
|
||||
map(0x1014, 0x1014).umask32(0x000000ff).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // music and samples
|
||||
map(0x1018, 0x1018).umask32(0x000000ff).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // music and samples
|
||||
}
|
||||
|
||||
|
||||
@ -391,12 +391,12 @@ void gstream_state::x2222_sound_w(uint32_t data)
|
||||
|
||||
void gstream_state::x2222_io(address_map &map)
|
||||
{
|
||||
map(0x4000, 0x4003).portr("P1");
|
||||
map(0x4004, 0x4007).portr("P2");
|
||||
map(0x4008, 0x400b).portr("SYS");
|
||||
map(0x4010, 0x4013).portr("DSW");
|
||||
map(0x4028, 0x402b).w(FUNC(gstream_state::x2222_sound_w));
|
||||
map(0x4034, 0x4037).portr("IN4");
|
||||
map(0x1000, 0x1000).portr("P1");
|
||||
map(0x1001, 0x1001).portr("P2");
|
||||
map(0x1002, 0x1002).portr("SYS");
|
||||
map(0x1004, 0x1004).portr("DSW");
|
||||
map(0x100a, 0x100a).w(FUNC(gstream_state::x2222_sound_w));
|
||||
map(0x100d, 0x100d).portr("IN4");
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( gstream )
|
||||
|
Loading…
Reference in New Issue
Block a user