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

📄 seta.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 4 页
字号:
/******************************************************************************//*                                                                            *//*                        LAME SETA GAMES (C) 19xx SETA                       *//*                                                                            *//******************************************************************************/#include "gameinc.h"#include "seta.h"#include "setax1.h"static struct DIR_INFO meta_fox_dirs[] ={   { "meta_fox", },   { "metafox", },   { NULL, },};static struct ROM_INFO meta_fox_roms[] ={   {     "p1003161", 0x00040000, 0x4fd6e6a1, 0, 0, 0, },   {     "p1004162", 0x00040000, 0xb6356c9a, 0, 0, 0, },   {     "p1006163", 0x00040000, 0x80f69c7c, 0, 0, 0, },   {     "p1007164", 0x00040000, 0xd137e1a3, 0, 0, 0, },   {     "p1008165", 0x00040000, 0x57494f2b, 0, 0, 0, },   {     "p1009166", 0x00040000, 0x8344afd2, 0, 0, 0, },   {     "up001001", 0x00010000, 0x0db7a505, 0, 0, 0, },   {     "up001002", 0x00010000, 0xce91c987, 0, 0, 0, },   {     "up001005", 0x00002000, 0x2ac5e3e3, 0, 0, 0, },   {     "up001010", 0x00080000, 0xbfbab472, 0, 0, 0, },   {     "up001011", 0x00080000, 0x26cea381, 0, 0, 0, },   {     "up001012", 0x00080000, 0xfed2c5f9, 0, 0, 0, },   {     "up001013", 0x00080000, 0xadabf9ea, 0, 0, 0, },   {     "up001014", 0x00080000, 0xfca6315e, 0, 0, 0, },   {     "up001015", 0x00080000, 0x2e20e39f, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};struct GAME_MAIN game_meta_fox ={   meta_fox_dirs,   meta_fox_roms,   NULL,   NULL,   NULL,   LoadMetaFox,   ClearMetaFox,   DrawMetaFox,   ExecuteMetaFoxFrame,   "MetaFox",   "Meta Fox",   NULL,   COMPANY_ID_SETA,};static struct DIR_INFO twin_eagle_dirs[] ={   { "twin_eagle", },   { "twineagl", },   { NULL, },};static struct ROM_INFO twin_eagle_roms[] ={   {        "ua2-1", 0x00080000, 0x5c3fe531, 0, 0, 0, },   {       "ua2-10", 0x00080000, 0x5bbe1f56, 0, 0, 0, },   {       "ua2-11", 0x00080000, 0x624e6057, 0, 0, 0, },   {       "ua2-12", 0x00080000, 0x3068ff64, 0, 0, 0, },   {        "ua2-2", 0x00002000, 0x783ca84e, 0, 0, 0, },   {        "ua2-3", 0x00040000, 0x1124417a, 0, 0, 0, },   {        "ua2-4", 0x00040000, 0x8b7532d6, 0, 0, 0, },   {        "ua2-5", 0x00040000, 0x6e450d28, 0, 0, 0, },   {        "ua2-6", 0x00040000, 0x99d8dbba, 0, 0, 0, },   {        "ua2-7", 0x00080000, 0xfce56907, 0, 0, 0, },   {        "ua2-8", 0x00080000, 0x7d3a8d73, 0, 0, 0, },   {        "ua2-9", 0x00080000, 0xa451eae9, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};struct GAME_MAIN game_twin_eagle ={   twin_eagle_dirs,   twin_eagle_roms,   NULL,   NULL,   NULL,   LoadTwinEagle,   ClearTwinEagle,   DrawMetaFox,   ExecuteMetaFoxFrame,   "twineagl",   "Twin Eagle",   NULL,   COMPANY_ID_SETA,};static struct DIR_INFO us_classic_golf_dirs[] ={   { "us_classic_golf", },   { "usclgolf", },   { NULL, },};static struct ROM_INFO us_classic_golf_roms[] ={   { "ue001005.132", 0x00080000, 0xc5fea37c, 0, 0, 0, },   { "ue001006.116", 0x00080000, 0xa6ab6ef4, 0, 0, 0, },   { "ue001007.117", 0x00080000, 0xb48a885c, 0, 0, 0, },   { "ue001008.118", 0x00080000, 0x5947d9b5, 0, 0, 0, },   { "ue001009.119", 0x00080000, 0xdc065204, 0, 0, 0, },   { "ue001010.120", 0x00080000, 0xdd683031, 0, 0, 0, },   { "ue001011.121", 0x00080000, 0x0e27bc49, 0, 0, 0, },   { "ue001012.122", 0x00080000, 0x961dfcdc, 0, 0, 0, },   { "ue001013.123", 0x00080000, 0x03e9eb79, 0, 0, 0, },   { "ue001014.124", 0x00080000, 0x9576ace7, 0, 0, 0, },   { "ue001015.125", 0x00080000, 0x631d6eb1, 0, 0, 0, },   { "ue001016.126", 0x00080000, 0xf44a8686, 0, 0, 0, },   { "ue001017.127", 0x00080000, 0x7f568258, 0, 0, 0, },   { "ue001018.128", 0x00080000, 0x4bd98f23, 0, 0, 0, },   { "ue001019.129", 0x00080000, 0x6d9f5a33, 0, 0, 0, },   { "ue001020.130", 0x00080000, 0xbc07403f, 0, 0, 0, },   { "ue001021.131", 0x00080000, 0x98c03efd, 0, 0, 0, },   { "ue002u61.004", 0x00040000, 0x476e9f60, 0, 0, 0, },   {   "ue2000.u14", 0x00020000, 0x69454bc2, 0, 0, 0, },   {   "ue2001.u20", 0x00020000, 0x18b41421, 0, 0, 0, },   {   "ue2002.u22", 0x00020000, 0xa7bbe248, 0, 0, 0, },   {   "ue2003.u30", 0x00020000, 0x29601906, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};struct GAME_MAIN game_us_classic_golf ={   us_classic_golf_dirs,   us_classic_golf_roms,   NULL,   NULL,   NULL,   LoadUSClassicGolf,   ClearUSClassicGolf,   DrawMetaFox,   ExecuteMetaFoxFrame,   "USClGolf",   "US Classic Golf",   NULL,   COMPANY_ID_SETA,};static struct DIR_INFO zing_zing_zip_dirs[] ={   { "zing_zing_zip", },   { "zingzip", },   { NULL, },};static struct ROM_INFO zing_zing_zip_roms[] ={   {     "uy001001", 0x00040000, 0x1a1687ec, 0, 0, 0, },   {     "uy001002", 0x00040000, 0x62e3b0c4, 0, 0, 0, },   {     "uy001007", 0x00080000, 0xec5b3ab9, 0, 0, 0, },   {     "uy001008", 0x00200000, 0x0d07d34b, 0, 0, 0, },   {     "uy001010", 0x00200000, 0x0129408a, 0, 0, 0, },   {     "uy001015", 0x00080000, 0x4aac128e, 0, 0, 0, },   {     "uy001016", 0x00080000, 0x46e4a7d8, 0, 0, 0, },   {     "uy001017", 0x00080000, 0xd2cda2eb, 0, 0, 0, },   {     "uy001018", 0x00080000, 0x3d30229a, 0, 0, 0, },   {           NULL,          0,          0, 0, 0, 0, },};struct GAME_MAIN game_zing_zing_zip ={   zing_zing_zip_dirs,   zing_zing_zip_roms,   NULL,   NULL,   NULL,   LoadZingZingZip,   ClearZingZingZip,   DrawMetaFox,   ExecuteMetaFoxFrame,   "ZingZip",   "Zing Zing Zip",   NULL,   COMPANY_ID_SETA,};static UINT8 seta_gfx_code[0x100]={   0x30,0x20,0x10,0x00,0x31,0x21,0x11,0x01,0x32,0x22,0x12,0x02,0x33,0x23,0x13,0x03,   0x34,0x24,0x14,0x04,0x35,0x25,0x15,0x05,0x36,0x26,0x16,0x06,0x37,0x27,0x17,0x07,   0x70,0x60,0x50,0x40,0x71,0x61,0x51,0x41,0x72,0x62,0x52,0x42,0x73,0x63,0x53,0x43,   0x74,0x64,0x54,0x44,0x75,0x65,0x55,0x45,0x76,0x66,0x56,0x46,0x77,0x67,0x57,0x47,   0xB0,0xA0,0x90,0x80,0xB1,0xA1,0x91,0x81,0xB2,0xA2,0x92,0x82,0xB3,0xA3,0x93,0x83,   0xB4,0xA4,0x94,0x84,0xB5,0xA5,0x95,0x85,0xB6,0xA6,0x96,0x86,0xB7,0xA7,0x97,0x87,   0xF0,0xE0,0xD0,0xC0,0xF1,0xE1,0xD1,0xC1,0xF2,0xE2,0xD2,0xC2,0xF3,0xE3,0xD3,0xC3,   0xF4,0xE4,0xD4,0xC4,0xF5,0xE5,0xD5,0xC5,0xF6,0xE6,0xD6,0xC6,0xF7,0xE7,0xD7,0xC7,   0x38,0x28,0x18,0x08,0x39,0x29,0x19,0x09,0x3A,0x2A,0x1A,0x0A,0x3B,0x2B,0x1B,0x0B,   0x3C,0x2C,0x1C,0x0C,0x3D,0x2D,0x1D,0x0D,0x3E,0x2E,0x1E,0x0E,0x3F,0x2F,0x1F,0x0F,   0x78,0x68,0x58,0x48,0x79,0x69,0x59,0x49,0x7A,0x6A,0x5A,0x4A,0x7B,0x6B,0x5B,0x4B,   0x7C,0x6C,0x5C,0x4C,0x7D,0x6D,0x5D,0x4D,0x7E,0x6E,0x5E,0x4E,0x7F,0x6F,0x5F,0x4F,   0xB8,0xA8,0x98,0x88,0xB9,0xA9,0x99,0x89,0xBA,0xAA,0x9A,0x8A,0xBB,0xAB,0x9B,0x8B,   0xBC,0xAC,0x9C,0x8C,0xBD,0xAD,0x9D,0x8D,0xBE,0xAE,0x9E,0x8E,0xBF,0xAF,0x9F,0x8F,   0xF8,0xE8,0xD8,0xC8,0xF9,0xE9,0xD9,0xC9,0xFA,0xEA,0xDA,0xCA,0xFB,0xEB,0xDB,0xCB,   0xFC,0xEC,0xDC,0xCC,0xFD,0xED,0xDD,0xCD,0xFE,0xEE,0xDE,0xCE,0xFF,0xEF,0xDF,0xCF,};static UINT8 *GFX_SPR;static UINT8 *GFX_SPR_SOLID;/*6502 Info---------- I really hate this chip- 0xFFFA = [7117] NMI Vector- 0xFFFC = [7000] PC Reset Vector- 0xFFFE = [70E1] Interrupt VectorSeta 6502 Info--------------- Due to some of the opcodes in the rom, it seems to be a 6510E000-FFFF = ROM?6000-7FFF = ROM MIRROR?*/UINT8 ReadROM(UINT16 offset){   return M6502ROM[offset&0x7FFF];}void WriteROM(UINT16 offset, UINT8 data){   M6502ROM[offset&0x7FFF] = data;}void LoadMetaFox(void){   int ta,tb,tc,td;   RAMSize=0x40000+0x10000;   if(!(RAM=AllocateMem(0x80000))) return;   if(!(ROM=AllocateMem(0xA0000))) return;   if(!(GFX=AllocateMem(0x200000+0x400000))) return;   GFX_SPR = GFX+0x000000;   if(!load_rom("P1006163", RAM, 0x40000)) return;		// 16x16 SPRITES   tb=0;   for(ta=0;ta<0x40000;ta++){      tc=RAM[ta];      GFX[tb+0]=((tc&0x80)>>7)<<0;      GFX[tb+1]=((tc&0x40)>>6)<<0;      GFX[tb+2]=((tc&0x20)>>5)<<0;      GFX[tb+3]=((tc&0x10)>>4)<<0;      GFX[tb+4]=((tc&0x08)>>3)<<0;      GFX[tb+5]=((tc&0x04)>>2)<<0;      GFX[tb+6]=((tc&0x02)>>1)<<0;      GFX[tb+7]=((tc&0x01)>>0)<<0;      tb+=16;      if((tb&0x7F)==0){tb-=0x78;}      else{if((tb&0x7F)==8){tb-=8;}}   }   if(!load_rom("P1007164", RAM, 0x40000)) return;		// 16x16 SPRITES   tb=0;   for(ta=0;ta<0x40000;ta++){      tc=RAM[ta];      GFX[tb+0]|=((tc&0x80)>>7)<<1;      GFX[tb+1]|=((tc&0x40)>>6)<<1;      GFX[tb+2]|=((tc&0x20)>>5)<<1;      GFX[tb+3]|=((tc&0x10)>>4)<<1;      GFX[tb+4]|=((tc&0x08)>>3)<<1;      GFX[tb+5]|=((tc&0x04)>>2)<<1;      GFX[tb+6]|=((tc&0x02)>>1)<<1;      GFX[tb+7]|=((tc&0x01)>>0)<<1;      tb+=16;      if((tb&0x7F)==0){tb-=0x78;}      else{if((tb&0x7F)==8){tb-=8;}}   }   if(!load_rom("P1008165", RAM, 0x40000)) return;		// 16x16 SPRITES   tb=0;   for(ta=0;ta<0x40000;ta++){      tc=RAM[ta];      GFX[tb+0]|=((tc&0x80)>>7)<<2;      GFX[tb+1]|=((tc&0x40)>>6)<<2;      GFX[tb+2]|=((tc&0x20)>>5)<<2;      GFX[tb+3]|=((tc&0x10)>>4)<<2;      GFX[tb+4]|=((tc&0x08)>>3)<<2;      GFX[tb+5]|=((tc&0x04)>>2)<<2;      GFX[tb+6]|=((tc&0x02)>>1)<<2;      GFX[tb+7]|=((tc&0x01)>>0)<<2;      tb+=16;      if((tb&0x7F)==0){tb-=0x78;}      else{if((tb&0x7F)==8){tb-=8;}}   }   if(!load_rom("P1009166", RAM, 0x40000)) return;		// 16x16 SPRITES   tb=0;   for(ta=0;ta<0x40000;ta++){      tc=RAM[ta];      GFX[tb+0]|=((tc&0x80)>>7)<<3;      GFX[tb+1]|=((tc&0x40)>>6)<<3;      GFX[tb+2]|=((tc&0x20)>>5)<<3;      GFX[tb+3]|=((tc&0x10)>>4)<<3;      GFX[tb+4]|=((tc&0x08)>>3)<<3;      GFX[tb+5]|=((tc&0x04)>>2)<<3;      GFX[tb+6]|=((tc&0x02)>>1)<<3;      GFX[tb+7]|=((tc&0x01)>>0)<<3;      tb+=16;      if((tb&0x7F)==0){tb-=0x78;}      else{if((tb&0x7F)==8){tb-=8;}}   }   if(!load_rom("UP001010", RAM, 0x80000)) return;		// 16x16 SPRITES   tb=0;   td=0x200000;   for(ta=0;ta<0x80000;ta++){      tc=RAM[ta];      GFX[td|seta_gfx_code[tb+0]] = (((tc&0x80)>>7)<<3) | (((tc&0x08)>>3)<<2);      GFX[td|seta_gfx_code[tb+1]] = (((tc&0x40)>>6)<<3) | (((tc&0x04)>>2)<<2);      GFX[td|seta_gfx_code[tb+2]] = (((tc&0x20)>>5)<<3) | (((tc&0x02)>>1)<<2);      GFX[td|seta_gfx_code[tb+3]] = (((tc&0x10)>>4)<<3) | (((tc&0x01)>>0)<<2);      tb+=4; if(tb==0x100){ tb=0; td+=0x100; }   }   if(!load_rom("UP001011", RAM, 0x80000)) return;		// 16x16 SPRITES   tb=0;   td=0x400000;   for(ta=0;ta<0x80000;ta++){      tc=RAM[ta];      GFX[td|seta_gfx_code[tb+0]] = (((tc&0x80)>>7)<<3) | (((tc&0x08)>>3)<<2);      GFX[td|seta_gfx_code[tb+1]] = (((tc&0x40)>>6)<<3) | (((tc&0x04)>>2)<<2);      GFX[td|seta_gfx_code[tb+2]] = (((tc&0x20)>>5)<<3) | (((tc&0x02)>>1)<<2);      GFX[td|seta_gfx_code[tb+3]] = (((tc&0x10)>>4)<<3) | (((tc&0x01)>>0)<<2);      tb+=4; if(tb==0x100){ tb=0; td+=0x100; }   }   if(!load_rom("UP001012", RAM, 0x80000)) return;		// 16x16 SPRITES   tb=0;   td=0x200000;   for(ta=0;ta<0x80000;ta++){

⌨️ 快捷键说明

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