mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
Tahg is a genius (nw)
This commit is contained in:
parent
064c4bad11
commit
e960f41105
@ -261,14 +261,14 @@ void xavix2_device::execute_run()
|
||||
case 0x4c: case 0x4d: m_program->write_word(m_r[r2(opcode)] + val11s(opcode), m_r[r1(opcode)]); break;
|
||||
case 0x4e: case 0x4f: m_program->write_dword(m_r[r2(opcode)] + val11s(opcode), m_r[r1(opcode)]); break;
|
||||
|
||||
case 0x50: case 0x51: m_r[r1(opcode)] = snz((s8)m_program->read_byte(val14u(opcode))); break;
|
||||
case 0x52: case 0x53: m_r[r1(opcode)] = snz(m_program->read_byte(val14u(opcode))); break;
|
||||
case 0x54: case 0x55: m_r[r1(opcode)] = snz((s16)m_program->read_word(val14u(opcode))); break;
|
||||
case 0x56: case 0x57: m_r[r1(opcode)] = snz(m_program->read_word(val14u(opcode))); break;
|
||||
case 0x58: case 0x59: m_r[r1(opcode)] = snz(m_program->read_dword(val14u(opcode))); break;
|
||||
case 0x5a: case 0x5b: m_program->write_byte(val14u(opcode), m_r[r1(opcode)]); break;
|
||||
case 0x5c: case 0x5d: m_program->write_word(val14u(opcode), m_r[r1(opcode)]); break;
|
||||
case 0x5e: case 0x5f: m_program->write_dword(val14u(opcode), m_r[r1(opcode)]); break;
|
||||
case 0x50: case 0x51: m_r[r1(opcode)] = snz((s8)m_program->read_byte(val14s(opcode))); break;
|
||||
case 0x52: case 0x53: m_r[r1(opcode)] = snz(m_program->read_byte(val14s(opcode))); break;
|
||||
case 0x54: case 0x55: m_r[r1(opcode)] = snz((s16)m_program->read_word(val14s(opcode))); break;
|
||||
case 0x56: case 0x57: m_r[r1(opcode)] = snz(m_program->read_word(val14s(opcode))); break;
|
||||
case 0x58: case 0x59: m_r[r1(opcode)] = snz(m_program->read_dword(val14s(opcode))); break;
|
||||
case 0x5a: case 0x5b: m_program->write_byte(val14s(opcode), m_r[r1(opcode)]); break;
|
||||
case 0x5c: case 0x5d: m_program->write_word(val14s(opcode), m_r[r1(opcode)]); break;
|
||||
case 0x5e: case 0x5f: m_program->write_dword(val14s(opcode), m_r[r1(opcode)]); break;
|
||||
|
||||
case 0x60: case 0x61: m_r[r1(opcode)] = do_add(m_r[r1(opcode)], val6s(opcode)); break;
|
||||
case 0x62: case 0x63: m_r[r1(opcode)] = val6s(opcode); break;
|
||||
|
@ -77,6 +77,15 @@ std::string xavix2_disassembler::val14s()
|
||||
return util::string_format("%04x", r);
|
||||
}
|
||||
|
||||
std::string xavix2_disassembler::val14sa()
|
||||
{
|
||||
u16 r = (m_opcode >> 8) & 0x3fff;
|
||||
if(r & 0x2000)
|
||||
return util::string_format("%08x", r - 0x4000);
|
||||
else
|
||||
return util::string_format("%04x", r);
|
||||
}
|
||||
|
||||
std::string xavix2_disassembler::val11u()
|
||||
{
|
||||
return util::string_format("%03x", (m_opcode >> 8) & 0x7ff);
|
||||
@ -233,14 +242,14 @@ offs_t xavix2_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
|
||||
case 0x4c: case 0x4d: util::stream_format(stream, "(%s%s).w = %s", r2(), off11s(), r1()); break;
|
||||
case 0x4e: case 0x4f: util::stream_format(stream, "(%s%s).l = %s", r2(), off11s(), r1()); break;
|
||||
|
||||
case 0x50: case 0x51: util::stream_format(stream, "%s = %s.bs", r1(), val14u()); break;
|
||||
case 0x52: case 0x53: util::stream_format(stream, "%s = %s.bu", r1(), val14u()); break;
|
||||
case 0x54: case 0x55: util::stream_format(stream, "%s = %s.ws", r1(), val14u()); break;
|
||||
case 0x56: case 0x57: util::stream_format(stream, "%s = %s.wu", r1(), val14u()); break;
|
||||
case 0x58: case 0x59: util::stream_format(stream, "%s = %s.l", r1(), val14u()); break;
|
||||
case 0x5a: case 0x5b: util::stream_format(stream, "%s.b = %s", val14u(), r1()); break;
|
||||
case 0x5c: case 0x5d: util::stream_format(stream, "%s.w = %s", val14u(), r1()); break;
|
||||
case 0x5e: case 0x5f: util::stream_format(stream, "%s.l = %s", val14u(), r1()); break;
|
||||
case 0x50: case 0x51: util::stream_format(stream, "%s = %s.bs", r1(), val14sa()); break;
|
||||
case 0x52: case 0x53: util::stream_format(stream, "%s = %s.bu", r1(), val14sa()); break;
|
||||
case 0x54: case 0x55: util::stream_format(stream, "%s = %s.ws", r1(), val14sa()); break;
|
||||
case 0x56: case 0x57: util::stream_format(stream, "%s = %s.wu", r1(), val14sa()); break;
|
||||
case 0x58: case 0x59: util::stream_format(stream, "%s = %s.l", r1(), val14sa()); break;
|
||||
case 0x5a: case 0x5b: util::stream_format(stream, "%s.b = %s", val14sa(), r1()); break;
|
||||
case 0x5c: case 0x5d: util::stream_format(stream, "%s.w = %s", val14sa(), r1()); break;
|
||||
case 0x5e: case 0x5f: util::stream_format(stream, "%s.l = %s", val14sa(), r1()); break;
|
||||
|
||||
case 0x60: case 0x61: util::stream_format(stream, "%s += %s", r1(), val6s()); break;
|
||||
case 0x62: case 0x63: util::stream_format(stream, "%s = %s", r1(), val6s()); break;
|
||||
|
@ -33,6 +33,7 @@ private:
|
||||
std::string val14h();
|
||||
std::string val14u();
|
||||
std::string val14s();
|
||||
std::string val14sa();
|
||||
std::string val11u();
|
||||
std::string val6u();
|
||||
std::string val6s();
|
||||
|
@ -120,7 +120,7 @@ void xavix2_state::dma_control_w(u8 data)
|
||||
m_dma_src, m_dma_dst, m_dma_count,
|
||||
machine().describe_context());
|
||||
u32 sadr = m_dma_src | (data == 3 ? 0xc0000000 : 0x40000000);
|
||||
u32 dadr = m_dma_dst | 0xc0000000;
|
||||
u32 dadr = m_dma_dst;
|
||||
auto &prg = m_maincpu->space(AS_PROGRAM);
|
||||
for(u32 i=0; i != m_dma_count; i++)
|
||||
prg.write_byte(dadr + i, prg.read_byte(sadr + i));
|
||||
@ -153,27 +153,23 @@ INTERRUPT_GEN_MEMBER(xavix2_state::vblank_irq)
|
||||
|
||||
void xavix2_state::mem(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x00001fff).ram().share("part1");
|
||||
|
||||
map(0x00002000, 0x00002003).w(FUNC(xavix2_state::dma_src_w));
|
||||
map(0x00002004, 0x00002005).w(FUNC(xavix2_state::dma_dst_w));
|
||||
map(0x00002008, 0x00002009).w(FUNC(xavix2_state::dma_count_w));
|
||||
map(0x0000200c, 0x0000200c).w(FUNC(xavix2_state::dma_control_w));
|
||||
map(0x00002010, 0x00002010).rw(FUNC(xavix2_state::dma_status_r), FUNC(xavix2_state::dma_status_w));
|
||||
|
||||
map(0x00002630, 0x00002631).lr16(NAME([]() { return 0x210; }));
|
||||
map(0x00002632, 0x00002633).lr16(NAME([]() { return 0x210; }));
|
||||
map(0x00003c00, 0x00003c00).r(FUNC(xavix2_state::irq_level_r));
|
||||
|
||||
map(0x00004000, 0x0000ffff).ram().share("part2");
|
||||
map(0x00000000, 0x0000ffff).ram().share("mainram");
|
||||
map(0x00010000, 0x00ffffff).rom().region("maincpu", 0x010000);
|
||||
|
||||
map(0x40000000, 0x40ffffff).rom().region("maincpu", 0);
|
||||
|
||||
map(0xc0000000, 0xc0001fff).ram().share("part1");
|
||||
map(0xc0002000, 0xc0003fff).ram();
|
||||
map(0xc0004000, 0xc000ffff).ram().share("part2");
|
||||
map(0xc0000000, 0xc000ffff).ram().share("mainram");
|
||||
map(0xc0010000, 0xc001ffff).ram();
|
||||
|
||||
map(0xffffe000, 0xffffe003).w(FUNC(xavix2_state::dma_src_w));
|
||||
map(0xffffe004, 0xffffe005).w(FUNC(xavix2_state::dma_dst_w));
|
||||
map(0xffffe008, 0xffffe009).w(FUNC(xavix2_state::dma_count_w));
|
||||
map(0xffffe00c, 0xffffe00c).w(FUNC(xavix2_state::dma_control_w));
|
||||
map(0xffffe010, 0xffffe010).rw(FUNC(xavix2_state::dma_status_r), FUNC(xavix2_state::dma_status_w));
|
||||
|
||||
map(0xffffe630, 0xffffe631).lr16(NAME([]() { return 0x210; }));
|
||||
map(0xffffe632, 0xffffe633).lr16(NAME([]() { return 0x210; }));
|
||||
map(0xfffffc00, 0xfffffc00).r(FUNC(xavix2_state::irq_level_r));
|
||||
}
|
||||
|
||||
uint32_t xavix2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
|
Loading…
Reference in New Issue
Block a user