mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
New WORKING game
-------------------- Birdiy [Alberto Grego, Corrado Tomaselli, Angelo Salese, The Dumping Union] Out of whatsnew: What about killing all of the interrupt_enable_w() instances? imho that should be a per-driver latch, not a core function.
This commit is contained in:
parent
49a2673fba
commit
ba8e2e60ce
@ -16,8 +16,8 @@ cheats:
|
||||
- [0xb0-0xb3] timer
|
||||
|
||||
lamps:
|
||||
?OK???!! = really OK! (91+)
|
||||
???????? = pretty good (80+)
|
||||
?OK???!! = really OK! (91+) (0x81)
|
||||
???????? = pretty good (80+) (0x82)
|
||||
???~??? = not bad (70+) (0x84)
|
||||
??? = normal (55+) (0x88)
|
||||
????? = pretty bad (40+) (0x90)
|
||||
|
@ -903,6 +903,30 @@ ADDRESS_MAP_END
|
||||
// The Pacman code uses $5004 and $5005 for LED's and $5007 for coin lockout. This hardware does not
|
||||
// exist on any Pacman or Puckman board I have seen. DW
|
||||
|
||||
static ADDRESS_MAP_START( birdiy_map, AS_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM
|
||||
AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_BASE_MEMBER(pacman_state, m_videoram)
|
||||
AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_BASE_MEMBER(pacman_state, m_colorram)
|
||||
// AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
|
||||
AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
|
||||
AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
|
||||
// AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf38) AM_WRITE(interrupt_enable_w)
|
||||
AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xaf38) AM_DEVWRITE("namco", pacman_sound_enable_w)
|
||||
// AM_RANGE(0x5002, 0x5002) AM_MIRROR(0xaf38) AM_WRITENOP
|
||||
AM_RANGE(0x5003, 0x5003) AM_MIRROR(0xaf38) AM_WRITE(pacman_flipscreen_w)
|
||||
// AM_RANGE(0x5004, 0x5005) AM_MIRROR(0xaf38) AM_WRITENOP // AM_WRITE(pacman_leds_w)
|
||||
// AM_RANGE(0x5006, 0x5006) AM_MIRROR(0xaf38) AM_WRITENOP // AM_WRITE(pacman_coin_lockout_global_w)
|
||||
AM_RANGE(0x5007, 0x5007) AM_MIRROR(0xaf38) AM_WRITE(pacman_coin_counter_w)
|
||||
AM_RANGE(0x5080, 0x509f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", pacman_sound_w)
|
||||
AM_RANGE(0x50a0, 0x50af) AM_MIRROR(0xaf00) AM_WRITEONLY AM_BASE_GENERIC(spriteram2)
|
||||
// AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
|
||||
// AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
|
||||
AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_WRITE(watchdog_reset_w)
|
||||
AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") /* IN0 */
|
||||
AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") /* IN1 */
|
||||
AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") /* DSW1 */
|
||||
AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") /* DSW2 */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( mspacman_map, AS_PROGRAM, 8 )
|
||||
AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_BASE_MEMBER(pacman_state, m_videoram)
|
||||
@ -3135,6 +3159,18 @@ static MACHINE_CONFIG_START( pacman, pacman_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( birdiy, pacman )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(birdiy_map)
|
||||
MCFG_CPU_IO_MAP(0)
|
||||
|
||||
MCFG_VIDEO_START(birdiy)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( piranha, pacman )
|
||||
|
||||
@ -4522,6 +4558,52 @@ ROM_START( eyeszac )
|
||||
ROM_LOAD( "82s126.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Birdyi by Mama Top
|
||||
|
||||
Pcb marked Mama.Top MDK-13V-0 FCC Made in japan
|
||||
|
||||
1x 18.432mhz OSC
|
||||
1x Z80 LH0080 by Sharp running at 3.069mhz (18.432mhz/6)
|
||||
6x dynamic rams HN472114P-3 near the CPU
|
||||
1x dipswitch
|
||||
6x HN462732 eproms
|
||||
4x 82s129N proms
|
||||
1x DIL 18 pin chip with markings scratched out in position 7M
|
||||
1x HA1386 amplifier
|
||||
No sound chip, probably made of discrete logic?
|
||||
|
||||
Note: the marking MDK-xxV-x is sometimes found on Nanao manufactured pcbs for Irem, so it very
|
||||
likely that the board was manufactured by Nanao
|
||||
(example: Major Title and Gussun Oyoyo are marked MDK-311V-0, M92 and M107 pcbs are marked MDK-321-V0)
|
||||
|
||||
Board supplied by Alberto Grego
|
||||
Dumped by Corrado Tomaselli
|
||||
*/
|
||||
|
||||
ROM_START( birdiy )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "a6.bin", 0x0000, 0x001000, CRC(3a58f8ad) SHA1(39e990ad4ee1fdec248665149bdb1072c8c01a9a) )
|
||||
ROM_LOAD( "c6.bin", 0x1000, 0x001000, CRC(fec61ea2) SHA1(f7ff528d2bcede2434d0a33ee0193b50113ef720) )
|
||||
ROM_LOAD( "a4.bin", 0x2000, 0x001000, CRC(3392783b) SHA1(e477f4284fd5b6c9f3619bd35cee6dbe8a2456b8) )
|
||||
ROM_LOAD( "c4.bin", 0x3000, 0x001000, CRC(2391d83d) SHA1(6933f1e11a7a84c26a3a45b240e55157a2400e9c) )
|
||||
|
||||
ROM_REGION( 0x2000, "gfx1", 0 )
|
||||
ROM_LOAD( "c1.bin", 0x0000, 0x001000, CRC(8f6bf54f) SHA1(6e09a9c2b143908766837529b174f97dd5058b53) )
|
||||
ROM_LOAD( "c3.bin", 0x1000, 0x001000, CRC(10b55440) SHA1(4f3cf5d8954725cf791146abf8918c43138602e1) )
|
||||
|
||||
ROM_REGION( 0x0120, "proms", 0 )
|
||||
ROM_LOAD( "82s123.7f", 0x0000, 0x0020, NO_DUMP )
|
||||
ROM_LOAD( "82s126.4a", 0x0020, 0x0100, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x0200, "namco", 0 ) /* sound PROMs */
|
||||
ROM_LOAD( "82s126.1m", 0x0000, 0x0100, NO_DUMP )
|
||||
ROM_LOAD( "82s126.3m", 0x0100, 0x0100, NO_DUMP ) /* timing - not used */
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( mrtnt )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "tnt.1", 0x0000, 0x1000, CRC(0e836586) SHA1(5037b7c618f05bc3d6a33694729ae575b9aa7dbb) )
|
||||
@ -5778,6 +5860,7 @@ GAME( 1982, ctrpllrp, puckman, pacman, pacman, 0, ROT90, "hack", "C
|
||||
GAME( 1982, eyes, 0, pacman, eyes, eyes, ROT90, "Digitrex Techstar (Rock-Ola license)", "Eyes (Digitrex Techstar)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, eyes2, eyes, pacman, eyes, eyes, ROT90, "Techstar (Rock-Ola license)", "Eyes (Techstar)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, eyeszac, eyes, pacman, eyes, 0, ROT90, "bootleg (Zaccaria)", "Eyes (Zaccaria)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, birdiy, 0, birdiy, pacman, 0, ROT270, "Mama Top", "Birdiy", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS ) // missing proms
|
||||
GAME( 1983, mrtnt, 0, pacman, mrtnt, eyes, ROT90, "Techstar (Telko license)", "Mr. TNT", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, gorkans, mrtnt, pacman, mrtnt, 0, ROT90, "Techstar", "Gorkans", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, eggor, 0, pacman, mrtnt, eyes, ROT90, "Telko", "Eggor", GAME_WRONG_COLORS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
|
@ -28,6 +28,7 @@ public:
|
||||
UINT8 m_flipscreen;
|
||||
UINT8 m_bgpriority;
|
||||
int m_xoffsethack;
|
||||
UINT8 m_inv_spr;
|
||||
};
|
||||
|
||||
|
||||
@ -67,6 +68,8 @@ WRITE8_HANDLER( jrpacman_spritebank_w );
|
||||
WRITE8_HANDLER( jrpacman_scroll_w );
|
||||
WRITE8_HANDLER( jrpacman_bgpriority_w );
|
||||
|
||||
VIDEO_START( birdiy );
|
||||
|
||||
|
||||
/*----------- defined in machine/pacplus.c -----------*/
|
||||
|
||||
|
@ -80,6 +80,7 @@ ctrpllrp // hack
|
||||
eyes // (c) 1982 Digitrex Techstar + "Rockola presents"
|
||||
eyes2 // (c) 1982 Techstar + "Rockola presents"
|
||||
eyeszac // (c) 1982 Zaccaria / bootleg
|
||||
birdiy // (c) 1983 Mama Top
|
||||
mrtnt // (c) 1983 Telko
|
||||
gorkans // (c) 1984 Techstar
|
||||
eggor // (c) 1983 Telko
|
||||
|
@ -177,6 +177,7 @@ VIDEO_START( pacman )
|
||||
state->m_colortablebank = 0;
|
||||
state->m_flipscreen = 0;
|
||||
state->m_bgpriority = 0;
|
||||
state->m_inv_spr = 0;
|
||||
|
||||
/* In the Pac Man based games (NOT Pengo) the first two sprites must be offset */
|
||||
/* one pixel to the left to get a more correct placement */
|
||||
@ -188,6 +189,15 @@ VIDEO_START( pacman )
|
||||
tilemap_set_scrolldy( state->m_bg_tilemap, 0, 264 - 224 );
|
||||
}
|
||||
|
||||
VIDEO_START( birdiy )
|
||||
{
|
||||
pacman_state *state = machine.driver_data<pacman_state>();
|
||||
|
||||
VIDEO_START_CALL( pacman );
|
||||
state->m_xoffsethack = 0;
|
||||
state->m_inv_spr = 1; // sprites are mirrored in X-axis compared to normal behaviour
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( pacman_videoram_w )
|
||||
{
|
||||
pacman_state *state = space->machine().driver_data<pacman_state>();
|
||||
@ -233,15 +243,28 @@ SCREEN_UPDATE( pacman )
|
||||
{
|
||||
int color;
|
||||
int sx,sy;
|
||||
UINT8 fx,fy;
|
||||
|
||||
if(state->m_inv_spr)
|
||||
{
|
||||
sx = spriteram_2[offs + 1];
|
||||
sy = 240 - (spriteram_2[offs]);
|
||||
}
|
||||
else
|
||||
{
|
||||
sx = 272 - spriteram_2[offs + 1];
|
||||
sy = spriteram_2[offs] - 31;
|
||||
}
|
||||
|
||||
fx = (spriteram[offs] & 1) ^ state->m_inv_spr;
|
||||
fy = (spriteram[offs] & 2) ^ ((state->m_inv_spr) << 1);
|
||||
|
||||
sx = 272 - spriteram_2[offs + 1];
|
||||
sy = spriteram_2[offs] - 31;
|
||||
color = ( spriteram[offs + 1] & 0x1f ) | (state->m_colortablebank << 5) | (state->m_palettebank << 6 );
|
||||
|
||||
drawgfx_transmask(bitmap,&spriteclip,screen->machine().gfx[1],
|
||||
( spriteram[offs] >> 2 ) | (state->m_spritebank << 6),
|
||||
color,
|
||||
spriteram[offs] & 1,spriteram[offs] & 2,
|
||||
fx,fy,
|
||||
sx,sy,
|
||||
colortable_get_transpen_mask(screen->machine().colortable, screen->machine().gfx[1], color & 0x3f, 0));
|
||||
|
||||
@ -249,7 +272,7 @@ SCREEN_UPDATE( pacman )
|
||||
drawgfx_transmask(bitmap,&spriteclip,screen->machine().gfx[1],
|
||||
( spriteram[offs] >> 2 ) | (state->m_spritebank << 6),
|
||||
color,
|
||||
spriteram[offs] & 1,spriteram[offs] & 2,
|
||||
fx,fy,
|
||||
sx - 256,sy,
|
||||
colortable_get_transpen_mask(screen->machine().colortable, screen->machine().gfx[1], color & 0x3f, 0));
|
||||
}
|
||||
@ -259,15 +282,27 @@ SCREEN_UPDATE( pacman )
|
||||
{
|
||||
int color;
|
||||
int sx,sy;
|
||||
UINT8 fx,fy;
|
||||
|
||||
sx = 272 - spriteram_2[offs + 1];
|
||||
sy = spriteram_2[offs] - 31;
|
||||
if(state->m_inv_spr)
|
||||
{
|
||||
sx = spriteram_2[offs + 1];
|
||||
sy = 240 - (spriteram_2[offs]);
|
||||
}
|
||||
else
|
||||
{
|
||||
sx = 272 - spriteram_2[offs + 1];
|
||||
sy = spriteram_2[offs] - 31;
|
||||
}
|
||||
color = ( spriteram[offs + 1] & 0x1f ) | (state->m_colortablebank << 5) | (state->m_palettebank << 6 );
|
||||
|
||||
fx = (spriteram[offs] & 1) ^ state->m_inv_spr;
|
||||
fy = (spriteram[offs] & 2) ^ ((state->m_inv_spr) << 1);
|
||||
|
||||
drawgfx_transmask(bitmap,&spriteclip,screen->machine().gfx[1],
|
||||
( spriteram[offs] >> 2 ) | (state->m_spritebank << 6),
|
||||
color,
|
||||
spriteram[offs] & 1,spriteram[offs] & 2,
|
||||
fx,fy,
|
||||
sx,sy + state->m_xoffsethack,
|
||||
colortable_get_transpen_mask(screen->machine().colortable, screen->machine().gfx[1], color & 0x3f, 0));
|
||||
|
||||
@ -275,7 +310,7 @@ SCREEN_UPDATE( pacman )
|
||||
drawgfx_transmask(bitmap,&spriteclip,screen->machine().gfx[1],
|
||||
( spriteram[offs] >> 2 ) | (state->m_spritebank << 6),
|
||||
color,
|
||||
spriteram[offs] & 2,spriteram[offs] & 1,
|
||||
fy,fx, //FIXME: flipping bits are really supposed to be inverted here?
|
||||
sx - 256,sy + state->m_xoffsethack,
|
||||
colortable_get_transpen_mask(screen->machine().colortable, screen->machine().gfx[1], color & 0x3f, 0));
|
||||
}
|
||||
@ -304,7 +339,7 @@ VIDEO_START( pengo )
|
||||
state->m_colortablebank = 0;
|
||||
state->m_flipscreen = 0;
|
||||
state->m_bgpriority = 0;
|
||||
|
||||
state->m_inv_spr = 0;
|
||||
state->m_xoffsethack = 0;
|
||||
|
||||
state->m_bg_tilemap = tilemap_create( machine, pacman_get_tile_info, pacman_scan_rows, 8, 8, 36, 28 );
|
||||
@ -375,7 +410,7 @@ VIDEO_START( s2650games )
|
||||
state->m_colortablebank = 0;
|
||||
state->m_flipscreen = 0;
|
||||
state->m_bgpriority = 0;
|
||||
|
||||
state->m_inv_spr = 0;
|
||||
state->m_xoffsethack = 1;
|
||||
|
||||
state->m_bg_tilemap = tilemap_create( machine, s2650_get_tile_info,tilemap_scan_rows,8,8,32,32 );
|
||||
@ -556,7 +591,7 @@ VIDEO_START( jrpacman )
|
||||
state->m_colortablebank = 0;
|
||||
state->m_flipscreen = 0;
|
||||
state->m_bgpriority = 0;
|
||||
|
||||
state->m_inv_spr = 0;
|
||||
state->m_xoffsethack = 1;
|
||||
|
||||
state->m_bg_tilemap = tilemap_create( machine, jrpacman_get_tile_info,jrpacman_scan_rows,8,8,36,54 );
|
||||
|
Loading…
Reference in New Issue
Block a user