mirror of
https://github.com/holub/mame
synced 2025-06-01 02:21:48 +03:00
update with latest knowledge (nw)
This commit is contained in:
parent
1dcb8313d6
commit
79e698bc32
File diff suppressed because it is too large
Load Diff
@ -9,6 +9,18 @@
|
||||
#include "sound/dac.h"
|
||||
#include "machine/pic8259.h"
|
||||
|
||||
#define M81_B_B_JUMPER_J3_S \
|
||||
PORT_START("JumperJ3") \
|
||||
PORT_CONFNAME( 0x0001, 0x0000, "M81-B-B Jumper J3" ) \
|
||||
PORT_CONFSETTING( 0x0000, "S" ) \
|
||||
/* PORT_CONFSETTING( 0x0001, "W" ) */
|
||||
|
||||
#define M81_B_B_JUMPER_J3_W \
|
||||
PORT_START("JumperJ3") \
|
||||
PORT_CONFNAME( 0x0001, 0x0001, "M81-B-B Jumper J3" ) \
|
||||
/* PORT_CONFSETTING( 0x0000, "S" ) */ \
|
||||
PORT_CONFSETTING( 0x0001, "W" )
|
||||
|
||||
class m72_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -30,7 +42,10 @@ public:
|
||||
m_soundram(*this, "soundram"),
|
||||
m_generic_paletteram_16(*this, "paletteram"),
|
||||
m_generic_paletteram2_16(*this, "paletteram2"),
|
||||
m_upd71059c(*this, "upd71059c")
|
||||
m_upd71059c(*this, "upd71059c"),
|
||||
m_fg_source(0),
|
||||
m_bg_source(0),
|
||||
m_m81_b_b_j3(*this, "JumperJ3")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -66,6 +81,10 @@ public:
|
||||
INT32 m_scrolly2;
|
||||
INT32 m_video_off;
|
||||
|
||||
int m_fg_source;
|
||||
int m_bg_source;
|
||||
optional_ioport m_m81_b_b_j3;
|
||||
|
||||
//poundfor specific
|
||||
int m_prev[4];
|
||||
int m_diff[4];
|
||||
@ -135,7 +154,6 @@ public:
|
||||
void machine_start();
|
||||
void machine_reset();
|
||||
DECLARE_VIDEO_START(m72);
|
||||
DECLARE_MACHINE_RESET(xmultipl);
|
||||
DECLARE_VIDEO_START(xmultipl);
|
||||
DECLARE_VIDEO_START(hharry);
|
||||
DECLARE_VIDEO_START(rtype2);
|
||||
@ -165,9 +183,10 @@ public:
|
||||
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_m81(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_majtitle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
inline void get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum);
|
||||
inline void rtype2_get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum);
|
||||
inline void m72_m81_get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum);
|
||||
inline void m82_m84_get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum);
|
||||
void register_savestate();
|
||||
inline void changecolor(int color,int r,int g,int b);
|
||||
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
inline void m72_state::get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum)
|
||||
inline void m72_state::m72_m81_get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum)
|
||||
{
|
||||
int code,attr,color,pri;
|
||||
|
||||
@ -37,7 +37,7 @@ inline void m72_state::get_tile_info(tile_data &tileinfo,int tile_index,const UI
|
||||
tileinfo.group = pri;
|
||||
}
|
||||
|
||||
inline void m72_state::rtype2_get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum)
|
||||
inline void m72_state::m82_m84_get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum)
|
||||
{
|
||||
int code,attr,color,pri;
|
||||
|
||||
@ -70,22 +70,22 @@ inline void m72_state::rtype2_get_tile_info(tile_data &tileinfo,int tile_index,c
|
||||
|
||||
TILE_GET_INFO_MEMBER(m72_state::get_bg_tile_info)
|
||||
{
|
||||
get_tile_info(tileinfo,tile_index,m_videoram2,2);
|
||||
m72_m81_get_tile_info(tileinfo,tile_index,m_videoram2,m_bg_source);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(m72_state::get_fg_tile_info)
|
||||
{
|
||||
get_tile_info(tileinfo,tile_index,m_videoram1,1);
|
||||
m72_m81_get_tile_info(tileinfo,tile_index,m_videoram1,m_fg_source);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(m72_state::rtype2_get_bg_tile_info)
|
||||
{
|
||||
rtype2_get_tile_info(tileinfo,tile_index,m_videoram2,1);
|
||||
m82_m84_get_tile_info(tileinfo,tile_index,m_videoram2,1);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(m72_state::rtype2_get_fg_tile_info)
|
||||
{
|
||||
rtype2_get_tile_info(tileinfo,tile_index,m_videoram1,1);
|
||||
m82_m84_get_tile_info(tileinfo,tile_index,m_videoram1,1);
|
||||
}
|
||||
|
||||
|
||||
@ -136,6 +136,10 @@ VIDEO_START_MEMBER(m72_state,m72)
|
||||
m_bg_tilemap->set_scrolldx(0,0);
|
||||
m_bg_tilemap->set_scrolldy(-128,-128);
|
||||
|
||||
// on M72 the FG data always comes from the Ax roms and the BG data always comes from the Bx roms
|
||||
m_fg_source = 1;
|
||||
m_bg_source = 2;
|
||||
|
||||
register_savestate();
|
||||
}
|
||||
|
||||
@ -166,57 +170,7 @@ VIDEO_START_MEMBER(m72_state,hharry)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
VIDEO_START_MEMBER(m72_state,rtype2)
|
||||
{
|
||||
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
|
||||
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
|
||||
|
||||
m_buffered_spriteram = auto_alloc_array(machine(), UINT16, m_spriteram.bytes()/2);
|
||||
|
||||
m_fg_tilemap->set_transmask(0,0xffff,0x0001);
|
||||
m_fg_tilemap->set_transmask(1,0x00ff,0xff01);
|
||||
m_fg_tilemap->set_transmask(2,0x0001,0xffff);
|
||||
|
||||
m_bg_tilemap->set_transmask(0,0xffff,0x0000);
|
||||
m_bg_tilemap->set_transmask(1,0x00ff,0xff00);
|
||||
m_bg_tilemap->set_transmask(2,0x0001,0xfffe);
|
||||
|
||||
memset(m_buffered_spriteram,0,m_spriteram.bytes());
|
||||
|
||||
m_fg_tilemap->set_scrolldx(4,0);
|
||||
m_fg_tilemap->set_scrolldy(-128,16);
|
||||
|
||||
m_bg_tilemap->set_scrolldx(4,0);
|
||||
m_bg_tilemap->set_scrolldy(-128,16);
|
||||
|
||||
register_savestate();
|
||||
}
|
||||
|
||||
VIDEO_START_MEMBER(m72_state,poundfor)
|
||||
{
|
||||
VIDEO_START_CALL_MEMBER(rtype2);
|
||||
|
||||
m_fg_tilemap->set_scrolldx(6,0);
|
||||
m_bg_tilemap->set_scrolldx(6,0);
|
||||
m_fg_tilemap->set_scrolldy(-128,-128);
|
||||
m_bg_tilemap->set_scrolldy(-128,-128);
|
||||
|
||||
save_item(NAME(m_prev));
|
||||
save_item(NAME(m_diff));
|
||||
}
|
||||
|
||||
VIDEO_START_MEMBER(m72_state,hharryu)
|
||||
{
|
||||
VIDEO_START_CALL_MEMBER(rtype2);
|
||||
|
||||
m_fg_tilemap->set_scrolldx(4,3);
|
||||
m_bg_tilemap->set_scrolldx(6,0);
|
||||
m_fg_tilemap->set_scrolldy(-128,-128);
|
||||
m_bg_tilemap->set_scrolldy(-128,-128);
|
||||
}
|
||||
|
||||
// M82
|
||||
VIDEO_START_MEMBER(m72_state, m82_common)
|
||||
{
|
||||
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
|
||||
@ -278,6 +232,58 @@ VIDEO_START_MEMBER(m72_state, m82_small)
|
||||
m_bg_tilemap->set_scrolldy(-128,-128);
|
||||
}
|
||||
|
||||
// M84
|
||||
VIDEO_START_MEMBER(m72_state,rtype2)
|
||||
{
|
||||
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
|
||||
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
|
||||
|
||||
m_buffered_spriteram = auto_alloc_array(machine(), UINT16, m_spriteram.bytes()/2);
|
||||
|
||||
m_fg_tilemap->set_transmask(0,0xffff,0x0001);
|
||||
m_fg_tilemap->set_transmask(1,0x00ff,0xff01);
|
||||
m_fg_tilemap->set_transmask(2,0x0001,0xffff);
|
||||
|
||||
m_bg_tilemap->set_transmask(0,0xffff,0x0000);
|
||||
m_bg_tilemap->set_transmask(1,0x00ff,0xff00);
|
||||
m_bg_tilemap->set_transmask(2,0x0001,0xfffe);
|
||||
|
||||
memset(m_buffered_spriteram,0,m_spriteram.bytes());
|
||||
|
||||
m_fg_tilemap->set_scrolldx(4,0);
|
||||
m_fg_tilemap->set_scrolldy(-128,16);
|
||||
|
||||
m_bg_tilemap->set_scrolldx(4,0);
|
||||
m_bg_tilemap->set_scrolldy(-128,16);
|
||||
|
||||
register_savestate();
|
||||
}
|
||||
|
||||
|
||||
VIDEO_START_MEMBER(m72_state,hharryu)
|
||||
{
|
||||
VIDEO_START_CALL_MEMBER(rtype2);
|
||||
|
||||
m_fg_tilemap->set_scrolldx(4,3);
|
||||
m_bg_tilemap->set_scrolldx(6,0);
|
||||
m_fg_tilemap->set_scrolldy(-128,-128);
|
||||
m_bg_tilemap->set_scrolldy(-128,-128);
|
||||
}
|
||||
|
||||
// m85
|
||||
VIDEO_START_MEMBER(m72_state,poundfor)
|
||||
{
|
||||
VIDEO_START_CALL_MEMBER(rtype2);
|
||||
|
||||
m_fg_tilemap->set_scrolldx(6,0);
|
||||
m_bg_tilemap->set_scrolldx(6,0);
|
||||
m_fg_tilemap->set_scrolldy(-128,-128);
|
||||
m_bg_tilemap->set_scrolldy(-128,-128);
|
||||
|
||||
save_item(NAME(m_prev));
|
||||
save_item(NAME(m_diff));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@ -567,6 +573,18 @@ UINT32 m72_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, con
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT32 m72_state::screen_update_m81(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
// on M81 the FG data always comes from the Ax roms
|
||||
// the source of the BG data however depends on Jumper J3
|
||||
int J3 = m_m81_b_b_j3->read();
|
||||
if (J3 == 0) m_bg_source = 1;
|
||||
else m_bg_source = 2;
|
||||
|
||||
return screen_update(screen, bitmap, cliprect);
|
||||
}
|
||||
|
||||
|
||||
UINT32 m72_state::screen_update_majtitle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int i;
|
||||
|
Loading…
Reference in New Issue
Block a user