mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
vendetta: checked devices for possible savestate issue
This commit is contained in:
parent
252fba2a86
commit
3c9b6fdd49
@ -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); \
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -61,7 +61,6 @@
|
||||
static constexpr int CLOCKS_PER_SAMPLE = 64;
|
||||
|
||||
|
||||
|
||||
// device type definition
|
||||
DEFINE_DEVICE_TYPE(K053260, k053260_device, "k053260", "K053260 KDSC")
|
||||
|
||||
|
@ -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];
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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];
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user