?? undrfire.c
字號:
/******************************************************************************//* *//* UNDER FIRE (C) 1995 TAITO CORPORATION *//* *//******************************************************************************/#include "gameinc.h"#include "undrfire.h"#include "f3system.h"#include "tc003vcu.h"#include "savegame.h"#include "debug.h"static struct DIR_INFO under_fire_dirs[] ={ { "under_fire", }, { "undrfire", }, { NULL, },};static struct ROM_INFO under_fire_roms[] ={ { "d67-06.rom", 0x00200000, 0xa2a63488, 0, 0, 0, }, { "d67-02.rom", 0x00200000, 0xfceb715e, 0, 0, 0, }, { "d67-03.rom", 0x00200000, 0x3b6e99a9, 0, 0, 0, }, { "d67-04.rom", 0x00200000, 0x8f2934c9, 0, 0, 0, }, { "d67-05.rom", 0x00200000, 0xe2e7dcf3, 0, 0, 0, }, { "d67-01.rom", 0x00200000, 0xa2f18122, 0, 0, 0, }, { "d67-07.rom", 0x00200000, 0x189c0ee5, 0, 0, 0, }, { "d67-08.rom", 0x00200000, 0x56730d44, 0, 0, 0, }, { "d67-09.rom", 0x00200000, 0x3c19f9e3, 0, 0, 0, }, { "d67-10.rom", 0x00100000, 0xd79e6ce9, 0, 0, 0, }, { "d67-11.rom", 0x00100000, 0x7a401bb3, 0, 0, 0, }, { "d67-12.rom", 0x00100000, 0x67b16fec, 0, 0, 0, }, { "d67-13.rom", 0x00080000, 0x42e7690d, 0, 0, 0, }, { "d67-17.rom", 0x00080000, 0x34e030b7, 0, 0, 0, }, { "d67-18.rom", 0x00080000, 0xf41ae7fd, 0, 0, 0, }, { "d67-19.rom", 0x00080000, 0x1d88fa5a, 0, 0, 0, }, { "d67-20.rom", 0x00020000, 0x974ebf69, 0, 0, 0, }, { "d67-21.rom", 0x00020000, 0x8fc6046f, 0, 0, 0, }, { "d67-23.rom", 0x00080000, 0x28e84e0a, 0, 0, 0, }, { NULL, 0, 0, 0, 0, 0, },};static struct INPUT_INFO under_fire_inputs[] ={ { KB_DEF_COIN1, MSG_COIN1, 0x069007, 0x04, BIT_ACTIVE_0 }, { KB_DEF_COIN2, MSG_COIN2, 0x069007, 0x08, BIT_ACTIVE_0 }, { KB_DEF_SERVICE, MSG_SERVICE, 0x069007, 0x02, BIT_ACTIVE_0 }, { KB_DEF_TEST, MSG_TEST, 0x069007, 0x01, BIT_ACTIVE_0 }, { KB_DEF_P1_START, MSG_P1_START, 0x069002, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P1_B1, MSG_P1_B1, 0x069001, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P1_B2, MSG_P1_B2, 0x069001, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P2_START, MSG_P2_START, 0x069002, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P2_B1, MSG_P2_B1, 0x069001, 0x40, BIT_ACTIVE_0 }, { KB_DEF_P2_B2, MSG_P2_B2, 0x069001, 0x80, BIT_ACTIVE_0 }, { 0, NULL, 0, 0, 0 },};static struct ROMSW_DATA romsw_data_under_fire_0[] ={ { "Taito Japan (Japanese)", 0x01 }, { "Taito America", 0x02 }, { "Taito Japan", 0x03 }, { NULL, 0 },};static struct ROMSW_INFO under_fire_romsw[] ={ { 0x1FFFFF, 0x03, romsw_data_under_fire_0 }, { 0, 0, NULL },};static struct VIDEO_INFO under_fire_video ={ DrawUndrFire, 320, 232, 64, VIDEO_ROTATE_NORMAL| VIDEO_ROTATABLE,};struct GAME_MAIN game_under_fire ={ under_fire_dirs, under_fire_roms, under_fire_inputs, NULL, under_fire_romsw, LoadUndrFire, ClearUndrFire, &under_fire_video, ExecuteUndrFireFrame, "undrfire", "Under Fire", NULL, COMPANY_ID_TAITO, "D67", 1993, NULL, GAME_SHOOT | GAME_NOT_WORKING,};#define OBJ_A_COUNT (0xF685)// 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 *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_BG1;static UINT8 *GFX_BG1_SOLID;/* static UINT8 *GFX_SPR; *//* static UINT8 *GFX_SPR_SOLID; */void AddUFMemoryMap(UINT32 romsize){ UINT32 ta; for(ta=0;ta<0x100;ta++){ R24[ta]=RAM+0x70000; // SCRATCH RAM } R24[0x20]=RAM+0x00000; // MAIN RAM R24[0x21]=RAM+0x10000; // MAIN RAM R24[0x30]=RAM+0x40000; // OBJECT? R24[0xA0]=RAM+0x60000; // COLOR? R24[0x50]=RAM+0x69000; // INPUT ($500000-$500007) //R24[0x80]=RAM+0x20000; // OBJECT RAM R24[0x80]=RAM+0x30000; // SCREEN RAM - F3 system //R24[0x82]=RAM+0x40000; // LINE RAM //R24[0x83]=RAM+0x50000; // PIXEL RAM R24[0x83]=RAM+0x6A000; // SCROLL RAM - F3 system //R24[0xC0]=RAM+0x68000; // SOUND RAM ($C00000-$C007FF) R24[0x90]=RAM+0x20000; // SCREEN RAM - tc0100scn (?) R24[0x92]=RAM+0x6A100; // SCROLL RAM - tc0100scn (?) 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[0x50]=RAM+0x69100; // OUTPUT ($500000-$50000F) EEPROM=RAM+0x6B000; // EEPROM}void LoadUndrFire(void){ int ta,tb,tc; UINT8 *TMP; if(!(GFX_BG0=AllocateMem(0x569000))) return; if(!(GFX_BG1=AllocateMem(0x400000))) 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("d67-03.rom", 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("d67-04.rom", 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("d67-05.rom", 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("d67-06.rom", 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("d67-07.rom", 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)>>(11)); GFX_OBJ_A[tb+1] |=((tc&0x4000)>>(10)); GFX_OBJ_A[tb+2] |=((tc&0x2000)>>( 9)); GFX_OBJ_A[tb+3] |=((tc&0x1000)>>( 8)); GFX_OBJ_A[tb+4] |=((tc&0x0800)>>( 7)); GFX_OBJ_A[tb+5] |=((tc&0x0400)>>( 6)); GFX_OBJ_A[tb+6] |=((tc&0x0200)>>( 5)); GFX_OBJ_A[tb+7] |=((tc&0x0100)>>( 4)); GFX_OBJ_A[tb+8] |=((tc&0x0080)>>( 3)); GFX_OBJ_A[tb+9] |=((tc&0x0040)>>( 2)); GFX_OBJ_A[tb+10]|=((tc&0x0020)>>( 1)); GFX_OBJ_A[tb+11]|=((tc&0x0010)>>( 0)); GFX_OBJ_A[tb+12]|=((tc&0x0008)<<( 1)); GFX_OBJ_A[tb+13]|=((tc&0x0004)<<( 2)); GFX_OBJ_A[tb+14]|=((tc&0x0002)<<( 3)); GFX_OBJ_A[tb+15]|=((tc&0x0001)<<( 4)); tb+=16; } if(!load_rom("d67-13.rom", OBJECT_MAP, 0x80000)) return; // TILE MAPPING tb=0; if(!load_rom("d67-08.rom", TMP, 0x15A400)) return; // 16x16 TILES ($5690) for(ta=0;ta<0x15A400;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("d67-09.rom", TMP, 0x15A400)) return; // 16x16 TILES for(ta=0;ta<0x15A400;ta+=2){ GFX_BG0[tb++]=TMP[ta]&15; GFX_BG0[tb++]=TMP[ta]>>4;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -