⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ktiger2.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************//*                                                                            *//*                 KYUKYOKU TIGER 2 (C) 1995 TAITO CORPORATION                *//*                                                                            *//******************************************************************************/#include "gameinc.h"#include "ktiger2.h"#include "f3system.h"#include "tc003vcu.h"#include "tc200obj.h"#include "savegame.h"#include "sasound.h"static struct DIR_INFO kyukyoku_tiger_2_dirs[] ={   { "kyukyoku_tiger_2", },   { "ktiger2", },   { NULL, },};static struct ROM_INFO kyukyoku_tiger_2_roms[] ={   {   "e15-03.bin", 0x00100000, 0xbe45a52f, 0, 0, 0, },   {   "e15-02.bin", 0x00200000, 0x2ea7f2bd, 0, 0, 0, },   {   "e15-07.bin", 0x00100000, 0x8164f7ee, 0, 0, 0, },   {   "e15-04.bin", 0x00200000, 0x6ea8d9bd, 0, 0, 0, },   {   "e15-05.bin", 0x00200000, 0x3e5da5f6, 0, 0, 0, },   {   "e15-06.bin", 0x00200000, 0xb182a3e1, 0, 0, 0, },   {   "e15-09.bin", 0x00100000, 0x07c29f60, 0, 0, 0, },   {   "e15-08.bin", 0x00200000, 0x4bdb2bf3, 0, 0, 0, },   {   "e15-10.bin", 0x00200000, 0xd8c96b00, 0, 0, 0, },   {   "e15-11.bin", 0x00040000, 0xa706a286, 0, 0, 0, },   {   "e15-12.bin", 0x00040000, 0x59d832f2, 0, 0, 0, },   {   "e15-13.bin", 0x00040000, 0x0f03daf7, 0, 0, 0, },   {   "e15-14.bin", 0x00040000, 0xb527b733, 0, 0, 0, },   {   "e15-15.bin", 0x00020000, 0x22126dfb, REGION_ROM2, 0x000000, LOAD_8_16, },   {   "e15-16.bin", 0x00020000, 0xf8b58ea0, REGION_ROM2, 0x000001, LOAD_8_16, },   {   "e15-01.bin", 0x00100000, 0x85421aac, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};static struct ROMSW_DATA romsw_data_kyukyoku_tiger_2_0[] ={   { "Kyukyoku Tiger 2 (Japan)",               0x01 },   { "Twin Cobra 2 (USA)",               0x02 },   { "Twin Cobra 2 (World)",               0x03 },   { NULL,                    0    },};static struct ROMSW_INFO kyukyoku_tiger_2_romsw[] ={   { 0x0FFFFF, 0x01, romsw_data_kyukyoku_tiger_2_0 },   { 0,        0,    NULL },};static struct VIDEO_INFO kyukyoku_tiger_2_video ={   DrawKyukyokuTiger2,   224,   320,   64,   VIDEO_ROTATE_NORMAL| VIDEO_ROTATABLE,};struct GAME_MAIN game_kyukyoku_tiger_2 ={   kyukyoku_tiger_2_dirs,   kyukyoku_tiger_2_roms,   f3_system_inputs,   NULL,   kyukyoku_tiger_2_romsw,   LoadKyukyokuTiger2,   ClearKyukyokuTiger2,   &kyukyoku_tiger_2_video,   ExecuteF3SystemFrame,   "ktiger2",   "Kyukyoku Tiger 2",   NULL,   COMPANY_ID_TAITO,   "E15",   1995,   f3_sound,   GAME_SHOOT,};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 LoadKyukyokuTiger2(void){   int ta,tb;   if(!(ROM=AllocateMem(0x200000))) return;   if(!(GFX=AllocateMem(0x800000+0x400000))) return;   GFX_SPR = GFX+0x000000;   tb=0;   if(!load_rom("e15-04.bin", ROM, 0x200000)) return;	// 16x16 SPRITES ($8000)   for(ta=0;ta<0x200000;ta++,tb+=4){      WriteWord(&GFX_SPR[tb],((ROM[ta])|(ROM[ta]<<4))&0x0F0F);   }   tb=2;   if(!load_rom("e15-02.bin", ROM, 0x200000)) return;	// 16x16 SPRITES   for(ta=0;ta<0x200000;ta++,tb+=4){      WriteWord(&GFX_SPR[tb],((ROM[ta])|(ROM[ta]<<4))&0x0F0F);   }   tb=0x800000;   if(!load_rom("e15-03.bin", ROM, 0x100000)) return;	// 16x16 SPRITES ($2000)   for(ta=0;ta<0x100000;ta++,tb+=4){      WriteWord(&GFX_SPR[tb],((ROM[ta])|(ROM[ta]<<4))&0x0F0F);   }   tb=0x800002;   if(!load_rom("e15-01.bin", ROM, 0x100000)) return;	// 16x16 SPRITES   for(ta=0;ta<0x100000;ta++,tb+=4){      WriteWord(&GFX_SPR[tb],((ROM[ta])|(ROM[ta]<<4))&0x0F0F);   }   if(!(GFX_BG0=AllocateMem(0x800000+0x400000))) return;   tb=0;   if(!load_rom("e15-10.bin", ROM, 0x200000)) return;	// 16x16 TILES ($8000)   for(ta=0;ta<0x200000;ta+=2,tb+=8){      WriteWord(&GFX_BG0[tb+0],((ROM[ta+0])|(ROM[ta+0]<<4))&0x0F0F);      WriteWord(&GFX_BG0[tb+2],((ROM[ta+1])|(ROM[ta+1]<<4))&0x0F0F);   }   tb=4;   if(!load_rom("e15-08.bin", ROM, 0x200000)) return;	// 16x16 TILES   for(ta=0;ta<0x200000;ta+=2,tb+=8){      WriteWord(&GFX_BG0[tb+0],((ROM[ta+0])|(ROM[ta+0]<<4))&0x0F0F);      WriteWord(&GFX_BG0[tb+2],((ROM[ta+1])|(ROM[ta+1]<<4))&0x0F0F);   }   tb=0x800000;   if(!load_rom("e15-09.bin", ROM, 0x100000)) return;	// 16x16 TILES ($2000)   for(ta=0;ta<0x100000;ta+=2,tb+=8){      WriteWord(&GFX_BG0[tb+0],((ROM[ta+0])|(ROM[ta+0]<<4))&0x0F0F);      WriteWord(&GFX_BG0[tb+2],((ROM[ta+1])|(ROM[ta+1]<<4))&0x0F0F);   }   tb=0x800004;   if(!load_rom("e15-07.bin", ROM, 0x100000)) return;	// 16x16 TILES   for(ta=0;ta<0x100000;ta+=2,tb+=8){      WriteWord(&GFX_BG0[tb+0],((ROM[ta+0])|(ROM[ta+0]<<4))&0x0F0F);      WriteWord(&GFX_BG0[tb+2],((ROM[ta+1])|(ROM[ta+1]<<4))&0x0F0F);   }   FreeMem(ROM);   Rotate16x16(GFX_SPR,0xC000);   Flip16x16_X(GFX_SPR,0xC000);   Rotate16x16(GFX_BG0,0xC000);   Flip16x16_X(GFX_BG0,0xC000);   GFX_BG0_SOLID = MakeSolidTileMap16x16(GFX_BG0, 0xC000);   GFX_SPR_SOLID = make_solid_mask_16x16(GFX_SPR, 0xC000);   RAMSize=0x80000;   if(!(RAM=AllocateMem(0x80000))) return;   if(!(ROM=AllocateMem(0x100000))) return;   // Setup 68020 Memory Map   // ----------------------   AddF3MemoryMap(0x100000);   RAM_BG0=RAM+0x31000;   RAM_BG1=RAM+0x33000;   RAM_BG2=RAM+0x32000;   RAM_BG3=RAM+0x30000;   RAM_SCR0=RAM+0x6A002;   RAM_SCR1=RAM+0x6A006;   RAM_SCR2=RAM+0x6A004;   RAM_SCR3=RAM+0x6A000;   SCR0_XOFS=0xF740;   SCR1_XOFS=0xF940;   SCR2_XOFS=0xF840;   SCR3_XOFS=0xF640;   SCR0_YOFS=0xFD80;   SCR1_YOFS=0xFD80;   SCR2_YOFS=0xFD80;   SCR3_YOFS=0xFD80;   if(!load_rom("e15-14.bin", RAM, 0x40000)) return;   for(ta=0;ta<0x40000;ta++){      ROM[(ta<<2)+0]=RAM[ta];   }   if(!load_rom("e15-13.bin", RAM, 0x40000)) return;   for(ta=0;ta<0x40000;ta++){      ROM[(ta<<2)+1]=RAM[ta];   }   if(!load_rom("e15-12.bin", RAM, 0x40000)) return;   for(ta=0;ta<0x40000;ta++){      ROM[(ta<<2)+2]=RAM[ta];   }   if(!load_rom("e15-11.bin", RAM, 0x40000)) return;   for(ta=0;ta<0x40000;ta++){      ROM[(ta<<2)+3]=RAM[ta];   }   Rotate8x8_4bpp(ROM+0x48000,0x2000>>5);   Flip8x8_4bpp_X(ROM+0x48000,0x2000>>5);   // 68000 code   M68000ROM = load_region[REGION_ROM2];      if(!(PCMROM=AllocateMem(0x800000))) return;      load_be("e15-05.bin",PCMROM,0x200000);   load_be("e15-06.bin",PCMROM+0x400000,0x200000);   max_banks_this_game=3; //=memory_region_length(REGION_SOUND1)/0x400000;   memset(RAM+0x00000,0x00,0x80000);   memset(RAM+0x69000,0xFF,0x01000);   // EEPROM HACKS   // ------------   WriteWord68k(&ROM[0x001180],0x7F00);		//	raine	#$00 <read eeprom>   WriteWord68k(&ROM[0x001182],0x4E75);		//	rts   WriteWord68k(&ROM[0x0011F4],0x7F01);		//	raine	#$01 <write eeprom>   WriteWord68k(&ROM[0x0011F6],0x4E75);		//	rts   // SPEED HACKS   // -----------   WriteLong68k(&ROM[0x0005AC],0x7F024E71);	//	raine	#$02 <stop cpu>   WriteLong68k(&ROM[0x0005B0],0x4E714E71);	//	nop   WriteLong68k(&ROM[0x0005E6],0x7F024E71);	//	raine	#$02 <stop cpu>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -