Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new WORKING machines (Webdiver Gladion - XaviX) + several non-working machine across various Plug and Play platforms #13166

Closed
wants to merge 29 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
4fa825f
new WORKING machines
Jan 3, 2025
4b9e50c
add a note about unemulated feature (not really sure how to flag it)
Jan 3, 2025
570f9db
revise note
Jan 3, 2025
3e2a560
document test mode access
Jan 3, 2025
581cf1c
added TV Art Design Center
Jan 3, 2025
1231243
clarify
Jan 3, 2025
9686d6b
new NOT WORKING machines
Jan 8, 2025
c0e4b96
Merge branch 'mamedev:master' into 020125
mamehaze Jan 8, 2025
fc43da3
SEEPROM note
Jan 8, 2025
fedd151
Merge branch '020125' of https://github.com/mamehaze/mame into 020125
Jan 8, 2025
71f457e
XaviX - don't use a separate stack for the extra callf / retf byte, s…
Jan 8, 2025
8213bd8
added ban_bkgj
Jan 8, 2025
02d7f55
Merge branch 'mamedev:master' into 020125
mamehaze Jan 8, 2025
3bfbb6f
mention the case this causes issues with
Jan 8, 2025
e943bb8
Merge branch '020125' of https://github.com/mamehaze/mame into 020125
Jan 8, 2025
92054e2
start adding an extra video mode this needs
Jan 9, 2025
4e629a1
some extended mode guessing for sprites
Jan 9, 2025
9858bc9
keep old logic for regular XaviX for now, until it becomes more clear…
Jan 9, 2025
b519206
comment
Jan 9, 2025
d94ee91
better name
Jan 9, 2025
ca790d0
Merge branch 'mamedev:master' into 020125
mamehaze Jan 9, 2025
1f9f435
add the SuperXaviX excite Golf
Jan 9, 2025
9966301
set this one to i2c state
Jan 9, 2025
40a9f4a
slight adjustmenet to tx logic
Jan 10, 2025
d728eef
document another weird case
Jan 10, 2025
3c91ed7
2 more sets
Jan 12, 2025
6902c5a
another set
Jan 12, 2025
c745057
update the name
Jan 12, 2025
f0d7438
LeadSinger Skeleton (unidentified CPU arch)
Jan 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions hash/super_tv_pc_cart.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ license:CC0-1.0
<info name="alt_title" value="ダブルマウスパーティー" />
<part name="cart" interface="super_tv_pc_cart">
<dataarea name="prg" size="0x200000">
<!-- baddump because code seems to be corrupt in places -->
<rom name="c-03.u1" size="0x200000" crc="94634a7b" sha1="d69ec0a8c6061e749206927ee68dbcf852fcc03e" status="baddump" />
<rom name="c-03.u1" size="0x200000" crc="94634a7b" sha1="d69ec0a8c6061e749206927ee68dbcf852fcc03e" />
</dataarea>
</part>
</software>
Expand Down
8 changes: 4 additions & 4 deletions src/devices/cpu/m6502/oxavix.lst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

callf_xa3
read_stack(SP);
write_special_stack(get_codebank());
write_special_stack(SP, get_codebank());
dec_special_stack();
TMP2 = read_pc();
PC++;
Expand Down Expand Up @@ -40,7 +40,7 @@ retf_imp
inc_SP();
PC = set_h(PC, read_stack(SP));
inc_special_stack();
TMP2 = read_special_stack();
TMP2 = read_special_stack(SP);
set_codebank(TMP2);
read_pc();
PC++;
Expand All @@ -55,7 +55,7 @@ brk_xav_imp
read_pc();
PC++;
}
write_special_stack(get_codebank());
write_special_stack(SP, get_codebank());
set_codebank(0x00); // epo_efdx, rad_ping and rad_mtrk strongly suggest that interrupts must force bank 0 as code jumps to a ROM pointer stored earlier / a fixed pointer to a rom address in bank 0
dec_special_stack();
write_stack(SP, PC >> 8);
Expand Down Expand Up @@ -123,7 +123,7 @@ rti_xav_imp
inc_SP();
PC = set_h(PC, read_stack(SP));
inc_special_stack();
TMP2 = read_special_stack();
TMP2 = read_special_stack(SP);
set_codebank(TMP2);
prefetch();

Expand Down
40 changes: 34 additions & 6 deletions src/devices/cpu/m6502/xavix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,24 +106,52 @@ xavix_device::mi_xavix::mi_xavix(xavix_device *_base)
base = _base;
}

void xavix_device::write_special_stack(uint8_t data)
void xavix_device::write_special_stack(uint32_t addr, uint8_t data)
{
m_special_stack[m_special_stackpos&0xff] = data;
if (m_use_private_stack_for_extra_callf_byte)
{
m_special_stack[m_special_stackpos & 0xff] = data;
}
else
{
write_stack(addr, data);
}
}

void xavix_device::dec_special_stack()
{
m_special_stackpos--;
if (m_use_private_stack_for_extra_callf_byte)
{
m_special_stackpos--;
}
else
{
dec_SP();
}
}

