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

📄 bubblem.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************//*                                                                            *//*                BUBBLE MEMORIES (C) 1995 TAITO CORPORATION                  *//*                                                                            *//******************************************************************************/#include "gameinc.h"#include "bubblem.h"#include "f3system.h"#include "tc003vcu.h"#include "tc200obj.h"#include "savegame.h"		// save/load game routines#include "sasound.h"/********************   BUBBLEM MEMORIES ********************/static struct DIR_INFO bubble_memories_dirs[] ={   { "bubble_memories", },   { "bubblem", },   { NULL, },};static struct ROM_INFO bubble_memories_roms[] ={   {   "e21-07.rom", 0x00100000, 0x7789bf7c, 0, 0, 0, },   {   "e21-02.rom", 0x00200000, 0xb7cb9232, 0, 0, 0, },   {   "e21-03.rom", 0x00200000, 0x54c5f83d, 0, 0, 0, },   {   "e21-04.rom", 0x00200000, 0xe5af2a2d, 0, 0, 0, },   {   "e21-05.rom", 0x00100000, 0x07eab58f, 0, 0, 0, },   {   "e21-06.rom", 0x00100000, 0x997fc0d7, 0, 0, 0, },   {   "e21-01.rom", 0x00200000, 0xa11f2f99, 0, 0, 0, },   {   "e21-12.rom", 0x00040000, 0x34093de1, REGION_ROM2, 0x000000, LOAD_8_16, },   {   "e21-13.rom", 0x00040000, 0x9e9ec437, REGION_ROM2, 0x000001, LOAD_8_16, },   {   "e21-18.rom", 0x00080000, 0xd14e313a, 0, 0, 0, },   {   "e21-19.rom", 0x00080000, 0xbe0b907d, 0, 0, 0, },   {   "e21-20.rom", 0x00080000, 0x7727c673, 0, 0, 0, },   {   "e21-21.rom", 0x00080000, 0xcac4169c, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};/*static struct ROMSW_DATA romsw_data_bubble_memories_0[] ={   { "Taito Worldwide (Japanese)", 0x01 },   { "Taito America",              0x02 },   { "Taito Japan",                0x03 },   { NULL,                         0    },};*//*static struct ROMSW_INFO bubble_memories_romsw[] ={   { 0x0FFFFF, 0x03, romsw_data_bubble_memories_0 },   { 0,        0,    NULL },};*/static struct VIDEO_INFO bubble_memories_video ={   DrawBubbleMemories,   320,   224,   64,   VIDEO_ROTATE_NORMAL,};struct GAME_MAIN game_bubble_memories ={   bubble_memories_dirs,   bubble_memories_roms,   f3_system_inputs,   NULL,   NULL,   LoadBubbleMemories,   ClearBubbleMemories,   &bubble_memories_video,   ExecuteBubbleMemoriesFrame,   "bubblem",   "Bubble Memories",   "僶僽儖儊儌儕乕僘",   COMPANY_ID_TAITO,   "E21",   1995,   f3_sound,   GAME_PLATFORM,};/**************************   BUBBLEM MEMORIES JAPAN **************************/static struct DIR_INFO bubble_memories_jp_dirs[] ={   { "bubble_memories_jp", },   { "bubblemj", },   { ROMOF("bubblem"), },   { CLONEOF("bubblem"), },   { NULL, },};static struct ROM_INFO bubble_memories_jp_roms[] ={   {   "e21-07.rom", 0x00100000, 0x7789bf7c, 0, 0, 0, },   {   "e21-02.rom", 0x00200000, 0xb7cb9232, 0, 0, 0, },   {   "e21-03.rom", 0x00200000, 0x54c5f83d, 0, 0, 0, },   {   "e21-04.rom", 0x00200000, 0xe5af2a2d, 0, 0, 0, },   {   "e21-05.rom", 0x00100000, 0x07eab58f, 0, 0, 0, },   {   "e21-06.rom", 0x00100000, 0x997fc0d7, 0, 0, 0, },   {   "e21-01.rom", 0x00200000, 0xa11f2f99, 0, 0, 0, },   {   "e21-12.rom", 0x00040000, 0x34093de1, REGION_ROM2, 0x000000, LOAD_8_16, },   {   "e21-13.rom", 0x00040000, 0x9e9ec437, REGION_ROM2, 0x000001, LOAD_8_16, },   {    "e21-08.17", 0x00080000, 0x27381ae2, 0, 0, 0, },   {    "e21-09.18", 0x00080000, 0x6c305f17, 0, 0, 0, },   {    "e21-10.19", 0x00080000, 0xcdfb58f6, 0, 0, 0, },   {    "e21-11.20", 0x00080000, 0xdf0eeae4, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};struct GAME_MAIN game_bubble_memories_jp ={   bubble_memories_jp_dirs,   bubble_memories_jp_roms,   f3_system_inputs,   NULL,   NULL,   LoadBubbleMemories,   ClearBubbleMemories,   &bubble_memories_video,   ExecuteBubbleMemoriesFrame,   "bubblemj",   "Bubble Memories (Japan)",   "僶僽儖儊儌儕乕僘 (Japan)",   COMPANY_ID_TAITO,   "E21",   1995,   f3_sound,   GAME_PLATFORM,};static UINT8 *RAM_BG0;static UINT8 *RAM_BG1;static UINT8 *RAM_BG2;static UINT8 *RAM_BG3;static UINT8 *RAM_BG4;		// PIXELstatic UINT8 *RAM_SCR0;static UINT8 *RAM_SCR1;static UINT8 *RAM_SCR2;static UINT8 *RAM_SCR3;static UINT8 *RAM_SCR4;		// PIXELstatic UINT32 SCR0_XOFS;static UINT32 SCR1_XOFS;static UINT32 SCR2_XOFS;static UINT32 SCR3_XOFS;static UINT32 SCR4_XOFS;		// PIXELstatic UINT32 SCR0_YOFS;static UINT32 SCR1_YOFS;static UINT32 SCR2_YOFS;static UINT32 SCR3_YOFS;static UINT32 SCR4_YOFS;		// PIXELstatic UINT8 *GFX_BG0;static UINT8 *GFX_BG0_SOLID;static UINT8 *GFX_SPR;static UINT8 *GFX_SPR_SOLID;void LoadBubbleMemories(void){   int ta,tb,tc;   RAMSize=0x80000;   if(!(RAM=AllocateMem(0x80000))) return;   if(!(ROM=AllocateMem(0x200000))) return;   if(!(GFX=AllocateMem(0x64AB00+0x3C2300))) return;   GFX_BG0 = GFX+0x64AB00;   GFX_SPR = GFX+0x000000;   tb=0;   if(!load_rom("e21-02.rom", ROM, 0x192AC0)) return;	// 16x16 SPRITES ($64AB)   for(ta=0;ta<0x192AC0;ta++){      GFX[tb++]=ROM[ta]&15;      GFX[tb++]=ROM[ta]>>4;      tb+=2;   }   tb=2;   if(!load_rom("e21-01.rom", ROM, 0x192AC0)) return;	// 16x16 SPRITES   for(ta=0;ta<0x192AC0;ta++){      GFX[tb++]=ROM[ta]&15;      GFX[tb++]=ROM[ta]>>4;      tb+=2;   }   tb=0;   if(!load_rom("e21-07.rom", ROM, 0xF08C0)) return;	// 16x16 TILES ($3C23)   for(ta=0;ta<0xF08C0;ta+=2){      GFX_BG0[tb++]=ROM[ta]&15;      GFX_BG0[tb++]=ROM[ta]>>4;      GFX_BG0[tb++]=ROM[ta+1]&15;      GFX_BG0[tb++]=ROM[ta+1]>>4;      tb+=4;   }   tb=4;   if(!load_rom("e21-06.rom", ROM, 0xF08C0)) return;	// 16x16 TILES   for(ta=0;ta<0xF08C0;ta+=2){      GFX_BG0[tb++]=ROM[ta]&15;      GFX_BG0[tb++]=ROM[ta]>>4;      GFX_BG0[tb++]=ROM[ta+1]&15;      GFX_BG0[tb++]=ROM[ta+1]>>4;      tb+=4;   }   tb=0;   if(!load_rom("e21-05.rom", ROM, 0xF08C0)) return;	// 16x16 TILES (MASK)   for(ta=0;ta<0xF08C0;ta+=2){      tc=ROM[ta];      GFX_BG0[tb+7]|=((tc&0x80)>>7)<<4;      GFX_BG0[tb+6]|=((tc&0x40)>>6)<<4;      GFX_BG0[tb+5]|=((tc&0x20)>>5)<<4;      GFX_BG0[tb+4]|=((tc&0x10)>>4)<<4;      GFX_BG0[tb+3]|=((tc&0x08)>>3)<<4;      GFX_BG0[tb+2]|=((tc&0x04)>>2)<<4;      GFX_BG0[tb+1]|=((tc&0x02)>>1)<<4;      GFX_BG0[tb+0]|=((tc&0x01)>>0)<<4;      tb+=8;   }   GFX_BG0_SOLID = MakeSolidTileMap16x16(GFX_BG0, 0x3C23);   GFX_SPR_SOLID = make_solid_mask_16x16(GFX_SPR, 0x64AB);   // Setup 68020 Memory Map   // ----------------------   AddF3MemoryMap(0x200000);   RAM_BG0=RAM+0x30000;   RAM_BG1=RAM+0x32000;   RAM_BG3=RAM+0x34000;   RAM_BG2=RAM+0x36000;   RAM_BG4=RAM+0x50000;   RAM_SCR0=RAM+0x6A000;   RAM_SCR1=RAM+0x6A002;   RAM_SCR3=RAM+0x6A004;   RAM_SCR2=RAM+0x6A006;   RAM_SCR4=RAM+0x6A018;   SCR0_XOFS=(0xFFD8)<<6;   SCR1_XOFS=(0xFFDC)<<6;   SCR3_XOFS=(0xFFE0)<<6;   SCR2_XOFS=(0xFFE4)<<6;   SCR4_XOFS=(0x0029-1)<<0;   SCR0_YOFS=(0xFFFF)<<7;   SCR1_YOFS=(0xFFFF)<<7;   SCR3_YOFS=(0xFFFF)<<7;   SCR2_YOFS=(0xFFFF)<<7;   SCR4_YOFS=(0x001F-1)<<0;   if(!load_rom_index(12, RAM, 0x80000)) return;   for(ta=0;ta<0x80000;ta++){      ROM[(ta<<2)+0]=RAM[ta];   }   if(!load_rom_index(11, RAM, 0x80000)) return;   for(ta=0;ta<0x80000;ta++){      ROM[(ta<<2)+1]=RAM[ta];   }   if(!load_rom_index(10, RAM, 0x80000)) return;   for(ta=0;ta<0x80000;ta++){      ROM[(ta<<2)+2]=RAM[ta];   }   if(!load_rom_index(9, RAM, 0x80000)) return;   for(ta=0;ta<0x80000;ta++){      ROM[(ta<<2)+3]=RAM[ta];   }   // 68000 code   M68000ROM = load_region[REGION_ROM2];   //WriteWord68k(&ROM[0x199b4],0x4e71); // Hack from mame ??!   //save_file("rom.dat",M68000ROM,0x40000);   if(!(PCMROM=AllocateMem(0x800000))) return;      load_be("e21-03.rom",PCMROM,0x200000);   load_be("e21-04.rom",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[0x103DBC],0x7F00);		//	raine	#$00 <read eeprom>   WriteWord68k(&ROM[0x103DBE],0x4E75);		//	rts

⌨️ 快捷键说明

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