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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rom.cpp

?? 一個gba的模擬器源代碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
        }
        sndRegChange=1;
    }
    else if ((addr>=0xff10)&&(addr<0xff30))
    {
        sndRegChange=1;
        hiRam[addr&0xff]=v;
    }
    else if ((addr>=0xff30)&&(addr<0xff40))
    {
//        if ((!(hiRam[0x26]&0x80))||(!(hiRam[0x1a]&0x80)))
            hiRam[addr&0xff]=v;
    }
    else if (addr==0xff40)
    {
        if (!(v&0x80))
            displayEnabled=0;
        if ((!(hiRam[0x40]&0x80))&&(v&0x80))
        {
            lcdY=0;
            lcdMode=0;
        }
        hiRam[0x40]=v;
    }
    else if (addr==0xff44)
    {
        lcdY=0; lcdMode=0;
        hiRam[0x44]=0;
    #ifndef EXECTRACK
        if ((hiRam[0x41]&0x40)&&(lcdY==hiRam[0x45]))
            intReq|=INT_LCDC;
    #endif
    #ifndef C_CORE
        minTime=0;
    #endif
    }
    else if (addr==0xff45)
    {
        hiRam[0x45]=v;
    #ifndef EXECTRACK
        if ((v==lcdY)&&(hiRam[0x41]&0x40))
            intReq|=INT_LCDC;
    #endif
    #ifndef C_CORE
        minTime=0;
    #endif
    }
    else if (addr==0xff46)
    {
//        if ((R.PC.D<0xff80)&&(debugWarn[DBW_DMA]))
        if ((regPC<0xff80)&&(debugWarn[DBW_DMA]))
            DebugWarn(DBW_DMA);
        dmaClk=640;
    #ifndef C_CORE
        minTime=0;
    #endif
        if (v>0xf1) return;
        if (v<0x80)
        {
            dmaType=0;
            if (!mem[v>>4]) return;
            memcpy(oam,&mem[v>>4][(v&0xf)<<8],0xa0);
        }
        else if (v<0xa0)
        {
            dmaType=1;
            memcpy(oam,&vidRam[(vidPage<<13)|(v&0x1f)<<8],0xa0);
        }
        else if (v<0xf0)
        {
            dmaType=2;
            if (!mem[v>>4]) return;
            memcpy(oam,&mem[v>>4][(v&0xf)<<8],0xa0);
        }
        else
        {
            dmaType=2;
            memcpy(oam,&intRam[(hiRam[0x70]<<12)|(v&0x1f)<<8],0xa0);
        }
    }
    else if (addr==0xff47)
    {
        hiRam[0x47]=v;
        if (!cgb)
        {
            bgPal[0]=bgPalGB[0]=grayVal[v&3];
            bgPal[1]=bgPalGB[1]=grayVal[(v>>2)&3];
            bgPal[2]=bgPalGB[2]=grayVal[(v>>4)&3];
            bgPal[3]=bgPalGB[3]=grayVal[(v>>6)&3];
        }
    }
    else if (addr==0xff48)
    {
        hiRam[0x48]=v;
        if (!cgb)
        {
            objPal[0]=objPalGB[0]=grayVal[v&3];
            objPal[1]=objPalGB[1]=grayVal[(v>>2)&3];
            objPal[2]=objPalGB[2]=grayVal[(v>>4)&3];
            objPal[3]=objPalGB[3]=grayVal[(v>>6)&3];
        }
    }
    else if (addr==0xff49)
    {
        hiRam[0x49]=v;
        if (!cgb)
        {
            objPal[4]=objPalGB[4]=grayVal[v&3];
            objPal[5]=objPalGB[5]=grayVal[(v>>2)&3];
            objPal[6]=objPalGB[6]=grayVal[(v>>4)&3];
            objPal[7]=objPalGB[7]=grayVal[(v>>6)&3];
        }
    }
    else if (addr==0xff4d)
        hiRam[0x4d]=(hiRam[0x4d]&0xfe)|(v&1);
    else if (addr==0xff4f)
    {
        hiRam[0x4f]=v;
        vidPage=v&1;
        mem[8]=&vidRam[vidPage<<13];
        mem[9]=&vidRam[(vidPage<<13)+0x1000];
    }
    else if (addr==0xff55)
    {
        hiRam[0x55]=v;
//        if (((v&0x80))&&(lcdMode!=1))
//        {
//            if (debugWarn[DBW_GDMA])
//                DebugWarn(DBW_GDMA);
//        }
//        else
        {
            int src=((hiRam[0x51]<<4)|(hiRam[0x52]>>4))<<4;
            int dest=((((hiRam[0x53]&31)|0x80)<<4)|(hiRam[0x54]>>4))<<4;
            if ((dest>=0x8000)&&(dest<=0x9fff)&&(mem[src>>12]))
            {
                int len=((v&127)+1)<<4;
                for (int i=0;i<len;i++,dest++,src++)
                    vidRam[(vidPage<<13)+(dest&0x1fff)]=mem[src>>12][src&0xfff];
            }
//            hiRam[0x55]&=0x7f;
//            hiRam[0x55]|=0x80;
            if (!(v&0x80))
                gdmaClk=(210+((727*(v&0x7f))/100)*clkMult)*4;
            hiRam[0x55]=0xff;
        }
    }
    else if (addr==0xff69)
    {
        cgb=1;
        if (hiRam[0x68]&1)
        {
            bgPalGB[(hiRam[0x68]>>1)&31]=(bgPalGB[(hiRam[0x68]>>1)&31]&0xff)|(v<<8);
            bgPal[(hiRam[0x68]>>1)&31]=Filter[bgPalGB[(hiRam[0x68]>>1)&31]&0x7fff];
        }
        else
        {
            bgPalGB[(hiRam[0x68]>>1)&31]=(bgPalGB[(hiRam[0x68]>>1)&31]&0xff00)|v;
            bgPal[(hiRam[0x68]>>1)&31]=Filter[bgPalGB[(hiRam[0x68]>>1)&31]&0x7fff];
        }
        if (hiRam[0x68]&0x80)
            hiRam[0x68]=((hiRam[0x68]+1)&63)|0x80;
    }
    else if (addr==0xff6b)
    {
        cgb=1;
        if (hiRam[0x6a]&1)
        {
            objPalGB[(hiRam[0x6a]>>1)&31]=(objPalGB[(hiRam[0x6a]>>1)&31]&0xff)|(v<<8);
            objPal[(hiRam[0x6a]>>1)&31]=Filter[objPalGB[(hiRam[0x6a]>>1)&31]&0x7fff];
        }
        else
        {
            objPalGB[(hiRam[0x6a]>>1)&31]=(objPalGB[(hiRam[0x6a]>>1)&31]&0xff00)|v;
            objPal[(hiRam[0x6a]>>1)&31]=Filter[objPalGB[(hiRam[0x6a]>>1)&31]&0x7fff];
        }
        if (hiRam[0x6a]&0x80)
            hiRam[0x6a]=((hiRam[0x6a]+1)&63)|0x80;
    }
    else if (addr==0xff70)
    {
        hiRam[0x70]=((v&7)==0)?1:(v&7);
        mem[0xd]=&intRam[hiRam[0x70]<<12];
    }
    else
        hiRam[addr&0xff]=v;
}

