?? fchamp.c
字號:
/* ****************************************************************************** * * * FOOTBALL CHAMP/HAT TRICK HERO (C) 1990 TAITO CORPORATION * * EURO CHAMP '92 (C) 1992 TAITO CORPORATION * * * ****************************************************************************** Aug 2, 2000: - Dipswitches defined for all 3 games. Hat Trick Hero read dips in reverse oder. - ROM names changed to match those used by Mame TO DO: - Hat Trick Hero uses slightly different SCRN offset for one screen layer. See displaced "white" box around announcer during the DEMO and other minor graphic gliches/errors.*/#include "gameinc.h"#include "fchamp.h"#include "tc006vcu.h"#include "tc200obj.h"#include "f3system.h"#include "sasound.h" // sample support routines#include "taitosnd.h"#include "debug.h"static struct INPUT_INFO football_champ_inputs[] ={ { KB_DEF_COIN1, MSG_COIN1, 0x032004, 0x01, BIT_ACTIVE_0 }, { KB_DEF_COIN2, MSG_COIN2, 0x032004, 0x02, BIT_ACTIVE_0 }, { KB_DEF_TILT, MSG_TILT, 0x032004, 0x80, BIT_ACTIVE_0 }, { KB_DEF_SERVICE, MSG_SERVICE, 0x032004, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P1_START, MSG_P1_START, 0x03200A, 0x80, BIT_ACTIVE_0 }, { KB_DEF_P1_UP, MSG_P1_UP, 0x03200A, 0x01, BIT_ACTIVE_0 }, { KB_DEF_P1_DOWN, MSG_P1_DOWN, 0x03200A, 0x02, BIT_ACTIVE_0 }, { KB_DEF_P1_LEFT, MSG_P1_LEFT, 0x03200A, 0x04, BIT_ACTIVE_0 }, { KB_DEF_P1_RIGHT, MSG_P1_RIGHT, 0x03200A, 0x08, BIT_ACTIVE_0 }, { KB_DEF_P1_B1, MSG_P1_B1, 0x03200A, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P1_B2, MSG_P1_B2, 0x03200A, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P2_START, MSG_P2_START, 0x03200C, 0x80, BIT_ACTIVE_0 }, { KB_DEF_P2_UP, MSG_P2_UP, 0x03200C, 0x01, BIT_ACTIVE_0 }, { KB_DEF_P2_DOWN, MSG_P2_DOWN, 0x03200C, 0x02, BIT_ACTIVE_0 }, { KB_DEF_P2_LEFT, MSG_P2_LEFT, 0x03200C, 0x04, BIT_ACTIVE_0 }, { KB_DEF_P2_RIGHT, MSG_P2_RIGHT, 0x03200C, 0x08, BIT_ACTIVE_0 }, { KB_DEF_P2_B1, MSG_P2_B1, 0x03200C, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P2_B2, MSG_P2_B2, 0x03200C, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P3_START, MSG_P3_START, 0x03200E, 0x80, BIT_ACTIVE_0 }, { KB_DEF_P3_UP, MSG_P3_UP, 0x03200E, 0x01, BIT_ACTIVE_0 }, { KB_DEF_P3_DOWN, MSG_P3_DOWN, 0x03200E, 0x02, BIT_ACTIVE_0 }, { KB_DEF_P3_LEFT, MSG_P3_LEFT, 0x03200E, 0x04, BIT_ACTIVE_0 }, { KB_DEF_P3_RIGHT, MSG_P3_RIGHT, 0x03200E, 0x08, BIT_ACTIVE_0 }, { KB_DEF_P3_B1, MSG_P3_B1, 0x03200E, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P3_B2, MSG_P3_B2, 0x03200E, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P4_START, MSG_P4_START, 0x032010, 0x80, BIT_ACTIVE_0 }, { KB_DEF_P4_UP, MSG_P4_UP, 0x032010, 0x01, BIT_ACTIVE_0 }, { KB_DEF_P4_DOWN, MSG_P4_DOWN, 0x032010, 0x02, BIT_ACTIVE_0 }, { KB_DEF_P4_LEFT, MSG_P4_LEFT, 0x032010, 0x04, BIT_ACTIVE_0 }, { KB_DEF_P4_RIGHT, MSG_P4_RIGHT, 0x032010, 0x08, BIT_ACTIVE_0 }, { KB_DEF_P4_B1, MSG_P4_B1, 0x032010, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P4_B2, MSG_P4_B2, 0x032010, 0x20, BIT_ACTIVE_0 }, { 0, NULL, 0, 0, 0 },};static struct DSW_DATA dsw_data_football_champ_0[] ={ { "Game Over For", 0x01, 0x02 }, { "Both Teams", 0x01, 0x00 }, { "Loser Team Only", 0x00, 0x00 }, { MSG_SCREEN, 0x02, 0x02 }, { MSG_NORMAL, 0x02, 0x00 }, { MSG_INVERT, 0x00, 0x00 }, { MSG_TEST_MODE, 0x04, 0x02 }, { MSG_OFF, 0x04, 0x00 }, { MSG_ON, 0x00, 0x00 }, { MSG_DEMO_SOUND, 0x08, 0x02 }, { MSG_ON, 0x08, 0x00 }, { MSG_OFF, 0x00, 0x00 }, { MSG_COIN1, 0x30, 0x04 }, { MSG_1COIN_1PLAY, 0x30, 0x00 }, { MSG_2COIN_1PLAY, 0x20, 0x00 }, { MSG_3COIN_1PLAY, 0x10, 0x00 }, { MSG_4COIN_1PLAY, 0x00, 0x00 }, { MSG_COIN2, 0xC0, 0x04 }, { MSG_1COIN_2PLAY, 0xC0, 0x00 }, { MSG_1COIN_3PLAY, 0x80, 0x00 }, { MSG_1COIN_4PLAY, 0x40, 0x00 }, { MSG_1COIN_6PLAY, 0x00, 0x00 }, { NULL, 0, 0, },};static struct DSW_DATA dsw_data_football_champ_1[] ={ { MSG_DIFFICULTY, 0x03, 0x04 }, { MSG_NORMAL, 0x03, 0x00 }, { MSG_EASY, 0x02, 0x00 }, { MSG_HARD, 0x01, 0x00 }, { MSG_HARDEST, 0x00, 0x00 }, { "Game Time", 0x0C, 0x04 }, { " 2 Minutes", 0x0C, 0x00 }, { " 3 Minutes", 0x08, 0x00 }, { "2.5 Minutes", 0x04, 0x00 }, { "1.5 Minutes", 0x00, 0x00 }, { "Game Type", 0x30, 0x04 }, { "2 Players", 0x30, 0x00 }, { "4 Player/4 Coin Slot", 0x20, 0x00 }, { "4 Player/2 Cabinets", 0x10, 0x00 }, { "4 Player/2 Coin Slot", 0x00, 0x00 }, { "Continue", 0x40, 0x02 }, { MSG_OFF, 0x40, 0x00 }, { MSG_ON, 0x00, 0x00 }, { "Euro Version", 0x80, 0x02 }, { MSG_ON, 0x80, 0x00 }, { MSG_OFF, 0x00, 0x00 }, { NULL, 0, 0, },};static struct DSW_DATA dsw_data_euro_champ_92_1[] ={ { MSG_DIFFICULTY, 0x03, 0x04 }, { MSG_NORMAL, 0x03, 0x00 }, { MSG_EASY, 0x02, 0x00 }, { MSG_HARD, 0x01, 0x00 }, { MSG_HARDEST, 0x00, 0x00 }, { "Game Time", 0x0C, 0x04 }, { " 2 Minutes", 0x0C, 0x00 }, { " 3 Minutes", 0x08, 0x00 }, { "2.5 Minutes", 0x04, 0x00 }, { "1.5 Minutes", 0x00, 0x00 }, { "Game Type", 0x30, 0x04 }, { "2 Players", 0x30, 0x00 }, { "4 Player/4 Coin Slot", 0x20, 0x00 }, { "4 Player/2 Cabinets", 0x10, 0x00 }, { "4 Player/2 Coin Slot", 0x00, 0x00 }, { "Continue", 0x40, 0x02 }, { MSG_OFF, 0x40, 0x00 }, { MSG_ON, 0x00, 0x00 }, { NULL, 0, 0, },};static struct DSW_DATA dsw_data_hat_trick_hero_0[] ={ { "Game Over For", 0x80, 0x02 }, // Bits read in reverse order, so... { "Both Teams", 0x80, 0x00 }, // let's reverse the byte order but { "Loser Team Only", 0x00, 0x00 }, // keep the visual look the same as { MSG_SCREEN, 0x40, 0x02 }, // Foot Champ & Euro Champ '92 :p { MSG_NORMAL, 0x40, 0x00 }, { MSG_INVERT, 0x00, 0x00 }, { MSG_TEST_MODE, 0x20, 0x02 }, { MSG_OFF, 0x20, 0x00 }, { MSG_ON, 0x00, 0x00 }, { MSG_DEMO_SOUND, 0x10, 0x02 }, { MSG_ON, 0x10, 0x00 }, { MSG_OFF, 0x00, 0x00 }, { MSG_COIN1, 0x0c, 0x04 }, { MSG_1COIN_1PLAY, 0x0c, 0x00 }, { MSG_1COIN_2PLAY, 0x04, 0x00 }, { MSG_2COIN_1PLAY, 0x08, 0x00 }, { MSG_3COIN_1PLAY, 0x00, 0x00 }, { MSG_COIN2, 0x03, 0x04 }, { MSG_1COIN_1PLAY, 0x03, 0x00 }, { MSG_1COIN_2PLAY, 0x01, 0x00 }, { MSG_2COIN_1PLAY, 0x02, 0x00 }, { MSG_3COIN_1PLAY, 0x00, 0x00 }, { NULL, 0, 0, },};static struct DSW_DATA dsw_data_hat_trick_hero_1[] ={ { MSG_DIFFICULTY, 0xc0, 0x04 }, { MSG_NORMAL, 0xc0, 0x00 }, { MSG_EASY, 0x40, 0x00 }, { MSG_HARD, 0x80, 0x00 }, { MSG_HARDEST, 0x00, 0x00 }, { "Game Time", 0x30, 0x04 }, { " 2 Minutes", 0x30, 0x00 }, { " 3 Minutes", 0x10, 0x00 }, { "2.5 Minutes", 0x20, 0x00 }, { "1.5 Minutes", 0x00, 0x00 }, { "Game Type", 0x0c, 0x04 }, { "2 Players", 0x0c, 0x00 }, { "4 Player/4 Coin Slot", 0x04, 0x00 }, { "4 Player/2 Cabinets", 0x08, 0x00 }, { "4 Player/2 Coin Slot", 0x00, 0x00 }, { "Continue", 0x02, 0x02 }, { MSG_OFF, 0x02, 0x00 }, { MSG_ON, 0x00, 0x00 }, { NULL, 0, 0, }, // Bit1 is unused, was bit8 for the "Euro" in Footchamp};static struct VIDEO_INFO football_champ_video ={ draw_football_champ, 320, 224, 48, VIDEO_ROTATE_NORMAL | VIDEO_ROTATABLE,};static struct DSW_INFO euro_champ_92_dsw[] ={ { 0x032000, 0xFF, dsw_data_football_champ_0 }, // Needs cionage from Footbal Champ { 0x032002, 0xFF, dsw_data_euro_champ_92_1 }, // but DSW1 bit8 is unused { 0, 0, NULL, },};static struct DIR_INFO euro_champ_92_dirs[] ={ { "euro_champ_92", }, { "euroch92", }, { "footchmp", }, { ROMOF("footchmp"), }, { CLONEOF("footchmp"), }, { NULL, },};static struct ROM_INFO euro_champ_92_roms[] ={ { "ec92_19.rom", 0x00100000, 0x219141a5, 0, 0, 0, }, { "c80-02", 0x00100000, 0x060a8b61, 0, 0, 0, }, { "c80-03", 0x00100000, 0x609938d5, 0, 0, 0, }, { "ec92_21.rom", 0x00080000, 0x5759ed37, 0, 0, 0, }, { "ec92_22.rom", 0x00080000, 0xd9a0d38e, 0, 0, 0, }, { "ec92_23.rom", 0x00020000, 0xae5e75e9, 0, 0, 0, }, { "ec92_25.rom", 0x00020000, 0x98482202, 0, 0, 0, }, { "ec92_26.rom", 0x00020000, 0xb986ccb2, 0, 0, 0, }, { "ec92_24.rom", 0x00020000, 0xb31d94ac, 0, 0, 0, }, { "ec92_27.rom", 0x00010000, 0x2db48e65, 0, 0, 0, }, { NULL, 0, 0, 0, 0, 0, },};struct GAME_MAIN game_euro_champ_92 ={ euro_champ_92_dirs, euro_champ_92_roms, football_champ_inputs, euro_champ_92_dsw, NULL, load_euro_champ_92, clear_football_champ, &football_champ_video, execute_football_champ_frame, "euroch92", "Euro Champ 92", "僴僢僩僩儕僢僋僸乕儘乕俋俁", COMPANY_ID_TAITO, "C80", 1992, taito_ym2610_sound, GAME_SPORTS,};static struct DIR_INFO football_champ_dirs[] ={ { "football_champ", }, { "fchamp", }, { "footchmp", }, { NULL, },};static struct ROM_INFO football_champ_roms[] ={ { "c80-01", 0x00100000, 0xf43782e6, 0, 0, 0, }, { "c80-02", 0x00100000, 0x060a8b61, 0, 0, 0, }, { "c80-03", 0x00100000, 0x609938d5, 0, 0, 0, }, { "c80-04", 0x00080000, 0x9a17fe8c, 0, 0, 0, }, { "c80-05", 0x00080000, 0xacde7071, 0, 0, 0, }, { "c80-10", 0x00020000, 0x32c109cb, 0, 0, 0, }, { "c80-11", 0x00020000, 0xf78630fb, 0, 0, 0, }, { "c80-12", 0x00020000, 0x80d46fef, 0, 0, 0, }, { "c80-14", 0x00020000, 0x40ac4828, 0, 0, 0, }, { "c80-15", 0x00010000, 0x05aa7fd7, 0, 0, 0, }, { NULL, 0, 0, 0, 0, 0, },};static struct DSW_INFO football_champ_dsw[] ={ { 0x032000, 0xFF, dsw_data_football_champ_0 }, { 0x032002, 0xFF, dsw_data_football_champ_1 }, { 0, 0, NULL, },};struct GAME_MAIN game_football_champ ={ football_champ_dirs, football_champ_roms, football_champ_inputs, football_champ_dsw, NULL, load_football_champ, clear_football_champ, &football_champ_video, execute_football_champ_frame, "footchmp", "Football Champ", "僴僢僩僩儕僢僋僸乕儘乕", COMPANY_ID_TAITO, "C80", 1990, taito_ym2610_sound, GAME_SPORTS,};static struct DIR_INFO hat_trick_hero_dirs[] ={ { "hat_trick_hero", }, { "hthero", }, { "fchamp", }, { ROMOF("footchmp"), }, { CLONEOF("footchmp"), }, { NULL, },};static struct ROM_INFO hat_trick_hero_roms[] ={ { "c80-01", 0x00100000, 0xf43782e6, 0, 0, 0, }, { "c80-02", 0x00100000, 0x060a8b61, 0, 0, 0, }, { "c80-03", 0x00100000, 0x609938d5, 0, 0, 0, }, { "c80-04", 0x00080000, 0x9a17fe8c, 0, 0, 0, }, { "c80-05", 0x00080000, 0xacde7071, 0, 0, 0, }, { "c80-17", 0x00020000, 0x42c0a838, 0, 0, 0, }, { "c80-16", 0x00020000, 0x4e795b52, 0, 0, 0, }, { "c80-12", 0x00020000, 0x80d46fef, 0, 0, 0, }, { "c80-18", 0x00020000, 0xaea22904, 0, 0, 0, }, { "c80-15", 0x00010000, 0x05aa7fd7, 0, 0, 0, }, { NULL, 0, 0, 0, 0, 0, },};static struct DSW_INFO hat_trick_hero_dsw[] ={ { 0x032000, 0xFF, dsw_data_hat_trick_hero_0 }, { 0x032002, 0xFF, dsw_data_hat_trick_hero_1 }, { 0, 0, NULL, },};struct GAME_MAIN game_hat_trick_hero ={ hat_trick_hero_dirs, hat_trick_hero_roms, football_champ_inputs, hat_trick_hero_dsw, NULL, load_hat_trick_hero, clear_football_champ, &football_champ_video, execute_football_champ_frame, "hthero", "Hat Trick Hero", NULL,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -