?? chasehq2.c
字號:
/******************************************************************************//* *//* CHASE HQ 2: SPECIAL CRIMINAL INVESTIGATION (C) 1989 TAITO CORPORATION *//* *//******************************************************************************/#include "gameinc.h"#include "chasehq2.h"#include "tc100scn.h"#include "tc110pcr.h"#include "tc150rod.h"#include "tc220ioc.h"#include "taitosnd.h"#include "sasound.h" // sample support routines#ifdef RAINE_DEBUG#include "debug.h"#endifstatic struct DIR_INFO chase_hq_2_sci_dirs[] ={ { "chase_hq_2_sci", }, { "chasehq2", }, { "chase_hq_2", }, { "sci", }, { NULL, },};static struct ROM_INFO chase_hq_2_sci_roms[] ={ { "c09-01.rom", 0x00080000, 0x64bfea10, 0, 0, 0, }, { "c09-02.rom", 0x00080000, 0xa83a0389, 0, 0, 0, }, { "c09-03.rom", 0x00080000, 0xa31d0e80, 0, 0, 0, }, { "c09-04.rom", 0x00080000, 0x2cbb3c9b, 0, 0, 0, }, { "c09-05.rom", 0x00080000, 0x890b38f0, 0, 0, 0, }, { "c09-06.rom", 0x00080000, 0x12df6d7b, 0, 0, 0, }, { "c09-07.rom", 0x00080000, 0x963bc82b, 0, 0, 0, }, { "c09-12.rom", 0x00080000, 0x56c99fa5, 0, 0, 0, }, { "c09-13.rom", 0x00080000, 0xd57c41d3, 0, 0, 0, }, { "c09-14.rom", 0x00080000, 0xad78bf46, 0, 0, 0, }, { "c09-15.rom", 0x00080000, 0xe63b9095, 0, 0, 0, }, { "c09-16.rom", 0x00010000, 0x7245a6f6, 0, 0, 0, }, { "c09-32.rom", 0x00010000, 0xa4713719, 0, 0, 0, }, { "c09-33.rom", 0x00010000, 0xcf4e6c5b, 0, 0, 0, }, { "c09-34.rom", 0x00020000, 0xa21b3151, 0, 0, 0, }, { "c09-37.rom", 0x00020000, 0x0fecea17, 0, 0, 0, }, { "c09-38.rom", 0x00020000, 0xf4404f87, 0, 0, 0, }, { "c09-40.rom", 0x00020000, 0xe46ebd9b, 0, 0, 0, }, { "c09-41.rom", 0x00020000, 0xde87bcb9, 0, 0, 0, }, { "c09-23.rom", 0x00000100, 0xfbf81f30, 0, 0, 0, }, { NULL, 0, 0, 0, 0, 0, },};static struct INPUT_INFO chase_hq_2_sci_inputs[] ={ { KB_DEF_COIN1, MSG_COIN1, 0x022804, 0x04, BIT_ACTIVE_0 }, { KB_DEF_COIN2, MSG_COIN2, 0x022804, 0x08, BIT_ACTIVE_0 }, { KB_DEF_TILT, MSG_TILT, 0x022806, 0x02, BIT_ACTIVE_0 }, { KB_DEF_SERVICE, MSG_SERVICE, 0x022804, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P1_START, MSG_P1_START, 0x022806, 0x08, BIT_ACTIVE_0 }, { KB_DEF_P1_LEFT, MSG_P1_LEFT, 0x02281C, 0xFF, BIT_ACTIVE_1 }, { KB_DEF_P1_RIGHT, MSG_P1_RIGHT, 0x02281D, 0xFF, BIT_ACTIVE_1 }, { KB_DEF_P1_B4, "Turbo", 0x022806, 0x01, BIT_ACTIVE_0 }, { KB_DEF_P1_B3, "Fire", 0x022804, 0x02, BIT_ACTIVE_0 }, { KB_DEF_P1_B2, "Low Gear", 0x022806, 0x10, BIT_ACTIVE_1 }, { KB_DEF_P1_B1, "Accelerate", 0x022806, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P1_B5, "Brake", 0x022804, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P1_B6, "Centre", 0x022806, 0x04, BIT_ACTIVE_0 }, { 0, NULL, 0, 0, 0 },};static struct DSW_DATA dsw_data_chase_hq_2_sci_0[] ={ { "Cabinet Type", 0x01, 0x02 }, { "Cockpit", 0x01, 0x00 }, { "Upright", 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, },};struct DSW_DATA dsw_data_chase_hq_2_sci_1[] ={ { MSG_DIFFICULTY, 0x03, 0x04 }, { MSG_NORMAL, 0x03, 0x00 }, { MSG_EASY, 0x02, 0x00 }, { MSG_HARD, 0x01, 0x00 }, { MSG_HARDEST, 0x00, 0x00 }, { "Start Time", 0x0C, 0x04 }, { "60", 0x0C, 0x00 }, { "70", 0x08, 0x00 }, { "65", 0x04, 0x00 }, { "55", 0x00, 0x00 }, { "Start Turbos", 0x10, 0x02 }, { "3", 0x10, 0x00 }, { "5", 0x00, 0x00 }, { "Responds to Controls", 0x20, 0x02 }, { MSG_OFF, 0x20, 0x00 }, { MSG_ON, 0x00, 0x00 }, { "Clear Damage on Cont.", 0x40, 0x02 }, { MSG_OFF, 0x40, 0x00 }, { MSG_ON, 0x00, 0x00 }, { "Volume of Siren", 0x80, 0x02 }, { MSG_NORMAL, 0x80, 0x00 }, { "Low", 0x00, 0x00 }, { NULL, 0, 0, },};static struct DSW_INFO chase_hq_2_sci_dsw[] ={ { 0x022800, 0xFF, dsw_data_chase_hq_2_sci_0 }, { 0x022802, 0xFF, dsw_data_chase_hq_2_sci_1 }, { 0, 0, NULL, },};static struct ROMSW_DATA romsw_data_chase_hq_2_sci_0[] ={ { "Taito Japan (Japanese)",0x01 }, { "Taito America", 0x02 }, { "Taito Japan", 0x03 }, { NULL, 0 },};static struct ROMSW_INFO chase_hq_2_sci_romsw[] ={ { 0x07FFFE, 0x03, romsw_data_chase_hq_2_sci_0 }, // normally, this would be 0x7FFFF { 0, 0, NULL },};static struct VIDEO_INFO chase_hq_2_sci_video ={ DrawChaseHQ2, 320, 240, 32, VIDEO_ROTATE_NORMAL,};struct GAME_MAIN game_chase_hq_2_sci ={ chase_hq_2_sci_dirs, chase_hq_2_sci_roms, chase_hq_2_sci_inputs, chase_hq_2_sci_dsw, chase_hq_2_sci_romsw, LoadChaseHQ2, ClearChaseHQ2, &chase_hq_2_sci_video, ExecuteChaseHQ2Frame, "chasehq2", "Special Criminal Investigation", NULL, COMPANY_ID_TAITO, "C09", 1989, taito_ym2610b_sound, GAME_RACE | GAME_PARTIALLY_WORKING};static struct DIR_INFO chase_hq_2_sci_alt_dirs[] ={ { "chase_hq_2_sci_alt", }, { "chashq2a", }, { "chase_hq_2_alt", }, { ROMOF("chasehq2"), }, { CLONEOF("chasehq2"), }, { NULL, },};static struct ROM_INFO chase_hq_2_sci_alt_roms[] ={ { "c09-01.rom", 0x00080000, 0x64bfea10, 0, 0, 0, }, { "c09-02.rom", 0x00080000, 0xa83a0389, 0, 0, 0, }, { "c09-03.rom", 0x00080000, 0xa31d0e80, 0, 0, 0, }, { "c09-04.rom", 0x00080000, 0x2cbb3c9b, 0, 0, 0, }, { "c09-05.rom", 0x00080000, 0x890b38f0, 0, 0, 0, }, { "c09-06.rom", 0x00080000, 0x12df6d7b, 0, 0, 0, }, { "c09-07.rom", 0x00080000, 0x963bc82b, 0, 0, 0, }, { "c09-12.rom", 0x00080000, 0x56c99fa5, 0, 0, 0, }, { "c09-13.rom", 0x00080000, 0xd57c41d3, 0, 0, 0, }, { "c09-14.rom", 0x00080000, 0xad78bf46, 0, 0, 0, }, { "c09-15.rom", 0x00080000, 0xe63b9095, 0, 0, 0, }, { "c09-16.rom", 0x00010000, 0x7245a6f6, 0, 0, 0, }, { "c09-32.rom", 0x00010000, 0xa4713719, 0, 0, 0, }, { "c09-33.rom", 0x00010000, 0xcf4e6c5b, 0, 0, 0, }, { "c09-34.rom", 0x00020000, 0xa21b3151, 0, 0, 0, }, { "c09-43.37", 0x00020000, 0x20a9343e, 0, 0, 0, }, { "c09-41.38", 0x00020000, 0x83477f11, 0, 0, 0, }, { "c09-44.40", 0x00020000, 0x7524338a, 0, 0, 0, }, { "c09-41.rom", 0x00020000, 0xde87bcb9, 0, 0, 0, }, { "c09-23.rom", 0x00000100, 0xfbf81f30, 0, 0, 0, }, { NULL, 0, 0, 0, 0, 0, },};static struct ROMSW_INFO chase_hq_2_sci_alt_romsw[] ={ { 0x07FFFE, 0x02, romsw_data_chase_hq_2_sci_0 }, // normally, this would be 0x7FFFF { 0, 0, NULL },};struct GAME_MAIN game_chase_hq_2_sci_alt ={ chase_hq_2_sci_alt_dirs, chase_hq_2_sci_alt_roms, chase_hq_2_sci_inputs, chase_hq_2_sci_dsw, chase_hq_2_sci_alt_romsw, LoadChaseHQ2_alt, ClearChaseHQ2, &chase_hq_2_sci_video, ExecuteChaseHQ2Frame, "chashq2a", "Special Criminal Investigation (alternate)", NULL, COMPANY_ID_TAITO, "C09", 1989, taito_ym2610b_sound, GAME_RACE | GAME_PARTIALLY_WORKING,};#define OBJ_A_COUNT (0x748F)// OBJECT TILE MAPSstatic UINT8 *OBJECT_MAP;// 16x16 OBJECT TILES BANK Astatic UINT8 *GFX_OBJ_A;static UINT8 *GFX_OBJ_A_SOLID;static UINT8 *zoom16_ofs;static UINT8 *zoom8_ofs;static UINT8 *RAM_VIDEO;static UINT8 *RAM_SCROLL;static UINT8 *RAM_INPUT;static UINT8 *GFX_BG0_SOLID;static UINT8 *GFX_LINES;/* road - line - left - right */static UINT8 PAL_MAP[0x100] ={ 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x1D, 0x1E, 0x1F, 0xC, 0xD, 0xE, 0xF, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, };static void load_actual(int romset){ int ta,tb,tc; UINT8 *TMP; if(!(GFX=AllocateMem(0x100000))) return; if(!(GFX_LINES=AllocateMem(0x200000))) return; if(!(GFX_OBJ_A=AllocateMem(OBJ_A_COUNT*0x80))) return; if(!(OBJECT_MAP=AllocateMem(0x80000))) return; if(!(TMP=AllocateMem(0x80000))) return; if(!load_rom_index(6, TMP, 0x80000)) return; // 1024x1 ROAD LINES tb=0; for(ta=0;ta<0x80000;ta+=2){ tc=ReadWord(&TMP[ta]); GFX_LINES[tb+0] =((tc&0x8000)>>(14)); GFX_LINES[tb+1] =((tc&0x4000)>>(13)); GFX_LINES[tb+2] =((tc&0x2000)>>(12)); GFX_LINES[tb+3] =((tc&0x1000)>>(11)); GFX_LINES[tb+4] =((tc&0x0800)>>(10)); GFX_LINES[tb+5] =((tc&0x0400)>>( 9)); GFX_LINES[tb+6] =((tc&0x0200)>>( 8)); GFX_LINES[tb+7] =((tc&0x0100)>>( 7)); GFX_LINES[tb+0]|=((tc&0x0080)>>( 7)); GFX_LINES[tb+1]|=((tc&0x0040)>>( 6)); GFX_LINES[tb+2]|=((tc&0x0020)>>( 5)); GFX_LINES[tb+3]|=((tc&0x0010)>>( 4)); GFX_LINES[tb+4]|=((tc&0x0008)>>( 3)); GFX_LINES[tb+5]|=((tc&0x0004)>>( 2)); GFX_LINES[tb+6]|=((tc&0x0002)>>( 1)); GFX_LINES[tb+7]|=((tc&0x0001)>>( 0)); tb+=8; } if(!load_rom_index(0, TMP, OBJ_A_COUNT*0x10)) return; // 16x16 OBJ A
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -