vendetta: checked devices for possible savestate issue

This commit is contained in:
hap 2025-01-09 15:17:07 +01:00
parent 252fba2a86
commit 3c9b6fdd49
11 changed files with 50 additions and 54 deletions

View File

@ -104,8 +104,8 @@
Issues with:
kickgoal.c - code seems wrong, clock logic writes 0-0-0 instead of 0-1-0 as expected
overdriv.c - drops CS, raises CS, keeps DI=1, triggering extraneous start bit
kickgoal.cpp - code seems wrong, clock logic writes 0-0-0 instead of 0-1-0 as expected
overdriv.cpp - drops CS, raises CS, keeps DI=1, triggering extraneous start bit
***************************************************************************/
@ -606,8 +606,8 @@ void eeprom_serial_base_device::execute_write_command()
// STANDARD INTERFACE IMPLEMENTATION
//**************************************************************************
eeprom_serial_s29x90_device::eeprom_serial_s29x90_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, eeprom_serial_streaming ignored)
: eeprom_serial_93cxx_device(mconfig, devtype, tag, owner, eeprom_serial_streaming::ENABLE)
eeprom_serial_s29x90_device::eeprom_serial_s29x90_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, eeprom_serial_streaming ignored) :
eeprom_serial_93cxx_device(mconfig, devtype, tag, owner, eeprom_serial_streaming::ENABLE)
{
enable_output_on_falling_clock(true);
}
@ -1078,14 +1078,14 @@ void eeprom_serial_x24c44_device::di_write(int state) { base_di_write(state); }
// macro for defining a new device class
#define DEFINE_SERIAL_EEPROM_DEVICE(_baseclass, _lowercase, _uppercase, _bits, _cells, _addrbits) \
eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, eeprom_serial_streaming enable_streaming) \
: eeprom_serial_##_baseclass##_device(mconfig, EEPROM_##_uppercase##_##_bits##BIT, tag, owner, enable_streaming) \
eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, eeprom_serial_streaming enable_streaming) : \
eeprom_serial_##_baseclass##_device(mconfig, EEPROM_##_uppercase##_##_bits##BIT, tag, owner, enable_streaming) \
{ \
size(_cells, _bits); \
set_address_bits(_addrbits); \
} \
eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) \
: eeprom_serial_##_baseclass##_device(mconfig, EEPROM_##_uppercase##_##_bits##BIT, tag, owner, eeprom_serial_streaming::DISABLE) \
eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : \
eeprom_serial_##_baseclass##_device(mconfig, EEPROM_##_uppercase##_##_bits##BIT, tag, owner, eeprom_serial_streaming::DISABLE) \
{ \
size(_cells, _bits); \
set_address_bits(_addrbits); \

View File

@ -105,9 +105,7 @@ void k053252_device::device_start()
void k053252_device::device_reset()
{
int i;
for (i = 0; i < 16; i++)
for (int i = 0; i < 16; i++)
m_regs[i] = 0;
m_regs[0x08] = 1; // Xexex apparently does a wrong assignment for VC (sets up the INT enable register instead)
@ -117,14 +115,14 @@ void k053252_device::device_reset()
void k053252_device::reset_internal_state()
{
m_hc=0;
m_hfp=0;
m_hbp=0;
m_vc=0;
m_vfp=0;
m_vbp=0;
m_vsw=0;
m_hsw=0;
m_hc = 0;
m_hfp = 0;
m_hbp = 0;
m_vc = 0;
m_vfp = 0;
m_vbp = 0;
m_vsw = 0;
m_hsw = 0;
}
/*****************************************************************************
@ -139,9 +137,9 @@ uint8_t k053252_device::read(offs_t offset)
/* VCT read-back */
// TODO: correct?
case 0x0e:
return ((screen().vpos()-m_vc) >> 8) & 1;
return ((screen().vpos() - m_vc) >> 8) & 1;
case 0x0f:
return (screen().vpos()-m_vc) & 0xff;
return (screen().vpos() - m_vc) & 0xff;
default:
//popmessage("Warning: k053252 read %02x, contact MAMEdev",offset);
break;

View File

@ -35,7 +35,7 @@ protected:
virtual void device_clock_changed() override { reset_internal_state(); }
void reset_internal_state();
private:
private:
// internal state
uint8_t m_regs[16];
uint16_t m_hc,m_hfp,m_hbp;

View File

@ -61,7 +61,6 @@
static constexpr int CLOCKS_PER_SAMPLE = 64;
// device type definition
DEFINE_DEVICE_TYPE(K053260, k053260_device, "k053260", "K053260 KDSC")

View File

@ -57,8 +57,8 @@ private:
devcb_write_line m_sh2_cb;
// configuration
sound_stream * m_stream;
emu_timer *m_timer;
sound_stream *m_stream;
emu_timer *m_timer;
// live state
u8 m_portdata[4];

View File

@ -172,8 +172,8 @@ GFXDECODE_MEMBER( k052109_device::gfxinfo_ram )
GFXDECODE_END
k052109_device::k052109_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, K052109, tag, owner, clock),
k052109_device::k052109_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, K052109, tag, owner, clock),
device_gfx_interface(mconfig, *this, gfxinfo),
device_video_interface(mconfig, *this, false),
m_ram(nullptr),
@ -265,14 +265,15 @@ void k052109_device::device_start()
m_tilemap[2]->set_scrolldy(m_dy, m_dy);
save_pointer(NAME(m_ram), 0x6000);
save_item(NAME(m_rmrd_line));
save_item(NAME(m_romsubbank));
save_item(NAME(m_scrollctrl));
save_item(NAME(m_irq_enabled));
save_item(NAME(m_tileflip_enable));
save_item(NAME(m_charrombank));
save_item(NAME(m_charrombank_2));
save_item(NAME(m_addrmap));
save_item(NAME(m_has_extra_video_ram));
save_item(NAME(m_rmrd_line));
save_item(NAME(m_irq_enabled));
save_item(NAME(m_romsubbank));
save_item(NAME(m_scrollctrl));
save_item(NAME(m_addrmap));
}
//-------------------------------------------------

View File

@ -64,7 +64,7 @@ protected:
private:
// internal state
std::unique_ptr<uint8_t[]> m_ram;
std::unique_ptr<uint8_t[]> m_ram;
uint8_t *m_videoram_F;
uint8_t *m_videoram_A;
uint8_t *m_videoram_B;
@ -76,7 +76,7 @@ private:
uint8_t *m_colorram_B;
tilemap_t *m_tilemap[3];
int m_tileflip_enable;
uint8_t m_tileflip_enable;
uint8_t m_charrombank[4];
uint8_t m_charrombank_2[4];
uint8_t m_has_extra_video_ram;

View File

@ -31,7 +31,6 @@ The sprite RAM format is very similar to the 053245.
???-??? R reads data from the gfx ROMs (16 bits in total). The address of the
data is determined by the registers above
*/
#include "emu.h"
@ -48,7 +47,6 @@ The sprite RAM format is very similar to the 053245.
DEVICE HANDLERS
*****************************************************************************/
void k053247_device::clear_all()
{
m_ram = nullptr;
@ -135,7 +133,7 @@ u16 k053247_device::k055673_5bpp_rom_word_r(offs_t offset) // 5bpp
int size4 = (m_gfxrom.length() / (1024 * 1024)) / 5;
int romofs;
size4 *= 4 * 1024 * 1024; // get offset to 5th bit
size4 *= 4 * 1024 * 1024; // get offset to 5th bit
ROM8 += size4;
romofs = m_kx46_regs[6] << 16 | m_kx46_regs[7] << 8 | m_kx46_regs[4];
@ -452,14 +450,14 @@ void k053247_device::zdrawgfxzoom32GP(
#define FPENT 0
// inner loop
const u8 *src_ptr;
const u8 *src_ptr;
int src_x;
int eax, ecx;
int src_fx, src_fdx;
int shdpen;
u8 z8 = 0, p8 = 0;
u8 *ozbuf_ptr;
u8 *szbuf_ptr;
u8 z8 = 0, p8 = 0;
u8 *ozbuf_ptr;
u8 *szbuf_ptr;
const pen_t *pal_base;
const pen_t *shd_base;
u32 *dst_ptr;
@ -922,7 +920,7 @@ void k055673_device::device_start()
int gfx_index = 0;
u32 total;
static const gfx_layout spritelayout = /* System GX sprite layout */
static const gfx_layout spritelayout = /* System GX sprite layout */
{
16,16,
0,
@ -994,7 +992,7 @@ void k055673_device::device_start()
d = (u8 *)alt_k055673_rom;
// now combine the graphics together to form 5bpp
s1 = (u8 *)&m_gfxrom[0]; // 4bpp area
s2 = s1 + (size4); // 1bpp area
s2 = s1 + (size4); // 1bpp area
for (i = 0; i < size4; i+= 4)
{
*d++ = *s1++;
@ -1040,7 +1038,7 @@ void k055673_device::device_start()
m_objcha_line = CLEAR_LINE;
m_ram = std::make_unique<u16[]>(0x4000/2);
memset(m_ram.get(), 0, 0x4000);
memset(m_ram.get(), 0, 0x4000);
std::fill(std::begin(m_kx46_regs), std::end(m_kx46_regs), 0);
std::fill(std::begin(m_kx47_regs), std::end(m_kx47_regs), 0);

View File

@ -207,12 +207,12 @@ void k053251_device::write(offs_t offset, u8 data)
}
}
int k053251_device::get_priority( int ci )
int k053251_device::get_priority(int ci)
{
return m_ram[ci];
}
int k053251_device::get_palette_index( int ci )
int k053251_device::get_palette_index(int ci)
{
return m_palette_index[ci];
}

View File

@ -37,8 +37,6 @@
//#include "logmacro.h"
DEFINE_DEVICE_TYPE(K054000, k054000_device, "k054000", "K054000 Protection")
k054000_device::k054000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
@ -52,6 +50,10 @@ k054000_device::k054000_device(const machine_config &mconfig, const char *tag, d
void k054000_device::device_start()
{
save_item(NAME(m_raw_Acx));
save_item(NAME(m_raw_Acy));
save_item(NAME(m_raw_Bcx));
save_item(NAME(m_raw_Bcy));
save_item(NAME(m_Acx));
save_item(NAME(m_Acy));
save_item(NAME(m_Aax));
@ -60,10 +62,6 @@ void k054000_device::device_start()
save_item(NAME(m_Bcy));
save_item(NAME(m_Bax));
save_item(NAME(m_Bay));
save_pointer(NAME(m_raw_Acx), 4);
save_pointer(NAME(m_raw_Acy), 4);
save_pointer(NAME(m_raw_Bcx), 4);
save_pointer(NAME(m_raw_Bcy), 4);
}
//-------------------------------------------------

View File

@ -217,7 +217,7 @@ K052109_CB_MEMBER(vendetta_state::esckids_tile_callback)
K053246_CB_MEMBER(vendetta_state::sprite_callback)
{
int pri = (*color & 0x03e0) >> 4; // ???????
int pri = (*color & 0x03e0) >> 4; // ???????
if (pri <= m_layerpri[2])
*priority_mask = 0;
else if (pri > m_layerpri[2] && pri <= m_layerpri[1])
@ -434,6 +434,7 @@ void vendetta_state::sound_map(address_map &map)
map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write));
}
/***************************************************************************
Input Ports
@ -540,6 +541,7 @@ static INPUT_PORTS_START( esckids2p )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Machine Driver
@ -640,7 +642,7 @@ void vendetta_state::vendetta(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 0.5).add_route(1, "rspeaker", 0.5); // verified with PCB
YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 0.5).add_route(1, "rspeaker", 0.5); // verified with PCB
k053260_device &k053260(K053260(config, "k053260", XTAL(3'579'545))); // verified with PCB
k053260.add_route(0, "lspeaker", 0.75);