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

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

?? rom.cpp

?? 一個gba的模擬器源代碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    asm jmp sprcmp_ret
sprcmp_notEqu:
    asm jl sprcmp_greater
sprcmp_less:
    asm mov eax,-1
    asm jmp sprcmp_ret
sprcmp_greater:
    asm mov eax,1
sprcmp_ret:
}*/

void RenderLine()
{
    if (lcdY>=144) return;
    if (!displayEnabled)
    {
        if (scaleFact==1)
        {
            char *ptr0=ScreenLine[lcdY];
            int value=Filter[0x7fff]|(Filter[0x7fff]<<16);
            asm mov edi,ptr0
            asm mov eax,value
            asm mov ecx,80
            asm rep stosd
        }
        else
        {
            char *ptr0=ScreenLine[lcdY<<1];
            char *ptr1=ScreenLine[(lcdY<<1)+1];
            int value=Filter[0x7fff]|(Filter[0x7fff]<<16);
            asm mov edi,ptr0
            asm mov eax,value
            asm mov ecx,160
            asm rep stosd
            asm mov edi,ptr1
            asm mov eax,value
            asm mov ecx,160
            asm rep stosd
        }
        return;
    }
    unsigned short v[160],bc[160];
    char bpri[160];
//    memset(v,0,320);
//    memset(bc,0,320);
//    if (hiRam[0x40]&1)
    {
        int bkty=((hiRam[0x42]+lcdY)&0xff)>>3;
        int bkyo=(hiRam[0x42]+lcdY)&7;
        int bktx=hiRam[0x43]>>3;
        int bkxo=hiRam[0x43]&7;
        int vidRamBase=((hiRam[0x40]&8)?0x1c00:0x1800)+(bkty<<5);
        int tileBase=((hiRam[0x40]&16)?0:0x1000);
        for (int i=0;i<160;)
        {
            int ti=vidRam[vidRamBase+bktx];
            int pn=vidRam[vidRamBase+0x2000+bktx];
            int attr=pn&0xf8;
            pn&=7;
            if ((!(hiRam[0x40]&16))&&(ti>=0x80))
                ti=-(0x100-ti);
            int taddr=tileBase+(ti*16);
            if (attr&8) taddr+=0x2000;
            int v0=vidRam[taddr+(((attr&0x40)?(7-bkyo):bkyo)<<1)];
            int v1=vidRam[taddr+(((attr&0x40)?(7-bkyo):bkyo)<<1)+1];
            for (;(bkxo<8)&&(i<160);)
            {
                int c;
                if (attr&0x20)
                {
                    c=(v0&(0x80>>(7-bkxo)))?1:0;
                    c|=(v1&(0x80>>(7-bkxo)))?2:0;
                }
                else
                {
                    c=(v0&(0x80>>bkxo))?1:0;
                    c|=(v1&(0x80>>bkxo))?2:0;
                }
                bpri[i]=((attr&0x80)&&(c));
                bc[i]=c;
                v[i]=bgPal[(pn<<2)+c];
//                r[i]=(bgPal[(pn<<2)+c]&31)<<3;
//                g[i]=((bgPal[(pn<<2)+c]>>5)&31)<<3;
//                b[i]=((bgPal[(pn<<2)+c]>>10)&31)<<3;
                bkxo++; i++;
            }
            bkxo=0; bktx=(bktx+1)&31;
        }
    }
    static int wy,wyr;
    if (lcdY==0) { wy=hiRam[0x4a]; wyr=0; }
    if ((wy<=lcdY)&&(hiRam[0x4b]<=166)&&
        (hiRam[0x40]&0x20))
    {
        int wty=wyr>>3;
        int wyo=wyr&7;
        wyr++;
        int wtx=0;
        int wxo=0;
        for (int i=(hiRam[0x4b]-7);i<160;)
        {
            if (i<0)
            {
                wxo-=i;
                i=0;
                continue;
            }
            int ti=vidRam[((hiRam[0x40]&0x40)?0x1c00:0x1800)+
                (wty<<5)+wtx];
            int pn=vidRam[((hiRam[0x40]&0x40)?0x3c00:0x3800)+
                (wty<<5)+wtx];
            int attr=pn&0xf8;
            pn&=7;
            if ((!(hiRam[0x40]&16))&&(ti>=0x80))
                ti=-(0x100-ti);
            int taddr=((hiRam[0x40]&16)?0:0x1000)+(ti*16);
            if (attr&8) taddr+=0x2000;
            int v0=vidRam[taddr+(((attr&0x40)?(7-wyo):wyo)<<1)];
            int v1=vidRam[taddr+(((attr&0x40)?(7-wyo):wyo)<<1)+1];
            for (;(wxo<8)&&(i<160);)
            {
                int c;
                if (attr&0x20)
                {
                    c=(v0&(0x80>>(7-wxo)))?1:0;
                    c|=(v1&(0x80>>(7-wxo)))?2:0;
                }
                else
                {
                    c=(v0&(0x80>>wxo))?1:0;
                    c|=(v1&(0x80>>wxo))?2:0;
                }
                bc[i]=c;
                v[i]=bgPal[(pn<<2)+c];
//                r[i]=(bgPal[(pn<<2)+c]&31)<<3;
//                g[i]=((bgPal[(pn<<2)+c]>>5)&31)<<3;
//                b[i]=((bgPal[(pn<<2)+c]>>10)&31)<<3;
                wxo++; i++;
            }
            wxo=0; wtx++;
        }
    }
    if (hiRam[0x40]&2)
    {
        char s[40];
/*        asm lea eax,s
        asm lea ebx,oam
        asm mov ecx,40
       sprCopyLoop:
        asm mov edx,[ebx]
        asm mov [eax],edx
        asm mov [eax+4],cl
        asm add ebx,4
        asm add eax,8
        asm loop sprCopyLoop
        qsort(s,40,8,sprcmp);*/
        if (hiRam[0x40]&4)
        {
            int i,j,k,bit;
            for (i=0,j=0;i<40;i++)
            {
                if ((oam[i<<2]-16)>lcdY)
                    s[i]=0;
                else if ((oam[i<<2]-16+15)<lcdY)
                    s[i]=0;
                else if (oam[(i<<2)+1]>=168)
                {
                    j++;
                    s[i]=0;
                }
                else if (j>=10)
                    s[i]=0;
                else
                {
                    s[i]=1;
                    j++;
                }
            }
            for (i=39;i>=0;i--)
            {
                if (!s[i])
                    continue;
                int saddr=(oam[(i<<2)+2]&(~1))<<4;
                if (oam[(i<<2)+3]&0x40)
                    saddr+=(15+((oam[i<<2]-16)-lcdY))<<1;
                else
                    saddr+=(lcdY-(oam[i<<2]-16))<<1;
                if (oam[(i<<2)+3]&8)
                    saddr+=0x2000;
                int v0=vidRam[saddr];
                int v1=vidRam[saddr+1];
                int pn=(oam[(i<<2)+3]&7)|(cgb?0:((oam[(i<<2)+3]>>4)&1));
                bit=(oam[(i<<2)+3]&0x20)?0:7;
                for (j=oam[(i<<2)+1]-8,k=0;(j<160)&&(k<8);j++,k++,bit+=(oam[(i<<2)+3]&0x20)?1:-1)
                {
                    if (j<0) continue;
                    if (bpri[j]) continue;
                    if ((oam[(i<<2)+3]&0x80)&&(bc[j])) continue;
                    int c=(v0&(1<<bit))?1:0;
                    c|=(v1&(1<<bit))?2:0;
                    if (c==0) continue;
                    v[j]=objPal[(pn<<2)+c];
//                    r[j]=(objPal[(pn<<2)+c]&31)<<3;
//                    g[j]=((objPal[(pn<<2)+c]>>5)&31)<<3;
//                    b[j]=((objPal[(pn<<2)+c]>>10)&31)<<3;
                }
            }
        }
        else
        {
            int i,j,k,bit;
            for (i=0,j=0;i<40;i++)
            {
                if ((oam[i<<2]-16)>lcdY)
                    s[i]=0;
                else if ((oam[i<<2]-16+7)<lcdY)
                    s[i]=0;
                else if (oam[(i<<2)+1]>=168)
                {
                    j++;
                    s[i]=0;
                }
                else if (j>=10)
                    s[i]=0;
                else
                {
                    s[i]=1;
                    j++;
                }
            }
            for (i=39;i>=0;i--)
            {
                if (!s[i])
                    continue;
                int saddr=oam[(i<<2)+2]<<4;
                if (oam[(i<<2)+3]&0x40)
                    saddr+=(7+((oam[i<<2]-16)-lcdY))<<1;
                else
                    saddr+=(lcdY-(oam[i<<2]-16))<<1;
                if (oam[(i<<2)+3]&8)
                    saddr+=0x2000;
                int v0=vidRam[saddr];
                int v1=vidRam[saddr+1];
                int pn=(oam[(i<<2)+3]&7)|(cgb?0:((oam[(i<<2)+3]>>4)&1));
                bit=(oam[(i<<2)+3]&0x20)?0:7;
                for (j=oam[(i<<2)+1]-8,k=0;(j<160)&&(k<8);j++,k++,bit+=(oam[(i<<2)+3]&0x20)?1:-1)
                {
                    if (j<0) continue;
                    if (bpri[j]) continue;
                    if ((oam[(i<<2)+3]&0x80)&&(bc[j])) continue;
                    int c=(v0&(1<<bit))?1:0;
                    c|=(v1&(1<<bit))?2:0;
                    if (c==0) continue;
                    v[j]=objPal[(pn<<2)+c];
//                    r[j]=(objPal[(pn<<2)+c]&31)<<3;
//                    g[j]=((objPal[(pn<<2)+c]>>5)&31)<<3;
//                    b[j]=((objPal[(pn<<2)+c]>>10)&31)<<3;
                }
            }
        }
    }
    if (scaleFact==1)
    {
        char *ptr0=ScreenLine[lcdY];
        asm mov edi,ptr0
        asm lea esi,v
        asm mov ecx,80
        asm rep movsd
    }
    else
    {
        char *ptr0=ScreenLine[lcdY<<1];
        char *ptr1=ScreenLine[(lcdY<<1)+1];
        asm mov edi,ptr0
        asm mov edx,ptr1
        asm lea esi,v
        asm mov ecx,160
       copyLoop:
        asm mov bx,[esi]
        asm mov ax,bx
        asm shl eax,16
        asm mov ax,bx
        asm add esi,2
        asm mov [edi],eax
        asm add edi,4
        asm mov [edx],eax
        asm add edx,4
        asm loop copyLoop
    }
/*    for (int i=0;i<160;i++)
    {
        if (scaleFact==1)
        {
            ScreenLine[lcdY][i<<1]=r[i]&0xff;
            ScreenLine[lcdY][(i<<1)+1]=r[i]>>8;
//            ScreenLine[lcdY][(i<<2)+2]=r[i];
        }
        else
        {
            ScreenLine[lcdY<<1][i<<3]=b[i];
            ScreenLine[lcdY<<1][(i<<3)+1]=g[i];
            ScreenLine[lcdY<<1][(i<<3)+2]=r[i];
            ScreenLine[(lcdY<<1)+1][i<<3]=b[i];
            ScreenLine[(lcdY<<1)+1][(i<<3)+1]=g[i];
            ScreenLine[(lcdY<<1)+1][(i<<3)+2]=r[i];
            ScreenLine[lcdY<<1][(i<<3)+4]=b[i];
            ScreenLine[lcdY<<1][(i<<3)+5]=g[i];
            ScreenLine[lcdY<<1][(i<<3)+6]=r[i];
            ScreenLine[(lcdY<<1)+1][(i<<3)+4]=b[i];
            ScreenLine[(lcdY<<1)+1][(i<<3)+5]=g[i];
            ScreenLine[(lcdY<<1)+1][(i<<3)+6]=r[i];
        }
    }*/
}

