mirror of
https://github.com/holub/mame
synced 2025-04-16 21:44:32 +03:00
start converting spbactn to tilemaps, it's now clear that the prototype uploads the backgrounds once and uses the scroll regs (not hooked up) whereas the release version just uploads them as it needs them before each level.
I wonder if the extra z80 rom + gfx on the proto are for a 2nd screen, some kind of fake dmd?
This commit is contained in:
parent
944baeb5aa
commit
c083fd6c15
@ -151,8 +151,8 @@ static ADDRESS_MAP_START( spbactn_map, AS_PROGRAM, 16, spbactn_state )
|
|||||||
AM_RANGE(0x00000, 0x3ffff) AM_ROM
|
AM_RANGE(0x00000, 0x3ffff) AM_ROM
|
||||||
AM_RANGE(0x40000, 0x43fff) AM_RAM // main ram
|
AM_RANGE(0x40000, 0x43fff) AM_RAM // main ram
|
||||||
AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
|
AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
|
||||||
AM_RANGE(0x60000, 0x67fff) AM_RAM AM_SHARE("fgvideoram")
|
AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram")
|
||||||
AM_RANGE(0x70000, 0x77fff) AM_RAM AM_SHARE("bgvideoram")
|
AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram")
|
||||||
AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
|
AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
|
||||||
AM_RANGE(0x90000, 0x90001) AM_READ_PORT("IN0")
|
AM_RANGE(0x90000, 0x90001) AM_READ_PORT("IN0")
|
||||||
AM_RANGE(0x90010, 0x90011) AM_READ_PORT("IN1")
|
AM_RANGE(0x90010, 0x90011) AM_READ_PORT("IN1")
|
||||||
@ -199,9 +199,9 @@ static ADDRESS_MAP_START( spbactnp_map, AS_PROGRAM, 16, spbactn_state )
|
|||||||
AM_RANGE(0x00000, 0x3ffff) AM_ROM
|
AM_RANGE(0x00000, 0x3ffff) AM_ROM
|
||||||
AM_RANGE(0x40000, 0x43fff) AM_RAM // main ram
|
AM_RANGE(0x40000, 0x43fff) AM_RAM // main ram
|
||||||
AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
|
AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
|
||||||
AM_RANGE(0x60000, 0x67fff) AM_RAM AM_SHARE("fgvideoram")
|
AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram")
|
||||||
AM_RANGE(0x70000, 0x77fff) AM_RAM AM_SHARE("bgvideoram")
|
AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram")
|
||||||
AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_word_w) AM_SHARE("paletteram") // yes R and G are swapped vs. the released version
|
AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_word_w) AM_SHARE("paletteram") // yes R and G are swapped vs. the released version
|
||||||
|
|
||||||
AM_RANGE(0x90000, 0x900ff) AM_READ(temp_read_handler_r) // temp
|
AM_RANGE(0x90000, 0x900ff) AM_READ(temp_read_handler_r) // temp
|
||||||
|
|
||||||
@ -434,7 +434,7 @@ static MACHINE_CONFIG_START( spbactnp, spbactn_state )
|
|||||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_4MHz)
|
MCFG_CPU_ADD("audiocpu", Z80, XTAL_4MHz)
|
||||||
MCFG_CPU_PROGRAM_MAP(spbactn_sound_map) // wrong
|
MCFG_CPU_PROGRAM_MAP(spbactn_sound_map) // wrong
|
||||||
|
|
||||||
// there is a rom for another Z80??
|
// there is a rom for another Z80 and a socket for one..
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
|
@ -11,6 +11,14 @@ public:
|
|||||||
required_shared_ptr<UINT16> m_fgvideoram;
|
required_shared_ptr<UINT16> m_fgvideoram;
|
||||||
required_shared_ptr<UINT16> m_spvideoram;
|
required_shared_ptr<UINT16> m_spvideoram;
|
||||||
|
|
||||||
|
tilemap_t *m_bg_tilemap;
|
||||||
|
tilemap_t *m_fg_tilemap;
|
||||||
|
DECLARE_WRITE16_MEMBER(bg_videoram_w);
|
||||||
|
DECLARE_WRITE16_MEMBER(fg_videoram_w);
|
||||||
|
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||||
|
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||||
|
|
||||||
|
|
||||||
bitmap_ind16 m_tile_bitmap_bg;
|
bitmap_ind16 m_tile_bitmap_bg;
|
||||||
bitmap_ind16 m_tile_bitmap_fg;
|
bitmap_ind16 m_tile_bitmap_fg;
|
||||||
DECLARE_WRITE16_MEMBER(soundcommand_w);
|
DECLARE_WRITE16_MEMBER(soundcommand_w);
|
||||||
|
@ -117,11 +117,46 @@ static int draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const re
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WRITE16_MEMBER(spbactn_state::bg_videoram_w)
|
||||||
|
{
|
||||||
|
COMBINE_DATA(&m_bgvideoram[offset]);
|
||||||
|
m_bg_tilemap->mark_tile_dirty(offset&0x1fff);
|
||||||
|
}
|
||||||
|
|
||||||
|
TILE_GET_INFO_MEMBER(spbactn_state::get_bg_tile_info)
|
||||||
|
{
|
||||||
|
int attr = m_bgvideoram[tile_index];
|
||||||
|
int tileno = m_bgvideoram[tile_index+0x2000];
|
||||||
|
SET_TILE_INFO_MEMBER(1, tileno, ((attr & 0x00f0)>>4), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WRITE16_MEMBER(spbactn_state::fg_videoram_w)
|
||||||
|
{
|
||||||
|
COMBINE_DATA(&m_fgvideoram[offset]);
|
||||||
|
m_fg_tilemap->mark_tile_dirty(offset&0x1fff);
|
||||||
|
}
|
||||||
|
|
||||||
|
TILE_GET_INFO_MEMBER(spbactn_state::get_fg_tile_info)
|
||||||
|
{
|
||||||
|
int attr = m_fgvideoram[tile_index];
|
||||||
|
int tileno = m_fgvideoram[tile_index+0x2000];
|
||||||
|
|
||||||
|
SET_TILE_INFO_MEMBER(0, tileno, ((attr & 0x00f0)>>4), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void spbactn_state::video_start()
|
void spbactn_state::video_start()
|
||||||
{
|
{
|
||||||
/* allocate bitmaps */
|
/* allocate bitmaps */
|
||||||
machine().primary_screen->register_screen_bitmap(m_tile_bitmap_bg);
|
machine().primary_screen->register_screen_bitmap(m_tile_bitmap_bg);
|
||||||
machine().primary_screen->register_screen_bitmap(m_tile_bitmap_fg);
|
machine().primary_screen->register_screen_bitmap(m_tile_bitmap_fg);
|
||||||
|
|
||||||
|
|
||||||
|
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(spbactn_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 64, 128);
|
||||||
|
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(spbactn_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 64, 128);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int spbactn_state::draw_video(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, bool alt_sprites)
|
int spbactn_state::draw_video(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, bool alt_sprites)
|
||||||
|
Loading…
Reference in New Issue
Block a user