?? superchs.c
字號:
/******************************************************************************//* *//* SUPER CHASE (C) 1992 TAITO CORPORATION *//* *//******************************************************************************/#include "gameinc.h"#include "superchs.h"#include "f3system.h"#include "tc003vcu.h"#include "savegame.h"#include "debug.h"#include "sasound.h"static struct DIR_INFO super_chase_dirs[] ={ { "super_chase", }, { "superchs", }, { NULL, },};static struct ROM_INFO super_chase_roms[] ={ { "d46-01.64", 0x00200000, 0x5c2ae92d, 0, 0, 0, }, { "d46-02.65", 0x00200000, 0xa83ca82e, 0, 0, 0, }, { "d46-03.66", 0x00200000, 0xe0e9cbfd, 0, 0, 0, }, { "d46-04.67", 0x00200000, 0x832769a9, 0, 0, 0, }, { "d46-05.87", 0x00100000, 0x150d0e4c, 0, 0, 0, }, { "d46-06.88", 0x00100000, 0x321308be, 0, 0, 0, }, { "d46-07.34", 0x00080000, 0xc3b8b093, 0, 0, 0, }, { "d46-10.2", 0x00200000, 0x306256be, 0, 0, 0, }, { "d46-11.5", 0x00200000, 0xd4ea0f56, 0, 0, 0, }, { "d46-12.4", 0x00200000, 0xa24a53a8, 0, 0, 0, }, { "d46-24.127", 0x00020000, 0xa006baa1, REGION_ROM3, 0x000000, LOAD_8_16, }, { "d46-23.112", 0x00020000, 0x9a69dbd0, REGION_ROM3, 0x000001, LOAD_8_16, }, { "d46-31.21", 0x00040000, 0x38b983a3, 0, 0, 0, }, { "d46-33.23", 0x00040000, 0x3094bcd0, 0, 0, 0, }, { "d46-34.25", 0x00040000, 0xc72a4d2b, 0, 0, 0, }, { "d46-35.27", 0x00040000, 0x1575c9a7, 0, 0, 0, }, { "d46-37.8up", 0x00020000, 0x60b51b91, REGION_ROM2, 0x000000, LOAD_8_16, }, { "d46-36.7lo", 0x00020000, 0x8f7aa276, REGION_ROM2, 0x000001, LOAD_8_16, }, { NULL, 0, 0, 0, 0, 0, },};static struct INPUT_INFO super_chase_inputs[] ={ { KB_DEF_COIN1, MSG_COIN1, 0x069001, 0x80, BIT_ACTIVE_0 }, { KB_DEF_COIN2, MSG_COIN2, 0x069001, 0x40, BIT_ACTIVE_0 }, { KB_DEF_SERVICE, MSG_SERVICE, 0x069001, 0x07, BIT_ACTIVE_0 }, { KB_DEF_TEST, MSG_TEST, 0x069001, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P1_START, MSG_P1_START, 0x069002, 0x80, BIT_ACTIVE_0 }, { KB_DEF_P1_B1, MSG_P1_B1, 0x069002, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P1_B2, MSG_P1_B2, 0x069002, 0x20, BIT_ACTIVE_0 }, { 0, NULL, 0, 0, 0 },};static struct ROMSW_DATA romsw_data_super_chase_0[] ={ { "Taito 1", 0x01 }, { "Taito 2", 0x02 }, { "Taito 3", 0x03 }, { NULL, 0 },};static struct ROMSW_INFO super_chase_romsw[] ={ { 0x0FFFFF, 0x02, romsw_data_super_chase_0 }, { 0, 0, NULL },};static struct VIDEO_INFO super_chase_video ={ DrawSuperChase, 320, 240, 64, VIDEO_ROTATE_NORMAL| VIDEO_ROTATABLE,};struct GAME_MAIN game_super_chase ={ super_chase_dirs, super_chase_roms, super_chase_inputs, NULL, super_chase_romsw, LoadSuperChase, ClearSuperChase, &super_chase_video, ExecuteSuperChaseFrame, "superchs", "Super Chase", NULL, COMPANY_ID_TAITO, "D46", 1992, f3_sound, GAME_RACE | GAME_NOT_WORKING,};#define OBJ_A_COUNT (0xF1D0)// 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 *ROM3;static UINT8 *RAM_BG0;static UINT8 *RAM_BG1;static UINT8 *RAM_BG2;static UINT8 *RAM_BG3;static UINT8 *RAM_SCR0;static UINT8 *RAM_SCR1;static UINT8 *RAM_SCR2;static UINT8 *RAM_SCR3;static UINT32 SCR0_XOFS;static UINT32 SCR1_XOFS;static UINT32 SCR2_XOFS;static UINT32 SCR3_XOFS;static UINT32 SCR0_YOFS;static UINT32 SCR1_YOFS;static UINT32 SCR2_YOFS;static UINT32 SCR3_YOFS;static UINT8 *GFX_BG0;static UINT8 *GFX_BG0_SOLID;//static UINT8 *GFX_SPR;//static UINT8 *GFX_SPR_SOLID;void AddSCMemoryMap(UINT32 romsize){ UINT32 ta; for(ta=0;ta<0x100;ta++){ R24[ta]=RAM+0x70000; // SCRATCH RAM } R24[0x10]=RAM+0x00000; // MAIN RAM R24[0x11]=RAM+0x10000; // MAIN RAM R24[0x18]=RAM+0x30000; // SCREEN RAM - F3 system R24[0x1B]=RAM+0x6A000; // SCROLL RAM - F3 system R24[0x20]=RAM+0x40000; // COMM RAM? R24[0x28]=RAM+0x60000; // COLOR? R24[0x2c]=f3_shared_ram; R24[0x30]=RAM+0x69000; // INPUT ($300000-$300007) /* R24[0x30]=RAM+0x40000; // OBJECT? //R24[0xC0]=RAM+0x68000; // SOUND RAM ($C00000-$C007FF)*/ for(ta=0;ta<0x100;ta++){ W24[ta]=R24[ta]; // COPY READ>WRITE } for(ta=0;ta<(romsize>>16);ta++){ R24[ta]=ROM+(ta<<16); // 68020 ROM } W24[0x30]=RAM+0x69100; // OUTPUT ($300000-$300007) EEPROM=RAM+0x6B000; // EEPROM}static UINT8 ram_comm_rb(UINT32 addr){ addr &= 0xFFFF; return RAM[0x40000+addr];}static UINT16 ram_comm_rw(UINT32 addr){ addr &= 0xFFFF; return ReadWord68k(&RAM[0x40000+addr]);}static void ram_comm_wb(UINT32 addr, UINT8 data){ addr &= 0xFFFF; RAM[0x40000+addr] = data;}static void ram_comm_ww(UINT32 addr, UINT16 data){ addr &= 0xFFFF; WriteWord68k(&RAM[0x40000+addr], data);}void LoadSuperChase(void){ int ta,tb,tc; UINT8 *TMP; if(!(GFX_BG0=AllocateMem(0x3F6C00))) return; if(!(GFX_OBJ_A=AllocateMem(OBJ_A_COUNT*0x100))) return; if(!(OBJECT_MAP=AllocateMem(0x80000))) return; if(!(TMP=AllocateMem(0x200000))) return; if(!load_rom("d46-01.64", TMP, OBJ_A_COUNT*0x20)) return; // 16x16 OBJ A tb=0; for(ta=0;ta<OBJ_A_COUNT*0x20;ta+=2){ tc=ReadWord(&TMP[ta]); GFX_OBJ_A[tb+0] =((tc&0x8000)>>(15)); GFX_OBJ_A[tb+1] =((tc&0x4000)>>(14)); GFX_OBJ_A[tb+2] =((tc&0x2000)>>(13)); GFX_OBJ_A[tb+3] =((tc&0x1000)>>(12)); GFX_OBJ_A[tb+4] =((tc&0x0800)>>(11)); GFX_OBJ_A[tb+5] =((tc&0x0400)>>(10)); GFX_OBJ_A[tb+6] =((tc&0x0200)>>( 9)); GFX_OBJ_A[tb+7] =((tc&0x0100)>>( 8)); GFX_OBJ_A[tb+8] =((tc&0x0080)>>( 7)); GFX_OBJ_A[tb+9] =((tc&0x0040)>>( 6)); GFX_OBJ_A[tb+10]=((tc&0x0020)>>( 5)); GFX_OBJ_A[tb+11]=((tc&0x0010)>>( 4)); GFX_OBJ_A[tb+12]=((tc&0x0008)>>( 3)); GFX_OBJ_A[tb+13]=((tc&0x0004)>>( 2)); GFX_OBJ_A[tb+14]=((tc&0x0002)>>( 1)); GFX_OBJ_A[tb+15]=((tc&0x0001)>>( 0)); tb+=16; } if(!load_rom("d46-02.65", TMP, OBJ_A_COUNT*0x20)) return; // 16x16 OBJ A tb=0; for(ta=0;ta<OBJ_A_COUNT*0x20;ta+=2){ tc=ReadWord(&TMP[ta]); GFX_OBJ_A[tb+0] |=((tc&0x8000)>>(14)); GFX_OBJ_A[tb+1] |=((tc&0x4000)>>(13)); GFX_OBJ_A[tb+2] |=((tc&0x2000)>>(12)); GFX_OBJ_A[tb+3] |=((tc&0x1000)>>(11)); GFX_OBJ_A[tb+4] |=((tc&0x0800)>>(10)); GFX_OBJ_A[tb+5] |=((tc&0x0400)>>( 9)); GFX_OBJ_A[tb+6] |=((tc&0x0200)>>( 8)); GFX_OBJ_A[tb+7] |=((tc&0x0100)>>( 7)); GFX_OBJ_A[tb+8] |=((tc&0x0080)>>( 6)); GFX_OBJ_A[tb+9] |=((tc&0x0040)>>( 5)); GFX_OBJ_A[tb+10]|=((tc&0x0020)>>( 4)); GFX_OBJ_A[tb+11]|=((tc&0x0010)>>( 3)); GFX_OBJ_A[tb+12]|=((tc&0x0008)>>( 2)); GFX_OBJ_A[tb+13]|=((tc&0x0004)>>( 1)); GFX_OBJ_A[tb+14]|=((tc&0x0002)>>( 0)); GFX_OBJ_A[tb+15]|=((tc&0x0001)<<( 1)); tb+=16; } if(!load_rom("d46-03.66", TMP, OBJ_A_COUNT*0x20)) return; // 16x16 OBJ A tb=0; for(ta=0;ta<OBJ_A_COUNT*0x20;ta+=2){ tc=ReadWord(&TMP[ta]); GFX_OBJ_A[tb+0] |=((tc&0x8000)>>(13)); GFX_OBJ_A[tb+1] |=((tc&0x4000)>>(12)); GFX_OBJ_A[tb+2] |=((tc&0x2000)>>(11)); GFX_OBJ_A[tb+3] |=((tc&0x1000)>>(10)); GFX_OBJ_A[tb+4] |=((tc&0x0800)>>( 9)); GFX_OBJ_A[tb+5] |=((tc&0x0400)>>( 8)); GFX_OBJ_A[tb+6] |=((tc&0x0200)>>( 7)); GFX_OBJ_A[tb+7] |=((tc&0x0100)>>( 6)); GFX_OBJ_A[tb+8] |=((tc&0x0080)>>( 5)); GFX_OBJ_A[tb+9] |=((tc&0x0040)>>( 4)); GFX_OBJ_A[tb+10]|=((tc&0x0020)>>( 3)); GFX_OBJ_A[tb+11]|=((tc&0x0010)>>( 2)); GFX_OBJ_A[tb+12]|=((tc&0x0008)>>( 1)); GFX_OBJ_A[tb+13]|=((tc&0x0004)>>( 0)); GFX_OBJ_A[tb+14]|=((tc&0x0002)<<( 1)); GFX_OBJ_A[tb+15]|=((tc&0x0001)<<( 2)); tb+=16; } if(!load_rom("d46-04.67", TMP, OBJ_A_COUNT*0x20)) return; // 16x16 OBJ A tb=0; for(ta=0;ta<OBJ_A_COUNT*0x20;ta+=2){ tc=ReadWord(&TMP[ta]); GFX_OBJ_A[tb+0] |=((tc&0x8000)>>(12)); GFX_OBJ_A[tb+1] |=((tc&0x4000)>>(11)); GFX_OBJ_A[tb+2] |=((tc&0x2000)>>(10)); GFX_OBJ_A[tb+3] |=((tc&0x1000)>>( 9)); GFX_OBJ_A[tb+4] |=((tc&0x0800)>>( 8)); GFX_OBJ_A[tb+5] |=((tc&0x0400)>>( 7)); GFX_OBJ_A[tb+6] |=((tc&0x0200)>>( 6)); GFX_OBJ_A[tb+7] |=((tc&0x0100)>>( 5)); GFX_OBJ_A[tb+8] |=((tc&0x0080)>>( 4)); GFX_OBJ_A[tb+9] |=((tc&0x0040)>>( 3)); GFX_OBJ_A[tb+10]|=((tc&0x0020)>>( 2)); GFX_OBJ_A[tb+11]|=((tc&0x0010)>>( 1)); GFX_OBJ_A[tb+12]|=((tc&0x0008)>>( 0)); GFX_OBJ_A[tb+13]|=((tc&0x0004)<<( 1)); GFX_OBJ_A[tb+14]|=((tc&0x0002)<<( 2)); GFX_OBJ_A[tb+15]|=((tc&0x0001)<<( 3)); tb+=16; } if(!load_rom("d46-07.34", OBJECT_MAP, 0x80000)) return; // TILE MAPPING tb=0; if(!load_rom("d46-05.87", TMP, 0xFDB00)) return; // 16x16 TILES ($3F6C) for(ta=0;ta<0xFDB00;ta+=2){ GFX_BG0[tb++]=TMP[ta]&15; GFX_BG0[tb++]=TMP[ta]>>4; GFX_BG0[tb++]=TMP[ta+1]&15; GFX_BG0[tb++]=TMP[ta+1]>>4; tb+=4; } tb=4; if(!load_rom("d46-06.88", TMP, 0xFDB00)) return; // 16x16 TILES for(ta=0;ta<0xFDB00;ta+=2){ GFX_BG0[tb++]=TMP[ta]&15; GFX_BG0[tb++]=TMP[ta]>>4; GFX_BG0[tb++]=TMP[ta+1]&15; GFX_BG0[tb++]=TMP[ta+1]>>4; tb+=4; } FreeMem(TMP); GFX_BG0_SOLID = MakeSolidTileMap16x16(GFX_BG0, 0x03F6C); RAMSize=0xB0000; if(!(RAM=AllocateMem(0xB0000))) return; if(!(ROM=AllocateMem(0x140000))) return; // Setup 68020 Memory Map // ---------------------- AddSCMemoryMap(0x100000); RAM_BG0=RAM+0x30000; RAM_BG1=RAM+0x31000; RAM_BG2=RAM+0x32000; RAM_BG3=RAM+0x33000; RAM_SCR0=RAM+0x6A000; RAM_SCR1=RAM+0x6A002; RAM_SCR2=RAM+0x6A004; RAM_SCR3=RAM+0x6A006; SCR0_XOFS=0x0020; SCR1_XOFS=0x001C; SCR2_XOFS=0x0018; SCR3_XOFS=0x0014; SCR0_YOFS=0xFFF8;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -