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

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

?? dsmmusub.cpp

?? 一個任天堂掌上游戲機NDS的源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
u16 dsMMUsub::rdH_MMIO(u32 a){ return mmioPages[MMIO_PAGE_INDEX].rdH(a); }u32 dsMMUsub::rdW_MMIO(u32 a){ return mmioPages[MMIO_PAGE_INDEX].rdW(a); }void dsMMUsub::wrB_MMIO(u32 a, u8 d) { mmioPages[MMIO_PAGE_INDEX].wrB(a,d); }void dsMMUsub::wrH_MMIO(u32 a, u16 d){ mmioPages[MMIO_PAGE_INDEX].wrH(a,d); }void dsMMUsub::wrW_MMIO(u32 a, u32 d){ mmioPages[MMIO_PAGE_INDEX].wrW(a,d); }// Since there's no other real place to keep the BIOS interrupt flags,// they're here in the MMU, along with their accessor functions.u8 dsMMUsub::rdB_INT(u32 a) { return interruptIO[(a&15)>>2].b[a&3]; }u16 dsMMUsub::rdH_INT(u32 a){ return interruptIO[(a&15)>>2].h[(a&2)>>1]; }u32 dsMMUsub::rdW_INT(u32 a){ return interruptIO[(a&15)>>2].w; }void dsMMUsub::wrB_INT(u32 a, u8 d){    interruptIO[(a&15)>>2].b[a&3]=d;    switch(a&15)    {	case 4: waitstates((interruptIO[1].b[1]<<8)|d); break;	case 5: waitstates(interruptIO[1].b[0]|(d<<8)); break;    }}void dsMMUsub::wrH_INT(u32 a, u16 d){ interruptIO[(a&15)>>2].h[(a&2)>>1]=d; if((a&14)==4) waitstates(d); }void dsMMUsub::wrW_INT(u32 a, u32 d){ interruptIO[(a&15)>>2].w=d; waitstates(d&65535); }// If the MMU is to be informed of events, this is where they come in.// At present, this merely wraps the DMA event handler.void dsMMUsub::event(int type, void *data){    switch(type)    {	case MMU_EVENT_SETEWRAM:	    EWRAM =(u8 *)data;	    EWRAMh=(u16*)data;	    EWRAMw=(u32*)data;	    for(int i=0;i<16;i++)                rangeReg(0x20+i, rdB_EWRAM, rdH_EWRAM, rdW_EWRAM, wrB_EWRAM, wrH_EWRAM, wrW_EWRAM);	    break;	case MMU_EVENT_SETSWRAM:	    SWRAM =(u8 *)data;	    SWRAMh=(u16*)data;	    SWRAMw=(u32*)data;            rangeReg(0x37, rdB_SWRAM, rdH_SWRAM, rdW_SWRAM, wrB_SWRAM, wrH_SWRAM, wrW_SWRAM);	    break;        default: dma->check(type); break;    }}// Initialise plugin// Parameters: name  - FQPN of plugin as listed in INI file//             req   - Pointer to PluginRequest API function//             unreq - Pointer to PluginUnrequest API functiondsMMUsub::dsMMUsub(std::string name, REQPTR req, UNREQPTR unreq){    pName = std::string(name);    pClass = pName.substr(0, pName.find(".")+1);    pRequest = req;    pUnrequest = unreq;    pluginName = std::string(pName);        ROMfile = std::string("");    if(!GUI) GUI = (GUIPlugin*)pRequest("UI");    dmpbuffer = new u32[360*128];    dmpwinID = GUI->subwinCreate(360,128, "Sub Memory Viewer", dmpbuffer);        // Blank out the page table    for(int i=0; i<256; ++i)    {        pagetable[i].rdB=rdB_BAD;        pagetable[i].rdH=rdH_BAD;        pagetable[i].rdW=rdW_BAD;        pagetable[i].wrB=wrB_BAD;        pagetable[i].wrH=wrH_BAD;        pagetable[i].wrW=wrW_BAD;	pagetable[i].set=0;        mmioPages[i].rdB=rdB_BAD;        mmioPages[i].rdH=rdH_BAD;        mmioPages[i].rdW=rdW_BAD;        mmioPages[i].wrB=wrB_BAD;        mmioPages[i].wrH=wrH_BAD;        mmioPages[i].wrW=wrW_BAD;	mmioPages[i].set=0;    }        // Make all memory pointers null    EWRAM=NULL; EWRAMh=NULL; EWRAMw=NULL;    IWRAM=NULL; IWRAMh=NULL; IWRAMw=NULL;    SWRAM=NULL; SWRAMh=NULL; SWRAMw=NULL;    BIOS =NULL; BIOSh =NULL; BIOSw =NULL;    ROM  =NULL; ROMh  =NULL; ROMw  =NULL;        // Allocate RAMs    /*    EWRAM = new u8[256*1024];    if(!EWRAM)        throw Exception(ERR_MMU_INIT, pName,                        "Allocation of EWRAM failed.");    EWRAMh = (u16*)EWRAM;    EWRAMw = (u32*)EWRAM;    Logger::log(pName) << "256KB of EWRAM allocated.";    */    IWRAM = new u8[64*1024];    if(!IWRAM)        throw Exception(ERR_MMU_INIT, pName,                        "Allocation of IWRAM failed.");    IWRAMh = (u16*)IWRAM;    IWRAMw = (u32*)IWRAM;    Logger::log(pName) << "64KB of IWRAM allocated.";        // Register regions with pagetable    for(int i=0; i<16; ++i)    {        rangeReg(0x00+i, rdB_BIOS , rdH_BIOS , rdW_BIOS , wrB_BAD  , wrH_BAD  , wrW_BAD  );    }    for(int i=0; i<8; i++)    {        rangeReg(0x38+i, rdB_IWRAM, rdH_IWRAM, rdW_IWRAM, wrB_IWRAM, wrH_IWRAM, wrW_IWRAM);        rangeReg(0x40+i, rdB_MMIO,  rdH_MMIO,  rdW_MMIO,  wrB_MMIO,  wrH_MMIO,  wrW_MMIO );    }    // Register the interrupt flag I/O space with the MMIO pagetable    mmioReg(0x20, rdB_INT, rdH_INT, rdW_INT, wrB_INT, wrH_INT, wrW_INT);    for(int i=0; i<4; ++i) interruptIO[i].w=0;    waitstates(0);    // All done.    Logger::log(pName) << "Initialised.";}// Plugin cleanupdsMMUsub::~dsMMUsub(){    //if(EWRAM != NULL) { delete EWRAM; EWRAM=NULL; EWRAMh=NULL; EWRAMw=NULL; }    if(IWRAM != NULL) { delete IWRAM; IWRAM=NULL; IWRAMh=NULL; IWRAMw=NULL; }    if(ROM   != NULL) { delete ROM;   ROM  =NULL; ROMh  =NULL; ROMw  =NULL; }       if(dma) { delete dma; dma=NULL; }    if(dmpbuffer) { delete dmpbuffer; dmpbuffer=NULL; }        pUnrequest("UI", 0); GUI = NULL;        Logger::log(pName) << "Shutdown.";}void dsMMUsub::setCPU(CPUPlugin *c){    if(c) CPU = (ARM7TDMI*)c;}// Reset plugin statevoid dsMMUsub::reset(){    // Clear out memory    memset(IWRAM, 0, 64*1024);    if(ROMfile.length()) load(ROMfile);    memset(dmpbuffer, 0, 360*128*4);    if(!dma) dma = new DMA(this);         dma->reset();        // Since the BIOS file may change between resets, loading of the BIOS    // is done here in reset as opposed to the constructor    if(BIOS  != NULL) { delete BIOS;  BIOS =NULL; BIOSh =NULL; BIOSw =NULL; }    Config ini; ini.read("dsmmusub.ini");    if(!ini.exists("BIOS")) ini["BIOS"] = "bioshack.img";    std::ifstream input(ini["BIOS"].c_str(), std::ios::binary);    input.seekg(0, std::ios::end);    BIOSsize = input.tellg();    input.seekg(0, std::ios::beg);    BIOS = new u8[nlpo2(BIOSsize)];    if(!BIOS)        throw Exception(ERR_MMU_INIT, pName,                        "Allocation of BIOS space failed.");    BIOSh=(u16*)BIOS;    BIOSw=(u32*)BIOS;        input.read((char*)BIOS, BIOSsize);    input.close();    BIOSsize = nlpo2(BIOSsize)-1;        Logger::log(pName) << ini["BIOS"] << " (" << BIOSsize+1 <<" bytes) loaded as BIOS.";        // Refresh the dump window    status(0x04000000, 1);    // We're done.    Logger::log(pName) << "Reset.";}// Provide status information: fill the memorydump framebuffervoid dsMMUsub::status(int addr=0x04000000, int mode=1){    Font5x7 prn(dmpbuffer, 360,128);    char str[256];        for(int i=0; i<16; ++i)    {	sprintf(str, "%08X | ", addr+i*16);        switch(mode)	{	    case 0:		for(int j=0; j<16; ++j) sprintf(str, "%s%02X ", str, rdB(addr+i*16+j));		break;	    case 1:                for(int j=0; j<16; j+=2) sprintf(str, "%s%04X ", str, rdH(addr+i*16+j));                break;	    case 2:		for(int j=0; j<16; j+=4) sprintf(str, "%s%08X ", str, rdW(addr+i*16+j));		break;	}	prn.print(str,0,i*8,0x00FFFFFF);    }    GUI->subwinRefresh(dmpwinID);}// Information about what this MMU supports// Returns: bits set in a u8u8 dsMMUsub::getCaps(){    return PLGMMU_CAPS_32B | PLGMMU_CAPS_LSBEND;}// Next Largest Power of 2 (32-bit)// This is used by the allocators to get nice chunks of memory, and make// our masking life easy.// ACK: Parallel Computing Aggregate, Kentucky U (nlpo2)inline unsigned intdsMMUsub::nlpo2(unsigned int x){	if(x&(x-1)) {            // If we're not already a power of 2	        x |= (x >> 1);        	x |= (x >> 2);	        x |= (x >> 4);        	x |= (x >> 8);	        x |= (x >> 16);        	return(x+1);     // Return next power up	}	return x;                // Otherwise, stick with what we have}//---Plugin architecture support-------------------------------------------// Retrieve Plugin class from outside// Parameters: plg   - Address of a pointer to a Plugin class to 'new'//             name  - FQPN of plugin as listed in INI file//             req   - Pointer to PluginRequest API function//             unreq - Pointer to PluginUnrequest API functionEXPORTFUNC void getPlugin(Plugin **plg,                          std::string name,                          REQPTR req, UNREQPTR unreq){   *plg = new dsMMUsub(name, req, unreq);}// Provide plugin version informationPLUGININFO *dsMMUsub::getinfo(){    return &pInfo;}// Release plugin from outsidevoid dsMMUsub::release(){    // Delete the Test plugin that was 'new'd in getPlugin.    delete this;}/*** EOF: gbammu.cpp *****************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
1区2区3区国产精品| 国产精品69久久久久水密桃| 风间由美一区二区三区在线观看 | 亚洲色图在线播放| 国产精品白丝jk白祙喷水网站| 欧美日高清视频| 一区二区三区国产精品| 99re热这里只有精品视频| 国产亚洲欧洲一区高清在线观看| 日韩激情一区二区| 欧美精品123区| 日韩激情在线观看| 日韩欧美一卡二卡| 精品一区二区在线视频| 精品女同一区二区| 久久精品72免费观看| 久久精品日韩一区二区三区| 国产伦精一区二区三区| 久久在线观看免费| 91在线高清观看| 婷婷中文字幕综合| 欧美在线观看18| 日韩中文欧美在线| 亚洲精品一区二区在线观看| 成人黄色在线看| 日本欧美在线观看| 欧美精品一区二区三区很污很色的| 国产精品一二三四区| 亚洲一区二区视频| 精品99999| 欧美性xxxxx极品少妇| 国产在线精品国自产拍免费| 一区二区免费在线播放| 精品久久久久香蕉网| 欧日韩精品视频| 成人免费视频免费观看| 秋霞成人午夜伦在线观看| 专区另类欧美日韩| 久久久精品蜜桃| 欧美另类变人与禽xxxxx| 97久久精品人人爽人人爽蜜臀| 日韩成人午夜电影| 一区二区三区影院| 国产精品国产三级国产普通话三级| 日韩欧美一区二区视频| 欧美自拍偷拍午夜视频| 99精品欧美一区| 欧美日韩精品一区二区三区四区| 国产一区三区三区| 美女任你摸久久| 日本视频免费一区| 午夜精品久久一牛影视| 亚洲综合久久久久| 亚洲综合区在线| 亚洲已满18点击进入久久| 亚洲免费大片在线观看| 亚洲三级理论片| 亚洲图片自拍偷拍| 午夜av一区二区三区| 日本v片在线高清不卡在线观看| 日韩av二区在线播放| 久久99国内精品| 国产91精品一区二区麻豆网站| 国产馆精品极品| 在线视频国内一区二区| 欧美一级黄色大片| 久久你懂得1024| 一区二区三区自拍| 视频一区视频二区中文| 国产在线视视频有精品| 成人动漫视频在线| 欧美性淫爽ww久久久久无| 日韩一区二区三区免费观看| 国产精品色在线| 婷婷夜色潮精品综合在线| 国产98色在线|日韩| 在线观看免费亚洲| 久久久久久免费毛片精品| 亚洲欧美日韩小说| 韩日欧美一区二区三区| 91免费看视频| 久久精品欧美一区二区三区不卡 | 精品人在线二区三区| 欧美国产丝袜视频| 日韩成人一级大片| 94色蜜桃网一区二区三区| 欧美第一区第二区| 亚洲一级在线观看| 国产91精品在线观看| 亚洲精品一区二区三区影院| 亚洲3atv精品一区二区三区| 97久久超碰国产精品电影| 久久女同互慰一区二区三区| 麻豆一区二区99久久久久| 欧美色图免费看| 亚洲女女做受ⅹxx高潮| voyeur盗摄精品| 国产精品天天看| 国产成人激情av| 欧美韩国日本不卡| 国产在线看一区| 久久久午夜电影| 国产成人亚洲精品狼色在线| 国产亚洲欧美日韩在线一区| 国产精品亚洲一区二区三区在线| 欧美精品一区二区久久久| 久久99精品国产麻豆婷婷洗澡| 日韩亚洲欧美在线| 久久精品免费看| 久久久精品综合| 91老司机福利 在线| 一区二区三区不卡视频| 91国偷自产一区二区开放时间 | 亚洲福利视频一区| 欧美精品电影在线播放| 奇米色一区二区| 日韩欧美视频在线| 国产成人在线色| 亚洲乱码中文字幕| 日韩欧美专区在线| 粉嫩aⅴ一区二区三区四区 | 亚洲国产另类av| 亚洲精品一区二区三区99| 99精品视频在线观看| 日本成人在线一区| 自拍偷拍国产精品| 欧美大度的电影原声| av电影天堂一区二区在线观看| 亚洲成人先锋电影| 国产色婷婷亚洲99精品小说| 在线观看成人小视频| 国产成人av一区二区| 日韩国产在线一| 亚洲精品免费在线| 国产欧美日本一区视频| 欧美一级欧美一级在线播放| 91捆绑美女网站| 国产白丝精品91爽爽久久| 日本欧美韩国一区三区| 亚洲一区二区三区四区中文字幕| 国产亚洲午夜高清国产拍精品| 日韩一级免费观看| 欧美在线不卡一区| 91在线你懂得| 成人毛片在线观看| 日本视频中文字幕一区二区三区| 1000精品久久久久久久久| 精品成人一区二区| 亚洲精品一区二区三区在线观看| 欧美一级日韩不卡播放免费| 91精品国产一区二区| 欧美一区国产二区| 欧美韩国一区二区| 精品中文av资源站在线观看| 久久精品视频免费| 色久综合一二码| 久久超碰97人人做人人爱| 亚洲欧美日韩中文字幕一区二区三区 | 日本成人在线视频网站| 免费在线观看不卡| 国内外精品视频| 国产乱码精品一品二品| 国产99精品在线观看| 成人app在线观看| 色综合久久中文字幕| 欧美日韩国产高清一区| 欧美成人猛片aaaaaaa| 国产精品女主播av| 亚洲五月六月丁香激情| 国产一区二区网址| 色综合天天视频在线观看| 日韩午夜激情视频| 中文字幕在线一区二区三区| 亚洲va国产va欧美va观看| 国产在线精品不卡| 欧美日韩国产片| 国产精品久线观看视频| 亚洲va韩国va欧美va精品| 另类调教123区 | 成人精品免费看| 欧美剧情电影在线观看完整版免费励志电影| 欧美精品精品一区| 亚洲欧美怡红院| 久久国产精品免费| 色综合中文字幕国产 | 久久精品国产一区二区三区免费看| 国产精品538一区二区在线| 91精品久久久久久久91蜜桃 | 久久久电影一区二区三区| 一级做a爱片久久| 国产成人三级在线观看| 日韩视频国产视频| 日韩影院在线观看| 欧美午夜一区二区三区免费大片| 欧美国产日本韩| 国产精品资源在线| 久久久三级国产网站| 日韩福利视频网| 精品美女一区二区三区| 激情偷乱视频一区二区三区|