mirror of
https://github.com/holub/mame
synced 2025-07-03 17:08:39 +03:00
wgp.cpp: added save state support, removed anonymous timers, killed trampolines (nw)
This commit is contained in:
parent
852af52806
commit
d152bfe2ab
@ -322,7 +322,7 @@ Stephh's notes (based on the game M68000 code and some tests) :
|
||||
* 0x0000 (Japan) use TAITO_COINAGE_JAPAN_NEW
|
||||
* 0x0001 (US) use TAITO_COINAGE_US
|
||||
* 0x0002 (World), 0x0003 (US, licensed to ROMSTAR) and 0x0004 (licensed to PHOENIX ELECTRONICS CO.)
|
||||
use slighlty different TAITO_COINAGE_WORLD : 1C_7C instead of 1C_6C for Coin B
|
||||
use slightly different TAITO_COINAGE_WORLD : 1C_7C instead of 1C_6C for Coin B
|
||||
- GP order relies on the sub-region (code at 0x00bc9c) :
|
||||
* 0x0000 : 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07
|
||||
* 0x0001 : 0x01 0x00 0x02 0x03 0x04 0x05 0x06 0x07
|
||||
@ -380,12 +380,12 @@ Stephh's notes (based on the game M68000 code and some tests) :
|
||||
- Coinage relies on the region (code at 0x00166e) :
|
||||
* 0x0000 (Japan) use TAITO_COINAGE_JAPAN_NEW
|
||||
* 0x0001 (US) use TAITO_COINAGE_US
|
||||
* 0x0002 (World) use slighlty different TAITO_COINAGE_WORLD :
|
||||
* 0x0002 (World) use slightly different TAITO_COINAGE_WORLD :
|
||||
1C_7C instead of 1C_6C for Coin B, same settings otherwise
|
||||
- Notice screen only if region = 0x0000 or region = 0x0001
|
||||
- FBI logo only if region = 0x0001
|
||||
- Routine at 0x01116c is the same as the one in 'wgp' based on sub-region;
|
||||
however, as you can partically select your GP at start, and as I suck
|
||||
however, as you can practically select your GP at start, and as I suck
|
||||
at such driving game, I wonder if this routine is still called !
|
||||
- DSWA bit 0 does the following things when set to ON :
|
||||
* unknown effect (code at 0x0126f6)
|
||||
@ -399,7 +399,6 @@ Stephh's notes (based on the game M68000 code and some tests) :
|
||||
#include "emu.h"
|
||||
#include "includes/wgp.h"
|
||||
#include "includes/taitoipt.h"
|
||||
#include "audio/taitosnd.h"
|
||||
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
@ -439,14 +438,14 @@ void wgp_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo
|
||||
switch (id)
|
||||
{
|
||||
/* 68000 A */
|
||||
case TIMER_WGP_INTERRUPT4:
|
||||
case TIMER_INTERRUPT4:
|
||||
m_maincpu->set_input_line(4, HOLD_LINE);
|
||||
break;
|
||||
case TIMER_WGP_INTERRUPT6:
|
||||
case TIMER_INTERRUPT6:
|
||||
m_maincpu->set_input_line(6, HOLD_LINE);
|
||||
break;
|
||||
/* 68000 B */
|
||||
case TIMER_WGP_CPUB_INTERRUPT6:
|
||||
case TIMER_CPUB_INTERRUPT6:
|
||||
m_subcpu->set_input_line(6, HOLD_LINE); /* assumes Z80 sandwiched between the 68Ks */
|
||||
break;
|
||||
default:
|
||||
@ -460,9 +459,9 @@ void wgp_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo
|
||||
/* FWIW offset of 10000,10500 on ints can get CPUB obeying the
|
||||
first CPUA command the same frame; probably not necessary */
|
||||
|
||||
INTERRUPT_GEN_MEMBER(wgp_state::wgp_cpub_interrupt)
|
||||
INTERRUPT_GEN_MEMBER(wgp_state::cpub_interrupt)
|
||||
{
|
||||
timer_set(downcast<cpu_device *>(&device)->cycles_to_attotime(200000-500), TIMER_WGP_CPUB_INTERRUPT6);
|
||||
m_cpub_int6_timer->adjust(m_subcpu->cycles_to_attotime(200000-500));
|
||||
device.execute().set_input_line(4, HOLD_LINE);
|
||||
}
|
||||
|
||||
@ -518,7 +517,7 @@ WRITE16_MEMBER(wgp_state::rotate_port_w)
|
||||
#define UNKNOWN_PORT_TAG "UNKNOWN"
|
||||
#define FAKE_PORT_TAG "FAKE"
|
||||
|
||||
READ16_MEMBER(wgp_state::wgp_adinput_r)
|
||||
READ16_MEMBER(wgp_state::adinput_r)
|
||||
{
|
||||
int steer = 0x40;
|
||||
int fake = m_fake.read_safe(0);
|
||||
@ -579,13 +578,13 @@ logerror("CPU #0 PC %06x: warning - read unmapped a/d input offset %06x\n",space
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(wgp_state::wgp_adinput_w)
|
||||
WRITE16_MEMBER(wgp_state::adinput_w)
|
||||
{
|
||||
/* Each write invites a new interrupt as soon as the
|
||||
hardware has got the next a/d conversion ready. We set a token
|
||||
delay of 10000 cycles although our inputs are always ready. */
|
||||
|
||||
timer_set(downcast<cpu_device *>(&space.device())->cycles_to_attotime(10000), TIMER_WGP_INTERRUPT6);
|
||||
m_int6_timer->adjust(m_maincpu->cycles_to_attotime(10000));
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(wgp_state::coins_w)
|
||||
@ -606,23 +605,6 @@ WRITE8_MEMBER(wgp_state::sound_bankswitch_w)
|
||||
m_z80bank->set_entry(data & 3);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(wgp_state::wgp_sound_w)
|
||||
{
|
||||
if (offset == 0)
|
||||
m_tc0140syt->master_port_w(space, 0, data & 0xff);
|
||||
else if (offset == 1)
|
||||
m_tc0140syt->master_comm_w(space, 0, data & 0xff);
|
||||
}
|
||||
|
||||
READ16_MEMBER(wgp_state::wgp_sound_r)
|
||||
{
|
||||
if (offset == 1)
|
||||
return ((m_tc0140syt->master_comm_r(space, 0) & 0xff));
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
MEMORY STRUCTURES
|
||||
*****************************************************************/
|
||||
@ -633,15 +615,15 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, wgp_state )
|
||||
AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("sharedram")
|
||||
AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
|
||||
AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(cpua_ctrl_w)
|
||||
AM_RANGE(0x200000, 0x20000f) AM_READWRITE(wgp_adinput_r,wgp_adinput_w)
|
||||
AM_RANGE(0x200000, 0x20000f) AM_READWRITE(adinput_r, adinput_w)
|
||||
AM_RANGE(0x300000, 0x30ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
|
||||
AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
|
||||
AM_RANGE(0x400000, 0x40bfff) AM_RAM AM_SHARE("spritemap") /* sprite tilemaps */
|
||||
AM_RANGE(0x40c000, 0x40dfff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
|
||||
AM_RANGE(0x40fff0, 0x40fff1) AM_WRITENOP /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */
|
||||
AM_RANGE(0x500000, 0x501fff) AM_RAM /* unknown/unused */
|
||||
AM_RANGE(0x502000, 0x517fff) AM_READWRITE(wgp_pivram_word_r, wgp_pivram_word_w) AM_SHARE("pivram") /* piv tilemaps */
|
||||
AM_RANGE(0x520000, 0x52001f) AM_READWRITE(wgp_piv_ctrl_word_r, wgp_piv_ctrl_word_w) AM_SHARE("piv_ctrlram")
|
||||
AM_RANGE(0x502000, 0x517fff) AM_RAM_WRITE(pivram_word_w) AM_SHARE("pivram") /* piv tilemaps */
|
||||
AM_RANGE(0x520000, 0x52001f) AM_RAM_WRITE(piv_ctrl_word_w) AM_SHARE("piv_ctrlram")
|
||||
AM_RANGE(0x600000, 0x600003) AM_WRITE(rotate_port_w) /* rotation control ? */
|
||||
AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
ADDRESS_MAP_END
|
||||
@ -650,7 +632,8 @@ static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 16 /* LAN areas not mapped... *
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x103fff) AM_RAM
|
||||
AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("sharedram")
|
||||
AM_RANGE(0x200000, 0x200003) AM_READWRITE(wgp_sound_r,wgp_sound_w)
|
||||
AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
|
||||
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
|
||||
// AM_RANGE(0x380000, 0x383fff) AM_READONLY // LAN RAM
|
||||
// AM_RANGE(0x380000, 0x383fff) AM_WRITEONLY // LAN RAM
|
||||
AM_RANGE(0x380000, 0x380001) AM_READ(lan_status_r) // ??
|
||||
@ -886,20 +869,18 @@ However sync to vblank is lacking, which is causing the
|
||||
graphics glitches.
|
||||
***********************************************************/
|
||||
|
||||
void wgp_state::wgp_postload()
|
||||
void wgp_state::postload()
|
||||
{
|
||||
parse_control();
|
||||
}
|
||||
|
||||
void wgp_state::machine_reset()
|
||||
{
|
||||
int i;
|
||||
|
||||
m_cpua_ctrl = 0xff;
|
||||
m_port_sel = 0;
|
||||
m_piv_ctrl_reg = 0;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
m_piv_zoom[i] = 0;
|
||||
m_piv_scrollx[i] = 0;
|
||||
@ -913,9 +894,12 @@ void wgp_state::machine_start()
|
||||
{
|
||||
m_z80bank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x4000);
|
||||
|
||||
m_int6_timer = timer_alloc(TIMER_INTERRUPT6);
|
||||
m_cpub_int6_timer = timer_alloc(TIMER_CPUB_INTERRUPT6);
|
||||
|
||||
save_item(NAME(m_cpua_ctrl));
|
||||
save_item(NAME(m_port_sel));
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(wgp_state::wgp_postload), this));
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(wgp_state::postload), this));
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( wgp )
|
||||
@ -930,7 +914,7 @@ static MACHINE_CONFIG_START( wgp )
|
||||
|
||||
MCFG_CPU_ADD("sub", M68000, 12000000) /* 12 MHz ??? */
|
||||
MCFG_CPU_PROGRAM_MAP(cpu2_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", wgp_state, wgp_cpub_interrupt)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", wgp_state, cpub_interrupt)
|
||||
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(30000))
|
||||
@ -949,7 +933,7 @@ static MACHINE_CONFIG_START( wgp )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(40*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(wgp_state, screen_update_wgp)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(wgp_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", wgp)
|
||||
@ -1211,8 +1195,8 @@ DRIVER_INIT_MEMBER(wgp_state,wgp2)
|
||||
|
||||
/* Working Games with some graphics problems - e.g. missing rotation */
|
||||
|
||||
GAME( 1989, wgp, 0, wgp, wgp, wgp_state, wgp, ROT0, "Taito America Corporation", "World Grand Prix (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
|
||||
GAME( 1989, wgpj, wgp, wgp, wgpj, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
|
||||
GAME( 1989, wgpjoy, wgp, wgp, wgpjoy, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
|
||||
GAME( 1989, wgpjoya, wgp, wgp, wgpjoy, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
|
||||
GAME( 1990, wgp2, wgp, wgp2, wgp2, wgp_state, wgp2, ROT0, "Taito Corporation", "World Grand Prix 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
|
||||
GAME( 1989, wgp, 0, wgp, wgp, wgp_state, wgp, ROT0, "Taito America Corporation", "World Grand Prix (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, wgpj, wgp, wgp, wgpj, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, wgpjoy, wgp, wgp, wgpjoy, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, wgpjoya, wgp, wgp, wgpjoy, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1990, wgp2, wgp, wgp2, wgp2, wgp_state, wgp2, ROT0, "Taito Corporation", "World Grand Prix 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -16,9 +16,9 @@ class wgp_state : public driver_device
|
||||
public:
|
||||
enum
|
||||
{
|
||||
TIMER_WGP_INTERRUPT4,
|
||||
TIMER_WGP_INTERRUPT6,
|
||||
TIMER_WGP_CPUB_INTERRUPT6
|
||||
TIMER_INTERRUPT4,
|
||||
TIMER_INTERRUPT6,
|
||||
TIMER_CPUB_INTERRUPT6
|
||||
};
|
||||
|
||||
wgp_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
@ -41,6 +41,39 @@ public:
|
||||
m_fake(*this, "FAKE")
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE8_MEMBER(coins_w);
|
||||
DECLARE_WRITE16_MEMBER(cpua_ctrl_w);
|
||||
DECLARE_READ16_MEMBER(lan_status_r);
|
||||
DECLARE_WRITE16_MEMBER(rotate_port_w);
|
||||
DECLARE_READ16_MEMBER(adinput_r);
|
||||
DECLARE_WRITE16_MEMBER(adinput_w);
|
||||
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
|
||||
DECLARE_WRITE16_MEMBER(pivram_word_w);
|
||||
DECLARE_WRITE16_MEMBER(piv_ctrl_word_w);
|
||||
DECLARE_DRIVER_INIT(wgp);
|
||||
DECLARE_DRIVER_INIT(wgp2);
|
||||
DECLARE_VIDEO_START(wgp2);
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(cpub_interrupt);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
private:
|
||||
TILE_GET_INFO_MEMBER(get_piv0_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_piv1_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_piv2_tile_info);
|
||||
|
||||
void postload();
|
||||
inline void common_get_piv_tile_info(tile_data &tileinfo, int tile_index, int num);
|
||||
void core_vh_start(int piv_xoffs, int piv_yoffs);
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
void piv_layer_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, uint32_t priority);
|
||||
void parse_control();
|
||||
|
||||
/* memory pointers */
|
||||
required_shared_ptr<uint16_t> m_spritemap;
|
||||
required_shared_ptr<uint16_t> m_spriteram;
|
||||
@ -61,6 +94,8 @@ public:
|
||||
/* misc */
|
||||
uint16_t m_cpua_ctrl;
|
||||
uint16_t m_port_sel;
|
||||
emu_timer *m_int6_timer;
|
||||
emu_timer *m_cpub_int6_timer;
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -75,38 +110,4 @@ public:
|
||||
optional_ioport m_steer;
|
||||
optional_ioport m_unknown;
|
||||
optional_ioport m_fake;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(coins_w);
|
||||
DECLARE_WRITE16_MEMBER(cpua_ctrl_w);
|
||||
DECLARE_READ16_MEMBER(lan_status_r);
|
||||
DECLARE_WRITE16_MEMBER(rotate_port_w);
|
||||
DECLARE_READ16_MEMBER(wgp_adinput_r);
|
||||
DECLARE_WRITE16_MEMBER(wgp_adinput_w);
|
||||
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
|
||||
DECLARE_WRITE16_MEMBER(wgp_sound_w);
|
||||
DECLARE_READ16_MEMBER(wgp_sound_r);
|
||||
DECLARE_READ16_MEMBER(wgp_pivram_word_r);
|
||||
DECLARE_WRITE16_MEMBER(wgp_pivram_word_w);
|
||||
DECLARE_READ16_MEMBER(wgp_piv_ctrl_word_r);
|
||||
DECLARE_WRITE16_MEMBER(wgp_piv_ctrl_word_w);
|
||||
DECLARE_DRIVER_INIT(wgp);
|
||||
DECLARE_DRIVER_INIT(wgp2);
|
||||
TILE_GET_INFO_MEMBER(get_piv0_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_piv1_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_piv2_tile_info);
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
DECLARE_VIDEO_START(wgp2);
|
||||
uint32_t screen_update_wgp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(wgp_cpub_interrupt);
|
||||
void wgp_postload();
|
||||
inline void common_get_piv_tile_info( tile_data &tileinfo, int tile_index, int num );
|
||||
void wgp_core_vh_start( int piv_xoffs, int piv_yoffs );
|
||||
void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs );
|
||||
void wgp_piv_layer_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, uint32_t priority );
|
||||
void parse_control();
|
||||
|
||||
protected:
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
};
|
||||
|
@ -34,7 +34,7 @@ TILE_GET_INFO_MEMBER(wgp_state::get_piv2_tile_info)
|
||||
}
|
||||
|
||||
|
||||
void wgp_state::wgp_core_vh_start( int piv_xoffs, int piv_yoffs )
|
||||
void wgp_state::core_vh_start(int piv_xoffs, int piv_yoffs)
|
||||
{
|
||||
m_piv_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wgp_state::get_piv0_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
|
||||
m_piv_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wgp_state::get_piv1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
|
||||
@ -67,12 +67,12 @@ void wgp_state::wgp_core_vh_start( int piv_xoffs, int piv_yoffs )
|
||||
|
||||
void wgp_state::video_start()
|
||||
{
|
||||
wgp_core_vh_start(32, 16);
|
||||
core_vh_start(32, 16);
|
||||
}
|
||||
|
||||
VIDEO_START_MEMBER(wgp_state,wgp2)
|
||||
{
|
||||
wgp_core_vh_start(32, 16);
|
||||
core_vh_start(32, 16);
|
||||
}
|
||||
|
||||
|
||||
@ -120,12 +120,7 @@ custom chip capable of four rather than three tilemaps.)
|
||||
|
||||
*******************************************************************/
|
||||
|
||||
READ16_MEMBER(wgp_state::wgp_pivram_word_r)
|
||||
{
|
||||
return m_pivram[offset];
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(wgp_state::wgp_pivram_word_w)
|
||||
WRITE16_MEMBER(wgp_state::pivram_word_w)
|
||||
{
|
||||
COMBINE_DATA(&m_pivram[offset]);
|
||||
|
||||
@ -143,12 +138,7 @@ WRITE16_MEMBER(wgp_state::wgp_pivram_word_w)
|
||||
}
|
||||
}
|
||||
|
||||
READ16_MEMBER(wgp_state::wgp_piv_ctrl_word_r)
|
||||
{
|
||||
return m_piv_ctrlram[offset];
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(wgp_state::wgp_piv_ctrl_word_w)
|
||||
WRITE16_MEMBER(wgp_state::piv_ctrl_word_w)
|
||||
{
|
||||
uint16_t a, b;
|
||||
|
||||
@ -510,7 +500,7 @@ static inline void bryan2_drawscanline( bitmap_ind16 &bitmap, int x, int y, int
|
||||
|
||||
|
||||
|
||||
void wgp_state::wgp_piv_layer_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, uint32_t priority )
|
||||
void wgp_state::piv_layer_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, uint32_t priority)
|
||||
{
|
||||
bitmap_ind16 &srcbitmap = m_piv_tilemap[layer]->pixmap();
|
||||
bitmap_ind8 &flagsbitmap = m_piv_tilemap[layer]->flagsmap();
|
||||
@ -625,7 +615,7 @@ void wgp_state::wgp_piv_layer_draw( screen_device &screen, bitmap_ind16 &bitmap,
|
||||
SCREEN REFRESH
|
||||
**************************************************************/
|
||||
|
||||
uint32_t wgp_state::screen_update_wgp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
uint32_t wgp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int i;
|
||||
uint8_t layer[3];
|
||||
@ -681,21 +671,21 @@ uint32_t wgp_state::screen_update_wgp(screen_device &screen, bitmap_ind16 &bitma
|
||||
#ifdef MAME_DEBUG
|
||||
if (m_dislayer[layer[0]] == 0)
|
||||
#endif
|
||||
wgp_piv_layer_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
|
||||
piv_layer_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
|
||||
|
||||
#ifdef MAME_DEBUG
|
||||
if (m_dislayer[layer[1]] == 0)
|
||||
#endif
|
||||
wgp_piv_layer_draw(screen, bitmap, cliprect, layer[1], 0, 2);
|
||||
piv_layer_draw(screen, bitmap, cliprect, layer[1], 0, 2);
|
||||
|
||||
#ifdef MAME_DEBUG
|
||||
if (m_dislayer[layer[2]] == 0)
|
||||
#endif
|
||||
wgp_piv_layer_draw(screen, bitmap, cliprect, layer[2], 0, 4);
|
||||
piv_layer_draw(screen, bitmap, cliprect, layer[2], 0, 4);
|
||||
|
||||
draw_sprites(screen, bitmap, cliprect, 16);
|
||||
|
||||
/* ... then here we should apply rotation from wgp_sate_ctrl[] to the bitmap before we draw the TC0100SCN layers on it */
|
||||
/* ... then here we should apply rotation from m_rotate_ctrl[] to the bitmap before we draw the TC0100SCN layers on it */
|
||||
layer[0] = m_tc0100scn->bottomlayer();
|
||||
layer[1] = layer[0] ^ 1;
|
||||
layer[2] = 2;
|
||||
@ -711,7 +701,7 @@ uint32_t wgp_state::screen_update_wgp(screen_device &screen, bitmap_ind16 &bitma
|
||||
#if 0
|
||||
{
|
||||
char buf[80];
|
||||
sprintf(buf,"wgp_piv_ctrl_reg: %04x y zoom: %04x %04x %04x",m_piv_ctrl_reg,
|
||||
sprintf(buf,"piv_ctrl_reg: %04x y zoom: %04x %04x %04x",m_piv_ctrl_reg,
|
||||
m_piv_zoom[0],m_piv_zoom[1],m_piv_zoom[2]);
|
||||
popmessage(buf);
|
||||
}
|
||||
@ -725,7 +715,7 @@ uint32_t wgp_state::screen_update_wgp(screen_device &screen, bitmap_ind16 &bitma
|
||||
|
||||
for (i = 0; i < 8; i += 1)
|
||||
{
|
||||
sprintf (buf, "%02x: %04x", i, wgp_rotate_ctrl[i]);
|
||||
sprintf (buf, "%02x: %04x", i, rotate_ctrl[i]);
|
||||
ui_draw_text (buf, 0, i*8);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user