void xavix_device::inc_special_stack()
{
m_special_stackpos++;
if (m_use_private_stack_for_extra_callf_byte)
{
m_special_stackpos++;
}
else
{
inc_SP();
}
}

uint8_t xavix_device::read_special_stack()
uint8_t xavix_device::read_special_stack(uint32_t addr)
{
return m_special_stack[m_special_stackpos&0xff];
if (m_use_private_stack_for_extra_callf_byte)
{
return m_special_stack[m_special_stackpos & 0xff];
}
else
{
return read_stack(addr);
}
}


Expand Down
14 changes: 12 additions & 2 deletions src/devices/cpu/m6502/xavix.h
Original file line number Diff line number Diff line change
Expand Up @@ -192,10 +192,10 @@ class xavix_device : public m6502_device {
void set_databank(uint8_t bank);
uint8_t get_databank();

void write_special_stack(uint8_t data);
void write_special_stack(uint32_t addr, uint8_t data);
void dec_special_stack();
void inc_special_stack();
uint8_t read_special_stack();
uint8_t read_special_stack(uint32_t addr);

/* we store the additional 'codebank' used for far calls in a different, private stack
this seems to be neccessary for 'rad_hnt2' not to crash when bringing up the calibration / score table screens
Expand All @@ -211,6 +211,16 @@ class xavix_device : public m6502_device {
uint8_t read_zeropage(uint32_t addr);
void write_zeropage(uint32_t addr, uint8_t val);

// Some original XaviX games seemed to suggest that the extra byte of the far calls went to a different
// stack, but dblmouse on suprtvpc does direct stack manipulation which challenges this assumption.
// It could be a SuperXaviX vs XaviX differences however, so currently leaving this as a toggle for testing.
//
// pausing in rad_hnt2 (press shift when on the map) is broken without this logic as the stack becomes too
// big with the extra bytes
//
// we currently use the private stack for regular XaviX but not for the later CPUs, however the root cause
// of needing it for regular XaviX could be somewhere else
bool m_use_private_stack_for_extra_callf_byte = true;
};

enum {
Expand Down
1 change: 1 addition & 0 deletions src/devices/cpu/m6502/xavix2000.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ DEFINE_DEVICE_TYPE(XAVIX2002, xavix2002_device, "xavix2002", "XaviX (SSD 2002) (
xavix2000_device::xavix2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
xavix_device(mconfig, type, tag, owner, clock)
{
m_use_private_stack_for_extra_callf_byte = false;
}

xavix2000_device::xavix2000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
Expand Down
5 changes: 5 additions & 0 deletions src/devices/machine/generalplus_gpl16250soc_video.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -779,6 +779,11 @@ void gcm394_base_video_device::video_dma_size_trigger_w(address_space &space, ui

LOGMASKED(LOG_GCM394_VIDEO_DMA, "%s: doing sprite / video DMA source %04x dest %04x size %04x value of 707e (bank) %04x value of 707f %04x\n", machine().describe_context(), m_videodma_source, m_videodma_dest, m_videodma_size, m_707e_spritebank, m_707f );

// jak_spmm sets dest to 0 when it wants to write to spriteram, looks intentional?
// does something else force writes to go to spriteram or does 0 always just mean there?
if (m_videodma_dest == 0)
m_videodma_dest = 0x7400;

for (int i = 0; i <= m_videodma_size; i++)
{
uint16_t dat = space.read_word(m_videodma_source+i);
Expand Down
11 changes: 11 additions & 0 deletions src/mame/mame.lst
Original file line number Diff line number Diff line change
Expand Up @@ -42675,6 +42675,9 @@ dbzscout
@source:skeleton/kron.cpp
kron180 // 1995 Kron Ltd, Ukraine

@source:skeleton/leadsinger2.cpp
leadsng2

@source:skeleton/lee1214.cpp
lee1214d //

Expand Down Expand Up @@ -45842,6 +45845,7 @@ batvgc
rad_gtg
rad_rsg
rad_rsgp
rad_rsgpa
rad_foot
rad_bb3
rad_bb3p
Expand Down Expand Up @@ -45885,6 +45889,7 @@ gameu50
gameu108
gormiti
imgame
jak_spmm
myac220
smartfp // Smart Fit Park
smartfpf
Expand Down Expand Up @@ -46035,6 +46040,7 @@ virtbb
virtten
vtechtvsgr // (c) 2006 VTech
vtechtvssp // (c) 2006 VTech
wfart
wfcentro

@source:tvgames/spg2xx_digimake.cpp
Expand Down Expand Up @@ -46315,6 +46321,7 @@ tak_gin //
tak_geig //
tak_hamr //
tak_town //
tak_wdg //
tak_zuba //
tcarnavi //
tom_tvho //
Expand All @@ -46332,6 +46339,7 @@ ltv_naru //
domfitad //
dombikec //
epo_dabj
epo_dtcj

@source:tvgames/xavix_2000.cpp
ban_omt //
Expand All @@ -46356,9 +46364,12 @@ ttv_swj //
@source:tvgames/xavix_2002.cpp
anpanmdx
apmj2009
ban_bkgj
ban_dn1j
ban_kksj
ban_utmj
epo_ntpj
epo_rgfj
ban_ordj
domdance //
domfitch //
Expand Down
108 changes: 108 additions & 0 deletions src/mame/skeleton/leadsinger2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/******************************************************************************

-------- Label on product --------

Enter Tech
Music Video Karaoke
MODEL: LS-K2

-------- Boot Screen --------

MVK
Music Video / MP3 Karaoke
Leadsinger II
www.leadsinger.com

-------- Main SoC --------

SUNPLUS
SPHE8104AW
0729-H
0001697

-------- ROM --------

EXCELSEMI
ES29LV800EB-70TG
0720

-------- RAM --------

SAMSUNG 710
K4S641632K-U75

-------- Other --------

27Mhz Xtal
Card Slot

*******************************************************************************/

#include "emu.h"

#include "screen.h"
#include "speaker.h"

namespace {

class leadsng2_state : public driver_device
{
public:
leadsng2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_screen(*this, "screen")
{ }

void leadsng2(machine_config &config);

protected:
virtual void machine_start() override;
virtual void machine_reset() override;

private:
required_device<screen_device> m_screen;

uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};

uint32_t leadsng2_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}

void leadsng2_state::machine_start()
{

}

void leadsng2_state::machine_reset()
{
}

static INPUT_PORTS_START( leadsng2 )
INPUT_PORTS_END

void leadsng2_state::leadsng2(machine_config &config)
{
// unknown CPU core

SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_size(320, 262);
m_screen->set_visarea(0, 320-1, 0, 240-1);
m_screen->set_screen_update(FUNC(leadsng2_state::screen_update));

SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
}

ROM_START( leadsng2 )
ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "ls-k2_es29lv800eb_004a225b.bin", 0x000000, 0x100000, CRC(e70f1e1f) SHA1(5aa3187adffcba5bd4a9e3e89a1c210d7f1a978e) )
ROM_END

} // anonymous namespace

CONS( 200?, leadsng2, 0, 0, leadsng2, leadsng2, leadsng2_state, empty_init, "Enter Tech", "Leadsinger II (LS-K2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
8 changes: 6 additions & 2 deletions src/mame/tvgames/elan_eu3a14.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -855,6 +855,10 @@ ROM_START( rad_rsgp )
ROM_LOAD( "realswinggolf.bin", 0x000000, 0x400000, CRC(89e5b6a6) SHA1(0b14aa84d7e7ae7190cd64e3eb125de2104342bc) )
ROM_END

ROM_START( rad_rsgpa )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "realswinggolf_multilanguage.bin", 0x000000, 0x400000, CRC(c03752a6) SHA1(7e9cc804edf0c23a8dedfa0c0a51d1bc811ea5c1) )
ROM_END

ROM_START( rad_foot )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
Expand Down Expand Up @@ -977,8 +981,8 @@ ROM_END
CONS( 2006, rad_gtg, 0, 0, radica_eu3a14_altrambase_adc, rad_gtg, elan_eu3a14_state, empty_init, "Radica / FarSight Studios (licensed from Incredible Technologies)", "Golden Tee Golf: Home Edition", MACHINE_NOT_WORKING )

CONS( 2005, rad_rsg, 0, 0, radica_eu3a14_altrambase, rad_rsg, elan_eu3a14_state, empty_init, "Radica / FarSight Studios", "Play TV Real Swing Golf", MACHINE_NOT_WORKING )
// some Connectv branded Real Swing Golf units have a language selection (checksum in test mode confirmed as different on said units)
CONS( 2005, rad_rsgp, rad_rsg, 0, radica_eu3a14p_altrambase, rad_rsg, elan_eu3a14_state, empty_init, "Radica / FarSight Studios", "Connectv Real Swing Golf", MACHINE_NOT_WORKING )
CONS( 2005, rad_rsgp, rad_rsg, 0, radica_eu3a14p_altrambase, rad_rsg, elan_eu3a14_state, empty_init, "Radica / FarSight Studios", "Connectv Real Swing Golf (set 1)", MACHINE_NOT_WORKING ) // English only
CONS( 2005, rad_rsgpa,rad_rsg, 0, radica_eu3a14p_altrambase, rad_rsg, elan_eu3a14_state, empty_init, "Radica / FarSight Studios", "Connectv Real Swing Golf (set 2)", MACHINE_NOT_WORKING ) // English, German, French, Spanish, Italian

// also has a Connectv Real Soccer logo in the roms, apparently unused, maybe that was to be the US title (without the logo being changed to Play TV) but Play TV Soccer ended up being a different game licensed from Epoch instead.
CONS( 2006, rad_foot, 0, 0, radica_eu3a14p, radica_foot, elan_eu3a14_state, empty_init, "Radica / Medialink", "Connectv Football", MACHINE_NOT_WORKING )
Expand Down
Loading
Loading