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

📄 65c816.asm

📁 NES game Emulator in Linux.c and asm codes.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
dd  C_LABEL(OpE0M1_0x74)  ,C_LABEL(OpE0M1_0x75)
dd  C_LABEL(OpE0M1_0x76)  ,C_LABEL(OpE0M1_0x77)
dd  C_LABEL(Op_0x78)      ,C_LABEL(OpM1X1_0x79)
dd  C_LABEL(OpE0X1_0x7A)  ,C_LABEL(Op_0x7B)
dd  C_LABEL(Op_0x7C)      ,C_LABEL(OpM1X1_0x7D)
dd  C_LABEL(OpM1_0x7E)    ,C_LABEL(OpM1_0x7F)
dd  C_LABEL(OpE0_0x80)    ,C_LABEL(OpE0M1_0x81)     ; 80
dd  C_LABEL(Op_0x82)      ,C_LABEL(OpM1_0x83)
dd  C_LABEL(OpE0X1_0x84)  ,C_LABEL(OpE0M1_0x85)
dd  C_LABEL(OpE0X1_0x86)  ,C_LABEL(OpE0M1_0x87)
dd  C_LABEL(OpX1_0x88)    ,C_LABEL(OpM1_0x89)
dd  C_LABEL(OpM1_0x8A)    ,C_LABEL(OpE0_0x8B)
dd  C_LABEL(OpX1_0x8C)    ,C_LABEL(OpM1_0x8D)
dd  C_LABEL(OpX1_0x8E)    ,C_LABEL(OpM1_0x8F)
dd  C_LABEL(OpE0_0x90)    ,C_LABEL(OpE0M1X1_0x91)   ; 90
dd  C_LABEL(OpE0M1_0x92)  ,C_LABEL(OpM1_0x93)
dd  C_LABEL(OpE0X1_0x94)  ,C_LABEL(OpE0M1_0x95)
dd  C_LABEL(OpE0X1_0x96)  ,C_LABEL(OpE0M1_0x97)
dd  C_LABEL(OpM1_0x98)    ,C_LABEL(OpM1_0x99)
dd  C_LABEL(OpE0_0x9A)    ,C_LABEL(OpX1_0x9B)
dd  C_LABEL(OpM1_0x9C)    ,C_LABEL(OpM1_0x9D)
dd  C_LABEL(OpM1_0x9E)    ,C_LABEL(OpM1_0x9F)
dd  C_LABEL(OpX1_0xA0)    ,C_LABEL(OpE0M1_0xA1)     ; A0
dd  C_LABEL(OpX1_0xA2)    ,C_LABEL(OpM1_0xA3)
dd  C_LABEL(OpE0X1_0xA4)  ,C_LABEL(OpE0M1_0xA5)
dd  C_LABEL(OpE0X1_0xA6)  ,C_LABEL(OpE0M1_0xA7)
dd  C_LABEL(OpX1_0xA8)    ,C_LABEL(OpM1_0xA9)
dd  C_LABEL(OpX1_0xAA)    ,C_LABEL(OpE0_0xAB)
dd  C_LABEL(OpX1_0xAC)    ,C_LABEL(OpM1_0xAD)
dd  C_LABEL(OpX1_0xAE)    ,C_LABEL(OpM1_0xAF)
dd  C_LABEL(OpE0_0xB0)    ,C_LABEL(OpE0M1X1_0xB1)   ; B0
dd  C_LABEL(OpE0M1_0xB2)  ,C_LABEL(OpM1_0xB3)
dd  C_LABEL(OpE0X1_0xB4)  ,C_LABEL(OpE0M1_0xB5)
dd  C_LABEL(OpE0X1_0xB6)  ,C_LABEL(OpE0M1_0xB7)
dd  C_LABEL(Op_0xB8)      ,C_LABEL(OpM1X1_0xB9)
dd  C_LABEL(OpX1_0xBA)    ,C_LABEL(OpX1_0xBB)
dd  C_LABEL(OpX1_0xBC)    ,C_LABEL(OpM1X1_0xBD)
dd  C_LABEL(OpX1_0xBE)    ,C_LABEL(OpM1_0xBF)
dd  C_LABEL(OpX1_0xC0)    ,C_LABEL(OpE0M1_0xC1)     ; C0
dd  C_LABEL(OpE0_0xC2)    ,C_LABEL(OpM1_0xC3)
dd  C_LABEL(OpE0X1_0xC4)  ,C_LABEL(OpE0M1_0xC5)
dd  C_LABEL(OpE0M1_0xC6)  ,C_LABEL(OpE0M1_0xC7)
dd  C_LABEL(OpX1_0xC8)    ,C_LABEL(OpM1_0xC9)
dd  C_LABEL(OpX1_0xCA)    ,C_LABEL(Op_0xCB)
dd  C_LABEL(OpX1_0xCC)    ,C_LABEL(OpM1_0xCD)
dd  C_LABEL(OpM1_0xCE)    ,C_LABEL(OpM1_0xCF)
dd  C_LABEL(OpE0_0xD0)    ,C_LABEL(OpE0M1X1_0xD1)   ; D0
dd  C_LABEL(OpE0M1_0xD2)  ,C_LABEL(OpM1_0xD3)
dd  C_LABEL(OpE0_0xD4)    ,C_LABEL(OpE0M1_0xD5)
dd  C_LABEL(OpE0M1_0xD6)  ,C_LABEL(OpE0M1_0xD7)
dd  C_LABEL(Op_0xD8)      ,C_LABEL(OpM1X1_0xD9)
dd  C_LABEL(OpE0X1_0xDA)  ,C_LABEL(ALL_INVALID)
dd  C_LABEL(Op_0xDC)      ,C_LABEL(OpM1X1_0xDD)
dd  C_LABEL(OpM1_0xDE)    ,C_LABEL(OpM1_0xDF)
dd  C_LABEL(OpX1_0xE0)    ,C_LABEL(OpE0M1_0xE1)     ; E0
dd  C_LABEL(OpE0_0xE2)    ,C_LABEL(OpM1_0xE3)
dd  C_LABEL(OpE0X1_0xE4)  ,C_LABEL(OpE0M1_0xE5)
dd  C_LABEL(OpE0M1_0xE6)  ,C_LABEL(OpE0M1_0xE7)
dd  C_LABEL(OpX1_0xE8)    ,C_LABEL(OpM1_0xE9)
dd  C_LABEL(Op_0xEA)      ,C_LABEL(Op_0xEB)
dd  C_LABEL(OpX1_0xEC)    ,C_LABEL(OpM1_0xED)
dd  C_LABEL(OpM1_0xEE)    ,C_LABEL(OpM1_0xEF)
dd  C_LABEL(OpE0_0xF0)    ,C_LABEL(OpE0M1X1_0xF1)   ; F0
dd  C_LABEL(OpE0M1_0xF2)  ,C_LABEL(OpM1_0xF3)
dd  C_LABEL(OpE0_0xF4)    ,C_LABEL(OpE0M1_0xF5)
dd  C_LABEL(OpE0M1_0xF6)  ,C_LABEL(OpE0M1_0xF7)
dd  C_LABEL(Op_0xF8)      ,C_LABEL(OpM1X1_0xF9)
dd  C_LABEL(OpE0X1_0xFA)  ,C_LABEL(OpE0_0xFB)
dd  C_LABEL(OpE0_0xFC)    ,C_LABEL(OpM1X1_0xFD)
dd  C_LABEL(OpM1_0xFE)    ,C_LABEL(OpM1_0xFF)

OpTableE1:
dd  C_LABEL(OpE1_0x00)    ,C_LABEL(OpE1_0x01)       ; 00
dd  C_LABEL(OpE1_0x02)    ,C_LABEL(OpM1_0x03)
dd  C_LABEL(OpE1_0x04)    ,C_LABEL(OpE1_0x05)
dd  C_LABEL(OpE1_0x06)    ,C_LABEL(OpE1_0x07)
dd  C_LABEL(OpE1_0x08)    ,C_LABEL(OpM1_0x09)
dd  C_LABEL(OpM1_0x0A)    ,C_LABEL(OpE1_0x0B)
dd  C_LABEL(OpM1_0x0C)    ,C_LABEL(OpM1_0x0D)
dd  C_LABEL(OpM1_0x0E)    ,C_LABEL(OpM1_0x0F)
dd  C_LABEL(OpE1_0x10)    ,C_LABEL(OpE1_0x11)       ; 10
dd  C_LABEL(OpE1_0x12)    ,C_LABEL(OpM1_0x13)
dd  C_LABEL(OpE1_0x14)    ,C_LABEL(OpE1_0x15)
dd  C_LABEL(OpE1_0x16)    ,C_LABEL(OpE1_0x17)
dd  C_LABEL(Op_0x18)      ,C_LABEL(OpM1X1_0x19)
dd  C_LABEL(OpM1_0x1A)    ,C_LABEL(OpE1_0x1B)
dd  C_LABEL(OpM1_0x1C)    ,C_LABEL(OpM1X1_0x1D)
dd  C_LABEL(OpM1_0x1E)    ,C_LABEL(OpM1_0x1F)
dd  C_LABEL(OpE1_0x20)    ,C_LABEL(OpE1_0x21)       ; 20
dd  C_LABEL(OpE1_0x22)    ,C_LABEL(OpM1_0x23)
dd  C_LABEL(OpE1_0x24)    ,C_LABEL(OpE1_0x25)
dd  C_LABEL(OpE1_0x26)    ,C_LABEL(OpE1_0x27)
dd  C_LABEL(OpE1_0x28)    ,C_LABEL(OpM1_0x29)
dd  C_LABEL(OpM1_0x2A)    ,C_LABEL(OpE1_0x2B)
dd  C_LABEL(OpM1_0x2C)    ,C_LABEL(OpM1_0x2D)
dd  C_LABEL(OpM1_0x2E)    ,C_LABEL(OpM1_0x2F)
dd  C_LABEL(OpE1_0x30)    ,C_LABEL(OpE1_0x31)       ; 30
dd  C_LABEL(OpE1_0x32)    ,C_LABEL(OpM1_0x33)
dd  C_LABEL(OpE1_0x34)    ,C_LABEL(OpE1_0x35)
dd  C_LABEL(OpE1_0x36)    ,C_LABEL(OpE1_0x37)
dd  C_LABEL(Op_0x38)      ,C_LABEL(OpM1X1_0x39)
dd  C_LABEL(OpM1_0x3A)    ,C_LABEL(Op_0x3B)
dd  C_LABEL(OpM1X1_0x3C)  ,C_LABEL(OpM1X1_0x3D)
dd  C_LABEL(OpM1_0x3E)    ,C_LABEL(OpM1_0x3F)
dd  C_LABEL(OpE1_0x40)    ,C_LABEL(OpE1_0x41)       ; 40
dd  C_LABEL(ALL_INVALID)  ,C_LABEL(OpM1_0x43)
dd  C_LABEL(OpX1_0x44)    ,C_LABEL(OpE1_0x45)
dd  C_LABEL(OpE1_0x46)    ,C_LABEL(OpE1_0x47)
dd  C_LABEL(OpE1_0x48)    ,C_LABEL(OpM1_0x49)
dd  C_LABEL(OpM1_0x4A)    ,C_LABEL(OpE1_0x4B)
dd  C_LABEL(Op_0x4C)      ,C_LABEL(OpM1_0x4D)
dd  C_LABEL(OpM1_0x4E)    ,C_LABEL(OpM1_0x4F)
dd  C_LABEL(OpE1_0x50)    ,C_LABEL(OpE1_0x51)       ; 50
dd  C_LABEL(OpE1_0x52)    ,C_LABEL(OpM1_0x53)
dd  C_LABEL(OpX1_0x54)    ,C_LABEL(OpE1_0x55)
dd  C_LABEL(OpE1_0x56)    ,C_LABEL(OpE1_0x57)
dd  C_LABEL(Op_0x58)      ,C_LABEL(OpM1X1_0x59)
dd  C_LABEL(OpE1_0x5A)    ,C_LABEL(Op_0x5B)
dd  C_LABEL(Op_0x5C)      ,C_LABEL(OpM1X1_0x5D)
dd  C_LABEL(OpM1_0x5E)    ,C_LABEL(OpM1_0x5F)
dd  C_LABEL(OpE1_0x60)    ,C_LABEL(OpE1_0x61)       ; 60
dd  C_LABEL(OpE1_0x62)    ,C_LABEL(OpM1_0x63)
dd  C_LABEL(OpE1_0x64)    ,C_LABEL(OpE1_0x65)
dd  C_LABEL(OpE1_0x66)    ,C_LABEL(OpE1_0x67)
dd  C_LABEL(OpE1_0x68)    ,C_LABEL(OpM1_0x69)
dd  C_LABEL(OpM1_0x6A)    ,C_LABEL(OpE1_0x6B)
dd  C_LABEL(Op_0x6C)      ,C_LABEL(OpM1_0x6D)
dd  C_LABEL(OpM1_0x6E)    ,C_LABEL(OpM1_0x6F)
dd  C_LABEL(OpE1_0x70)    ,C_LABEL(OpE1_0x71)       ; 70
dd  C_LABEL(OpE1_0x72)    ,C_LABEL(OpM1_0x73)
dd  C_LABEL(OpE1_0x74)    ,C_LABEL(OpE1_0x75)
dd  C_LABEL(OpE1_0x76)    ,C_LABEL(OpE1_0x77)
dd  C_LABEL(Op_0x78)      ,C_LABEL(OpM1X1_0x79)
dd  C_LABEL(OpE1_0x7A)    ,C_LABEL(Op_0x7B)
dd  C_LABEL(Op_0x7C)      ,C_LABEL(OpM1X1_0x7D)
dd  C_LABEL(OpM1_0x7E)    ,C_LABEL(OpM1_0x7F)
dd  C_LABEL(OpE1_0x80)    ,C_LABEL(OpE1_0x81)       ; 80
dd  C_LABEL(Op_0x82)      ,C_LABEL(OpM1_0x83)
dd  C_LABEL(OpE1_0x84)    ,C_LABEL(OpE1_0x85)
dd  C_LABEL(OpE1_0x86)    ,C_LABEL(OpE1_0x87)
dd  C_LABEL(OpX1_0x88)    ,C_LABEL(OpM1_0x89)
dd  C_LABEL(OpM1_0x8A)    ,C_LABEL(OpE1_0x8B)
dd  C_LABEL(OpX1_0x8C)    ,C_LABEL(OpM1_0x8D)
dd  C_LABEL(OpX1_0x8E)    ,C_LABEL(OpM1_0x8F)
dd  C_LABEL(OpE1_0x90)    ,C_LABEL(OpE1_0x91)       ; 90
dd  C_LABEL(OpE1_0x92)    ,C_LABEL(OpM1_0x93)
dd  C_LABEL(OpE1_0x94)    ,C_LABEL(OpE1_0x95)
dd  C_LABEL(OpE1_0x96)    ,C_LABEL(OpE1_0x97)
dd  C_LABEL(OpM1_0x98)    ,C_LABEL(OpM1_0x99)
dd  C_LABEL(OpE1_0x9A)    ,C_LABEL(OpX1_0x9B)
dd  C_LABEL(OpM1_0x9C)    ,C_LABEL(OpM1_0x9D)
dd  C_LABEL(OpM1_0x9E)    ,C_LABEL(OpM1_0x9F)
dd  C_LABEL(OpX1_0xA0)    ,C_LABEL(OpE1_0xA1)       ; A0
dd  C_LABEL(OpX1_0xA2)    ,C_LABEL(OpM1_0xA3)
dd  C_LABEL(OpE1_0xA4)    ,C_LABEL(OpE1_0xA5)
dd  C_LABEL(OpE1_0xA6)    ,C_LABEL(OpE1_0xA7)
dd  C_LABEL(OpX1_0xA8)    ,C_LABEL(OpM1_0xA9)
dd  C_LABEL(OpX1_0xAA)    ,C_LABEL(OpE1_0xAB)
dd  C_LABEL(OpX1_0xAC)    ,C_LABEL(OpM1_0xAD)
dd  C_LABEL(OpX1_0xAE)    ,C_LABEL(OpM1_0xAF)
dd  C_LABEL(OpE1_0xB0)    ,C_LABEL(OpE1_0xB1)       ; B0
dd  C_LABEL(OpE1_0xB2)    ,C_LABEL(OpM1_0xB3)
dd  C_LABEL(OpE1_0xB4)    ,C_LABEL(OpE1_0xB5)
dd  C_LABEL(OpE1_0xB6)    ,C_LABEL(OpE1_0xB7)
dd  C_LABEL(Op_0xB8)      ,C_LABEL(OpM1X1_0xB9)
dd  C_LABEL(OpX1_0xBA)    ,C_LABEL(OpX1_0xBB)
dd  C_LABEL(OpX1_0xBC)    ,C_LABEL(OpM1X1_0xBD)
dd  C_LABEL(OpX1_0xBE)    ,C_LABEL(OpM1_0xBF)
dd  C_LABEL(OpX1_0xC0)    ,C_LABEL(OpE1_0xC1)       ; C0
dd  C_LABEL(OpE1_0xC2)    ,C_LABEL(OpM1_0xC3)
dd  C_LABEL(OpE1_0xC4)    ,C_LABEL(OpE1_0xC5)
dd  C_LABEL(OpE1_0xC6)    ,C_LABEL(OpE1_0xC7)
dd  C_LABEL(OpX1_0xC8)    ,C_LABEL(OpM1_0xC9)
dd  C_LABEL(OpX1_0xCA)    ,C_LABEL(Op_0xCB)
dd  C_LABEL(OpX1_0xCC)    ,C_LABEL(OpM1_0xCD)
dd  C_LABEL(OpM1_0xCE)    ,C_LABEL(OpM1_0xCF)
dd  C_LABEL(OpE1_0xD0)    ,C_LABEL(OpE1_0xD1)       ; D0
dd  C_LABEL(OpE1_0xD2)    ,C_LABEL(OpM1_0xD3)
dd  C_LABEL(OpE1_0xD4)    ,C_LABEL(OpE1_0xD5)
dd  C_LABEL(OpE1_0xD6)    ,C_LABEL(OpE1_0xD7)
dd  C_LABEL(Op_0xD8)      ,C_LABEL(OpM1X1_0xD9)
dd  C_LABEL(OpE1_0xDA)    ,C_LABEL(ALL_INVALID)
dd  C_LABEL(Op_0xDC)      ,C_LABEL(OpM1X1_0xDD)
dd  C_LABEL(OpM1_0xDE)    ,C_LABEL(OpM1_0xDF)
dd  C_LABEL(OpX1_0xE0)    ,C_LABEL(OpE1_0xE1)       ; E0
dd  C_LABEL(OpE1_0xE2)    ,C_LABEL(OpM1_0xE3)
dd  C_LABEL(OpE1_0xE4)    ,C_LABEL(OpE1_0xE5)
dd  C_LABEL(OpE1_0xE6)    ,C_LABEL(OpE1_0xE7)
dd  C_LABEL(OpX1_0xE8)    ,C_LABEL(OpM1_0xE9)
dd  C_LABEL(Op_0xEA)      ,C_LABEL(Op_0xEB)
dd  C_LABEL(OpX1_0xEC)    ,C_LABEL(OpM1_0xED)
dd  C_LABEL(OpM1_0xEE)    ,C_LABEL(OpM1_0xEF)
dd  C_LABEL(OpE1_0xF0)    ,C_LABEL(OpE1_0xF1)       ; F0
dd  C_LABEL(OpE1_0xF2)    ,C_LABEL(OpM1_0xF3)
dd  C_LABEL(OpE1_0xF4)    ,C_LABEL(OpE1_0xF5)
dd  C_LABEL(OpE1_0xF6)    ,C_LABEL(OpE1_0xF7)
dd  C_LABEL(Op_0xF8)      ,C_LABEL(OpM1X1_0xF9)
dd  C_LABEL(OpE1_0xFA)    ,C_LABEL(OpE1_0xFB)
dd  C_LABEL(OpE1_0xFC)    ,C_LABEL(OpM1X1_0xFD)
dd  C_LABEL(OpM1_0xFE)    ,C_LABEL(OpM1_0xFF)


ALIGND
CPU_OpTables:
dd OpTableE0
dd OpTablePm
dd OpTablePx
dd OpTableMX

%ifdef Abort_at_op_num
MaxOps:dd Abort_at_op_num
%endif
%ifdef SINGLE_STEP
_waitcount:dd 256*256*1024  ;14100
_debug:db 0
%endif

section .text
%macro OPCODE_EPILOG 0
%if 0
 xor eax,eax        ; Zero for table offset

 test R_Cycles,R_Cycles
 jl C_LABEL(CPU_START_NEXT)
 jmp HANDLE_EVENT

%else
;mov cl,0
 jmp C_LABEL(CPU_RETURN)
%endif
%endmacro

;%1 = flag, %2 = wheretogo
%macro JUMP_FLAG 2
%if %1 == SNES_FLAG_E
 mov ch,B_E_flag
 test ch,ch
 jnz %2
%elif %1 == SNES_FLAG_N
 mov ch,B_N_flag
 test ch,ch
 js %2
%elif %1 == SNES_FLAG_V
 mov ch,B_V_flag
 test ch,ch
 jnz %2
%elif %1 == SNES_FLAG_M
 mov ch,B_M1_flag
 test ch,ch
 jnz %2
%elif %1 == SNES_FLAG_X
 mov ch,B_XB_flag
 test ch,ch
 jnz %2
%elif %1 == SNES_FLAG_D
 mov ch,B_D_flag
 test ch,ch
 jnz %2
%elif %1 == SNES_FLAG_I
 mov ch,B_I_flag
 test ch,ch
 jnz %2
%elif %1 == SNES_FLAG_Z
 mov ch,B_Z_flag
 test ch,ch
 jz %2
%elif %1 == SNES_FLAG_C
 mov ch,B_C_flag
 test ch,ch
 jnz %2
%else
%error Unhandled flag in JUMP_FLAG
%endif
%endmacro

;%1 = flag, %2 = wheretogo
%macro JUMP_NOT_FLAG 2
%if %1 == SNES_FLAG_E
 mov ch,B_E_flag
 test ch,ch
 jz %2
%elif %1 == SNES_FLAG_N
 mov ch,B_N_flag
 test ch,ch
 jns %2
%elif %1 == SNES_FLAG_V
 mov ch,B_V_flag
 test ch,ch
 jz %2
%elif %1 == SNES_FLAG_M
 mov ch,B_M1_flag
 test ch,ch
 jz %2
%elif %1 == SNES_FLAG_X
 mov ch,B_XB_flag
 test ch,ch
 jz %2
%elif %1 == SNES_FLAG_D
 mov ch,B_D_flag
 test ch,ch
 jz %2
