From 6ed3494bca9aa5fa2fdae35d4a210183f5035c76 Mon Sep 17 00:00:00 2001 From: davidhay Date: Fri, 6 Mar 2009 00:15:28 +0000 Subject: added new graphic roms to the 1999 head panic set note, this version is clearly a different PCB, it uses the older style sprites (which are actually just bootleg tumble pop sprites..) the sound rom on the PCB is bad. also added sprite flicker flag, based on tumble pop etc. --- src/mame/drivers/esd16.c | 32 +++++++++++++------- src/mame/mamedriv.c | 31 ++++++++++++++++++- src/mame/video/esd16.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 126 insertions(+), 14 deletions(-) diff --git a/src/mame/drivers/esd16.c b/src/mame/drivers/esd16.c index 46f295127a9..2f0742e2bc6 100644 --- a/src/mame/drivers/esd16.c +++ b/src/mame/drivers/esd16.c @@ -65,7 +65,7 @@ WRITE16_HANDLER( esd16_tilemap0_color_w ); VIDEO_START( esd16 ); VIDEO_UPDATE( esd16 ); VIDEO_UPDATE( hedpanic ); - +VIDEO_UPDATE( hedpanio ); static UINT16 *headpanic_platform_x; static UINT16 *headpanic_platform_y; @@ -645,6 +645,16 @@ static MACHINE_DRIVER_START( swatpolc ) MDRV_GFXDECODE(tangtang) MACHINE_DRIVER_END +static MACHINE_DRIVER_START( hedpanio ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(hedpanic) + + MDRV_VIDEO_UPDATE(hedpanio) +MACHINE_DRIVER_END + + + /*************************************************************************** @@ -966,26 +976,28 @@ ROM_START( hedpanif ) /* Story line in Japanese, game instructions in English */ ROM_END -ROM_START( hedpanio ) /* Story line & game instructions in English, copyright year is 1999 */ +ROM_START( hedpanio ) /* Story line & game instructions in English, copyright year is 1999 - uses older style sprites */ ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "esd2.rom", 0x000000, 0x040000, CRC(70b08424) SHA1(2ba4fb3b749e31db4239a9173b8509366400152f) ) ROM_LOAD16_BYTE( "esd1.rom", 0x000001, 0x040000, CRC(4e0682c5) SHA1(f4117f31b6426d7bf126a6c62c489b9347885b42) ) - ROM_REGION( 0x24000, "audiocpu", 0 ) /* Z80 Code */ + ROM_REGION( 0x44000, "audiocpu", 0 ) /* Z80 Code */ ROM_LOAD( "esd3.rom", 0x00000, 0x0c000, BAD_DUMP CRC(b72b761b) SHA1(9735e05ddc1db38bf81eac89a5312200fc008248) ) /* Should be twice the size, IE: 27C020 */ ROM_CONTINUE( 0x10000, 0x14000) - + //ROM_LOAD( "esd3.su06", 0x00000, 0x0c000, CRC(a88d4424) SHA1(eefb5ac79632931a36f360713c482cd079891f91) ) /* AT27C020 mask rom */ + //ROM_CONTINUE( 0x10000, 0x34000) + ROM_REGION( 0x600000, "gfx1", ROMREGION_DISPOSE ) /* Sprites, 16x16x5 */ - ROM_LOAD( "ver615_esd6.ju01", 0x200000, 0x200000, BAD_DUMP CRC(5858372c) SHA1(dc96112587df681d53cf7449bd39477919978325) ) - ROM_LOAD( "ver615_esd7.ju02", 0x000000, 0x200000, BAD_DUMP CRC(055d525f) SHA1(85ad474691f96e47311a1904015d1c92d3b2d607) ) + ROM_LOAD( "sm1.bin", 0x000000, 0x200000, CRC(8083813f) SHA1(9492e7e844e45d59f0506f69d40c338b27bd3ce3) ) + ROM_LOAD( "sm2.bin", 0x200000, 0x200000, CRC(7a9610e4) SHA1(21ae3ec3fbddfc66416c109b091bd885d5ba0558) ) /* expand this to take up 0x200000 bytes too so we can decode it */ ROM_LOAD16_BYTE( "esd5.rom", 0x400000, 0x080000, CRC(82c5727f) SHA1(017f1d0c94475c51d17f12e24895f47a273a2dbb) ) ROM_FILL( 0x500000, 0x100000, 0 ) ROM_REGION( 0x400000, "gfx2", ROMREGION_DISPOSE ) /* Layers, 16x16x8 */ - ROM_LOAD16_BYTE( "ver615_esd8.fu35", 0x000000, 0x200000, BAD_DUMP CRC(23aceb4f) SHA1(35d9ebc33b9e1515e47750cfcdfc0bf8bf44b71d) ) - ROM_LOAD16_BYTE( "ver615_esd9.fu34", 0x000001, 0x200000, BAD_DUMP CRC(76b46cd2) SHA1(679cbf50ae5935e8848868081ecef4ec66424f6c) ) - + ROM_LOAD16_BYTE( "sm3.bin", 0x000000, 0x200000, CRC(94dd4cfc) SHA1(a3f9c49611f0bc9d26166dafb44e2c5ebbb31127) ) + ROM_LOAD16_BYTE( "sm4.bin", 0x000001, 0x200000, CRC(6da0fb9e) SHA1(c4e7487953f45c5f6ce2ebe558b4c325f6ec54eb) ) + ROM_REGION( 0x20000, "oki", 0 ) /* Samples */ ROM_LOAD( "esd4.rom", 0x000000, 0x020000, CRC(d7ca6806) SHA1(8ad668bfb5b7561cc0f3e36dfc3c936b136a4274) ) ROM_END @@ -1160,7 +1172,7 @@ GAME( 2000, mchampdx, 0, mchampdx, hedpanic, 0, ROT0, "ESD", "Mul GAME( 1999, mchampda, mchampdx, mchampdx, hedpanic, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1126, 26/11/1999)", 0 ) // 26/11/1999 ? GAME( 2000, hedpanic, 0, hedpanic, hedpanic, 0, ROT0, "ESD", "Head Panic (ver. 0117, 17/01/2000)", 0 ) // 17/01/2000 ? GAME( 2000, hedpanif, hedpanic, hedpanic, hedpanic, 0, ROT0, "ESD / Fuuki", "Head Panic (ver. 0315, 15/03/2000)", 0 ) // 15/03/2000 ? -GAME( 1999, hedpanio, hedpanic, hedpanic, hedpanic, 0, ROT0, "ESD", "Head Panic (ver. 0615, 15/06/1999)", GAME_NOT_WORKING ) // 15/06/1999 ? +GAME( 1999, hedpanio, hedpanic, hedpanio, hedpanic, 0, ROT0, "ESD", "Head Panic (ver. 0615, 15/06/1999)", GAME_NO_SOUND ) // 15/06/1999 ? /* ESD - This PCB looks identical to the ESD 08-26-1999 PCB */ GAME( 2000, tangtang, 0, tangtang, hedpanic, 0, ROT0, "ESD", "Tang Tang (ver. 0526, 26/05/2000)", 0 ) // 26/05/2000 ? diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index 6fb779598a9..f6b2de0cb42 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -8870,7 +8870,36 @@ Other Sun games DRIVER( fb4d2 ) DRIVER( fb4v ) DRIVER( fb4v2 ) - DRIVER( fb4v3 ) + DRIVER( fb4v3 ) + DRIVER( fb5 ) + DRIVER( fb5c ) + DRIVER( fb5d ) + DRIVER( fb5v ) + DRIVER( fb6 ) + DRIVER( fb6v3 ) + DRIVER( fb6d2 ) + DRIVER( fb6s ) + DRIVER( fb6v ) + DRIVER( fb6d ) + DRIVER( fb6s2 ) + DRIVER( fb6v2 ) + DRIVER( fb6se ) + DRIVER( fb6sev ) + DRIVER( fb6sed ) + DRIVER( fb6sev2 ) + DRIVER( fb6sed2 ) + DRIVER( fb6sev3 ) + DRIVER( version4 ) + DRIVER( bugfever ) + DRIVER( bugfeverd ) + DRIVER( bugfeverv ) + DRIVER( bugfeverv2 ) + DRIVER( dvisland ) + DRIVER( funriver ) + DRIVER( funriverv ) + DRIVER( amclink ) + + DRIVER( act2000 ) DRIVER( act2000a ) DRIVER( act2000a2 ) diff --git a/src/mame/video/esd16.c b/src/mame/video/esd16.c index ae37edd8e4e..5526f25d849 100644 --- a/src/mame/video/esd16.c +++ b/src/mame/video/esd16.c @@ -195,6 +195,8 @@ VIDEO_START( esd16 ) - To Do: Flip X&Y ? They seem unused. + these are clearly the same as the tumble pop (bootleg?) sprites + ***************************************************************************/ static void esd16_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) @@ -215,13 +217,16 @@ static void esd16_draw_sprites(running_machine *machine, bitmap_t *bitmap, const int dimy = 1 << ((sy >> 9) & 3); - int flipx = attr & 0x0000; + int flipx = sy & 0x2000; int flipy = attr & 0x0000; - + int flash = sy & 0x1000; + int color = (sx >> 9) & 0xf; int pri_mask; + if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) continue; + if(sx & 0x8000) pri_mask = 0xfffe; // under "tilemap 1" else @@ -271,13 +276,17 @@ static void hedpanic_draw_sprites(running_machine *machine, bitmap_t *bitmap, co int dimy = 1 << ((sy >> 9) & 3); - int flipx = spriteram16[ offs + 0 ] & 0x2000; + int flipx = sy & 0x2000; int flipy = sy & 0x0000; + int flash = sy & 0x1000; int color = (sx >> 9) & 0xf; int pri_mask; + if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) continue; + + if(sx & 0x8000) pri_mask = 0xfffe; // under "tilemap 1" else @@ -412,3 +421,65 @@ if ( input_code_pressed(KEYCODE_Z) ) // popmessage("%04x %04x %04x %04x %04x",head_unknown1[0],head_layersize[0],head_unknown3[0],head_unknown4[0],head_unknown5[0]); return 0; } + +// uses older style sprites +VIDEO_UPDATE( hedpanio ) +{ + int layers_ctrl = -1; + + bitmap_fill(priority_bitmap,cliprect,0); + + +#ifdef MAME_DEBUG +if ( input_code_pressed(KEYCODE_Z) ) +{ int msk = 0; + if (input_code_pressed(KEYCODE_Q)) msk |= 1; + if (input_code_pressed(KEYCODE_W)) msk |= 2; + if (input_code_pressed(KEYCODE_A)) msk |= 4; + if (msk != 0) layers_ctrl &= msk; } +#endif + + if (layers_ctrl & 1) + { + if (head_layersize[0]&0x0001) + { + tilemap_set_scrollx(esdtilemap_0_16x16, 0, esd16_scroll_0[0]); + tilemap_set_scrolly(esdtilemap_0_16x16, 0, esd16_scroll_0[1]); + tilemap_draw(bitmap,cliprect,esdtilemap_0_16x16,0,0); + } + else + { + tilemap_set_scrollx(esdtilemap_0, 0, esd16_scroll_0[0]); + tilemap_set_scrolly(esdtilemap_0, 0, esd16_scroll_0[1]); + tilemap_draw(bitmap,cliprect,esdtilemap_0,0,0); + } + } + else + { + bitmap_fill(bitmap,cliprect,0); + } + + + if (layers_ctrl & 2) + { + if (head_layersize[0]&0x0002) + { + tilemap_set_scrollx(esdtilemap_1_16x16, 0, esd16_scroll_1[0]); + tilemap_set_scrolly(esdtilemap_1_16x16, 0, esd16_scroll_1[1]); + tilemap_draw(bitmap,cliprect,esdtilemap_1_16x16,0,1); + } + else + { + tilemap_set_scrollx(esdtilemap_1, 0, esd16_scroll_1[0]); + tilemap_set_scrolly(esdtilemap_1, 0, esd16_scroll_1[1]); + tilemap_draw(bitmap,cliprect,esdtilemap_1,0,1); + } + + } + + if (layers_ctrl & 4) esd16_draw_sprites(screen->machine,bitmap,cliprect); + + +// popmessage("%04x %04x %04x %04x %04x",head_unknown1[0],head_layersize[0],head_unknown3[0],head_unknown4[0],head_unknown5[0]); + return 0; +} -- cgit v1.2.3