Skip to content

Commit

Permalink
tvgames/xavix*: Lots of XaviX, XaviX2, and SuperXaviX updates [David …
Browse files Browse the repository at this point in the history
…Haywood]

* superxavix: some research on the bitmap layer, slight visual improvement where it gets used
* xavix - begin to move towards a cleaner bus implementation without the memory bypass (as some later SuperXaviX games will need it)
* superxavix CRTC(?) logging
* make bitmap writes kinda work in suprtvpchk demo mode
* attempt to improve plotter behavior
* some experiments for tak_chq
* some extra logging for math unit
* start moving some superxavix specifics to their own class
* a few xavix2000 opcodes
* note about loading screens on some super tv-pc sets
* possible workaround for the super tv-pc issues, there's definitely something more funky with the superxavix address buses
* added missing cmc_imp opcode for ban_ordj (sprites now appear in demo)
* swap tilemap priorities in cases where priority is equal (for epo_golf)
* document how noise effect is enabled, even if it isn't currently understood
* some notes of things that need revisiting
* implement tile addressing mode used by epo_stad
* more closely match math unit behavior to some hardware tests
* use more appropriate external bus sizes in some cases
* added 2 more sets, one SuperXaviX, one XaviX2
* start trying to understand the extended mode anpanmdx uses
* xavmusic research
* some of the anpanman inputs are simple button responses at least
* improve epo_doka sprites
* assume bitmap layer has lower priority than tilemaps (several cases suggest as much)
* mark supertvpc 'double mouse' cart as a bad dump because the code looks corrupt in places, add 2 workaround to boot other sets so that graphic features can be better tested
* add some (not correct) mouse handling to supertvpc
* update some notes
* start trying to improve superxavix IO
* add Piano PC

New NOT WORKING machines
------------------------------
Anpanman Kazoku De Ikunou Mat DX (Japan) [TeamEurope, David Haywood]
Let's TV Play Dragon Ball Z Battle Experience Kamehameha 2 Ossu Ome Goku Tenkaichi Budokai (Japan) [TeamEurope, David Haywood]
Doraemon Moving! Oekaki (Japan) [TeamEurope, David Haywood]
Anpanman Pyon-Pyon Ikunou Mat (Japan) [TeamEurope, David Haywood]
Doraemon anywhere - Japan travel game DX experience! Where is the Dragon Grand Prix! (Japan) [TeamEurope, David Haywood]
Let's! TV Play Futari wa PreCure MaxHeart Dance on the mat Let's go to MaxHeart (Japan) [TeamEurope, David Haywood]
Let's! TV Play Disney Characters Oto! Iro! Ton-Ton! Miracle Parade [TeamEurope, David Haywood]
Hello Kitty Piano PC (Japan) [TeamEurope, David Haywood]
  • Loading branch information
mamehaze authored Dec 28, 2024
1 parent 2a0ae18 commit 4239383
Show file tree
Hide file tree
Showing 17 changed files with 1,599 additions and 658 deletions.
7 changes: 6 additions & 1 deletion hash/super_tv_pc_cart.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ license:CC0-1.0
<part name="cart" interface="super_tv_pc_cart">
<dataarea name="prg" size="0x400000">
<rom name="c-02.u1" size="0x400000" crc="99fb0088" sha1="b46400c850b08abd5c8ee649f483e0694b3eb059" />
<!-- bypass EEPROM error until cart EEPROM is properly hooked up -->
<rom value="0xea" offset="0xd809" size="2" loadflag="fill" />
</dataarea>
</part>
</software>
Expand All @@ -38,7 +40,8 @@ license:CC0-1.0
<info name="alt_title" value="ダブルマウスパーティー" />
<part name="cart" interface="super_tv_pc_cart">
<dataarea name="prg" size="0x200000">
<rom name="c-03.u1" size="0x200000" crc="94634a7b" sha1="d69ec0a8c6061e749206927ee68dbcf852fcc03e" />
<!-- baddump because code seems to be corrupt in places -->
<rom name="c-03.u1" size="0x200000" crc="94634a7b" sha1="d69ec0a8c6061e749206927ee68dbcf852fcc03e" status="baddump" />
</dataarea>
</part>
</software>
Expand All @@ -51,6 +54,8 @@ license:CC0-1.0
<part name="cart" interface="super_tv_pc_cart">
<dataarea name="prg" size="0x400000">
<rom name="c-04.u1" size="0x400000" crc="89b6ef86" sha1="1af69047508fce08fa949a7d821255e306a329a3" />
<!-- bypass (invisible) EEPROM error until cart EEPROM is properly hooked up -->
<rom value="0xea" offset="0xd5fa" size="2" loadflag="fill" />
</dataarea>
</part>
</software>
Expand Down
24 changes: 22 additions & 2 deletions src/devices/bus/ekara/rom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,12 +117,32 @@ void ekara_rom_i2c_base_device::write_bus_control(offs_t offset, uint8_t data)