%elif %1 == SNES_FLAG_I
 mov ch,B_I_flag
 test ch,ch
 jz %2
%elif %1 == SNES_FLAG_Z
 mov ch,B_Z_flag
 test ch,ch
 jnz %2
%elif %1 == SNES_FLAG_C
 mov ch,B_C_flag
 test ch,ch
 jz %2
%else
%error Unhandled flag in JUMP_NOT_FLAG
%endif
%endmacro

%macro STORE_FLAGS_E 1
 mov byte B_E_flag,%1
%endmacro

%macro STORE_FLAGS_N 1
 mov byte B_N_flag,%1
%endmacro

%macro STORE_FLAGS_V 1
 mov byte B_V_flag,%1
%endmacro

%macro STORE_FLAGS_M 1
 mov byte B_M1_flag,%1
%endmacro

%macro STORE_FLAGS_1 1
 mov byte B_M1_flag,%1
%endmacro

%macro STORE_FLAGS_X 1
 mov byte B_XB_flag,%1
%endmacro

%macro STORE_FLAGS_B 1
 mov byte B_XB_flag,%1
%endmacro

%macro STORE_FLAGS_D 1
 mov byte B_D_flag,%1
%endmacro

%macro STORE_FLAGS_I 1
 mov byte B_I_flag,%1
%endmacro

%macro STORE_FLAGS_Z 1
 mov byte B_Z_flag,%1
%endmacro

%macro STORE_FLAGS_C 1
 mov byte B_C_flag,%1
%endmacro

%macro STORE_FLAGS_NZ 1
 STORE_FLAGS_N %1
 STORE_FLAGS_Z %1
%endmacro

%macro STORE_FLAGS_NZC 2
 STORE_FLAGS_N %1
 STORE_FLAGS_Z %1
 STORE_FLAGS_C %2
%endmacro

; Load cycle counter to register R_Cycles
%macro LOAD_CYCLES 0-1 eax
 mov %1,[C_LABEL(EventTrip)]
 mov dword R_Cycles,[C_LABEL(SNES_Cycles)]
 sub dword R_Cycles,%1
%endmacro

; Get cycle counter to register argument
%macro GET_CYCLES 1
 mov dword %1,[C_LABEL(EventTrip)]
 add dword %1,R_Cycles
%endmacro

; Save register R_Cycles to cycle counter
%macro SAVE_CYCLES 0-1 eax
 GET_CYCLES %1
 mov [C_LABEL(SNES_Cycles)],%1
%endmacro

; Load base pointer to CPU register set
%macro LOAD_BASE 0
 mov dword R_Base,CPU_Register_Base
%endmacro


; Load register R_PBPC with PB:PC
%macro LOAD_PC 0
 mov dword R_PBPC,[CPU_LABEL(PB_Shifted)]
 add dword R_PBPC,[CPU_LABEL(PC)]
%endmacro

; Get PC from register R_PBPC
;%1 = with
%macro GET_PC 1

⌨️ 快捷键说明

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