From 441d067878de7792725456ad206781d613826afb Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 17 Oct 2018 21:35:39 +0100 Subject: XaviX - get ttv_mx to show some screens (nw) (#4153) * on review of code I'm fairly sure these work with the accumulator (nw) * get ttv_mx to show some screens (nw) * oops (nw) * more ops (nw) * (nw) * help xavtenni along (nw) * less logging (nw) --- src/devices/cpu/m6502/dxavix2000.lst | 12 ++-- src/devices/cpu/m6502/oxavix2000.lst | 121 ++++++++++++++++++++--------------- src/devices/cpu/m6502/xavix.cpp | 2 +- src/devices/cpu/m6502/xavix2000.cpp | 46 ++++++++++++- src/devices/cpu/m6502/xavix2000.h | 22 +++++-- src/mame/audio/xavix.cpp | 45 +++++++------ src/mame/machine/xavix.cpp | 1 + 7 files changed, 162 insertions(+), 87 deletions(-) diff --git a/src/devices/cpu/m6502/dxavix2000.lst b/src/devices/cpu/m6502/dxavix2000.lst index 5d46691b07b..4c4a923d2c0 100644 --- a/src/devices/cpu/m6502/dxavix2000.lst +++ b/src/devices/cpu/m6502/dxavix2000.lst @@ -8,13 +8,13 @@ bmi_rel and_idy plx_imp andpa_imp bit_zpx and_zpx rol_zpx rti_xav_imp eor_idx nop_imp eorl0_acc nop_imp eor_zpg lsr_zpg eorl1_acc pha_imp eor_imm lsr_acc eorl2_acc jmp_adr eor_aba lsr_aba eorl3_acc bvc_rel eor_idy phy_imp eorpa_imp nop_imp eor_zpx lsr_zpx eorpb_imp cli_imp eor_aby nop_imp spa1_acc callf_aba eor_abx lsr_abx spb1_acc rts_imp adc_idx nop_imp adcl0_acc nop_imp adc_zpg ror_zpg adcl1_acc pla_imp adc_imm ror_acc adcl2_acc jmp_ind adc_aba ror_aba adcl3_acc -bvs_rel adc_idy ply_imp adcpa_imp nop_imp adc_zpx ror_zpx adcpb_imp sei_imp adc_aby nop_imp lpa1_acc callf_ind adc_abx ror_abx lpb1_acc +bvs_rel adc_idy ply_imp adcpa_imp nop_imp adc_zpx ror_zpx adcpb_imp sei_imp adc_aby nop_imp lpa1_acc jmpf_ind adc_abx ror_abx lpb1_acc retf_imp sta_idx stz_zpg stal0_acc sty_zpg sta_zpg stx_zpg stal1_acc dey_imp sev_imp txa_imp stal2_acc sty_aba sta_aba stx_aba stal3_acc bcc_rel sta_idy stz_aba stapa_imp sty_zpx sta_zpx stx_zpy stapb_imp tya_imp sta_aby txs_imp spa2_acc sty_abx sta_abx stx_aby spb2_acc ldy_imm lda_idx ldx_imm ldal0_acc ldy_zpg lda_zpg ldx_zpg ldal1_acc tay_imp lda_imm tax_imp ldal2_acc ldy_aba lda_aba ldx_aba ldal3_acc -bcs_rel lda_idy clrl_imp ldapa_imp ldy_zpx lda_zpx ldx_zpy ldapb_imp clv_imp lda_aby tsx_imp lpa2_acc ldy_abx lda_abx ldx_aby lpb2_acc -cpy_imm cmp_idx decl_imp cmpl0_acc cpy_zpg cmp_zpg dec_zpg cmpl1_acc iny_imp cmp_imm dex_imp cmpl2_acc cpy_aba cmp_aba dec_aba cmpl3_acc -bne_rel cmp_idy notl_imp cmppa_imp nop_imp cmp_zpx dec_zpx cmppb_imp cld_imp cmp_aby nop_imp decpa_imp nop_imp cmp_abx dec_abx decpb_imp -cpx_imm sbc_idx incl_imp sbcl0_acc cpx_zpg sbc_zpg inc_zpg sbcl1_acc inx_imp sbc_imm nop_imp sbcl2_acc cpx_aba sbc_aba inc_aba sbcl3_acc -beq_rel sbc_idy negl_imp sbcpa_imp nop_imp sbc_zpx inc_zpx sbcpb_imp sed_imp sbc_aby nop_imp incpa_imp nop_imp sbc_abx inc_abx incpb_imp +bcs_rel lda_idy clr_acc ldapa_imp ldy_zpx lda_zpx ldx_zpy ldapb_imp clv_imp lda_aby tsx_imp lpa2_acc ldy_abx lda_abx ldx_aby lpb2_acc +cpy_imm cmp_idx dec_acc cmpl0_acc cpy_zpg cmp_zpg dec_zpg cmpl1_acc iny_imp cmp_imm dex_imp cmpl2_acc cpy_aba cmp_aba dec_aba cmpl3_acc +bne_rel cmp_idy not_acc cmppa_imp nop_imp cmp_zpx dec_zpx cmppb_imp cld_imp cmp_aby nop_imp decpa_imp nop_imp cmp_abx dec_abx decpb_imp +cpx_imm sbc_idx inc_acc sbcl0_acc cpx_zpg sbc_zpg inc_zpg sbcl1_acc inx_imp sbc_imm nop_imp sbcl2_acc cpx_aba sbc_aba inc_aba sbcl3_acc +beq_rel sbc_idy neg_acc sbcpa_imp nop_imp sbc_zpx inc_zpx sbcpb_imp sed_imp sbc_aby nop_imp incpa_imp nop_imp sbc_abx inc_abx incpb_imp reset diff --git a/src/devices/cpu/m6502/oxavix2000.lst b/src/devices/cpu/m6502/oxavix2000.lst index 31bce5ff053..441721ab642 100644 --- a/src/devices/cpu/m6502/oxavix2000.lst +++ b/src/devices/cpu/m6502/oxavix2000.lst @@ -30,30 +30,34 @@ ply_imp set_nz(Y); prefetch(); -clrl_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); +clr_acc read_pc_noinc(); - m_l = 0; + A = 0; + set_nz(A); prefetch(); -decl_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); +dec_acc read_pc_noinc(); + A--; + set_nz(A); prefetch(); -notl_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); +not_acc read_pc_noinc(); + A = A ^ 0xff; + set_nz(A); prefetch(); -incl_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); +inc_acc read_pc_noinc(); + A++; + set_nz(A); prefetch(); -negl_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); +neg_acc read_pc_noinc(); + A = (0x00 - A) & 0xff; + set_nz(A); prefetch(); oral0_acc @@ -62,8 +66,8 @@ oral0_acc prefetch(); oral1_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); + A |= (m_l & 0x0000ff00) >> 8; + set_nz(A); prefetch(); oral2_acc @@ -97,8 +101,8 @@ andl3_acc prefetch(); eorl0_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); + A ^= (m_l & 0x000000ff) >> 0; + set_nz(A); prefetch(); eorl1_acc @@ -137,43 +141,43 @@ adcl3_acc prefetch(); stal0_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_l = (m_l & 0xffffff00) | (A & 0xff); // TODO: flags prefetch(); stal1_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_l = (m_l & 0xffff00ff) | ((A & 0xff) << 8); // TODO: flags prefetch(); stal2_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_l = (m_l & 0xff00ffff) | ((A & 0xff) << 16); // TODO: flags prefetch(); stal3_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_l = (m_l & 0x00ffffff) | ((A & 0xff) << 24); // TODO: flags prefetch(); ldal0_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_l & 0x000000ff) >> 0; // TODO: flags prefetch(); ldal1_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_l & 0x0000ff00) >> 8; // TODO: flags prefetch(); ldal2_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_l & 0x00ff0000) >> 16; // TODO: flags prefetch(); ldal3_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_l & 0xff000000) >> 24; // TODO: flags prefetch(); cmpl0_acc @@ -217,68 +221,69 @@ sbcl3_acc prefetch(); spa0_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_pa = (m_pa & 0xffff00) | A; // TODO: Flags? prefetch(); lpa0_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_pa & 0x0000ff) >> 0; // TODO: Flags? prefetch(); spa1_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_pa = (m_pa & 0xff00ff) | (A << 8); // TODO: Flags? prefetch(); lpa1_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_pa & 0x00ff00) >> 8; // TODO: Flags? prefetch(); spa2_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_pa = (m_pa & 0x00ffff) | (A << 16); // TODO: Flags? prefetch(); lpa2_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_pa & 0xff0000) >> 16; // TODO: Flags? prefetch(); spb0_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_pb = (m_pb & 0xffff00) | A; // TODO: Flags? prefetch(); lpb0_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_pb & 0x0000ff) >> 0; // TODO: Flags? prefetch(); spb1_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_pb = (m_pb & 0xff00ff) | (A << 8); // TODO: Flags? prefetch(); lpb1_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_pb & 0x00ff00) >> 8; // TODO: Flags? prefetch(); spb2_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_pb = (m_pb & 0x00ffff) | (A << 16); // TODO: Flags? prefetch(); lpb2_acc - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + A = (m_pb & 0xff0000) >> 16; // TODO: Flags? prefetch(); incpa_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); read_pc_noinc(); + m_pa++; + set_nz(m_pa&0xff); // startup code seems to require flag to set if low byte is 0x00? prefetch(); incpb_imp @@ -312,13 +317,17 @@ eorpa_imp prefetch(); adcpa_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); + TMP = m_databank; // TODO: Flags, how does bank boundary crossing get handled? + m_databank = (m_pa & 0xff0000)>>16; + do_adc(read((m_pa&0xffff)+Y)); + m_databank = TMP; prefetch(); stapa_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); + TMP = m_databank; // TODO: Flags, how does bank boundary crossing get handled? + m_databank = (m_pa & 0xff0000)>>16; + write((m_pa&0xffff)+Y, A); + m_databank = TMP; prefetch(); ldapa_imp @@ -332,8 +341,10 @@ cmppa_imp prefetch(); sbcpa_imp - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); + TMP = m_databank; // TODO: Flags, how does bank boundary crossing get handled? + m_databank = (m_pa & 0xff0000)>>16; + do_sbc(read((m_pa&0xffff)+Y)); + m_databank = TMP; prefetch(); orapb_imp @@ -387,13 +398,14 @@ sty_abx prefetch(); stz_zpg - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); + TMP = read_pc(); + write(TMP, 0x00); prefetch(); stz_aba - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); + TMP = read_pc(); + TMP = set_h(TMP, read_pc()); + write(TMP, 0x00); prefetch(); bit_zpx @@ -407,8 +419,11 @@ bit_abx prefetch(); bit_imm - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); + TMP = read_pc(); + if(A & TMP) + P &= ~F_Z; + else + P |= F_Z; prefetch(); asr_zpg @@ -451,7 +466,11 @@ callf_aba read_pc_noinc(); prefetch(); -callf_ind - fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state); - read_pc_noinc(); +jmpf_ind + TMP = read_pc(); + TMP = set_h(TMP, read_pc()); + PC = read(TMP); + PC = set_h(PC, read(set_l(TMP, TMP+1))); + TMP2 = read(TMP+2); + set_codebank(TMP2); prefetch(); diff --git a/src/devices/cpu/m6502/xavix.cpp b/src/devices/cpu/m6502/xavix.cpp index bc805165390..266976e4d40 100644 --- a/src/devices/cpu/m6502/xavix.cpp +++ b/src/devices/cpu/m6502/xavix.cpp @@ -159,7 +159,7 @@ uint8_t xavix_device::mi_xavix_nd::read_arg(uint16_t adr) return program->read_byte(base->adr_with_codebank(adr)); } -inline void xavix_device::set_codebank(uint8_t bank) +void xavix_device::set_codebank(uint8_t bank) { // space().write_byte(0xfe, bank); m_codebank = bank; diff --git a/src/devices/cpu/m6502/xavix2000.cpp b/src/devices/cpu/m6502/xavix2000.cpp index 17c20b3376d..8580867d3ed 100644 --- a/src/devices/cpu/m6502/xavix2000.cpp +++ b/src/devices/cpu/m6502/xavix2000.cpp @@ -31,13 +31,13 @@ a is 80 when entering here? 01BC37: A0 3F ldy #$3f - 01BC39: B2 clrl // clear 32-bit 'long' register (part of it might be the accumulator?) (or clear accumulator?) + 01BC39: B2 clr a // clear acculuator 01BC3A: 1B spa0 a // store 'accumulator' into byte 0 of PA 'address' register 01BC3B: 9B spa2 a // store 'accumulator' into byte 2 of PA 'address' register -- loop point 2 01BC3C: 98 tya // y -> a (3f on first run of loop) - 01BC3D: 5B spa1 a // store 'accumulator' into byte 1 of PA 'address' register (803f80 on first loop? 003f00 if we clear accumulator with clrl instead) maybe should be 3f0000 ? (would make more sense for a ram test) + 01BC3D: 5B spa1 a // store 'accumulator' into byte 1 of PA 'address' register (003f00 on first loop?) -- loop point 1 01BC3E: A3 ldal0 a // read byte 0 of 32-bit 'long' register into accumulator @@ -107,6 +107,14 @@ xavix2000_device::xavix2000_device(const machine_config &mconfig, const char *ta sprogram_config.m_logaddr_width = 24; } +void xavix2000_device::device_start() +{ + xavix_device::device_start(); + + state_add(SXAVIX_L, "L", m_l).callimport().formatstr("%8s");; + state_add(SXAVIX_PA, "PA", m_pa).callimport().formatstr("%8s"); + state_add(SXAVIX_PB, "PB", m_pb).callimport().formatstr("%8s"); +} std::unique_ptr xavix2000_device::create_disassembler() { @@ -114,4 +122,38 @@ std::unique_ptr xavix2000_device::create_disassembler() } +void xavix2000_device::state_import(const device_state_entry &entry) +{ + xavix_device::state_import(entry); + + switch(entry.index()) + { + case SXAVIX_L: + break; + case SXAVIX_PA: + break; + case SXAVIX_PB: + break; + } +} + +void xavix2000_device::state_string_export(const device_state_entry &entry, std::string &str) const +{ + xavix_device::state_string_export(entry, str); + + switch(entry.index()) + { + case SXAVIX_L: + str = string_format("%08x", m_l); + break; + case SXAVIX_PA: + str = string_format("%08x", m_pa); + break; + case SXAVIX_PB: + str = string_format("%08x", m_pb); + break; + } +} + + #include "cpu/m6502/xavix2000.hxx" diff --git a/src/devices/cpu/m6502/xavix2000.h b/src/devices/cpu/m6502/xavix2000.h index 37eea1373e6..de8c603f2fb 100644 --- a/src/devices/cpu/m6502/xavix2000.h +++ b/src/devices/cpu/m6502/xavix2000.h @@ -23,6 +23,10 @@ public: virtual void do_exec_full() override; virtual void do_exec_partial() override; + virtual void device_start() override; + virtual void state_import(const device_state_entry &entry) override; + virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; + #define O(o) void o ## _full(); void o ## _partial() // Super XaviX opcodes @@ -32,11 +36,11 @@ public: O(plx_imp); // 32 O(ply_imp); // 72 - O(clrl_imp); // b2 - O(decl_imp); // c2 - O(notl_imp); // d2 - O(incl_imp); // e2 - O(negl_imp); // f2 + O(clr_acc); // b2 + O(dec_acc); // c2 + O(not_acc); // d2 + O(inc_acc); // e2 + O(neg_acc); // f2 O(oral0_acc); O(oral1_acc); @@ -136,7 +140,7 @@ public: O(sev_imp); O(callf_aba); - O(callf_ind); + O(jmpf_ind); #undef O @@ -146,6 +150,12 @@ public: }; +enum { + SXAVIX_L = M6502_IR+1, + SXAVIX_PA, + SXAVIX_PB +}; + DECLARE_DEVICE_TYPE(XAVIX2000, xavix2000_device) #endif // MAME_CPU_M6502_XAVIX2000_H diff --git a/src/mame/audio/xavix.cpp b/src/mame/audio/xavix.cpp index f52983329ff..ff284aeb376 100644 --- a/src/mame/audio/xavix.cpp +++ b/src/mame/audio/xavix.cpp @@ -4,57 +4,60 @@ #include "emu.h" #include "includes/xavix.h" +// #define VERBOSE 1 +#include "logmacro.h" + READ8_MEMBER(xavix_state::sound_75f0_r) { - logerror("%s: sound_75f0_r\n", machine().describe_context()); + LOG("%s: sound_75f0_r\n", machine().describe_context()); return m_soundregs[0]; } READ8_MEMBER(xavix_state::sound_75f1_r) { - logerror("%s: sound_75f1_r\n", machine().describe_context()); + LOG("%s: sound_75f1_r\n", machine().describe_context()); return m_soundregs[1]; } READ8_MEMBER(xavix_state::sound_75f6_r) { - logerror("%s: sound_75f6_r\n", machine().describe_context()); + LOG("%s: sound_75f6_r\n", machine().describe_context()); return m_soundregs[6]; } READ8_MEMBER(xavix_state::sound_75f8_r) { - logerror("%s: sound_75f8_r\n", machine().describe_context()); + LOG("%s: sound_75f8_r\n", machine().describe_context()); return m_soundregs[8]; } READ8_MEMBER(xavix_state::sound_75f9_r) { - logerror("%s: sound_75f9_r\n", machine().describe_context()); + LOG("%s: sound_75f9_r\n", machine().describe_context()); return 0x00; } READ8_MEMBER(xavix_state::sound_75fa_r) { - logerror("%s: sound_75fa_r\n", machine().describe_context()); + LOG("%s: sound_75fa_r\n", machine().describe_context()); return m_soundregs[10]; } READ8_MEMBER(xavix_state::sound_75fb_r) { - logerror("%s: sound_75fb_r\n", machine().describe_context()); + LOG("%s: sound_75fb_r\n", machine().describe_context()); return m_soundregs[11]; } READ8_MEMBER(xavix_state::sound_75fc_r) { - logerror("%s: sound_75fc_r\n", machine().describe_context()); + LOG("%s: sound_75fc_r\n", machine().describe_context()); return m_soundregs[12]; } READ8_MEMBER(xavix_state::sound_75fd_r) { - logerror("%s: sound_75fd_r\n", machine().describe_context()); + LOG("%s: sound_75fd_r\n", machine().describe_context()); return m_soundregs[13]; } @@ -65,7 +68,7 @@ WRITE8_MEMBER(xavix_state::sound_75f0_w) { // expected to return data written m_soundregs[0] = data; - logerror("%s: sound_75f0_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75f0_w %02x\n", machine().describe_context(), data); } @@ -73,7 +76,7 @@ WRITE8_MEMBER(xavix_state::sound_75f1_w) { // expected to return data written m_soundregs[1] = data; - logerror("%s: sound_75f1_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75f1_w %02x\n", machine().describe_context(), data); } @@ -81,13 +84,13 @@ WRITE8_MEMBER(xavix_state::sound_75f6_w) { // expected to return data written m_soundregs[6] = data; - logerror("%s: sound_75f6_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75f6_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_state::sound_75f7_w) { m_soundregs[7] = data; - logerror("%s: sound_75f7_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75f7_w %02x\n", machine().describe_context(), data); } @@ -95,53 +98,53 @@ WRITE8_MEMBER(xavix_state::sound_75f8_w) { // expected to return data written m_soundregs[8] = data; - logerror("%s: sound_75f8_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75f8_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_state::sound_75f9_w) { m_soundregs[9] = data; - logerror("%s: sound_75f9_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75f9_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_state::sound_75fa_w) { // expected to return data written m_soundregs[10] = data; - logerror("%s: sound_75fa_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75fa_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_state::sound_75fb_w) { // expected to return data written m_soundregs[11] = data; - logerror("%s: sound_75fb_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75fb_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_state::sound_75fc_w) { // expected to return data written m_soundregs[12] = data; - logerror("%s: sound_75fc_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75fc_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_state::sound_75fd_w) { // expected to return data written m_soundregs[13] = data; - logerror("%s: sound_75fd_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75fd_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_state::sound_75fe_w) { m_soundregs[14] = data; - logerror("%s: sound_75fe_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75fe_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_state::sound_75ff_w) { m_soundregs[15] = data; - logerror("%s: sound_75ff_w %02x\n", machine().describe_context(), data); + LOG("%s: sound_75ff_w %02x\n", machine().describe_context(), data); } READ8_MEMBER(xavix_state::sound_75f4_r) diff --git a/src/mame/machine/xavix.cpp b/src/mame/machine/xavix.cpp index 7228c8f7ddf..08c522bcb88 100644 --- a/src/mame/machine/xavix.cpp +++ b/src/mame/machine/xavix.cpp @@ -281,6 +281,7 @@ WRITE8_MEMBER(xavix_state::arena_end_w) READ8_MEMBER(xavix_state::arena_control_r) { + m_arena_control ^= 0x40; // unknown, xavtenni expects this to become high, also seems to be running in some kind of interlace mode, so could be a field flag? return m_arena_control; } -- cgit v1.2.3