void putmem_word(unsigned short addr,unsigned short v)
{
    putmem(addr,v&0xff);
    putmem(addr+1,(v>>8)&0xff);
}

void putmem_dword(unsigned short addr,unsigned long v)
{
    putmem(addr,v&0xff);
    putmem(addr+1,(v>>8)&0xff);
    putmem(addr+2,(v>>16)&0xff);
    putmem(addr+3,(v>>24)&0xff);
}

#ifndef C_CORE
extern "C" int AsmZ80_Execute(int cycles);
#endif
void OneInstruction()
{
    if (!romLoaded) return;
    UpdateDebugCheckEnable();
    #ifdef C_CORE
        Z80_Execute(1);
    #else
        AsmZ80_Execute(1);
    #endif
}

void Execute()
{
    if (!romLoaded) return;
    if (!run) return;
#ifdef EXECTRACK
#ifdef C_CORE
    int cycles=Z80_Execute(1);
    SoundUpdate(cycles*(3-clkMult));
    fwrite(&regAF,2,1,execTrack);
    fwrite(&regBC,2,1,execTrack);
    fwrite(&regDE,2,1,execTrack);
    fwrite(&regHL,2,1,execTrack);
    fwrite(&regSP,2,1,execTrack);
    fwrite(&regPC,2,1,execTrack);
    hiRam[0x44]=lcdY;
    fwrite(hiRam,0xff,1,execTrack);
    fwrite(&intReq,4,1,execTrack);
    fwrite(&lcdMode,4,1,execTrack);
#else
    WORD prevPC=regPC;
    int cycles=AsmZ80_Execute(1);
    SoundUpdate(cycles*(3-clkMult));
    WORD cAF,cBC,cDE,cHL,cSP,cPC;
    fread(&cAF,2,1,execTrack);
    fread(&cBC,2,1,execTrack);
    fread(&cDE,2,1,execTrack);
    fread(&cHL,2,1,execTrack);
    fread(&cSP,2,1,execTrack);
    fread(&cPC,2,1,execTrack);
    fread(hiRam,0x80,1,execTrack);
    unsigned char wantHiRam[0x80];
    fread(wantHiRam,0x7f,1,execTrack);
    lcdY=hiRam[0x44];
    fread(&intReq,4,1,execTrack);
    fread(&lcdMode,4,1,execTrack);
    int oldCAF=cAF;
    int z=cAF&0x40?0x80:0;
    int n=cAF&0x2?0x40:0;
    int h=cAF&0x10?0x20:0;
    int c=cAF&1?0x10:0;
    cAF&=0xff00;
    cAF|=z|n|h|c;
    if (((regPC-prevPC)==1)&&(((getmem(prevPC)&(~0x30))==9)||
        ((getmem(prevPC)&(~0x18))==7)))
    {
        regAF=(regAF&0xff00)|(z?0x40:0)|(h?0x10:0)|(c?1:0);
        nFlag=n?1:0;
    }
    z=regAF&0x40?0x80:0;
    n=nFlag?0x40:0;
    h=regAF&0x10?0x20:0;
    c=regAF&1?0x10:0;
    int badAddr=-1;
    for (int i=0;i<0x7f;i++)
    {
        if (hiRam[i+0x80]!=wantHiRam[i])
        {
            if ((((0xff80+i)==regSP)||((0xff80+i)==(regSP+1)))&&(getmem(prevPC)==0xf5))
            {
                hiRam[i+0x80]=wantHiRam[i];
                continue;
            }
            badAddr=0xff80+i;
            break;
        }
    }
    if (((cAF&0xfff0)!=(regAF&0xff00|z|n|h|c))||(cBC!=regBC)||(cDE!=regDE)||(cHL!=regHL)||
        (cSP!=regSP)||(cPC!=regPC)||(badAddr!=-1))
    {
        debug=1;
        run=0;
        debugStartPC=regPC;
        DebugWnd->Show();
        DebugWnd->Update();
        char str[256];
        if (badAddr!=-1)
            sprintf(str,"Should be:\nAF=%4.4X BC=%4.4X DE=%4.4X HL=%4.4X SP=%4.4X PC=%4.4X\n"
                "Bad addr=%4.4X, should be=%2.2X  Prev PC=%4.4X",cAF,cBC,cDE,cHL,cSP,cPC,(badAddr!=-1)?badAddr:0,wantHiRam[badAddr-0xff80],prevPC);
        else
            sprintf(str,"Should be:\nAF=%4.4X BC=%4.4X DE=%4.4X HL=%4.4X SP=%4.4X PC=%4.4X\nPrev PC=%4.4X",
                cAF,cBC,cDE,cHL,cSP,cPC,prevPC);
        MessageBox(NULL,str,"",MB_OK);
    }
#endif
    return;
#endif
    UpdateDebugCheckEnable();
    static int leftOver=0;
    if (soundEnable)
    {
        for (int i=0;i<(sndQuality*16);i++)
        {
            #ifdef C_CORE
                int cycles=Z80_Execute(((256/sndQuality)*clkMult)-leftOver);
            #else
              int cycles=AsmZ80_Execute(((256/sndQuality)*clkMult)-leftOver);
            #endif
            SoundUpdate(cycles*(3-clkMult));
            leftOver=cycles-(((256/sndQuality)*clkMult)-leftOver);
        }
    }
    else
    {
        #ifdef C_CORE
            int cycles=Z80_Execute((4096*clkMult)-leftOver);
        #else
            int cycles=AsmZ80_Execute((4096*clkMult)-leftOver);
        #endif
        leftOver=cycles-((4096*clkMult)-leftOver);
    }
}

void Reset()
{
    if (!romLoaded) return;
    #ifdef C_CORE
        Z80_Reset();
    #endif
    regPC=0x100;
    regBC=0x13;
    regDE=0xd8;
    regHL=0x14d;
    regSP=0xfffe;
    #ifdef C_CORE
        regAF=0x11b0;
        #ifdef EXECTRACK
            execTrack=fopen("ExecTrack.dat","wb");
        #endif
    #else
        regAF=0x1110;//0x11b0;
        #ifdef EXECTRACK
            execTrack=fopen("ExecTrack.dat","rb");
        #endif
    #endif
    hiRam[5]=0; hiRam[6]=0; hiRam[7]=0; hiRam[0xf]=0; hiRam[0x10]=0x80;
    hiRam[0x11]=0xbf; hiRam[0x12]=0xf3; hiRam[0x14]=0x3f;
    hiRam[0x16]=0x3f; hiRam[0x17]=0; hiRam[0x19]=0x3f;
    hiRam[0x1a]=0x7f; hiRam[0x1b]=0xff; hiRam[0x1c]=0x9f;
    hiRam[0x1e]=0xbf; hiRam[0x20]=0xff; hiRam[0x21]=0;
    hiRam[0x22]=0; hiRam[0x23]=0x3f; hiRam[0x24]=0x77;
    hiRam[0x25]=0; hiRam[0x26]=0xf1; hiRam[0x40]=0x91;
    hiRam[0x42]=0; hiRam[0x43]=0; hiRam[0x45]=0;
    hiRam[0x47]=0xfc; hiRam[0x48]=0xff; hiRam[0x49]=0xff;
    hiRam[0x4a]=0; hiRam[0x4b]=0; hiRam[0xff]=0;
    hiRam[0x4d]=0; hiRam[0x4f]=0; hiRam[0x68]=0;
    hiRam[0x70]=1;
    mbc1Mode=0; romPage=1; ramPage=0; ramEnable=0;
    mem[0]=rom; mem[1]=&rom[0x1000];
    mem[2]=&rom[0x2000]; mem[3]=&rom[0x3000];
    mem[4]=&rom[0x4000]; mem[5]=&rom[0x5000];
    mem[6]=&rom[0x6000]; mem[7]=&rom[0x7000];
    mem[8]=vidRam; mem[9]=&vidRam[0x1000];
    mem[0xa]=NULL; mem[0xb]=NULL;
    mem[0xc]=intRam; mem[0xd]=&intRam[0x1000];
    mem[0xe]=intRam; mem[0xf]=NULL;
    intReq=0; intReq2=0; intReq3=0; timerClkCount=0;
    lcdMode=1; lcdY=144;
    clkMult=1; vidPage=0;
    memset(vidRam,0,0x4000);
    for (int i=0;i<8;i++)
    {
        bgPal[i<<2]=bgPalGB[i<<2]=(31<<10)|(31<<5)|31;
        bgPal[(i<<2)+1]=bgPalGB[(i<<2)+1]=(21<<10)|(21<<5)|21;
        bgPal[(i<<2)+2]=bgPalGB[(i<<2)+2]=(10<<10)|(10<<5)|10;
        bgPal[(i<<2)+3]=bgPalGB[(i<<2)+3]=0;
        objPal[i<<2]=objPalGB[i<<2]=(31<<10)|(31<<5)|31;
        objPal[(i<<2)+1]=objPalGB[(i<<2)+1]=(21<<10)|(21<<5)|21;
        objPal[(i<<2)+2]=objPalGB[(i<<2)+2]=(10<<10)|(10<<5)|10;
        objPal[(i<<2)+3]=objPalGB[(i<<2)+3]=0;
    }
    hiRam[0x68]=0x80; hiRam[0x6a]=0x80;
    hiRam[0x69]=bgPal[0]&0xff;
    hiRam[0x6b]=objPal[0]&0xff;
    snd1Enable=snd2Enable=snd3Enable=snd4Enable=0;
    sndRegChange=1;
    displayEnabled=1;
    cgb=0;
    memset(vidRam,0,0x4000);
    memset(oam,0,0xa0);
}

/*int _USERENTRY sprcmp(const void *a,const void *b)
{
    asm mov eax,a
    asm mov ebx,b
    asm mov cl,[eax+4]
    asm cmp cl,[ebx+4]
    asm jne sprcmp_notEqu
    asm mov cl,[eax+1]
    asm cmp cl,[ebx+1]
    asm jl sprcmp_less
    asm jg sprcmp_greater
    asm xor eax,eax

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久一留热品黄| 国产呦精品一区二区三区网站| 午夜国产不卡在线观看视频| 国产精品一二三四五| 欧美日韩中文精品| 久久婷婷国产综合精品青草| 亚洲国产欧美日韩另类综合| 国产精品911| 欧美电影免费观看完整版| 欧美性猛交xxxx黑人交| 日韩视频免费观看高清完整版| 亚洲免费在线视频| 成人精品视频一区二区三区| 91精品欧美综合在线观看最新| 亚洲伦理在线免费看| 国产91精品一区二区麻豆亚洲| 日韩欧美国产一区在线观看| 亚洲高清视频在线| 欧洲精品一区二区| 国产精品亲子伦对白| 国产乱人伦偷精品视频不卡| 精品少妇一区二区三区视频免付费 | 一区二区三区在线看| 国产高清久久久| 26uuu亚洲综合色欧美| 久久国产欧美日韩精品| 日韩精品自拍偷拍| 免费久久99精品国产| 日韩一级黄色片| 日韩va欧美va亚洲va久久| 欧美三级中文字| 亚欧色一区w666天堂| 欧美日韩国产高清一区| 亚洲chinese男男1069| 欧美日本在线播放| 首页国产丝袜综合| 日韩一区二区三区在线视频| 日本vs亚洲vs韩国一区三区| 欧美电影免费提供在线观看| 国产综合久久久久久久久久久久| 精品少妇一区二区| 国产福利精品导航| 亚洲精品视频在线| 欧美亚洲动漫另类| 日韩av不卡在线观看| 精品国产一区a| 国产乱子轮精品视频| 国产日韩三级在线| 99在线精品一区二区三区| 亚洲免费色视频| 欧美日韩国产电影| 国产露脸91国语对白| 中文字幕一区二区三中文字幕| 91久久精品日日躁夜夜躁欧美| 亚洲一区在线电影| 精品国产一区二区三区av性色| 国产高清不卡一区| 亚洲老妇xxxxxx| 欧美电影免费观看完整版| 欧美日韩一区二区欧美激情| 黄一区二区三区| 亚洲日本成人在线观看| 欧美精选在线播放| 久久精品国产精品亚洲红杏| 国产精品妹子av| 欧美美女直播网站| 国产伦精品一区二区三区免费| 亚洲色图清纯唯美| 2020国产精品自拍| 91久久线看在观草草青青| 日韩成人av影视| 亚洲人成精品久久久久久| 91麻豆精品国产| 成人午夜av电影| 免费观看日韩av| 一区二区免费在线播放| 欧美精品一区二区久久久| 91小视频在线| 国产不卡在线一区| 欧美aⅴ一区二区三区视频| 亚洲免费av观看| 国产欧美日韩亚州综合| 91精品国产91久久综合桃花| 97久久超碰精品国产| 激情成人综合网| 日精品一区二区| 一区二区三区精品视频在线| 日本一区二区动态图| 日韩天堂在线观看| 欧美伦理电影网| 色老综合老女人久久久| 国产精品99久久久久久久vr| 美女一区二区三区| 五月激情六月综合| 亚洲国产一区二区三区青草影视| 国产亚洲一区二区三区四区| 精品久久久久av影院| 欧美另类高清zo欧美| 欧美性感一类影片在线播放| 99麻豆久久久国产精品免费优播| 国产精品亚洲人在线观看| 精品一区二区三区在线观看| 六月丁香婷婷色狠狠久久| 视频一区欧美精品| 亚洲综合色自拍一区| 亚洲女人的天堂| 日韩久久一区二区| 亚洲欧美在线视频| 国产精品三级av| 久久蜜臀精品av| 国产婷婷色一区二区三区在线| 精品欧美一区二区三区精品久久| 日韩一区二区三区三四区视频在线观看 | 亚洲午夜精品久久久久久久久| 亚洲精品免费播放| 亚洲黄色av一区| 亚洲最大的成人av| 亚洲第一综合色| 日本aⅴ亚洲精品中文乱码| 日本成人在线网站| 裸体健美xxxx欧美裸体表演| 久久精品国产澳门| 国产美女娇喘av呻吟久久| 国产在线视视频有精品| 欧美一区二区三区白人| 日韩一区二区三区三四区视频在线观看 | 国产精品久久久久三级| 日韩毛片在线免费观看| 一区二区三区在线视频观看58| 亚洲男人的天堂av| 天天影视网天天综合色在线播放| 天使萌一区二区三区免费观看| 日韩av中文在线观看| 韩国av一区二区| 99国产精品久久| 欧美午夜精品久久久久久孕妇| 欧美精品丝袜中出| 精品国产免费人成电影在线观看四季 | 亚洲成av人片在线观看无码| 午夜伊人狠狠久久| 国内成人免费视频| 色综合久久天天综合网| 91精品久久久久久久99蜜桃| 久久新电视剧免费观看| 亚洲免费成人av| 蜜桃一区二区三区四区| 成人中文字幕电影| 欧美日韩国产高清一区二区| 26uuu另类欧美| 亚洲免费av观看| 国产原创一区二区三区| 99久久99久久精品免费观看| 91 com成人网| 综合中文字幕亚洲| 青青草伊人久久| 色综合婷婷久久| 26uuu国产在线精品一区二区| 136国产福利精品导航| 美洲天堂一区二卡三卡四卡视频| 99国产精品久久久久久久久久| 91精品国产欧美一区二区18| 国产精品伦理在线| 麻豆91精品视频| 欧美网站一区二区| 欧美激情在线一区二区三区| 日韩高清在线观看| 91浏览器打开| 久久久久国产精品免费免费搜索| 一区二区三区不卡视频| 国产成人精品www牛牛影视| 538prom精品视频线放| 亚洲视频一区在线观看| 国产一区二区三区日韩| 69p69国产精品| 亚洲国产一区二区三区| 99久久99久久久精品齐齐| 久久久精品日韩欧美| 人人超碰91尤物精品国产| 欧洲色大大久久| 亚洲欧美日韩精品久久久久| 国产大陆a不卡| www激情久久| 久久国产精品99久久人人澡| 欧美日韩精品一二三区| 亚洲小说春色综合另类电影| 色综合久久久久综合| 国产精品久久久久久久久动漫 | 在线亚洲+欧美+日本专区| 国产精品久久久一本精品| 成人综合婷婷国产精品久久蜜臀| 精品少妇一区二区三区视频免付费| 午夜影院在线观看欧美| 欧美色综合网站| 亚洲国产综合91精品麻豆| 日本伦理一区二区| 一区二区三区视频在线看| 色婷婷精品久久二区二区蜜臀av | 中文字幕国产精品一区二区| 国内精品写真在线观看| www激情久久|