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

📄 volfied.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************//*                                                                            *//*                    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 + -