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

📄 s65816d.inc

📁 linux下的任天堂模拟器代码。供大家参考。
💻 INC
📖 第 1 页 / 共 2 页
字号:
    mov al,[xpc+1]    call membank0w8    dec cx    or cx,word[stackor]    mov al,[xpc]    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    xor eax,eax    xor bh,bh    mov ax,[esi]    mov bl,[esi+2]    mov [xpc],ax    mov [SA1xpb],bl    test eax,8000h    jz .loweraddr    mov esi,[snesmmap+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop.loweraddr    cmp ebx,0    jne .notupper    cmp eax,2000h    ja .upperbank.notupper    mov esi,[snesmap2+ebx*4]    mov [initaddrl],esi    add esi,eax    endloop.upperbank    mov esi,IRAM    sub esi,3000h    mov [initaddrl],esi    add esi,eax    endloop%endmacro%macro JSRMacro20 0    mov ebx,esi    sub ebx,[initaddrl]    inc bx    mov [xpc],bx    mov cx,[SA1xs]    mov al,[xpc+1]    call membank0w8    dec cx    or cx,word[stackor]    mov al,[xpc]    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    xor eax,eax    mov ax,[esi]    xor bh,bh    mov [xpc],ax    mov bl,[SA1xpb]    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    mov [initaddrl],esi    add esi,eax    endloop%endmacro%macro JSRMacroFC 0    mov ebx,esi    sub ebx,[initaddrl]    inc bx    mov [xpc],bx    mov cx,[SA1xs]    mov al,[xpc+1]    call membank0w8    dec cx    or cx,word[stackor]    mov al,[xpc]    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    xor eax,eax    xor bh,bh    mov cx,[esi]    mov bl,[SA1xpb]    add cx,[SA1xx]    call dword near [memtabler16+ebx*4]    mov [xpc],ax    mov bl,[SA1xpb]    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[Sflagnz],0    mov [SA1xa],al    mov [Sflagnz+1],al    endloop%endmacro%macro LDAMacro16b 0    mov [SA1xa],ax    flagsetnz16b    endloop%endmacro%macro LDXMacro8b 0    mov dword[Sflagnz],0    mov [SA1xx],al    mov [Sflagnz+1],al    endloop%endmacro%macro LDXMacro16b 0    mov [SA1xx],ax    flagsetnz16b    endloop%endmacro%macro LDYMacro8b 0    mov dword[Sflagnz],0    mov [SA1xy],al    mov [Sflagnz+1],al    endloop%endmacro%macro LDYMacro16b 0    mov [SA1xy],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 [SA1xdb],al    mov bl,ah    mov cx,[SA1xx]    call dword near [memtabler8+ebx*4]    mov bl,[SA1xdb]    mov cx,[SA1xy]    call dword near [memtablew8+ebx*4]    test dl,10h    jnz .pagezero    inc word[SA1xx]    inc word[SA1xy]    dec word[SA1xa]    cmp word[SA1xa],0FFFFh    je .endmove    dec esi    endloop.endmove    add esi,2    endloop.pagezero    inc byte[SA1xx]    inc byte[SA1xy]    dec word[SA1xa]    cmp word[SA1xa],0FFFFh    je .endmove    dec esi    endloop%endmacro%macro MVPMacro 0    mov ax,[esi]    mov [SA1xdb],al    mov bl,ah    mov cx,[SA1xx]    call dword near [memtabler8+ebx*4]    mov bl,[SA1xdb]    mov cx,[SA1xy]    call dword near [memtablew8+ebx*4]    test dl,10h    jnz .pagezero    dec word[SA1xx]    dec word[SA1xy]    dec word[SA1xa]    cmp word[SA1xa],0FFFFh    je .endmove    dec esi    endloop.endmove    add esi,2    endloop.pagezero    dec byte[SA1xx]    dec byte[SA1xy]    dec word[SA1xa]    cmp word[SA1xa],0FFFFh    je .endmove    dec esi    endloop%endmacro%macro ORAMacro8b 0    or al,[SA1xa]    mov dword[Sflagnz],0    mov [SA1xa],al    mov [Sflagnz+1],al    endloop%endmacro%macro ORAMacro16b 0    or ax,[SA1xa]    mov [SA1xa],ax    flagsetnz16b%endmacro%macro PUSHMacro8b 1    mov eax,[wramdata]    mov cx,[SA1xs]    mov al,%1    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    endloop%endmacro%macro PUSHMacro8bp 0    mov eax,[wramdata]    makedl    mov cx,[SA1xs]    mov al,dl    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    endloop%endmacro%macro PUSHMacro16b 2    mov cx,[SA1xs]    mov al,%2    call membank0w8    dec cx    or cx,word[stackor]    mov al,%1    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    endloop%endmacro%macro PEAMacro 0    mov cx,[SA1xs]    mov al,[esi+1]    call membank0w8    dec cx    or cx,word[stackor]    mov al,[esi]    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    add esi,2    endloop%endmacro%macro PEIMacro 0    xor ah,ah    mov al,[esi]    mov cx,[SA1xd]    inc esi    add cx,ax    call membank0r16    mov cx,[SA1xs]    push eax    mov al,ah    call membank0w8    pop eax    dec cx    or cx,word[stackor]    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    endloop%endmacro%macro PERMacro 0    mov bl,[SA1xpb]    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,[SA1xs]    push eax    mov al,ah    call membank0w8    pop eax    dec cx    or cx,word[stackor]    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],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,[SA1xs]    push eax    mov al,ah    call membank0w8    pop eax    dec cx    or cx,word[stackor]    call membank0w8    dec cx    or cx,word[stackor]    mov [SA1xs],cx    xor ebx,ebx    endloop%endmacro%macro POPMacro8b 1    mov eax,[wramdata]    mov cx,[SA1xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [SA1xs],cx    mov %1,al    flagsetnz8b    endloop%endmacro%macro POPMacro16b 2    mov eax,[wramdata]    mov cx,[SA1xs]    inc cx    and cx,word[stackand]    call membank0r8    mov %1,al    mov [SA1xs],cx    inc cx    and cx,word[stackand]    call membank0r8    mov %2,al    mov [SA1xs],cx    mov ah,al    mov al,%1    flagsetnz16b%endmacro%macro POPMacro16bd 2    mov eax,[wramdata]    mov cx,[SA1xs]    inc cx    and cx,word[stackand]    call membank0r8    mov %1,al    mov [SA1xs],cx    inc cx    and cx,word[stackand]    call membank0r8    mov %2,al    call SA1UpdateDPage    mov [SA1xs],cx    mov ah,al    mov al,%1    flagsetnz16b%endmacro%macro POPMacroP 0    mov cx,[SA1xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [SA1xs],cx    mov dl,al    restoredl    test byte[xe],01h    jnz .emul    mov bl,dl    mov edi,[SA1tablead+ebx*4]    test dl,00010000b    jnz .setx    endloop.setx    mov byte[SA1xx+1],0    mov byte[SA1xy+1],0    endloop.emul    or dl,00110000b    mov bl,dl    mov edi,[SA1tablead+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,[SA1tablead+ebx*4]    endloop.emul    or dl,00110000b    mov bl,dl    mov edi,[SA1tablead+ebx*4]    endloop.extraflags    not al    makedl    and dl,al    restoredl    test byte[xe],01h    jnz .emul2    mov bl,dl    mov edi,[SA1tablead+ebx*4]    endloop.emul2    or dl,00110000b    mov bl,dl    mov edi,[SA1tablead+ebx*4]    endloop%endmacro%macro ROLMacro8b 0    mov cl,[Sflagc]    add cl,cl    rcl al,1    flagsetnzc8b%endmacro%macro ROLMacro16b 0    mov cl,[Sflagc]    add cl,cl    rcl ax,1    flagsetnzc%endmacro%macro RORMacro8b 0    mov cl,[Sflagc]    add cl,cl    rcr al,1    flagsetnzc8b%endmacro%macro RORMacro16b 0    mov cl,[Sflagc]    add cl,cl    rcr ax,1    flagsetnzc%endmacro%macro RTIMacro 0    cmp byte[curexecstate],0    jne .nn    xor dh,dh.nn.nodis658162    mov byte[curnmi],0    mov cx,[SA1xs]    inc cx    and cx,word[stackand]    call membank0r8    mov dl,al    restoredl    inc cx    and cx,word[stackand]    call membank0r8    mov [xpc],al    inc cx    and cx,word[stackand]    call membank0r8    mov [xpc+1],al    inc cx    and cx,word[stackand]    call membank0r8    mov [SA1xpb],al    mov [SA1xs],cx    xor bh,bh    xor eax,eax    mov bl,dl    mov edi,[SA1tablead+ebx*4]    mov bl,[SA1xpb]    mov ax,[xpc]    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    test dl,00010000b    jnz .setx    endloop.setx    mov byte[SA1xx+1],0    mov byte[SA1xy+1],0    endloop.upperlower    cmp dword[memtabler8+ebx*4],regaccessbankr8    je .dma    mov [initaddrl],esi    add esi,eax    test dl,00010000b    jnz .setx    endloop.dma    mov esi,dmadata-4300h    mov [initaddrl],esi    add esi,eax    test dl,00010000b    jnz .setx    endloop%endmacro%macro RTLMacro 0    mov cx,[SA1xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [xpc],al    inc cx    and cx,word[stackand]    call membank0r8    mov [xpc+1],al    inc cx    and cx,word[stackand]    call membank0r8    mov [SA1xpb],al    mov [SA1xs],cx    xor bh,bh    xor eax,eax    inc word[xpc]    mov bl,[SA1xpb]    mov ax,[xpc]    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,[SA1xs]    inc cx    and cx,word[stackand]    call membank0r8    mov [xpc],al    inc cx    and cx,word[stackand]    call membank0r8    mov [xpc+1],al    mov [SA1xs],cx    xor bh,bh    inc word[xpc]    xor eax,eax    mov ax,[xpc]    mov bl,[SA1xpb]    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,[Sflagc]    sub cl,1    sbb [SA1xa],al    flagsetnvzcs8b    endloop%endmacro%macro SBCMacro16bnd 0    mov cl,[Sflagc]    sub cl,1    sbb [SA1xa],ax    flagsetnvzcs16b    endloop%endmacro%macro SBCMacro8bd 0    mov cl,[Sflagc]    sub cl,1    mov cl,al    mov al,[SA1xa]    sbb al,cl    das    mov [SA1xa],al    flagsetnvzcs8b    endloop%endmacro%macro SBCMacro16bd 0    mov cl,[Sflagc]    sub cl,1    mov cx,ax    mov al,[SA1xa]    sbb al,cl    das    mov [SA1xa],al    mov al,[SA1xa+1]    sbb al,ch    das    mov [SA1xa+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,[SA1tablead+ebx*4]    test dl,00010000b    jnz .setx    endloop.setx    mov byte[SA1xx+1],0    mov byte[SA1xy+1],0    endloop.extraflags    makedl    or dl,al    restoredl    mov bl,dl    mov edi,[SA1tablead+ebx*4]    test dl,00010000b    jnz .setx2    endloop.setx2    mov byte[SA1xx+1],0    mov byte[SA1xy+1],0    endloop%endmacro%macro STAMacro8b 0    mov al,[SA1xa]%endmacro%macro STAMacro16b 0    mov eax,[SA1xa]%endmacro%macro STXMacro8b 0    mov al,[SA1xx]%endmacro%macro STXMacro16b 0    mov eax,[SA1xx]%endmacro%macro STYMacro8b 0    mov al,[SA1xy]%endmacro%macro STYMacro16b 0    mov eax,[SA1xy]%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    endloop%endmacro%macro XCEMacro 0    mov al,[Sflagc]    mov dword[Sflagc],0    and al,00000001b    test byte[xe],0FFh    jz .noemul    mov dword[Sflagc],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,[SA1tablead+ebx*4]    mov byte[SA1xx+1],0    mov byte[SA1xy+1],0    mov byte[SA1xs+1],1    mov word[stackand],01FFh    mov word[stackor],0100h    endloop%endmacro

⌨️ 快捷键说明

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