📄 bubsymph.c
字号:
/******************************************************************************//* *//* BUBBLE BOBBLE 2/BUBBLE SYMPHONY (C) 1994 TAITO CORPORATION *//* *//******************************************************************************/#include "gameinc.h"#include "bubsymph.h"#include "f3system.h"#include "tc003vcu.h"#include "tc200obj.h"#include "savegame.h"#include "sasound.h"/******************* BUBBLE BOBBLE 2 *******************/static struct DIR_INFO bubble_bobble_2_dirs[] ={ { "bubble_bobble_2", }, { "bublbob2", }, { NULL, },};static struct ROM_INFO bubble_bobble_2_roms[] ={ { "d90.12", 0x00040000, 0x9e523996, REGION_ROM1, 0x000000, LOAD_8_32, }, { "d90.11", 0x00040000, 0xedfdbb7f, REGION_ROM1, 0x000001, LOAD_8_32, }, { "d90.10", 0x00040000, 0x8e957d3d, REGION_ROM1, 0x000002, LOAD_8_32, }, { "d90.17", 0x00040000, 0x711f1894, REGION_ROM1, 0x000003, LOAD_8_32, }, { "d90.01", 0x00100000, 0x8aedb9e5, 0, 0, 0, }, { "d90.02", 0x00100000, 0x5ab04ca2, 0, 0, 0, }, { "d90.03", 0x00100000, 0x6fa894a1, 0, 0, 0, }, { "d90.04", 0x00200000, 0xfeee5fda, 0, 0, 0, }, { "d90.05", 0x00200000, 0xc192331f, 0, 0, 0, }, { "d90.06", 0x00100000, 0x166a72b8, 0, 0, 0, }, { "d90.07", 0x00100000, 0xb436b42d, 0, 0, 0, }, { "d90.08", 0x00100000, 0x25a4fb2c, 0, 0, 0, }, { "d90.13", 0x00040000, 0x6762bd90, REGION_ROM2, 0x000000, LOAD_8_16, }, { "d90.14", 0x00040000, 0x8e33357e, REGION_ROM2, 0x000001, LOAD_8_16, }, { NULL, 0, 0, 0, 0, 0, },};/*static struct ROMSW_DATA romsw_data_bubble_bobble_2[] ={ { "Taito Japan (Japanese)", 0x01 }, { "Taito America", 0x02 }, { "Taito World (Bubble Bobble 2)", 0x03 }, { NULL, 0 },};*/static struct VIDEO_INFO bubble_symphony_video ={ DrawBubbleSymphony, 320, 224, 64, VIDEO_ROTATE_NORMAL,};extern void ExecuteBubbleMemoriesFrame(void);struct GAME_MAIN game_bubble_bobble_2 ={ bubble_bobble_2_dirs, bubble_bobble_2_roms, f3_system_inputs, NULL, NULL, LoadBubbleSymphony, ClearBubbleSymphony, &bubble_symphony_video, ExecuteBubbleMemoriesFrame, "bublbob2", "Bubble Bobble 2", "僶僽儖僔儞僼僅僯乕", COMPANY_ID_TAITO, "D90", 1994, f3_sound, GAME_PLATFORM,};/******************* BUBBLE SYMPHONY *******************/static struct DIR_INFO bubble_symphony_dirs[] ={ { "bubble_symphony", }, { "bubsymph", }, { ROMOF("bublbob2"), }, { CLONEOF("bublbob2"), }, { NULL, },};static struct ROM_INFO bubble_symphony_roms[] ={ { "d90.12", 0x00040000, 0x9e523996, REGION_ROM1, 0x000000, LOAD_8_32, }, { "d90.11", 0x00040000, 0xedfdbb7f, REGION_ROM1, 0x000001, LOAD_8_32, }, { "d90.10", 0x00040000, 0x8e957d3d, REGION_ROM1, 0x000002, LOAD_8_32, }, { "d90.09", 0x00040000, 0x3f2090b7, REGION_ROM1, 0x000003, LOAD_8_32, }, { "d90.01", 0x00100000, 0x8aedb9e5, 0, 0, 0, }, { "d90.02", 0x00100000, 0x5ab04ca2, 0, 0, 0, }, { "d90.03", 0x00100000, 0x6fa894a1, 0, 0, 0, }, { "d90.04", 0x00200000, 0xfeee5fda, 0, 0, 0, }, { "d90.05", 0x00200000, 0xc192331f, 0, 0, 0, }, { "d90.06", 0x00100000, 0x166a72b8, 0, 0, 0, }, { "d90.07", 0x00100000, 0xb436b42d, 0, 0, 0, }, { "d90.08", 0x00100000, 0x25a4fb2c, 0, 0, 0, }, { "d90.13", 0x00040000, 0x6762bd90, REGION_ROM2, 0x000000, LOAD_8_16, }, { "d90.14", 0x00040000, 0x8e33357e, REGION_ROM2, 0x000001, LOAD_8_16, }, { NULL, 0, 0, 0, 0, 0, },};struct GAME_MAIN game_bubble_symphony ={ bubble_symphony_dirs, bubble_symphony_roms, f3_system_inputs, NULL, NULL, LoadBubbleSymphony, ClearBubbleSymphony, &bubble_symphony_video, ExecuteBubbleMemoriesFrame, "bubsymph", "Bubble Symphony", "僶僽儖僔儞僼僅僯乕", COMPANY_ID_TAITO, "D90", 1994, f3_sound, GAME_PLATFORM,};/********************** BUBBLE SYMPHONY US **********************/static struct DIR_INFO bubble_symphony_us_dirs[] ={ { "bubble_symphony_us", }, { "bubsympu", }, { ROMOF("bublbob2"), }, { CLONEOF("bublbob2"), }, { NULL, },};static struct ROM_INFO bubble_symphony_us_roms[] ={ { "d90.12", 0x00040000, 0x9e523996, REGION_ROM1, 0x000000, LOAD_8_32, }, { "d90.11", 0x00040000, 0xedfdbb7f, REGION_ROM1, 0x000001, LOAD_8_32, }, { "d90.10", 0x00040000, 0x8e957d3d, REGION_ROM1, 0x000002, LOAD_8_32, }, { "d90.usa", 0x00040000, 0x06182802, REGION_ROM1, 0x000003, LOAD_8_32, }, { "d90.01", 0x00100000, 0x8aedb9e5, 0, 0, 0, }, { "d90.02", 0x00100000, 0x5ab04ca2, 0, 0, 0, }, { "d90.03", 0x00100000, 0x6fa894a1, 0, 0, 0, }, { "d90.04", 0x00200000, 0xfeee5fda, 0, 0, 0, }, { "d90.05", 0x00200000, 0xc192331f, 0, 0, 0, }, { "d90.06", 0x00100000, 0x166a72b8, 0, 0, 0, }, { "d90.07", 0x00100000, 0xb436b42d, 0, 0, 0, }, { "d90.08", 0x00100000, 0x25a4fb2c, 0, 0, 0, }, { "d90.13", 0x00040000, 0x6762bd90, REGION_ROM2, 0x000000, LOAD_8_16, }, { "d90.14", 0x00040000, 0x8e33357e, REGION_ROM2, 0x000001, LOAD_8_16, }, { NULL, 0, 0, 0, 0, 0, },};struct GAME_MAIN game_bubble_symphony_us ={ bubble_symphony_us_dirs, bubble_symphony_us_roms, f3_system_inputs, NULL, NULL, LoadBubbleSymphony, ClearBubbleSymphony, &bubble_symphony_video, ExecuteBubbleMemoriesFrame, "bubsympu", "Bubble Symphony (US)", "僶僽儖僔儞僼僅僯乕 (US)", COMPANY_ID_TAITO, "D90", 1994, 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 LoadBubbleSymphony(void){ int ta,tb,tc; UINT8 *TMP; RAMSize=0x80000; if(!(RAM=AllocateMem(0x80000))) return; if(!(GFX=AllocateMem(0x3E8D00+0x336E00))) return; if(!(TMP=AllocateMem(0x100000))) return; GFX_BG0 = GFX+0x3E8D00; GFX_SPR = GFX+0x000000; tb=0; if(!load_rom("d90.03", TMP, 0xFA340)) return; // 16x16 SPRITES ($3E8D) for(ta=0;ta<0xFA340;ta++){ GFX[tb++]=TMP[ta]&15; GFX[tb++]=TMP[ta]>>4; tb+=2; } tb=2; if(!load_rom("d90.02", TMP, 0xFA340)) return; // 16x16 SPRITES for(ta=0;ta<0xFA340;ta++){ GFX[tb++]=TMP[ta]&15; GFX[tb++]=TMP[ta]>>4; tb+=2; } tb=0; if(!load_rom("d90.01", TMP, 0xFA340)) return; // 16x16 SPRITES (MASK) for(ta=0;ta<0xFA340;ta++){ tc=TMP[ta]; GFX[tb+3]|=((tc&0xC0)>>6)<<4; GFX[tb+2]|=((tc&0x30)>>4)<<4; GFX[tb+1]|=((tc&0x0C)>>2)<<4; GFX[tb+0]|=((tc&0x03)>>0)<<4; tb+=4; } memset(GFX+0x1C8900,0x00,0x100); tb=0; if(!load_rom("d90.08", TMP, 0xCDB80)) return; // 16x16 TILES ($336E) for(ta=0;ta<0xCDB80;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("d90.07", TMP, 0xCDB80)) return; // 16x16 TILES for(ta=0;ta<0xCDB80;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=0; if(!load_rom("d90.06", TMP, 0xCDB80)) return; // 16x16 TILES (MASK) for(ta=0;ta<0xCDB80;ta+=2){ tc=TMP[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; } FreeMem(TMP); GFX_BG0_SOLID = MakeSolidTileMap16x16(GFX_BG0, 0x336E); GFX_SPR_SOLID = make_solid_mask_16x16(GFX_SPR, 0x3E8D);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -