Skip to content

Commit 4239383

Browse files
authored
tvgames/xavix*: Lots of XaviX, XaviX2, and SuperXaviX updates [David 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]
1 parent 2a0ae18 commit 4239383

File tree

17 files changed

+1599
-658
lines changed

17 files changed

+1599
-658
lines changed

hash/super_tv_pc_cart.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ license:CC0-1.0
2727
<part name="cart" interface="super_tv_pc_cart">
2828
<dataarea name="prg" size="0x400000">
2929
<rom name="c-02.u1" size="0x400000" crc="99fb0088" sha1="b46400c850b08abd5c8ee649f483e0694b3eb059" />
30+
<!-- bypass EEPROM error until cart EEPROM is properly hooked up -->
31+
<rom value="0xea" offset="0xd809" size="2" loadflag="fill" />
3032
</dataarea>
3133
</part>
3234
</software>
@@ -38,7 +40,8 @@ license:CC0-1.0
3840
<info name="alt_title" value="ダブルマウスパーティー" />
3941
<part name="cart" interface="super_tv_pc_cart">
4042
<dataarea name="prg" size="0x200000">
41-
<rom name="c-03.u1" size="0x200000" crc="94634a7b" sha1="d69ec0a8c6061e749206927ee68dbcf852fcc03e" />
43+
<!-- baddump because code seems to be corrupt in places -->
44+
<rom name="c-03.u1" size="0x200000" crc="94634a7b" sha1="d69ec0a8c6061e749206927ee68dbcf852fcc03e" status="baddump" />
4245
</dataarea>
4346
</part>
4447
</software>
@@ -51,6 +54,8 @@ license:CC0-1.0
5154
<part name="cart" interface="super_tv_pc_cart">
5255
<dataarea name="prg" size="0x400000">
5356
<rom name="c-04.u1" size="0x400000" crc="89b6ef86" sha1="1af69047508fce08fa949a7d821255e306a329a3" />
57+
<!-- bypass (invisible) EEPROM error until cart EEPROM is properly hooked up -->
58+
<rom value="0xea" offset="0xd5fa" size="2" loadflag="fill" />
5459
</dataarea>
5560
</part>
5661
</software>

src/devices/bus/ekara/rom.cpp

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,32 @@ void ekara_rom_i2c_base_device::write_bus_control(offs_t offset, uint8_t data)
117117

118118
void ekara_rom_i2c_base_device::write_rom(offs_t offset, uint8_t data)
119119
{
120-
logerror("ekara_rom_i2c_base_device::write_rom %08x %02x\n", offset, data);
120+
if (is_write_access_not_rom())
121+
{
122+
if (offset == 0x3fffff)
123+
write_extra(offset,data);
124+
else
125+
logerror("ekara_rom_i2c_base_device::write_rom %08x %02x\n", offset, data);
126+
}
127+
else
128+
{
129+
logerror("ekara_rom_i2c_base_device::write_rom %08x %02x\n", offset, data);
130+
}
121131
}
122132

123133
uint8_t ekara_rom_i2c_base_device::read_rom(offs_t offset)
124134
{
125-
return m_rom[offset & (m_rom_size - 1)];
135+
if (is_read_access_not_rom())
136+
{
137+
if (offset == 0x5fffff)
138+
return read_extra(offset);
139+
else
140+
return m_rom[offset & (m_rom_size - 1)];
141+
}
142+
else
143+
{
144+
return m_rom[offset & (m_rom_size - 1)];
145+
}
126146
}
127147

128148
uint8_t ekara_rom_i2c_base_device::read_extra(offs_t offset)

src/devices/cpu/m6502/oxavix2000.lst

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,10 @@ orapa_imp
332332
prefetch();
333333

334334
andpa_imp
335-
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
336335
read_pc();
336+
TMP = read_full_data(m_pa);
337+
A &= TMP;
338+
set_nz(A);
337339
prefetch();
338340

339341
eorpa_imp
@@ -436,24 +438,27 @@ bit_xav_zpx
436438
prefetch();
437439

438440
bit_abx
439-
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
440-
read_pc();
441+
TMP = read_pc();
442+
PC++;
443+
TMP = set_h(TMP, read_pc());
444+
PC++;
445+
TMP += X;
446+
TMP2 = read(TMP);
447+
do_bit(TMP2);
441448
prefetch();
442449

