亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? starhelp.c

?? 十七種模擬器源代碼 非常有用的作課程設計不可缺少的
?? C
字號:
/******************************************************************************//*                                                                            *//*                     RAINE - STARSCREAM 68000 INTERFACE                     *//*                                                                            *//******************************************************************************/#include "starhelp.h"#include "raine.h"#include "debug.h"#include "savegame.h"/* *  Fill in the basic structures via these functions... */// FIRST EMULATED 68000static UINT32 ma;static UINT32 program_count[MAX_68000];static UINT32 data_count_rb[MAX_68000];static UINT32 data_count_rw[MAX_68000];static UINT32 data_count_wb[MAX_68000];static UINT32 data_count_ww[MAX_68000];void AddMemoryList(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   MC68000A_memoryall[ma].lowaddr    = d0;   MC68000A_memoryall[ma].highaddr   = d1;   MC68000A_memoryall[ma].memorycall = d2;   MC68000A_memoryall[ma].userdata   = d3;   ma++;}static void add_s68000_program_region(UINT32 cpu, UINT32 d0, UINT32 d1, UINT8 *d2){   M68000_programregion[cpu][program_count[cpu]].lowaddr  = d0;   M68000_programregion[cpu][program_count[cpu]].highaddr = d1;   M68000_programregion[cpu][program_count[cpu]].offset   = (UINT32) d2;   program_count[cpu]++;   if(cpu == 0)      ma = 0;}static void add_s68000_data_region_rb(UINT32 cpu, UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   M68000_dataregion_rb[cpu][data_count_rb[cpu]].lowaddr    = d0;   M68000_dataregion_rb[cpu][data_count_rb[cpu]].highaddr   = d1;   M68000_dataregion_rb[cpu][data_count_rb[cpu]].memorycall = d2;   M68000_dataregion_rb[cpu][data_count_rb[cpu]].userdata   = d3 - d0;   data_count_rb[cpu]++;   if(cpu == 0)      AddMemoryList(d0,d1,d2,d3);}static void add_s68000_data_region_rw(UINT32 cpu, UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   M68000_dataregion_rw[cpu][data_count_rw[cpu]].lowaddr    = d0;   M68000_dataregion_rw[cpu][data_count_rw[cpu]].highaddr   = d1;   M68000_dataregion_rw[cpu][data_count_rw[cpu]].memorycall = d2;   M68000_dataregion_rw[cpu][data_count_rw[cpu]].userdata   = d3 - d0;   data_count_rw[cpu]++;   if(cpu == 0)      AddMemoryList(d0,d1,d2,d3);}static void add_s68000_data_region_wb(UINT32 cpu, UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   M68000_dataregion_wb[cpu][data_count_wb[cpu]].lowaddr    = d0;   M68000_dataregion_wb[cpu][data_count_wb[cpu]].highaddr   = d1;   M68000_dataregion_wb[cpu][data_count_wb[cpu]].memorycall = d2;   M68000_dataregion_wb[cpu][data_count_wb[cpu]].userdata   = d3 - d0;   data_count_wb[cpu]++;   if(cpu == 0)      AddMemoryList(d0,d1,d2,d3);}static void add_s68000_data_region_ww(UINT32 cpu, UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   M68000_dataregion_ww[cpu][data_count_ww[cpu]].lowaddr    = d0;   M68000_dataregion_ww[cpu][data_count_ww[cpu]].highaddr   = d1;   M68000_dataregion_ww[cpu][data_count_ww[cpu]].memorycall = d2;   M68000_dataregion_ww[cpu][data_count_ww[cpu]].userdata   = d3 - d0;   data_count_ww[cpu]++;   if(cpu == 0)      AddMemoryList(d0,d1,d2,d3);}void AddMemFetch(UINT32 d0, UINT32 d1, UINT8 *d2){   add_s68000_program_region(0, d0, d1, d2);}void AddReadByte(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_rb(0, d0, d1, d2, d3);}void AddReadWord(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_rw(0, d0, d1, d2, d3);}void AddReadBW (UINT32 d0, UINT32 d1, void *d2, UINT8 *d3) {   add_s68000_data_region_rb(0, d0, d1, d2, d3);   add_s68000_data_region_rw(0, d0, d1, d2, d3);}  void AddWriteByte(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_wb(0, d0, d1, d2, d3);}void AddWriteWord(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_ww(0, d0, d1, d2, d3);}void AddWriteBW(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_wb(0, d0, d1, d2, d3);   add_s68000_data_region_ww(0, d0, d1, d2, d3);}void AddRWBW (UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_rb(0, d0, d1, d2, d3);   add_s68000_data_region_rw(0, d0, d1, d2, d3);   add_s68000_data_region_wb(0, d0, d1, d2, d3);   add_s68000_data_region_ww(0, d0, d1, d2, d3);}  void AddResetHandler(void *d0){   M68000_resethandler[0] = d0;}/*darn, neill moves things around in the context, so it's notsafe to save starscream contexts incase they change in futurereleases, have to 'pack' them into our own save buffer then.*/typedef struct SAVE_BUFFER{   UINT32 id;   UINT32 interrupts[8];   UINT32 dreg[8];   UINT32 areg[8];   UINT32 asp;   UINT32 pc;   UINT32 odometer;   UINT16 sr;   UINT8 stopped;} SAVE_BUFFER;static struct SAVE_BUFFER save_buffer[2];void AddInitMemory(void){   M68000_context[0].fetch       = M68000_programregion[0];   M68000_context[0].readbyte    = M68000_dataregion_rb[0];   M68000_context[0].readword    = M68000_dataregion_rw[0];   M68000_context[0].writebyte   = M68000_dataregion_wb[0];   M68000_context[0].writeword   = M68000_dataregion_ww[0];   M68000_context[0].s_fetch     = M68000_programregion[0];   M68000_context[0].s_readbyte  = M68000_dataregion_rb[0];   M68000_context[0].s_readword  = M68000_dataregion_rw[0];   M68000_context[0].s_writebyte = M68000_dataregion_wb[0];   M68000_context[0].s_writeword = M68000_dataregion_ww[0];   M68000_context[0].u_fetch     = M68000_programregion[0];   M68000_context[0].u_readbyte  = M68000_dataregion_rb[0];   M68000_context[0].u_readword  = M68000_dataregion_rw[0];   M68000_context[0].u_writebyte = M68000_dataregion_wb[0];   M68000_context[0].u_writeword = M68000_dataregion_ww[0];   M68000_context[0].resethandler = M68000_resethandler[0];   M68000_context[0].sr = 0x2700;   AddSaveCallback_Internal(M68000A_save_update);   AddLoadCallback_Internal(M68000A_load_update);   AddSaveData(SAVE_68K_0, (UINT8 *) &save_buffer[0], sizeof(SAVE_BUFFER));   StarScreamEngine = 1;}void Clear68000List(void){   UINT32 ta;   for(ta = 0; ta < MAX_68000; ta ++){      program_count[ta] = 0;      data_count_rb[ta] = 0;      data_count_rw[ta] = 0;      data_count_wb[ta] = 0;      data_count_ww[ta] = 0;      M68000_resethandler[ta] = NULL;   }   ma = 0;}void WriteStarScreamByte(UINT32 address, UINT8 data){   int ta;   for(ta=0;(UINT32)ta<ma;ta++){      if((MC68000A_memoryall[ta].lowaddr)==-1){         ta=ma;         #ifdef RAINE_DEBUG            print_debug("Wb(%06x,%02x) [Via WriteStarScreamByte]\n",address,data);         #endif      }      else{         if((address>=MC68000A_memoryall[ta].lowaddr)&&(MC68000A_memoryall[ta].highaddr>=address)){            if(MC68000A_memoryall[ta].memorycall==NULL){               WriteByte( ((UINT8 *) MC68000A_memoryall[ta].userdata) + ((address^1)-MC68000A_memoryall[ta].lowaddr),data);               ta=ma;            }            //else{            //   *MC68000A_memoryall[ta].memorycall(address,data);            //}         }      }   }}UINT8 ReadStarScreamByte(UINT32 address){   int ta;   for(ta=0;(UINT32)ta<ma;ta++){      if((MC68000A_memoryall[ta].lowaddr)==-1){         #ifdef RAINE_DEBUG            print_debug("Rb(%06x) [Via ReadStarScreamByte]\n",address);         #endif         return(0x00);      }      else{         if((address>=MC68000A_memoryall[ta].lowaddr)&&(MC68000A_memoryall[ta].highaddr>=address)){            if(MC68000A_memoryall[ta].memorycall==NULL){               return ReadByte( ((UINT8 *) MC68000A_memoryall[ta].userdata) + ((address^1)-MC68000A_memoryall[ta].lowaddr) );            }         }      }   }   return 0x00;}// SECOND EMULATED 68000void AddMemFetchMC68000B(UINT32 d0, UINT32 d1, UINT8 *d2){   add_s68000_program_region(1, d0, d1, d2);}void AddReadByteMC68000B(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_rb(1, d0, d1, d2, d3);}void AddReadWordMC68000B(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_rw(1, d0, d1, d2, d3);}void AddWriteByteMC68000B(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_wb(1, d0, d1, d2, d3);}void AddWriteWordMC68000B(UINT32 d0, UINT32 d1, void *d2, UINT8 *d3){   add_s68000_data_region_ww(1, d0, d1, d2, d3);}void AddInitMemoryMC68000B(void){   M68000_context[1].fetch       = M68000_programregion[1];   M68000_context[1].readbyte    = M68000_dataregion_rb[1];   M68000_context[1].readword    = M68000_dataregion_rw[1];   M68000_context[1].writebyte   = M68000_dataregion_wb[1];   M68000_context[1].writeword   = M68000_dataregion_ww[1];   M68000_context[1].s_fetch     = M68000_programregion[1];   M68000_context[1].s_readbyte  = M68000_dataregion_rb[1];   M68000_context[1].s_readword  = M68000_dataregion_rw[1];   M68000_context[1].s_writebyte = M68000_dataregion_wb[1];   M68000_context[1].s_writeword = M68000_dataregion_ww[1];   M68000_context[1].u_fetch     = M68000_programregion[1];   M68000_context[1].u_readbyte  = M68000_dataregion_rb[1];   M68000_context[1].u_readword  = M68000_dataregion_rw[1];   M68000_context[1].u_writebyte = M68000_dataregion_wb[1];   M68000_context[1].u_writeword = M68000_dataregion_ww[1];   M68000_context[1].resethandler = M68000_resethandler[1];   M68000_context[1].sr = 0x2700;   AddSaveCallback_Internal(M68000B_save_update);   AddLoadCallback_Internal(M68000B_load_update);   AddSaveData(SAVE_68K_1, (UINT8 *) &save_buffer[1], sizeof(SAVE_BUFFER));   StarScreamEngine = 2;}/* *  Helper Functions for Starscream memory read/write structs *  --------------------------------------------------------- */void Stop68000(UINT32 address, UINT8 data){	(void)(address);	(void)(data);   s68000releaseTimeslice();   #ifdef RAINE_DEBUG   print_debug("[Stop68000]\n");   #endif}UINT8 DefBadReadByte(UINT32 address){   #ifdef RAINE_DEBUG      print_debug("RB(%06x) [%06x]\n",address,s68000readPC());   #endif   return 0xFF;}UINT16 DefBadReadWord(UINT32 address){   #ifdef RAINE_DEBUG       print_debug("RW(%06x) [%06x]\n",address,s68000readPC());   #endif   return 0x0000;}void DefBadWriteByte(UINT32 address, UINT8 data){   #ifdef RAINE_DEBUG      print_debug("WB(%06x,%02x) [%06x]\n",address,data,s68000readPC());   #endif}void DefBadWriteWord(UINT32 address, UINT16 data){   #ifdef RAINE_DEBUG      print_debug("WW(%06x,%04x) [%06x]\n",address,data,s68000readPC());   #endif}void ByteSwap(UINT8 *MEM, UINT32 size){   UINT32 ta;   for(ta=0;ta<size;ta+=2){      WriteWord(&MEM[ta],ReadWord68k(&MEM[ta]));   }}typedef struct OLD_CONTEXT{   UINT8 *memoryfetch;   UINT8 *memoryreadbyte;   UINT8 *memoryreadword;   UINT8 *memorywritebyte;   UINT8 *memorywriteword;   void (*resethandler)(void);   UINT32 dreg[8];   UINT32 areg[8];   UINT32 asp;   UINT32 pc;   UINT32 odometer;   UINT16 sr;   UINT8 stopped;   UINT8 contextfiller;} OLD_CONTEXT;static void do_save_packing(int cpu){   UINT32 ta;   save_buffer[cpu].id = ASCII_ID('S','0','2','6');   for(ta=0;ta<8;ta++){   save_buffer[cpu].dreg[ta]       = M68000_context[cpu].dreg[ta];   save_buffer[cpu].areg[ta]       = M68000_context[cpu].areg[ta];   save_buffer[cpu].interrupts[ta] = M68000_context[cpu].interrupts[ta];   }   save_buffer[cpu].asp         = M68000_context[cpu].asp;   save_buffer[cpu].pc          = M68000_context[cpu].pc;   save_buffer[cpu].odometer    = M68000_context[cpu].odometer;   save_buffer[cpu].sr          = M68000_context[cpu].sr;}void M68000A_save_update(void){   do_save_packing(0);}void M68000B_save_update(void){   do_save_packing(1);}static void do_load_unpacking(int cpu){   UINT32 ta;   if( save_buffer[cpu].id == ASCII_ID('S','0','2','6') ){      for(ta=0;ta<8;ta++){      M68000_context[cpu].dreg[ta]       = save_buffer[cpu].dreg[ta];      M68000_context[cpu].areg[ta]       = save_buffer[cpu].areg[ta];      M68000_context[cpu].interrupts[ta] = save_buffer[cpu].interrupts[ta];      }      M68000_context[cpu].asp         = save_buffer[cpu].asp;      M68000_context[cpu].pc          = save_buffer[cpu].pc;      M68000_context[cpu].odometer    = save_buffer[cpu].odometer;      M68000_context[cpu].sr          = save_buffer[cpu].sr;   }   else{      // this hack will make old saves work      OLD_CONTEXT *old_context;      old_context = (OLD_CONTEXT *) &save_buffer[cpu];      for(ta=0;ta<8;ta++){      M68000_context[cpu].dreg[ta]       = old_context->dreg[ta];      M68000_context[cpu].areg[ta]       = old_context->areg[ta];      M68000_context[cpu].interrupts[ta] = 0x00;      }      M68000_context[cpu].asp         = old_context->asp;      M68000_context[cpu].pc          = old_context->pc;      M68000_context[cpu].odometer    = old_context->odometer;      M68000_context[cpu].sr          = old_context->sr;   }}void M68000A_load_update(void){   do_load_unpacking(0);}void M68000B_load_update(void){   do_load_unpacking(1);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品久久久久久动态图| 中文字幕在线不卡一区| 亚洲激情五月婷婷| 91污片在线观看| 亚洲手机成人高清视频| 91麻豆swag| 国产精品国产三级国产aⅴ中文| 丁香婷婷综合五月| 亚洲色欲色欲www在线观看| 色欲综合视频天天天| 亚洲图片欧美综合| 日韩欧美在线网站| 国产精品亚洲一区二区三区在线| 国产网红主播福利一区二区| 北岛玲一区二区三区四区| 中文字幕五月欧美| 91电影在线观看| 午夜欧美视频在线观看| 91精品国产色综合久久不卡电影 | 欧美久久一二三四区| 视频一区中文字幕国产| 欧美不卡123| jizz一区二区| 午夜婷婷国产麻豆精品| 欧美哺乳videos| 99久久精品免费| 亚洲午夜精品一区二区三区他趣| 欧美一区在线视频| 国产精品18久久久久久久久| 一区二区三区91| 日韩三级视频在线观看| 成人av网址在线| 香蕉乱码成人久久天堂爱免费| 欧美变态口味重另类| 91麻豆免费观看| 蜜桃视频第一区免费观看| 中文字幕高清一区| 538在线一区二区精品国产| 国产成人午夜视频| 亚洲午夜久久久久中文字幕久| 精品少妇一区二区三区在线播放| 91麻豆视频网站| 韩国中文字幕2020精品| 亚洲精品国产高清久久伦理二区| 欧美刺激脚交jootjob| 色婷婷久久一区二区三区麻豆| 极品少妇xxxx精品少妇| 亚洲成人自拍网| 国产精品午夜电影| 精品久久久久久久久久久久久久久久久| 成人免费黄色大片| 久久99精品国产91久久来源| 亚洲一二三级电影| 国产精品久久久久久一区二区三区| 欧美狂野另类xxxxoooo| 一本大道久久a久久精二百| 国产一区在线观看麻豆| 日韩福利视频网| 一区二区三区国产豹纹内裤在线| 国产精品天干天干在线综合| 日韩限制级电影在线观看| 欧美三级电影在线观看| 成人精品一区二区三区四区| 国产麻豆日韩欧美久久| 欧美aⅴ一区二区三区视频| 亚洲高清不卡在线| 亚洲精品国产视频| 亚洲三级免费观看| 国产精品国产三级国产普通话99| 久久久久综合网| 精品国产第一区二区三区观看体验| 欧美日韩精品一区二区三区四区 | 色综合中文字幕国产 | 中文字幕巨乱亚洲| 2021久久国产精品不只是精品| 欧美日韩成人激情| 欧美日韩国产一级| 日本福利一区二区| 91久久免费观看| 91蝌蚪porny成人天涯| 94-欧美-setu| 91尤物视频在线观看| 99久久综合99久久综合网站| 粉嫩一区二区三区在线看 | 国产麻豆日韩欧美久久| 国产精品综合在线视频| 国产麻豆午夜三级精品| 国产成人av电影在线观看| 国产经典欧美精品| 成人午夜av影视| 99re热视频这里只精品| 91亚洲国产成人精品一区二三| 91麻豆精品在线观看| 91成人免费电影| 欧美丝袜自拍制服另类| 欧美日韩一区 二区 三区 久久精品| 色www精品视频在线观看| 色欲综合视频天天天| 欧美日韩精品系列| 日韩精品一区二区三区蜜臀 | 亚洲美女一区二区三区| 亚洲尤物在线视频观看| 午夜精品福利视频网站 | 理论片日本一区| 国产美女在线观看一区| 成人网在线免费视频| 91九色02白丝porn| 日韩三级免费观看| 国产精品乱码一区二三区小蝌蚪| 亚洲精选在线视频| 午夜久久久久久| 国产精品资源在线| 91亚洲精品久久久蜜桃| 91精品国产91久久综合桃花| 久久久国际精品| 悠悠色在线精品| 精品系列免费在线观看| 99久久精品国产一区二区三区| 欧美电影在哪看比较好| 国产亚洲成av人在线观看导航| 国产精品久久毛片a| 日韩成人一级片| 成人av在线资源网| 6080亚洲精品一区二区| 欧美激情在线一区二区| 亚洲成人免费观看| 国产成人av电影在线观看| 欧美视频一区二区| 国产亚洲一区二区三区在线观看 | 久久蜜桃av一区二区天堂| 亚洲激情图片qvod| 麻豆精品一区二区| 91激情在线视频| 久久一夜天堂av一区二区三区| 一区二区日韩av| 国产精品影视在线观看| 欧美视频在线观看一区| 中文av一区二区| 日本不卡一区二区三区| 一本大道久久a久久综合婷婷| 久久夜色精品国产噜噜av| 亚洲bt欧美bt精品| 91蜜桃视频在线| 国产欧美一区二区精品仙草咪| 日韩电影在线免费| 在线欧美日韩国产| 欧美激情一区二区在线| 狠狠色伊人亚洲综合成人| 欧美色图片你懂的| 国产精品久线观看视频| 国产精品自拍网站| 欧美一级片在线观看| 亚洲午夜视频在线观看| 色综合久久久久综合体桃花网| 久久久精品免费观看| 免费成人小视频| 制服丝袜在线91| 亚洲一区二区三区三| 91丨porny丨国产入口| 国产色产综合色产在线视频| 久久99精品国产麻豆不卡| 91精品午夜视频| 日韩精品免费视频人成| 欧美日韩一级片网站| 亚洲精品中文在线影院| 99久久精品免费观看| 国产精品久久久久7777按摩| 成人精品视频一区二区三区| 欧美va日韩va| 捆绑紧缚一区二区三区视频| 欧美一区二区三区性视频| 日韩精品一二三区| 欧美精品一卡二卡| 亚洲成人你懂的| 欧美久久久久久蜜桃| 丝瓜av网站精品一区二区| 欧美日韩aaaaaa| 日本中文在线一区| 欧美大片拔萝卜| 韩日av一区二区| 久久久99免费| 成人一级视频在线观看| 国产精品全国免费观看高清| 丰满少妇久久久久久久| 亚洲欧美综合另类在线卡通| 91亚洲男人天堂| 亚洲h在线观看| 日韩一区二区三区视频在线 | 一区二区三区日韩在线观看| 欧美在线你懂得| 三级欧美在线一区| 欧美一区二区视频观看视频| 狠狠色丁香久久婷婷综| 国产亚洲欧洲一区高清在线观看| eeuss鲁片一区二区三区在线看| 中文字幕日韩av资源站| 欧美在线观看视频一区二区| 午夜激情一区二区三区| 欧美精品一区二区三区蜜臀 | 国产精品视频yy9299一区|