mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
slap fight: Correct placement
This commit is contained in:
parent
19dfefb91b
commit
c5b07e0fe7
@ -67,7 +67,7 @@ $00 Status register - cycle 0xc7, 0x55, 0x00 (Thanks to Dave Spicer for the
|
||||
Known Info
|
||||
----------
|
||||
|
||||
2K Character RAM at write only address $f000-$f7fff looks to be organised
|
||||
2K Character RAM at write only address $f000-$f7ff looks to be organised
|
||||
64x32 chars with the screen rotated through 90 degrees clockwise. There
|
||||
appears to be some kind of attribute(?) RAM above at $f800-$ffff organised
|
||||
in the same manner.
|
||||
@ -79,6 +79,12 @@ Print function maybe around $09a2 based on info from log file.
|
||||
|
||||
$e000 looks like sprite ram, setup routines at $0008.
|
||||
|
||||
Partial hand-made schematics don't show a buffer, but the games most
|
||||
definitely need it. Could be the second half of the ram, which seems
|
||||
otherwise unused, but it would be weird bandwidth-wise. It's not
|
||||
double-buffering through page swapping, sprite updates are
|
||||
incremental.
|
||||
|
||||
|
||||
Sound System CPU Details
|
||||
------------------------
|
||||
@ -910,9 +916,12 @@ void slapfght_state::perfrman(machine_config &config)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(36_MHz_XTAL/6, 388, 0, 296, 270, 0, 240);
|
||||
m_screen->set_screen_update(FUNC(slapfght_state::screen_update_perfrman));
|
||||
m_screen->screen_vblank().set(m_spriteram_buffer, FUNC(buffered_spriteram8_device::vblank_copy_falling));
|
||||
m_screen->screen_vblank().append(FUNC(slapfght_state::vblank_irq));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
BUFFERED_SPRITERAM8(config, m_spriteram_buffer);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_perfrman);
|
||||
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
|
||||
MCFG_VIDEO_START_OVERRIDE(slapfght_state, perfrman)
|
||||
@ -956,9 +965,12 @@ void slapfght_state::tigerh(machine_config &config)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(36_MHz_XTAL/6, 388, 0, 296, 270, 0, 240);
|
||||
m_screen->set_screen_update(FUNC(slapfght_state::screen_update_slapfight));
|
||||
m_screen->screen_vblank().set(m_spriteram_buffer, FUNC(buffered_spriteram8_device::vblank_copy_falling));
|
||||
m_screen->screen_vblank().append(FUNC(slapfght_state::vblank_irq));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
BUFFERED_SPRITERAM8(config, m_spriteram_buffer);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_slapfght);
|
||||
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
|
||||
MCFG_VIDEO_START_OVERRIDE(slapfght_state, slapfight)
|
||||
@ -1036,9 +1048,12 @@ void slapfght_state::slapfigh(machine_config &config)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_raw(36_MHz_XTAL/6, 388, 0, 296, 270, 0, 240);
|
||||
m_screen->set_screen_update(FUNC(slapfght_state::screen_update_slapfight));
|
||||
m_screen->screen_vblank().set(m_spriteram_buffer, FUNC(buffered_spriteram8_device::vblank_copy_falling));
|
||||
m_screen->screen_vblank().append(FUNC(slapfght_state::vblank_irq));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
BUFFERED_SPRITERAM8(config, m_spriteram_buffer);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_slapfght);
|
||||
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
|
||||
MCFG_VIDEO_START_OVERRIDE(slapfght_state, slapfight)
|
||||
@ -2101,3 +2116,4 @@ GAME( 1986, grdian, 0, slapfigh, getstar, slapfght_state, init_sl
|
||||
GAME( 1986, getstarj, grdian, slapfigh, getstarj, slapfght_state, init_slapfigh, ROT0, "Toaplan / Taito", "Get Star (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, getstarb1, grdian, getstarb1, getstarj, slapfght_state, init_getstarb1, ROT0, "bootleg", "Get Star (bootleg set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
||||
GAME( 1986, getstarb2, grdian, getstarb2, getstarb2, slapfght_state, init_getstarb2, ROT0, "bootleg", "Get Star (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
z
|
||||
|
@ -31,6 +31,7 @@ public:
|
||||
m_videoram(*this, "videoram"),
|
||||
m_colorram(*this, "colorram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_spriteram_buffer(*this, "spriteram"),
|
||||
m_fixvideoram(*this, "fixvideoram"),
|
||||
m_fixcolorram(*this, "fixcolorram")
|
||||
{ }
|
||||
@ -64,6 +65,7 @@ private:
|
||||
required_shared_ptr<uint8_t> m_videoram;
|
||||
required_shared_ptr<uint8_t> m_colorram;
|
||||
required_shared_ptr<uint8_t> m_spriteram;
|
||||
required_device<buffered_spriteram8_device> m_spriteram_buffer;
|
||||
optional_shared_ptr<uint8_t> m_fixvideoram;
|
||||
optional_shared_ptr<uint8_t> m_fixcolorram;
|
||||
|
||||
|
@ -63,8 +63,8 @@ VIDEO_START_MEMBER(slapfght_state, slapfight)
|
||||
m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(slapfght_state::get_pf1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(slapfght_state::get_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
|
||||
m_fix_tilemap->set_scrolldy(0, 15);
|
||||
m_pf1_tilemap->set_scrolldy(0, 14);
|
||||
m_fix_tilemap->set_scrolldy(-16, 0);
|
||||
m_pf1_tilemap->set_scrolldy(-17, -1);
|
||||
|
||||
m_fix_tilemap->set_transparent_pen(0);
|
||||
}
|
||||
@ -136,9 +136,9 @@ WRITE_LINE_MEMBER(slapfght_state::palette_bank_w)
|
||||
|
||||
void slapfght_state::draw_perfrman_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int layer)
|
||||
{
|
||||
const uint8_t *src = m_spriteram;
|
||||
const uint8_t *src = m_spriteram_buffer->buffer();
|
||||
|
||||
for (int offs = 0; offs < m_spriteram.bytes(); offs += 4)
|
||||
for (int offs = 0; offs < 0x800; offs += 4)
|
||||
{
|
||||
/*
|
||||
0: xxxxxxxx - code
|
||||
@ -186,9 +186,9 @@ uint32_t slapfght_state::screen_update_perfrman(screen_device &screen, bitmap_in
|
||||
|
||||
void slapfght_state::draw_slapfight_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
const uint8_t *src = m_spriteram;
|
||||
const uint8_t *src = m_spriteram_buffer->buffer();
|
||||
|
||||
for (int offs = 0; offs < m_spriteram.bytes(); offs += 4)
|
||||
for (int offs = 0; offs < 0x800; offs += 4)
|
||||
{
|
||||
/*
|
||||
0: xxxxxxxx - code low
|
||||
@ -201,14 +201,14 @@ void slapfght_state::draw_slapfight_sprites(bitmap_ind16 &bitmap, const rectangl
|
||||
*/
|
||||
|
||||
int code = src[offs + 0] | ((src[offs + 2] & 0xc0) << 2);
|
||||
int sy = src[offs + 3] + 2;
|
||||
int sx = (src[offs + 1] | (src[offs + 2] << 8 & 0x100)) - 17;
|
||||
int sy = src[offs + 3] - 17;
|
||||
int sx = (src[offs + 1] | (src[offs + 2] << 8 & 0x100)) - 13;
|
||||
int color = src[offs + 2] >> 1 & 0xf;
|
||||
int fx = 0, fy = 0;
|
||||
|
||||
if (flip_screen())
|
||||
{
|
||||
sy = (238 - sy) & 0xff;
|
||||
sy = (206 - sy) & 0xff;
|
||||
sx = 284 - sx;
|
||||
fx = fy = 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user