extern int debugStartPC,debug;
void DebugWarn(int wn)
{
    debugStartPC=previouspc;
    run=0;
    debug=1;
    DebugWnd->Show();
    DebugWnd->Update();
    debugWarnMsg=wn;
}

extern int lcdXOfs,lcdYOfs;
void RedrawLCD()
{
    LCDCanvas->Draw(lcdXOfs,lcdYOfs,bmp);
}

extern int debugRunToCursor,debugCursorAddr;
extern int debugCodeBreakCount,debugCodeBreak[256];
extern int debugDataBreak;
extern int debugStepOver,debugBeginStepOver,endStepOver;
extern int debugStepGoal,debugStepA7,debugEndStepOver;
extern int ignoreStack; 
extern unsigned short oldPC;
void DebugChecks()
{
    int bp,i;
    if (debugRunToCursor)
    {
        if (regPC==debugCursorAddr)
        {
            run=0;
            debug=1;
            debugStartPC=regPC;
            debugRunToCursor=0;
            DebugWnd->Show();
            DebugWnd->Update();
            return;
        }
    }
    for (i=0,bp=0;i<debugCodeBreakCount;i++)
    {
        if (regPC==debugCodeBreak[i])
            bp=1;
    }
    if (bp)
    {
        run=0;
        debug=1;
        debugStartPC=regPC;
        DebugWnd->Show();
        DebugWnd->Update();
        return;
    }
    if (debugDataBreak)
    {
        run=0;
        debug=1;
        debugStartPC=oldPC;
        DebugWnd->Show();
        DebugWnd->Update();
        return;
    }
    if (debugStepOver)
    {
        if (debugBeginStepOver)
        {
            debugBeginStepOver=0;
            if (endStepOver)
            {
                run=0;
                debug=1;
                debugStartPC=regPC;
                debugEndStepOver=1;
                DebugWnd->Show();
                DebugWnd->Update();
                return;
            }
        }
        if (debugStepOver&&(regPC==debugStepGoal)&&
            ((regSP==debugStepA7)||(ignoreStack)))
        {
            run=0;
            debug=1;
            debugStartPC=regPC;
            DebugWnd->Show();
            DebugWnd->Update();
            debugEndStepOver=1;
            return;
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情国产一区二区| 久久av老司机精品网站导航| 日欧美一区二区| 高清在线成人网| 日韩一区二区三区四区 | 国产亚洲精品中文字幕| 亚洲精品乱码久久久久久久久| 九九视频精品免费| 欧美日韩高清不卡| 亚洲免费大片在线观看| 懂色av一区二区三区蜜臀| 日韩欧美国产综合一区| 亚洲成人1区2区| 91九色最新地址| 国产精品乱码人人做人人爱| 久久精品国产亚洲一区二区三区| 欧美熟乱第一页| 一区二区三区在线观看网站| 国产98色在线|日韩| 久久天堂av综合合色蜜桃网| 成人av在线观| 久久影院午夜论| 激情文学综合网| 欧美不卡一二三| 久久99精品一区二区三区三区| 538在线一区二区精品国产| 亚洲成人在线免费| 欧美亚洲国产怡红院影院| 亚洲精品国产精华液| 在线观看视频一区| 亚洲综合色在线| 欧美日韩一区视频| 日韩av一区二区三区| 欧美电影一区二区| 日本不卡高清视频| 欧美r级在线观看| 久久国产精品99久久人人澡| 日韩三级免费观看| 麻豆精品国产91久久久久久| 欧美精品一区二区精品网| 国产一区视频网站| 中文字幕一区二区在线播放| 91在线免费播放| 亚洲国产综合人成综合网站| 91精品国产91久久综合桃花| 久久国产精品99久久人人澡| 久久久久久久久99精品| 成人av动漫网站| 亚洲在线观看免费视频| 制服丝袜中文字幕一区| 国内精品在线播放| 综合色中文字幕| 欧美日本一区二区三区四区| 韩国v欧美v亚洲v日本v| 中文字幕不卡一区| 欧美视频一区在线观看| 麻豆精品国产91久久久久久 | 欧美一区二区国产| 国产一区在线看| 日韩美女久久久| 日韩色视频在线观看| 成人国产精品免费观看| 亚洲综合一区二区三区| 精品动漫一区二区三区在线观看| www.亚洲在线| 免费一区二区视频| 18成人在线观看| 精品久久99ma| 国产日产欧美一区二区三区| 91免费视频观看| 老司机精品视频线观看86| 亚洲人精品午夜| 精品久久一区二区| 在线观看www91| 国产高清不卡一区| 午夜精品在线看| 国产精品嫩草久久久久| 91精品国产综合久久精品图片 | 国产精品毛片a∨一区二区三区| 91国产精品成人| 国产成人精品免费在线| 天天av天天翘天天综合网| 国产精品私人影院| 91精品国产欧美日韩| 91视频在线观看| 国产久卡久卡久卡久卡视频精品| 亚洲愉拍自拍另类高清精品| 久久精品视频在线免费观看| 欧美一区二区三区精品| 欧美亚洲国产一区二区三区va| 成人丝袜18视频在线观看| 麻豆精品国产91久久久久久| 亚洲精品精品亚洲| **网站欧美大片在线观看| 久久久久久电影| 日韩精品在线一区二区| 在线播放91灌醉迷j高跟美女| 色哟哟日韩精品| a4yy欧美一区二区三区| 丁香另类激情小说| 国产激情精品久久久第一区二区 | 久久精品一区二区三区四区| 日韩欧美一区在线| 884aa四虎影成人精品一区| 欧美亚洲国产一卡| 欧美午夜精品一区二区蜜桃| 91九色最新地址| 在线观看一区不卡| 在线精品视频免费观看| 91久久精品一区二区| 91丨国产丨九色丨pron| 91农村精品一区二区在线| 91丝袜美腿高跟国产极品老师| 成人久久18免费网站麻豆| 91麻豆精品国产自产在线观看一区| 欧美男同性恋视频网站| 7777精品伊人久久久大香线蕉最新版 | 亚洲欧洲日韩av| 亚洲美女在线一区| 亚洲一区二区三区国产| 日日骚欧美日韩| 日本vs亚洲vs韩国一区三区二区| 日韩电影一区二区三区四区| 蜜桃一区二区三区在线观看| 国产综合色产在线精品| 国产成人aaa| 99v久久综合狠狠综合久久| 色综合天天综合网天天看片| 色婷婷久久综合| 欧美精品三级在线观看| 欧美电影精品一区二区| 2023国产精华国产精品| 中文幕一区二区三区久久蜜桃| 亚洲美女少妇撒尿| 亚洲成人中文在线| 国内精品国产成人国产三级粉色| 国产成人一区二区精品非洲| 91麻豆成人久久精品二区三区| 欧美日韩不卡一区二区| 久久综合色天天久久综合图片| 国产精品国产三级国产普通话三级 | 国产精品免费网站在线观看| 一区二区在线看| 久久精品国产亚洲高清剧情介绍| 国产不卡视频一区二区三区| 91黄色免费观看| 亚洲精品一区二区在线观看| 亚洲免费在线视频一区 二区| 日本亚洲一区二区| 不卡的av网站| 日韩一级二级三级精品视频| 亚洲国产高清在线观看视频| 亚洲成av人片观看| 成人毛片老司机大片| 9191精品国产综合久久久久久| 国产欧美日韩精品在线| 午夜成人免费视频| 成人免费三级在线| 日韩午夜激情av| 伊人色综合久久天天人手人婷| 韩国v欧美v日本v亚洲v| 欧美日韩国产中文| 中文字幕一区二区视频| 免费av成人在线| 色悠悠久久综合| 国产三级精品三级| 91久久人澡人人添人人爽欧美 | 亚洲视频中文字幕| 国内精品嫩模私拍在线| 欧美浪妇xxxx高跟鞋交| 亚洲色图.com| 国产精品亚洲人在线观看| 欧美一区二区视频在线观看 | 在线播放中文一区| 又紧又大又爽精品一区二区| 国产成人鲁色资源国产91色综 | 国产不卡免费视频| 日韩精品一区二区三区四区| 午夜久久久影院| 日本韩国欧美三级| 亚洲日本青草视频在线怡红院| 成人中文字幕合集| 久久久综合视频| 久久精品免费看| 51精品视频一区二区三区| 亚洲精选视频免费看| 91亚洲国产成人精品一区二三| 日本一区二区视频在线| 国产精品羞羞答答xxdd| 久久视频一区二区| 国产在线视频精品一区| 日韩亚洲欧美一区| 麻豆91在线观看| 精品久久久网站| 狠狠色丁香九九婷婷综合五月| 欧美电视剧在线看免费| 韩国女主播成人在线| 国产亚洲女人久久久久毛片| 国产成人aaa| 《视频一区视频二区|