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

📄 nmk.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 5 页
字号:
/******************************************************************************//*                                                                            *//*                  NMK - NIHON MAICON KAIHATSU  UPL - ???                    *//*   CPU: M68000                                                              *//* SOUND: M6295x2                                                             *//* VIDEO: VARIES [1/2 BG0; 1 OBJECT; 1 FG0]                                   *//*                                                                            *//******************************************************************************/#include "gameinc.h"#include "nmk.h"#include "taitosnd.h"#include "decode.h"#include "3812intf.h"#include "debug.h"#include "sasound.h"		// sample support routines#include "mame/handlers.h"/*About: NMK is an abbreviation of "Nihon Maicon Kaihatsu". "Nihon" means "Japan", "Maicon" is an abbrev. of "Micro Computer", with a Japanese accent, "Kaihatsu" means "Development". However, NMK no longer develop videogames.Supported romsets:0 - Bomb Jack Twin         - NMK [NMK]  9th Mar 1992 / Youichi Koyama1 - Hacha Mecha Fighter    - NMK [NMK] 19th Sep 1991 / Youichi Koyama2 - Bio Ship Paladin       - NMK [UPL]          1990 / Itsam Matarca3 - Mustang                - NMK [UPL] 25th May 1990 / Youichi Koyama4 - Task Force Harrier     - NMK [SAM]          1989 / ?5 - Thunder Dragon         - NMK [TCM]  4th Jun 1991 / Youichi Koyama6 - Thunder Dragon Bootleg - NMK [TCM]  4th Jun 1991 / Youichi Koyama7 - Strahl                 - NMK [UPL]          1992 / ?8 - Macross 2              - NMK [BAN] 11th Jun 1992 / Youichi KoyamaSaboten Bombers - NMK - (c) 1992 <-- Undumped??	Saboten Bombers, Hacha Meche Fighter and Thunder Dragon all use the same	Dipswitch settings.  Raine reads and uses these in reverse order.	Bit1 of DSW1 (bit8 in the manual) is unused _most_ of the time. - BaTTodo:Hacha Mecha Fighter is protected, has no soundBio Ship Paladin is protected, has no soundMustang is protected/broken ingame, has no soundTask Force Harrier is protected, has no soundThunder Dragon and bootleg have no soundStrahl has no sound, possible eeprom in test modeAtomic Robo Kid     UPL-88013Omega Fighter       UPL-89016Task Force Harrier  UPL-89050USAAF Mustang       UPL-90058Bio Ship Paladin    UPL-90062*/#define ROM_COUNT       9static int romset;static struct DIR_INFO bio_ship_paladin_dirs[] ={   { "bio_ship_paladin", },   { "bioship", },   { "bshippal", },   { NULL, },};static struct ROM_INFO bio_ship_paladin_roms[] ={   {            "1", 0x00020000, 0x820ef303, 0, 0, 0, },   {            "2", 0x00020000, 0xacf56afb, 0, 0, 0, },   {            "6", 0x00010000, 0x5f39a980, 0, 0, 0, },   {            "7", 0x00010000, 0x2f3f5a10, 0, 0, 0, },   {            "8", 0x00010000, 0x75a46fea, 0, 0, 0, },   {            "9", 0x00010000, 0xd91448ee, 0, 0, 0, },   {     "sbs-g.01", 0x00080000, 0x21302e78, 0, 0, 0, },   {     "sbs-g.02", 0x00080000, 0xf31eb668, 0, 0, 0, },   {     "sbs-g.03", 0x00080000, 0x60e00d7b, 0, 0, 0, },   {     "sbs-g.04", 0x00080000, 0x7c74cc4e, 0, 0, 0, },   {     "sbs-g.05", 0x00080000, 0xf0a782e3, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};static struct INPUT_INFO nmk_inputs[] ={   { KB_DEF_COIN1,        MSG_COIN1,               0x010000, 0x01, BIT_ACTIVE_0 },   { KB_DEF_COIN2,        MSG_COIN2,               0x010000, 0x02, BIT_ACTIVE_0 },   { KB_DEF_TILT,         MSG_TILT,                0x010000, 0x20, BIT_ACTIVE_0 },   { KB_DEF_SERVICE,      MSG_SERVICE,             0x010000, 0x04, BIT_ACTIVE_0 },   { KB_DEF_P1_START,     MSG_P1_START,            0x010000, 0x08, BIT_ACTIVE_0 },   { KB_DEF_P1_UP,        MSG_P1_UP,               0x010002, 0x08, BIT_ACTIVE_0 },   { KB_DEF_P1_DOWN,      MSG_P1_DOWN,             0x010002, 0x04, BIT_ACTIVE_0 },   { KB_DEF_P1_LEFT,      MSG_P1_LEFT,             0x010002, 0x02, BIT_ACTIVE_0 },   { KB_DEF_P1_RIGHT,     MSG_P1_RIGHT,            0x010002, 0x01, BIT_ACTIVE_0 },   { KB_DEF_P1_B1,        MSG_P1_B1,               0x010002, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P1_B2,        MSG_P1_B2,               0x010002, 0x20, BIT_ACTIVE_0 },   { KB_DEF_P1_B3,        MSG_P1_B3,               0x010002, 0x40, BIT_ACTIVE_1 },   { KB_DEF_P1_B4,        MSG_P1_B4,               0x010002, 0x80, BIT_ACTIVE_1 },   { KB_DEF_P2_START,     MSG_P2_START,            0x010000, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P2_UP,        MSG_P2_UP,               0x010003, 0x08, BIT_ACTIVE_0 },   { KB_DEF_P2_DOWN,      MSG_P2_DOWN,             0x010003, 0x04, BIT_ACTIVE_0 },   { KB_DEF_P2_LEFT,      MSG_P2_LEFT,             0x010003, 0x02, BIT_ACTIVE_0 },   { KB_DEF_P2_RIGHT,     MSG_P2_RIGHT,            0x010003, 0x01, BIT_ACTIVE_0 },   { KB_DEF_P2_B1,        MSG_P2_B1,               0x010003, 0x10, BIT_ACTIVE_0 },   { KB_DEF_P2_B2,        MSG_P2_B2,               0x010003, 0x20, BIT_ACTIVE_0 },   { KB_DEF_P2_B3,        MSG_P2_B3,               0x010003, 0x40, BIT_ACTIVE_1 },   { KB_DEF_P2_B4,        MSG_P2_B4,               0x010003, 0x80, BIT_ACTIVE_1 },   { 0,                   NULL,                    0,        0,    0            },};static struct DSW_DATA dsw_data_bio_ship_paladin_0[] ={   { MSG_SCREEN,              0x01, 0x02 },   { MSG_NORMAL,              0x01, 0x00 },   { MSG_INVERT,              0x00, 0x00 },   { MSG_DIFFICULTY,          0x06, 0x04 },   { MSG_NORMAL,              0x06, 0x00 },   { MSG_HARD,                0x02, 0x00 },   { MSG_HARDEST,             0x04, 0x00 },   { MSG_EASY,                0x00, 0x00 },   { MSG_TEST_MODE,           0x08, 0x02 },   { MSG_OFF,                 0x08, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_DEMO_SOUND,          0x20, 0x02 },   { MSG_ON,                  0x20, 0x00 },   { MSG_OFF,                 0x00, 0x00 },   { "Lives",                 0xC0, 0x04 },   { "3",                     0xC0, 0x00 },   { "5",                     0x40, 0x00 },   { "4",                     0x80, 0x00 },   { "2",                     0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_DATA dsw_data_bio_ship_paladin_1[] ={   { MSG_COIN2,               0x1C, 0x08 },   { MSG_1COIN_1PLAY,         0x1C, 0x00 },   { MSG_1COIN_2PLAY,         0x0C, 0x00 },   { MSG_1COIN_3PLAY,         0x14, 0x00 },   { MSG_1COIN_4PLAY,         0x04, 0x00 },   { MSG_2COIN_1PLAY,         0x18, 0x00 },   { MSG_3COIN_1PLAY,         0x08, 0x00 },   { MSG_4COIN_1PLAY,         0x10, 0x00 },   { MSG_5COIN_1PLAY,         0x00, 0x00 },   { MSG_COIN1,               0xE0, 0x08 },   { MSG_1COIN_1PLAY,         0xE0, 0x00 },   { MSG_1COIN_2PLAY,         0x60, 0x00 },   { MSG_1COIN_3PLAY,         0xA0, 0x00 },   { MSG_1COIN_4PLAY,         0x20, 0x00 },   { MSG_2COIN_1PLAY,         0xC0, 0x00 },   { MSG_3COIN_1PLAY,         0x40, 0x00 },   { MSG_4COIN_1PLAY,         0x80, 0x00 },   { MSG_5COIN_1PLAY,         0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_INFO bio_ship_paladin_dsw[] ={   { 0x010008, 0xFF, dsw_data_bio_ship_paladin_0 },   { 0x01000A, 0xFF, dsw_data_bio_ship_paladin_1 },   { 0,        0,    NULL,      },};static struct VIDEO_INFO nmk_video ={   DrawNMK,   256,   224,   32,   VIDEO_ROTATE_NORMAL |   VIDEO_ROTATABLE,};static struct OKIM6295interface m6295_interface ={   2,					// 2 chips   { 22050,     22050 },				// rate   { 0,     0 },		// rom list   { 100,100 }, // unused volumes};static struct SOUND_INFO bomb_jack_twin_sound[] ={   { SOUND_M6295,   &m6295_interface,     },   { 0,             NULL,                 },};struct GAME_MAIN game_bio_ship_paladin ={   bio_ship_paladin_dirs,   bio_ship_paladin_roms,   nmk_inputs,   bio_ship_paladin_dsw,   NULL,   LoadBattleShipP,   ClearBattleShipP,   &nmk_video,   ExecuteNMKFrame,   "bioship",   "Bio Ship Paladin",   "塅拡悺娡僑儌儔",   COMPANY_ID_UPL,   "UPL-90062",   1990,   NULL, //bomb_jack_twin_sound,   GAME_SHOOT,};static struct DIR_INFO bomb_jack_twin_dirs[] ={   { "bomb_jack_twin", },   { "bjtwin", },   { "bjt", },   { NULL, },};static struct ROM_INFO bomb_jack_twin_roms[] ={   {      "bjt.100", 0x00100000, 0xbb06245d, 0, 0, 0, },   {      "bjt.127", 0x00100000, 0x8da67808, 0, 0, 0, },   {      "bjt.130", 0x00100000, 0x372d46dd, 0, 0, 0, },   {       "bjt.32", 0x00100000, 0x8a4f26d0, 0, 0, 0, },   {       "bjt.35", 0x00010000, 0xaa13df7c, 0, 0, 0, },   {       "bjt.76", 0x00040000, 0x7cd4e72a, 0, 0, 0, },   {       "bjt.77", 0x00040000, 0x7830a465, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};struct DSW_DATA dsw_data_bomb_jack_twin_0[] ={   { MSG_SCREEN,              0x01, 0x02 },   { MSG_NORMAL,              0x01, 0x00 },   { MSG_INVERT,              0x00, 0x00 },   { "Start Level",           0x0E, 0x08 },   { "Japan",                 0x0E, 0x00 },   { "Nevada",                0x0C, 0x00 },   { "England",               0x0A, 0x00 },   { "Germany",               0x08, 0x00 },   { "Korea",                 0x06, 0x00 },   { "Thailand",              0x04, 0x00 },   { "Hong Kong",             0x02, 0x00 },   { "China",                 0x00, 0x00 },   { MSG_DIFFICULTY,          0x30, 0x04 },   { MSG_NORMAL,              0x30, 0x00 },   { MSG_EASY,                0x20, 0x00 },   { MSG_HARD,                0x10, 0x00 },   { MSG_HARDEST,             0x00, 0x00 },   { "Lives",                 0xC0, 0x04 },   { "3",                     0xC0, 0x00 },   { "4",                     0x80, 0x00 },   { "2",                     0x40, 0x00 },   { "1",                     0x00, 0x00 },   { NULL,                    0,    0,   },};struct DSW_DATA dsw_data_bomb_jack_twin_1[] ={   { MSG_DEMO_SOUND,          0x02, 0x02 },   { MSG_OFF,                 0x02, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_COIN2,               0x1C, 0x08 },   { MSG_1COIN_1PLAY,         0x1C, 0x00 },   { MSG_1COIN_2PLAY,         0x0C, 0x00 },   { MSG_1COIN_3PLAY,         0x14, 0x00 },   { MSG_1COIN_4PLAY,         0x04, 0x00 },   { MSG_2COIN_1PLAY,         0x18, 0x00 },   { MSG_3COIN_1PLAY,         0x08, 0x00 },   { MSG_4COIN_1PLAY,         0x10, 0x00 },   { MSG_FREE_PLAY,              0x00, 0x00 },   { MSG_COIN1,               0xE0, 0x08 },   { MSG_1COIN_1PLAY,         0xE0, 0x00 },   { MSG_1COIN_2PLAY,         0x60, 0x00 },   { MSG_1COIN_3PLAY,         0xA0, 0x00 },   { MSG_1COIN_4PLAY,         0x20, 0x00 },   { MSG_2COIN_1PLAY,         0xC0, 0x00 },   { MSG_3COIN_1PLAY,         0x40, 0x00 },   { MSG_4COIN_1PLAY,         0x80, 0x00 },   { MSG_FREE_PLAY,              0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_INFO bomb_jack_twin_dsw[] ={   { 0x010008, 0xFF, dsw_data_bomb_jack_twin_0 },   { 0x01000A, 0xFF, dsw_data_bomb_jack_twin_1 },   { 0,        0,    NULL,      },};static struct VIDEO_INFO bomb_jack_twin_video ={   DrawBombJackTwin,   384,   224,   32,   VIDEO_ROTATE_270 |   VIDEO_ROTATABLE,};struct GAME_MAIN game_bomb_jack_twin ={   bomb_jack_twin_dirs,   bomb_jack_twin_roms,   nmk_inputs,   bomb_jack_twin_dsw,   NULL,   LoadBombJackTwin,   ClearBombJackTwin,   &bomb_jack_twin_video,   ExecuteNMKFrame,   "bjtwin",   "Bomb Jack Twin",   "儃儞僕儍僢僋僣僀儞",   COMPANY_ID_NMK,   NULL,   1993,   bomb_jack_twin_sound,   GAME_PLATFORM,};static struct DIR_INFO saboten_bombers_dirs[] ={   { "saboten_bombers", },   { "sabotenb", },   { NULL, },};static struct ROM_INFO saboten_bombers_roms[] ={   {    "ic100.sb5", 0x00200000, 0xb20f166e, 0, 0, 0, },   {     "ic27.sb7", 0x00100000, 0x43e33a7e, 0, 0, 0, },   {     "ic30.sb6", 0x00100000, 0x288407af, 0, 0, 0, },   {     "ic32.sb4", 0x00200000, 0x24c62205, 0, 0, 0, },   {     "ic35.sb3", 0x00010000, 0xeb7bc99d, 0, 0, 0, },   {     "ic75.sb2", 0x00040000, 0x367e87b7, 0, 0, 0, },   {     "ic76.sb1", 0x00040000, 0xb2b0b2cf, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};struct DSW_DATA dsw_data_saboten_bombers_0[] ={   { MSG_SCREEN,              0x01, 0x02 },   { MSG_NORMAL,              0x01, 0x00 },   { MSG_INVERT,              0x00, 0x00 },   { "Language",              0x02, 0x02 },   { "Japanese",              0x02, 0x00 },   { "English",               0x00, 0x00 },   { MSG_DIFFICULTY,          0x0c, 0x04 },   { MSG_NORMAL,              0x0c, 0x00 },   { MSG_EASY,                0x08, 0x00 },   { MSG_HARD,                0x04, 0x00 },   { MSG_HARDEST,             0x00, 0x00 },   { "Lives",                 0xC0, 0x04 },   { "3",                     0xC0, 0x00 },   { "2",                     0x80, 0x00 },   { "4",                     0x40, 0x00 },   { "1",                     0x00, 0x00 },   { NULL,                    0,    0,   },};struct DSW_DATA dsw_data_saboten_bombers_1[] ={   { MSG_DEMO_SOUND,          0x02, 0x02 },   { MSG_OFF,                 0x02, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_COIN1,               0xE0, 0x08 }, // Looks ugly and out of order, but it's correct!   { MSG_1COIN_1PLAY,         0xE0, 0x00 },   { MSG_1COIN_2PLAY,         0xC0, 0x00 },   { MSG_1COIN_3PLAY,         0x40, 0x00 },   { MSG_1COIN_4PLAY,         0x80, 0x00 },   { MSG_2COIN_1PLAY,         0x60, 0x00 },   { MSG_3COIN_1PLAY,         0xA0, 0x00 },   { MSG_4COIN_1PLAY,         0x20, 0x00 },   { MSG_FREE_PLAY,              0x00, 0x00 },   { MSG_COIN2,               0x1C, 0x08 },   { MSG_1COIN_1PLAY,         0x1C, 0x00 },   { MSG_1COIN_2PLAY,         0x18, 0x00 },   { MSG_1COIN_3PLAY,         0x08, 0x00 },   { MSG_1COIN_4PLAY,         0x10, 0x00 },   { MSG_2COIN_1PLAY,         0x0c, 0x00 },   { MSG_3COIN_1PLAY,         0x14, 0x00 },   { MSG_4COIN_1PLAY,         0x04, 0x00 },   { MSG_FREE_PLAY,              0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_INFO saboten_bombers_dsw[] ={   { 0x010008, 0xFF, dsw_data_saboten_bombers_0 },   { 0x01000A, 0xFF, dsw_data_saboten_bombers_1 },   { 0,        0,    NULL,      },};static struct VIDEO_INFO saboten_bombers_video ={   DrawBombJackTwin,   384,   224,   32,   VIDEO_ROTATE_NORMAL |   VIDEO_ROTATABLE,};struct GAME_MAIN game_saboten_bombers ={   saboten_bombers_dirs,   saboten_bombers_roms,   nmk_inputs,   saboten_bombers_dsw,   NULL,   LoadSabotenBombers,   ClearBombJackTwin,   &saboten_bombers_video,   ExecuteNMKFrame,   "sabotenb",   "Saboten Bombers",   "",

⌨️ 快捷键说明

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