void ekara_rom_i2c_base_device::write_rom(offs_t offset, uint8_t data)
{
logerror("ekara_rom_i2c_base_device::write_rom %08x %02x\n", offset, data);
if (is_write_access_not_rom())
{
if (offset == 0x3fffff)
write_extra(offset,data);
else
logerror("ekara_rom_i2c_base_device::write_rom %08x %02x\n", offset, data);
}
else
{
logerror("ekara_rom_i2c_base_device::write_rom %08x %02x\n", offset, data);
}
}

uint8_t ekara_rom_i2c_base_device::read_rom(offs_t offset)
{
return m_rom[offset & (m_rom_size - 1)];
if (is_read_access_not_rom())
{
if (offset == 0x5fffff)
return read_extra(offset);
else
return m_rom[offset & (m_rom_size - 1)];
}
else
{
return m_rom[offset & (m_rom_size - 1)];
}
}

uint8_t ekara_rom_i2c_base_device::read_extra(offs_t offset)
Expand Down
44 changes: 33 additions & 11 deletions src/devices/cpu/m6502/oxavix2000.lst
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,10 @@ orapa_imp
prefetch();

andpa_imp
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
read_pc();
TMP = read_full_data(m_pa);
A &= TMP;
set_nz(A);
prefetch();

eorpa_imp
Expand Down Expand Up @@ -436,24 +438,27 @@ bit_xav_zpx
prefetch();

bit_abx
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
read_pc();
TMP = read_pc();
PC++;
TMP = set_h(TMP, read_pc());
PC++;
TMP += X;
TMP2 = read(TMP);
do_bit(TMP2);
prefetch();

bit_imm
TMP = read_pc();
PC++;
if(A & TMP)
P &= ~F_Z;
else
P |= F_Z;
do_bit(TMP);
prefetch();

asr_xav_zpg
TMP = read_pc(); // TODO: verify this, should it write back or set A?
PC++;
TMP2 = read_zeropage(TMP);
do_asr(TMP2);
write_zeropage(TMP,TMP2);
prefetch();

asr_aba
Expand All @@ -468,22 +473,39 @@ asr_aba
prefetch();

asr_xav_zpx
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
TMP = read_pc();
read_pc();
PC++;
TMP = uint8_t(TMP+X);
TMP2 = read_zeropage(TMP);
read_zeropage((TMP+1) & 0xff);
TMP2 = do_asr(TMP2);
write_zeropage(TMP, TMP2);
prefetch();

asr_acc
A = do_asr(A);
prefetch();

asr_abx
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
read_pc();
TMP = read_pc();
PC++;
TMP = set_h(TMP, read_pc());
PC++;
read(set_l(TMP, TMP+X));
TMP += X;
TMP2 = read(TMP);
read(TMP);
TMP2 = do_asr(TMP2);
write(TMP, TMP2);
prefetch();

cmc_imp
logerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
read_pc();
TMP = P & F_C;
P &= ~F_C;
TMP = ~TMP;
P |= TMP & F_C;
prefetch();

sev_imp
Expand Down
8 changes: 4 additions & 4 deletions src/devices/cpu/m6502/xavix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,12 +152,12 @@ inline uint8_t xavix_device::read_full_data(uint8_t databank, uint16_t adr)
}
else
{
return m_extbus_space->read_byte((databank << 16) | adr);
return m_extbus_space->read_byte(((databank << 16) | adr) & 0x7fffff );
}
}
else
{
return m_extbus_space->read_byte((databank << 16) | adr);
return m_extbus_space->read_byte(((databank << 16) | adr) & 0x7fffff );
}
}

Expand Down Expand Up @@ -257,12 +257,12 @@ inline void xavix_device::write_full_data(uint8_t databank, uint16_t adr, uint8_
}
else
{
m_extbus_space->write_byte((databank << 16) | adr, val);
m_extbus_space->write_byte(((databank << 16) | adr) & 0x7fffff, val);
}
}
else
{
m_extbus_space->write_byte((databank << 16) | adr, val);
m_extbus_space->write_byte(((databank << 16) | adr) & 0x7fffff, val);
}
}

Expand Down
8 changes: 8 additions & 0 deletions src/mame/mame.lst
Original file line number Diff line number Diff line change
Expand Up @@ -46285,6 +46285,7 @@ tvpc_ham
tvpc_tom

@source:tvgames/xavix2.cpp
ban_db2j
ltv_naru //
domfitad //
dombikec //
Expand All @@ -46311,13 +46312,20 @@ ttv_sw //
ttv_swj //

@source:tvgames/xavix_2002.cpp
anpanmdx
apmj2009
ban_dn1j
ban_kksj
epo_ntpj
ban_ordj
domdance //
domfitch //
domfitex //
domstepc //
doradraw
epo_doka
epo_tfit
maxheart
mrangbat
suprtvpc
suprtvpcdo
Expand Down
Loading

0 comments on commit 4239383

Please sign in to comment.