443450
bit_imm
444451
TMP = read_pc();
445452
PC++;
446-
if(A & TMP)
447-
P &= ~F_Z;
448-
else
449-
P |= F_Z;
453+
do_bit(TMP);
450454
prefetch();
451455

452456
asr_xav_zpg
453457
TMP = read_pc(); // TODO: verify this, should it write back or set A?
454458
PC++;
455459
TMP2 = read_zeropage(TMP);
456460
do_asr(TMP2);
461+
write_zeropage(TMP,TMP2);
457462
prefetch();
458463

459464
asr_aba
@@ -468,22 +473,39 @@ asr_aba
468473
prefetch();
469474

470475
asr_xav_zpx
471-
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
476+
TMP = read_pc();
472477
read_pc();
478+
PC++;
479+
TMP = uint8_t(TMP+X);
480+
TMP2 = read_zeropage(TMP);
481+
read_zeropage((TMP+1) & 0xff);
482+
TMP2 = do_asr(TMP2);
483+
write_zeropage(TMP, TMP2);
473484
prefetch();
474485

475486
asr_acc
476487
A = do_asr(A);
477488
prefetch();
478489

479490
asr_abx
480-
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
481-
read_pc();
491+
TMP = read_pc();
492+
PC++;
493+
TMP = set_h(TMP, read_pc());
494+
PC++;
495+
read(set_l(TMP, TMP+X));
496+
TMP += X;
497+
TMP2 = read(TMP);
498+
read(TMP);
499+
TMP2 = do_asr(TMP2);
500+
write(TMP, TMP2);
482501
prefetch();
483502

484503
cmc_imp
485-
logerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
486504
read_pc();
505+
TMP = P & F_C;
506+
P &= ~F_C;
507+
TMP = ~TMP;
508+
P |= TMP & F_C;
487509
prefetch();
488510

489511
sev_imp

src/devices/cpu/m6502/xavix.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,12 @@ inline uint8_t xavix_device::read_full_data(uint8_t databank, uint16_t adr)
152152
}
153153
else
154154
{
155-
return m_extbus_space->read_byte((databank << 16) | adr);
155+
return m_extbus_space->read_byte(((databank << 16) | adr) & 0x7fffff );
156156
}
157157
}
158158
else
159159
{
160-
return m_extbus_space->read_byte((databank << 16) | adr);
160+
return m_extbus_space->read_byte(((databank << 16) | adr) & 0x7fffff );
161161
}
162162
}
163163

@@ -257,12 +257,12 @@ inline void xavix_device::write_full_data(uint8_t databank, uint16_t adr, uint8_
257257
}
258258
else
259259
{
260-
m_extbus_space->write_byte((databank << 16) | adr, val);
260+
m_extbus_space->write_byte(((databank << 16) | adr) & 0x7fffff, val);
261261
}
262262
}
263263
else
264264
{
265-
m_extbus_space->write_byte((databank << 16) | adr, val);
265+
m_extbus_space->write_byte(((databank << 16) | adr) & 0x7fffff, val);
266266
}
267267
}
268268

src/mame/mame.lst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46285,6 +46285,7 @@ tvpc_ham
4628546285
tvpc_tom
4628646286

4628746287
@source:tvgames/xavix2.cpp
46288+
ban_db2j
4628846289
ltv_naru //
4628946290
domfitad //
4629046291
dombikec //
@@ -46311,13 +46312,20 @@ ttv_sw //
4631146312
ttv_swj //
4631246313

4631346314
@source:tvgames/xavix_2002.cpp
46315+
anpanmdx
46316+
apmj2009
46317+
ban_dn1j
4631446318
ban_kksj
46319+
epo_ntpj
4631546320
ban_ordj
4631646321
domdance //
4631746322
domfitch //
4631846323
domfitex //
4631946324
domstepc //
46325+
doradraw
46326+
epo_doka
4632046327
epo_tfit
46328+
maxheart
4632146329
mrangbat
4632246330
suprtvpc
4632346331
suprtvpcdo

0 commit comments

Comments
 (0)