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

📄 65816d.inc

📁 linux下的任天堂模拟器代码。供大家参考。
💻 INC
📖 第 1 页 / 共 2 页
字号:
    dec cx    or cx,word[stackor]    xor eax,eax    mov [xs],cx    mov ax,[esi]    xor bh,bh    mov [xpc],ax    mov bl,[xpb]    test eax,8000h    jz .loweraddr    mov esi,[snesmmap+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop.loweraddr    mov esi,[snesmap2+ebx*4]    cmp eax,4300h    jae .upperlower    mov [initaddrl],esi    add esi,eax    endloop.upperlower    cmp dword[memtabler8+ebx*4],regaccessbankr8    je .dma    mov [initaddrl],esi    add esi,eax    endloop.dma    mov esi,dmadata-4300h    mov [initaddrl],esi    add esi,eax    endloop%endmacro%macro JSRMacroFC 0    mov ebx,esi    sub ebx,[initaddrl]    inc bx    mov [xpc],bx    mov cx,[xs]    mov al,[xpc+1]    call membank0w8    dec cx    or cx,word[stackor]    mov al,[xpc]    call membank0w8    dec cx    or cx,word[stackor]    xor eax,eax    mov [xs],cx    xor eax,eax    xor bh,bh    mov cx,[esi]    mov bl,[xpb]    add cx,[xx]    call dword near [memtabler16+ebx*4]    mov [xpc],ax    mov bl,[xpb]    test eax,8000h    jz .loweraddr    mov esi,[snesmmap+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop.loweraddr    mov esi,[snesmap2+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop%endmacro%macro LDAMacro8b 0    mov dword[flagnz],0    mov [xa],al    mov [flagnz+1],al    endloop%endmacro%macro LDAMacro16b 0    mov [xa],ax    flagsetnz16b    endloop%endmacro%macro LDXMacro8b 0    mov dword[flagnz],0    mov [xx],al    mov [flagnz+1],al    endloop%endmacro%macro LDXMacro16b 0    mov [xx],ax    flagsetnz16b    endloop%endmacro%macro LDYMacro8b 0    mov dword[flagnz],0    mov [xy],al    mov [flagnz+1],al    endloop%endmacro%macro LDYMacro16b 0    mov [xy],ax    flagsetnz16b    endloop%endmacro%macro LSRMacro8b 0    shr al,1    flagsetnzc8b%endmacro%macro LSRMacro16b 0    shr ax,1    flagsetnzc%endmacro%macro MVNMacro 0    mov ax,[esi]    mov [xdb],al    mov bl,ah    mov cx,[xx]    call dword near [memtabler8+ebx*4]    mov bl,[xdb]    mov cx,[xy]    call dword near [memtablew8+ebx*4]    test dl,10h    jnz .pagezero    inc word[xx]    inc word[xy]    dec word[xa]    cmp word[xa],0FFFFh    je .endmove    dec esi    endloop.endmove    add esi,2    endloop.pagezero    inc byte[xx]    inc byte[xy]    dec word[xa]    cmp word[xa],0FFFFh    je .endmove    dec esi    endloop%endmacro%macro MVPMacro 0    mov ax,[esi]    mov [xdb],al    mov bl,ah    mov cx,[xx]    call dword near [memtabler8+ebx*4]    mov bl,[xdb]    mov cx,[xy]    call dword near [memtablew8+ebx*4]    test dl,10h    jnz .pagezero    dec word[xx]    dec word[xy]    dec word[xa]    cmp word[xa],0FFFFh    je .endmove    dec esi    endloop.endmove    add esi,2    endloop.pagezero    dec byte[xx]    dec byte[xy]    dec word[xa]    cmp word[xa],0FFFFh    je .endmove    dec esi    endloop%endmacro%macro ORAMacro8b 0    or al,[xa]    mov dword[flagnz],0    mov [xa],al    mov [flagnz+1],al    endloop%endmacro%macro ORAMacro16b 0    or ax,[xa]    mov [xa],ax    flagsetnz16b%endmacro%macro PUSHMacro8b 1    mov cx,[xs]    mov al,%1    call membank0w8    dec cx    or cx,word[stackor]    mov [xs],cx    endloop%endmacro%macro PUSHMacro8bp 0    makedl    mov cx,[xs]    mov al,dl    call membank0w8    dec cx    or cx,word[stackor]    mov [xs],cx    endloop%endmacro%macro PUSHMacro16b 2    mov cx,[xs]    mov al,%2    call membank0w8    dec cx    or cx,word[stackor]    mov al,%1    call membank0w8    dec cx    or cx,word[stackor]    mov [xs],cx    endloop%endmacro%macro PEAMacro 0    mov cx,[xs]    mov al,[esi+1]    call membank0w8    dec cx    or cx,word[stackor]    mov al,[esi]    call membank0w8    dec cx    or cx,word[stackor]    mov [xs],cx    add esi,2    endloop%endmacro%macro PEIMacro 0    xor ah,ah    mov al,[esi]    mov cx,[xd]    inc esi    add cx,ax    call membank0r16    mov cx,[xs]    push eax    mov al,ah    call membank0w8    pop eax    dec cx    or cx,word[stackor]    call membank0w8    dec cx    or cx,word[stackor]    mov [xs],cx    endloop%endmacro%macro PERMacro 0    mov bl,[xpb]    mov ax,[xpc]    test eax,8000h    jz .loweraddr    mov eax,[snesmmap+ebx*4]    mov ebx,esi    sub ebx,eax    add bx,[esi]    mov ax,bx    add esi,2    add ax,2    mov cx,[xs]    push eax    mov al,ah    call membank0w8    pop eax    dec cx    or cx,word[stackor]    call membank0w8    dec cx    or cx,word[stackor]    mov [xs],cx    xor ebx,ebx    endloop.loweraddr    mov eax,[snesmap2+ebx*4]    mov ebx,esi    sub ebx,eax    add bx,[esi]    mov ax,bx    add esi,2    add ax,2    mov cx,[xs]    push eax    mov al,ah    call membank0w8    pop eax    dec cx    or cx,word[stackor]    call membank0w8    dec cx    or cx,word[stackor]    mov [xs],cx    xor ebx,ebx    endloop%endmacro%macro POPMacro8b 1    mov cx,[xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [xs],cx    mov %1,al    flagsetnz8b    endloop%endmacro%macro POPMacro16b 2    mov cx,[xs]    inc cx    and cx,word[stackand]    call membank0r8    mov %1,al    mov [xs],cx    inc cx    and cx,word[stackand]    call membank0r8    mov %2,al    mov [xs],cx    mov ah,al    mov al,%1    flagsetnz16b%endmacro%macro POPMacro16bd 2    mov cx,[xs]    inc cx    and cx,word[stackand]    call membank0r8    mov %1,al    mov [xs],cx    inc cx    and cx,word[stackand]    call membank0r8    mov %2,al    call UpdateDPage    mov [xs],cx    mov ah,al    mov al,%1    flagsetnz16b%endmacro%macro POPMacroP 0    mov cx,[xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [xs],cx    xor bh,bh    mov dl,al    restoredl    test byte[xe],01h    jnz .emul    mov bl,dl    mov edi,[tablead+ebx*4]    test dl,00010000b    jnz .setx    endloop.setx    mov byte[xx+1],0    mov byte[xy+1],0    endloop.emul    or dl,00110000b    mov bl,dl    mov edi,[tablead+ebx*4]    endloop%endmacro%macro REPMacro 0    mov al,[esi]    inc esi    test al,11000011b    jnz .extraflags    not al    and dl,al    test byte[xe],01h    jnz .emul    mov bl,dl    mov edi,[tablead+ebx*4]    endloop.emul    or dl,00110000b    mov bl,dl    mov edi,[tablead+ebx*4]    endloop.extraflags    not al    makedl    and dl,al    restoredl    test byte[xe],01h    jnz .emul2    mov bl,dl    mov edi,[tablead+ebx*4]    endloop.emul2    or dl,00110000b    mov bl,dl    mov edi,[tablead+ebx*4]    endloop%endmacro%macro ROLMacro8b 0    mov cl,[flagc]    add cl,cl    rcl al,1    flagsetnzc8b%endmacro%macro ROLMacro16b 0    mov cl,[flagc]    add cl,cl    rcl ax,1    flagsetnzc%endmacro%macro RORMacro8b 0    mov cl,[flagc]    add cl,cl    rcr al,1    flagsetnzc8b%endmacro%macro RORMacro16b 0    mov cl,[flagc]    add cl,cl    rcr ax,1    flagsetnzc%endmacro%macro RTIMacro 0    cmp byte[nmistatus],3    jne .nodis658162    test byte[curexecstate],01h    jz .nodis65816    and byte[curexecstate],0FEh.nodis65816    cmp byte[curexecstate],0    jne .nn    xor dh,dh.nn.nodis658162    mov byte[curnmi],0    test byte[xe],1    jne near emulRTI    mov cx,[xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [xs],cx    mov dl,al    restoredl    mov cx,[xs]    inc cx    and cx,word[stackand]    xor eax,eax    call membank0r8    mov [xpc],al    inc cx    and cx,word[stackand]    xor eax,eax    call membank0r8    mov [xpc+1],al    inc cx    and cx,word[stackand]    xor eax,eax    call membank0r8    mov [xpb],al    mov [xs],cx    xor bh,bh    xor eax,eax    mov ax,[xpc]    mov bl,dl    mov edi,[tablead+ebx*4]    mov bl,[xpb]    mov [xpc],ax    test eax,8000h    jz .loweraddr    mov esi,[snesmmap+ebx*4]    mov [initaddrl],esi    add esi,eax    test dl,00010000b    jnz .setx    endloop.loweraddr    mov esi,[snesmap2+ebx*4]    cmp eax,4300h    jae .upperlower    mov [initaddrl],esi    add esi,eax    cmp byte[esi],0CBh    jne .notwai    mov byte[intrset],2.notwai    test dl,00010000b    jnz .setx    endloop.setx    mov byte[xx+1],0    mov byte[xy+1],0    endloop.upperlower    cmp dword[memtabler8+ebx*4],regaccessbankr8    je .dma    mov byte[doirqnext],0    mov [initaddrl],esi    add esi,eax    cmp byte[esi],0CBh    jne .notwai2    mov byte[intrset],2.notwai2    test dl,00010000b    jnz .setx    endloop.dma    mov esi,dmadata-4300h    mov [initaddrl],esi    add esi,eax    test dl,00010000b    jnz .setx    endloopemulRTI    mov cx,[xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [xs],cx    mov dl,al    or dl,00110000b    restoredl    mov cx,[xs]    inc cx    and cx,word[stackand]    xor eax,eax    call membank0r8    mov [xpc],al    inc cx    and cx,word[stackand]    xor eax,eax    call membank0r8    mov [xpc+1],al    mov [xs],cx    xor bh,bh    xor eax,eax    mov ax,[xpc]    mov bl,dl    mov edi,[tablead+ebx*4]    xor bl,bl    mov [xpc],ax    test eax,8000h    jz .loweraddr    mov esi,[snesmmap+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop.loweraddr    mov esi,[snesmap2+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop%endmacro%macro RTLMacro 0    mov cx,[xs]    inc cx    and cx,word[stackand]    xor eax,eax    call membank0r8    mov [xpc],al    inc cx    and cx,word[stackand]    xor eax,eax    call membank0r8    mov [xpc+1],al    inc cx    and cx,word[stackand]    xor eax,eax    call membank0r8    mov [xpb],al;    inc bx;    and bx,word[stackand];    mov cl,[eax+ebx];    inc bx;    and bx,word[stackand];    mov ch,[eax+ebx];    inc bx;    and bx,word[stackand];    mov al,[eax+ebx];    mov [xpb],al    mov [xs],cx    xor bh,bh    xor eax,eax    mov ax,[xpc]    inc ax    mov bl,[xpb]    mov [xpc],ax    test eax,8000h    jz .loweraddr    mov esi,[snesmmap+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop.loweraddr    mov esi,[snesmap2+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop%endmacro%macro RTSMacro 0    mov cx,[xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [xpc],al    inc cx    and cx,word[stackand]    call membank0r8    mov [xpc+1],al    mov [xs],cx    xor bh,bh    xor eax,eax    mov ax,[xpc]    inc ax    mov [xpc],ax    mov bl,[xpb]    test eax,8000h    jz .loweraddr    mov esi,[snesmmap+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop.loweraddr    mov esi,[snesmap2+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop%endmacro%macro SBCMacro8bnd 0    mov cl,[flagc]    sub cl,1    sbb [xa],al    flagsetnvzcs8b    endloop%endmacro%macro SBCMacro16bnd 0    mov cl,[flagc]    sub cl,1    sbb [xa],ax    flagsetnvzcs16b    endloop%endmacro%macro SBCMacro8bd 0    mov cl,[flagc]    sub cl,1    mov cl,al    mov al,[xa]    sbb al,cl    das    mov [xa],al    flagsetnvzcs8b    endloop%endmacro%macro SBCMacro16bd 0    mov cl,[flagc]    sub cl,1    mov cx,ax    mov al,[xa]    sbb al,cl    das    mov [xa],al    mov al,[xa+1]    sbb al,ch    das    mov [xa+1],al    cmc    flagsetnvzcd    endloop%endmacro%macro SEPMacro 0    mov al,[esi]    inc esi    test al,11000011b    jnz .extraflags    or dl,al    mov bl,dl    mov edi,[tablead+ebx*4]    test dl,00010000b    jnz .setx    endloop.setx    mov byte[xx+1],0    mov byte[xy+1],0    endloop.extraflags    makedl    or dl,al    restoredl    mov bl,dl    mov edi,[tablead+ebx*4]    test dl,00010000b    jnz .setx2    endloop.setx2    mov byte[xx+1],0    mov byte[xy+1],0    endloop%endmacro%macro STAMacro8b 0    mov al,[xa]%endmacro%macro STAMacro16b 0    mov eax,[xa]%endmacro%macro STXMacro8b 0    mov al,[xx]%endmacro%macro STXMacro16b 0    mov eax,[xx]%endmacro%macro STYMacro8b 0    mov al,[xy]%endmacro%macro STYMacro16b 0    mov eax,[xy]%endmacro%macro WAIMacro 0    cmp byte[intrset],1    jne .notws    dec esi    endloop.notws    test byte[intrset],0FFh    jz .waitstate    cmp byte[intrset],2    je .stopint    dec esi    endloop.waitstate    mov byte[intrset],1    dec esi    endloop.stopint    mov byte[intrset],0    mov byte[doirqnext],0    endloop%endmacro%macro XCEMacro 0    mov al,[flagc]    mov dword[flagc],0    and al,00000001b    cmp [xe],al    jne .nochange    endloop.nochange    test byte[xe],0FFh    jz .noemul    mov dword[flagc],0FFh.noemul    mov [xe],al    test byte[xe],01h    jnz .emul    or dl,00100000b    mov word[stackand],0FFFFh    mov word[stackor],0000h    endloop.emul    or dl,00110000b    mov bl,dl    mov edi,[tablead+ebx*4]    mov byte[xx+1],0    mov byte[xy+1],0    mov byte[xs+1],1    mov word[stackand],01FFh    mov word[stackor],0100h    endloop%endmacro

⌨️ 快捷键说明

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