📄 volfied.c
字号:
/******************************************************************************//* *//* VOLFIED (C) 1988 TAITO CORPORATION *//* *//******************************************************************************/#include "gameinc.h"#include "volfied.h"#include "2203intf.h"#include "taitosnd.h"#include "debug.h"static struct DIR_INFO volfied_dirs[] ={ { "volfied", }, { NULL, },};static struct ROM_INFO volfied_roms[] ={ { "c04-06.bin", 0x00008000, 0xb70106b2, 0, 0, 0, }, { "c04-07-1.bin", 0x00010000, 0x5d9065d5, 0, 0, 0, }, { "c04-08-1.bin", 0x00010000, 0x19f7e66b, 0, 0, 0, }, { "c04-09.bin", 0x00010000, 0xc78cf057, 0, 0, 0, }, { "c04-10.bin", 0x00010000, 0x429b6b49, 0, 0, 0, }, { "c04-11-1.bin", 0x00010000, 0x1aaf6e9b, 0, 0, 0, }, { "c04-12-1.bin", 0x00010000, 0xafb6a058, 0, 0, 0, }, { "c04-15.bin", 0x00020000, 0x7c50b978, 0, 0, 0, }, { "c04-16.bin", 0x00020000, 0x8c2476ef, 0, 0, 0, }, { "c04-17.bin", 0x00020000, 0xc62fdeb8, 0, 0, 0, }, { "c04-18.bin", 0x00020000, 0x7665212c, 0, 0, 0, }, { "c04-19.bin", 0x00020000, 0x231493ae, 0, 0, 0, }, { "c04-20.bin", 0x00020000, 0x0aea651f, 0, 0, 0, }, { "c04-21.bin", 0x00020000, 0x8598d38e, 0, 0, 0, }, { "c04-22.bin", 0x00020000, 0xf405d465, 0, 0, 0, }, { NULL, 0, 0, 0, 0, 0, },};static struct INPUT_INFO volfied_inputs[] ={ { KB_DEF_COIN1, MSG_COIN1, 0x0B0009, 0x01, BIT_ACTIVE_1 }, { KB_DEF_COIN2, MSG_COIN2, 0x0B0009, 0x02, BIT_ACTIVE_1 }, { KB_DEF_TILT, MSG_TILT, 0x0B000B, 0x01, BIT_ACTIVE_0 }, { KB_DEF_SERVICE, MSG_SERVICE, 0x0B0007, 0x80, BIT_ACTIVE_0 }, { KB_DEF_P1_START, MSG_P1_START, 0x0B0007, 0x40, BIT_ACTIVE_0 }, { KB_DEF_P1_UP, MSG_P1_UP, 0x0B000B, 0x04, BIT_ACTIVE_0 }, { KB_DEF_P1_DOWN, MSG_P1_DOWN, 0x0B000B, 0x08, BIT_ACTIVE_0 }, { KB_DEF_P1_LEFT, MSG_P1_LEFT, 0x0B000B, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P1_RIGHT, MSG_P1_RIGHT, 0x0B000B, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P1_B1, MSG_P1_B1, 0x0B000B, 0x40, BIT_ACTIVE_0 }, { KB_DEF_P2_START, MSG_P2_START, 0x0B0007, 0x20, BIT_ACTIVE_0 }, { KB_DEF_P2_UP, MSG_P2_UP, 0x0B000D, 0x02, BIT_ACTIVE_0 }, { KB_DEF_P2_DOWN, MSG_P2_DOWN, 0x0B000D, 0x04, BIT_ACTIVE_0 }, { KB_DEF_P2_LEFT, MSG_P2_LEFT, 0x0B000D, 0x08, BIT_ACTIVE_0 }, { KB_DEF_P2_RIGHT, MSG_P2_RIGHT, 0x0B000D, 0x10, BIT_ACTIVE_0 }, { KB_DEF_P2_B1, MSG_P2_B1, 0x0B000D, 0x20, BIT_ACTIVE_0 }, { 0, NULL, 0, 0, 0 },};static struct DSW_DATA dsw_data_volfied_0[] ={ { "Game Style", 0x01, 0x02 }, { MSG_NORMAL, 0x01, 0x00 }, { "Upright", 0x00, 0x00 }, { MSG_SCREEN, 0x02, 0x02 }, { MSG_NORMAL, 0x02, 0x00 }, { MSG_INVERT, 0x00, 0x00 }, { MSG_TEST_MODE, 0x04, 0x02 }, { MSG_OFF, 0x04, 0x00 }, { MSG_ON, 0x00, 0x00 }, { MSG_DEMO_SOUND, 0x08, 0x02 }, { MSG_ON, 0x08, 0x00 }, { MSG_OFF, 0x00, 0x00 }, { MSG_COIN1, 0x30, 0x04 }, { MSG_1COIN_1PLAY, 0x30, 0x00 }, { MSG_2COIN_1PLAY, 0x20, 0x00 }, { MSG_3COIN_1PLAY, 0x10, 0x00 }, { MSG_4COIN_1PLAY, 0x00, 0x00 }, { MSG_COIN2, 0xC0, 0x04 }, { MSG_1COIN_2PLAY, 0xC0, 0x00 }, { MSG_1COIN_3PLAY, 0x80, 0x00 }, { MSG_1COIN_4PLAY, 0x40, 0x00 }, { MSG_1COIN_6PLAY, 0x00, 0x00 }, { NULL, 0, 0, },};static struct DSW_DATA dsw_data_volfied_1[] ={ { MSG_DIFFICULTY, 0x03, 0x04 }, { MSG_NORMAL, 0x03, 0x00 }, { MSG_EASY, 0x02, 0x00 }, { MSG_HARD, 0x01, 0x00 }, { MSG_HARDEST, 0x00, 0x00 }, { "Extra Life", 0x0C, 0x04 }, { "20k 40k", 0x0C, 0x00 }, { "50k 150k", 0x08, 0x00 }, { "70k 280k", 0x04, 0x00 }, { "100k 500k", 0x00, 0x00 }, { "Lives", 0x30, 0x04 }, { "3", 0x30, 0x00 }, { "4", 0x20, 0x00 }, { "5", 0x10, 0x00 }, { "6", 0x00, 0x00 }, { "Language", 0x80, 0x02 }, { "Japanese", 0x80, 0x00 }, { "English", 0x00, 0x00 }, { NULL, 0, 0, },};static struct DSW_INFO volfied_dsw[] ={ { 0x08A001, 0xFF, dsw_data_volfied_0 }, { 0x08A000, 0x7F, dsw_data_volfied_1 }, { 0, 0, NULL, },};static struct ROMSW_DATA romsw_data_volfied_0[] ={ { "Taito 0", 0x00 }, { "Taito 1", 0x01 }, { "Taito 2", 0x02 }, { "Taito 3", 0x03 }, { "Taito 4", 0x04 }, { "Taito 5", 0x05 }, { "Taito 6", 0x06 }, { NULL, 0 },};static struct ROMSW_INFO volfied_romsw[] ={ { 0x03FFFF, 0x01, romsw_data_volfied_0 }, { 0, 0, NULL },};static struct VIDEO_INFO volfied_video ={ DrawVolfied, 320, 240, 32, VIDEO_ROTATE_NORMAL,};struct GAME_MAIN game_volfied ={ volfied_dirs, volfied_roms, volfied_inputs, volfied_dsw, volfied_romsw, LoadVolfied, ClearVolfied, &volfied_video, ExecuteVolfiedFrame, "volfied", "Volfied", NULL, COMPANY_ID_TAITO, "C04", 1989, taito_ym2203_sound, GAME_SHOOT | GAME_NOT_WORKING,};static void BadWriteByte(UINT32 addr, UINT8 data){#ifdef RAINE_DEBUG if(addr!=0x700001) print_debug("Wb(%06x,%02x) [%06x]\n",addr,data,s68000context.pc);#endif}//static UINT8 *GFX_BG0_SOLID;static UINT8 *CBANK[8];static int CChip_Bank=0;static int CChip_ID=0x01;static int CChipReadB(UINT32 address){ int i; i=address&0x0FFF; switch(i){ case 0x803: return(CChip_ID); break; case 0xC01: return(CChip_Bank); break; default: #ifdef RAINE_DEBUG if((i<0x07)||(i>0x0D)){ print_debug("CCRB[%02x][%03x](%02x)\n",CChip_Bank,i,CBANK[CChip_Bank][i]); print_ingame(60,"CCRB[%02x][%03x](%02x)\n",CChip_Bank,i,CBANK[CChip_Bank][i]); } #endif return(CBANK[CChip_Bank][i]); break; }}static int CChipReadW(UINT32 address){ return(CChipReadB(address+1));}static void CChipWriteB(UINT32 address, int data){ int i; i=address&0x0FFF; data&=0xFF; switch(i){ case 0x803: // C-CHIP ID break; case 0xC01: // C-CHIP BANK SELECT CChip_Bank=data&7; break; default: //CBANK[CChip_Bank][i]=data; break; }}static void CChipWriteW(UINT32 address, int data){ CChipWriteB(address+1,data&0xFF);}static UINT16 pal_test[16]={ 0x0101, 0x6210, 0x5AD6, 0x5294, 0x4A52, 0x4210, 0x39CE, 0x318C, 0x2948, 0x69CC, 0x71C6, 0x3000, 0x4000, 0x5000, 0x6000, 0x7800,};void LoadVolfied(void){ int ta,tb; RAMSize=0xA0000+0x10000+0x4000; if(!(ROM=AllocateMem(0xC0000))) return; if(!(RAM=AllocateMem(RAMSize))) return; if(!(GFX=AllocateMem(0x180000))) return; CBANK[0]=RAM+0xA0000+0x10000+0x0000; // C-CHIP BANKS ($F00000-$F00FFF) CBANK[1]=RAM+0xA0000+0x10000+0x0800; CBANK[2]=RAM+0xA0000+0x10000+0x1000; CBANK[3]=RAM+0xA0000+0x10000+0x1800; CBANK[4]=RAM+0xA0000+0x10000+0x2000; CBANK[5]=RAM+0xA0000+0x10000+0x2800; CBANK[6]=RAM+0xA0000+0x10000+0x3000; CBANK[7]=RAM+0xA0000+0x10000+0x3800; for(ta=0;ta<0x4000;ta+=2){ WriteWord(&RAM[0xA0000+0x10000+ta],pal_test[(ta>>1)&0x0F]); } if(!load_rom("c04-16.bin",&ROM[0x00000],0x20000)) return; // 16x16 SPRITES if(!load_rom("c04-15.bin",&ROM[0x20000],0x20000)) return; if(!load_rom("c04-10.bin",&ROM[0x40000],0x10000)) return; // 16x16 SPRITES if(!load_rom("c04-10.bin",&ROM[0x50000],0x10000)) return; // 16x16 SPRITES tb=0; for(ta=0;ta<0x60000;ta++,tb+=4){ GFX[tb+0]=ROM[ta]>>4; GFX[tb+1]=ROM[ta]&15; } if(!load_rom("c04-18.bin",&ROM[0x00000],0x20000)) return; // 16x16 SPRITES if(!load_rom("c04-17.bin",&ROM[0x20000],0x20000)) return; if(!load_rom("c04-09.bin",&ROM[0x40000],0x10000)) return; // 16x16 SPRITES if(!load_rom("c04-09.bin",&ROM[0x50000],0x10000)) return; // 16x16 SPRITES
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -