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

📄 upl.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 5 页
字号:
/******************************************************************************//*                                                                            *//*                    UPL Z80B+Z80B+YM2203+YM2203 GAMES                       *//*                                                                            *//******************************************************************************/#include "gameinc.h"#include "upl.h"#include "taitosnd.h"#include "2203intf.h"#include "decode.h"#ifdef RAINE_DEBUG#include "debug.h"#endif#include "sasound.h"		// sample support routines#include "savegame.h"/****************   MUTANT NIGHT ****************/static struct DIR_INFO mutant_night_dirs[] ={   { "mutant_night", },   { "mnight", },   { NULL, },};static struct ROM_INFO mutant_night_roms[] ={   { "mn13-b23.bin", 0x00010000, 0x65714070, 0, 0, 0, },   { "mn11-b20.bin", 0x00010000, 0x4d37e0f4, 0, 0, 0, },   { "mn12-b22.bin", 0x00010000, 0xb22cbbd3, 0, 0, 0, },   { "mn10-b10.bin", 0x00008000, 0x37b8221f, 0, 0, 0, },   {   "mn1-j7.bin", 0x00010000, 0xa0782a31, 0, 0, 0, },   {  "mn2-j12.bin", 0x00008000, 0x9c391d1b, 0, 0, 0, },   {  "mn3-j14.bin", 0x00008000, 0xdf6a4f7a, 0, 0, 0, },   {  "mn4-j16.bin", 0x00008000, 0xc5e42bb4, 0, 0, 0, },   {  "mn5-j17.bin", 0x00008000, 0x2a73f88e, 0, 0, 0, },   {  "mn6-j19.bin", 0x00008000, 0x56678d14, 0, 0, 0, },   {  "mn7-e11.bin", 0x00010000, 0x4883059c, 0, 0, 0, },   {  "mn8-e12.bin", 0x00010000, 0x02b91445, 0, 0, 0, },   {  "mn9-e14.bin", 0x00010000, 0x9f08d160, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};static struct INPUT_INFO mutant_night_inputs[] ={   { KB_DEF_COIN1,        MSG_COIN1,               0x00F800, 0x40, BIT_ACTIVE_0 },   { KB_DEF_COIN2,        MSG_COIN2,               0x00F800, 0x80, BIT_ACTIVE_0 },   { KB_DEF_SERVICE,      MSG_SERVICE,             0x00F800, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P1_START,     MSG_P1_START,            0x00F800, 0x01, BIT_ACTIVE_0 },   { KB_DEF_P1_UP,        MSG_P1_UP,               0x00F801, 0x08, BIT_ACTIVE_0 },   { KB_DEF_P1_DOWN,      MSG_P1_DOWN,             0x00F801, 0x04, BIT_ACTIVE_0 },   { KB_DEF_P1_LEFT,      MSG_P1_LEFT,             0x00F801, 0x02, BIT_ACTIVE_0 },   { KB_DEF_P1_RIGHT,     MSG_P1_RIGHT,            0x00F801, 0x01, BIT_ACTIVE_0 },   { KB_DEF_P1_B1,        MSG_P1_B1,               0x00F801, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P1_B2,        MSG_P1_B2,               0x00F801, 0x20, BIT_ACTIVE_0 },   { KB_DEF_P2_START,     MSG_P2_START,            0x00F800, 0x02, BIT_ACTIVE_0 },   { KB_DEF_P2_UP,        MSG_P2_UP,               0x00F802, 0x08, BIT_ACTIVE_0 },   { KB_DEF_P2_DOWN,      MSG_P2_DOWN,             0x00F802, 0x04, BIT_ACTIVE_0 },   { KB_DEF_P2_LEFT,      MSG_P2_LEFT,             0x00F802, 0x02, BIT_ACTIVE_0 },   { KB_DEF_P2_RIGHT,     MSG_P2_RIGHT,            0x00F802, 0x01, BIT_ACTIVE_0 },   { KB_DEF_P2_B1,        MSG_P2_B1,               0x00F802, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P2_B2,        MSG_P2_B2,               0x00F802, 0x20, BIT_ACTIVE_0 },   { 0,                   NULL,                    0,        0,    0            },};static struct DSW_DATA dsw_data_mutant_night_0[] ={   { MSG_DSWA_BIT1,           0x01, 0x02 },   { MSG_OFF,                 0x01, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_EXTRA_LIFE,          0x02, 0x02 },   { "30k and every 50k",     0x02, 0x00 },   { "50k and every 80k",     0x00, 0x00 },   { MSG_DIFFICULTY,          0x04, 0x00 },   { MSG_NORMAL,              0x04, 0x00 },   { MSG_HARD,                0x00, 0x00 },   { MSG_FREE_PLAY,           0x08, 0x02 },   { MSG_OFF,                 0x08, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_CABINET,             0x10, 0x02 },   { MSG_TABLE,               0x10, 0x00 },   { MSG_UPRIGHT,             0x00, 0x00 },   { MSG_DEMO_SOUND,          0x20, 0x02 },   { MSG_ON,                  0x00, 0x00 },   { MSG_OFF,                 0x20, 0x00 },   { MSG_LIVES,               0xC0, 0x04 },   { "3",                     0xC0, 0x00 },   { "2",                     0x80, 0x00 },   { "4",                     0x40, 0x00 },   { "5",                     0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_DATA dsw_data_mutant_night_1[] ={   { MSG_TEST_MODE,           0x01, 0x02 },   { MSG_OFF,                 0x01, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT2,           0x02, 0x02 },   { MSG_OFF,                 0x02, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT3,           0x04, 0x02 },   { MSG_OFF,                 0x04, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT4,           0x08, 0x02 },   { MSG_OFF,                 0x08, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT5,           0x10, 0x02 },   { MSG_OFF,                 0x10, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_COINAGE,             0xE0, 0x08 },   { MSG_1COIN_1PLAY,         0xE0, 0x00 },   { MSG_1COIN_2PLAY,         0xC0, 0x00 },   { MSG_1COIN_3PLAY,         0xA0, 0x00 },   { MSG_1COIN_4PLAY,         0x80, 0x00 },   { MSG_2COIN_1PLAY,         0x60, 0x00 },   { MSG_3COIN_1PLAY,         0x40, 0x00 },   { MSG_4COIN_1PLAY,         0x40, 0x00 },   { MSG_5COIN_1PLAY,         0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_INFO mutant_night_dsw[] ={   { 0x00F803, 0xFF, dsw_data_mutant_night_0 },   { 0x00F804, 0xFF, dsw_data_mutant_night_1 },   { 0,        0,    NULL,      },};static struct VIDEO_INFO upl_video ={   DrawUPL,   256,   192,   32,   VIDEO_ROTATE_NORMAL |   VIDEO_ROTATABLE,};static struct VIDEO_INFO upl_r270_video ={   draw_omega_fighter,   256,   192,   32,   VIDEO_ROTATE_270 |   VIDEO_ROTATABLE,};static struct YM2203interface ym2203_interface ={   2,				// 2 Chips   2500000,			// 2.5MHz?   { 0x00ff20c0, 0x00ff20c0 },   { 0, 0 },   { 0, 0 },   { 0, 0 },   { 0, 0 },   { NULL, NULL }};static struct SOUND_INFO upl_sound[] ={   { SOUND_YM2203,  &ym2203_interface,    },   { 0,             NULL,                 },};struct GAME_MAIN game_mutant_night ={   mutant_night_dirs,   mutant_night_roms,   mutant_night_inputs,   mutant_night_dsw,   NULL,   LoadMutantNight,   ClearMutantNight,   &upl_video,   ExecuteUPLFrame,   "mnight",   "Mutant Night",   "儈儏乕僞儞僩僫僀僩",   COMPANY_ID_UPL,   NULL,   1987,   upl_sound,   GAME_SHOOT | GAME_PARTIALLY_WORKING,};/************   ARK AREA ************/static struct DIR_INFO ark_area_dirs[] ={   { "ark_area", },   { "arkarea", },   { NULL, },};static struct ROM_INFO ark_area_roms[] ={   {  "arkarea.001", 0x00010000, 0x09d11ab7, 0, 0, 0, },   {  "arkarea.002", 0x00010000, 0x051d3482, 0, 0, 0, },   {  "arkarea.003", 0x00010000, 0x6f45a308, 0, 0, 0, },   {  "arkarea.004", 0x00008000, 0x69e36af2, 0, 0, 0, },   {  "arkarea.005", 0x00010000, 0x9886004d, 0, 0, 0, },   {  "arkarea.006", 0x00010000, 0x2c0567d6, 0, 0, 0, },   {  "arkarea.007", 0x00010000, 0xd5684a27, 0, 0, 0, },   {  "arkarea.008", 0x00008000, 0x1ce1b5b9, 0, 0, 0, },   {  "arkarea.009", 0x00008000, 0xdb1c81d1, 0, 0, 0, },   {  "arkarea.010", 0x00008000, 0x5a460dae, 0, 0, 0, },   {  "arkarea.011", 0x00008000, 0x63f022c9, 0, 0, 0, },   {  "arkarea.012", 0x00008000, 0x3c4c65d5, 0, 0, 0, },   {  "arkarea.013", 0x00008000, 0x2d409d58, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};static struct DSW_DATA dsw_data_ark_area_0[] ={   { MSG_COINAGE,             0x03, 0x04 },   { MSG_1COIN_1PLAY,         0x03, 0x00 },   { MSG_1COIN_2PLAY,         0x02, 0x00 },   { MSG_2COIN_1PLAY,         0x01, 0x00 },   { MSG_3COIN_1PLAY,         0x00, 0x00 },   { MSG_DSWA_BIT3,           0x04, 0x02 },   { MSG_OFF,                 0x04, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWA_BIT4,           0x08, 0x02 },   { MSG_OFF,                 0x08, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DEMO_SOUND,          0x10, 0x02 },   { MSG_ON,                  0x00, 0x00 },   { MSG_OFF,                 0x10, 0x00 },   { MSG_DSWA_BIT6,           0x20, 0x02 },   { MSG_OFF,                 0x20, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_EXTRA_LIFE,          0x40, 0x02 },   { "Every 50k",             0x40, 0x00 },   { "Every 100k",            0x00, 0x00 },   { MSG_LIVES,               0x80, 0x02 },   { "3",                     0x80, 0x00 },   { "4",                     0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_DATA dsw_data_ark_area_1[] ={   { MSG_TEST_MODE,           0x01, 0x02 },   { MSG_OFF,                 0x01, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT2,           0x02, 0x02 },   { MSG_OFF,                 0x02, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT3,           0x04, 0x02 },   { MSG_OFF,                 0x04, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT4,           0x08, 0x02 },   { MSG_OFF,                 0x08, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT5,           0x10, 0x02 },   { MSG_OFF,                 0x10, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT6,           0x20, 0x02 },   { MSG_OFF,                 0x20, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT7,           0x40, 0x02 },   { MSG_OFF,                 0x40, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DSWB_BIT8,           0x80, 0x02 },   { MSG_OFF,                 0x80, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_INFO ark_area_dsw[] ={   { 0x00F803, 0xFF, dsw_data_ark_area_0 },   { 0x00F804, 0xFF, dsw_data_ark_area_1 },   { 0,        0,    NULL,      },};struct GAME_MAIN game_ark_area ={   ark_area_dirs,   ark_area_roms,   mutant_night_inputs,   ark_area_dsw,   NULL,   load_ark_area,   clear_ark_area,   &upl_video,   ExecuteUPLFrame,   "arkarea",   "Ark Area",   NULL,   COMPANY_ID_UPL,   NULL,   1987,   upl_sound,   GAME_SHOOT,};/***************   NINJA KID 2 ***************/static struct DIR_INFO ninja_kid_2_dirs[] ={   { "ninja_kid_2", },   { "ninjakd2", },   { "ninjak2a", },   { NULL, },};static struct ROM_INFO ninja_kid_2_roms[] ={   {   "nk2_01.rom", 0x00008000, 0x3cdbb906, 0, 0, 0, },   {   "nk2_02.rom", 0x00008000, 0xb5ce9a1a, 0, 0, 0, },   {   "nk2_03.rom", 0x00008000, 0xad275654, 0, 0, 0, },   {   "nk2_04.rom", 0x00008000, 0xe7692a77, 0, 0, 0, },   {   "nk2_05.rom", 0x00008000, 0x5dac9426, 0, 0, 0, },   {   "nk2_06.rom", 0x00010000, 0xd3a18a79, 0, 0, 0, },   {   "nk2_07.rom", 0x00010000, 0x0be5cd13, 0, 0, 0, },   {   "nk2_08.rom", 0x00010000, 0x1b79c50a, 0, 0, 0, },   {   "nk2_09.rom", 0x00010000, 0xc1d2d170, 0, 0, 0, },   {   "nk2_10.rom", 0x00010000, 0xc913c4ab, 0, 0, 0, },   {   "nk2_11.rom", 0x00010000, 0x41a714b3, 0, 0, 0, },   {   "nk2_12.rom", 0x00008000, 0xdb5657a9, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};static struct INPUT_INFO ninja_kid_2_inputs[] ={   { KB_DEF_COIN1,        MSG_COIN1,               0x00C000, 0x40, BIT_ACTIVE_0 },   { KB_DEF_COIN2,        MSG_COIN2,               0x00C000, 0x80, BIT_ACTIVE_0 },   { KB_DEF_SERVICE,      MSG_SERVICE,             0x00C000, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P1_START,     MSG_P1_START,            0x00C000, 0x01, BIT_ACTIVE_0 },   { KB_DEF_P1_UP,        MSG_P1_UP,               0x00C001, 0x08, BIT_ACTIVE_0 },   { KB_DEF_P1_DOWN,      MSG_P1_DOWN,             0x00C001, 0x04, BIT_ACTIVE_0 },   { KB_DEF_P1_LEFT,      MSG_P1_LEFT,             0x00C001, 0x02, BIT_ACTIVE_0 },   { KB_DEF_P1_RIGHT,     MSG_P1_RIGHT,            0x00C001, 0x01, BIT_ACTIVE_0 },   { KB_DEF_P1_B1,        MSG_P1_B1,               0x00C001, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P1_B2,        MSG_P1_B2,               0x00C001, 0x20, BIT_ACTIVE_0 },   { KB_DEF_P2_START,     MSG_P2_START,            0x00C000, 0x02, BIT_ACTIVE_0 },   { KB_DEF_P2_UP,        MSG_P2_UP,               0x00C002, 0x08, BIT_ACTIVE_0 },   { KB_DEF_P2_DOWN,      MSG_P2_DOWN,             0x00C002, 0x04, BIT_ACTIVE_0 },   { KB_DEF_P2_LEFT,      MSG_P2_LEFT,             0x00C002, 0x02, BIT_ACTIVE_0 },   { KB_DEF_P2_RIGHT,     MSG_P2_RIGHT,            0x00C002, 0x01, BIT_ACTIVE_0 },   { KB_DEF_P2_B1,        MSG_P2_B1,               0x00C002, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P2_B2,        MSG_P2_B2,               0x00C002, 0x20, BIT_ACTIVE_0 },   { 0,                   NULL,                    0,        0,    0            },};static struct DSW_DATA dsw_data_ninja_kid_2_0[] ={   { MSG_DSWA_BIT1,           0x01, 0x02 },   { MSG_OFF,                 0x01, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_EXTRA_LIFE,          0x06, 0x04 },   { "30k and 50k",           0x06, 0x00 },   { "20k and 50k",           0x04, 0x00 },   { "50k and 100k",          0x02, 0x00 },   { "None",                  0x00, 0x00 },   { MSG_CONTINUE_PLAY,       0x08, 0x02 },   { MSG_ON,                  0x08, 0x00 },   { MSG_OFF,                 0x00, 0x00 },   { MSG_DEMO_SOUND,          0x10, 0x02 },   { MSG_OFF,                 0x10, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DIFFICULTY,          0x20, 0x00 },   { MSG_NORMAL,              0x20, 0x00 },   { MSG_HARD,                0x00, 0x00 },   { MSG_LIVES,               0x40, 0x02 },   { "3",                     0x40, 0x00 },   { "4",                     0x00, 0x00 },   { "Language",              0x80, 0x02 },   { "Japanese",              0x80, 0x00 },   { "English",               0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_DATA dsw_data_ninja_kid_2_1[] ={   { MSG_TEST_MODE,           0x01, 0x02 },   { MSG_OFF,                 0x01, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_CABINET,             0x02, 0x02 },   { MSG_TABLE,               0x02, 0x00 },   { MSG_UPRIGHT,             0x00, 0x00 },   { "Credit Service",        0x04, 0x02 },   { MSG_ON,                  0x04, 0x00 },   { MSG_OFF,                 0x00, 0x00 },   { MSG_COIN2,               0x18, 0x04 },   { MSG_1COIN_1PLAY,         0x18, 0x00 },   { MSG_1COIN_2PLAY,         0x10, 0x00 },   { MSG_1COIN_3PLAY,         0x08, 0x00 },   { MSG_2COIN_1PLAY,         0x00, 0x00 },   { MSG_COIN1,               0xE0, 0x08 },   { MSG_1COIN_1PLAY,         0xE0, 0x00 },   { MSG_1COIN_2PLAY,         0xC0, 0x00 },   { MSG_1COIN_3PLAY,         0xA0, 0x00 },   { MSG_1COIN_4PLAY,         0x80, 0x00 },   { MSG_2COIN_1PLAY,         0x60, 0x00 },   { MSG_3COIN_1PLAY,         0x40, 0x00 },   { MSG_4COIN_1PLAY,         0x40, 0x00 },   { MSG_5COIN_1PLAY,         0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_INFO ninja_kid_2_dsw[] ={   { 0x00C003, 0xFF, dsw_data_ninja_kid_2_0 },   { 0x00C004, 0xFF, dsw_data_ninja_kid_2_1 },   { 0,        0,    NULL,      },

⌨️ 快捷键说明

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