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

📄 emu65816.asm

📁 SNES game emulator. C and asm files.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	docount 2, 8
	and cl, 0FFh-FDECIMAL
	vectorcall 00FFF4h, 00FFE4h
	dobreak
op03m0x0: ;	"ORA <%b,s", 2, 4,
op03m0x1:
	load_s_rel
	docount 2, 4+1
	ora16	
	dobreak
op03m1x0:
op03m1x1:
	load_s_rel
	docount 2, 4
	ora8
	dobreak
op04m0x0: ;	"TSB <%b", 2, 5,
op04m0x1:
	load_dir
	docount 2, 5+1
	tsb16
	dobreak
op04m1x0:
op04m1x1:
	load_dir
	docount 2, 5
	tsb8
	dobreak
op05m0x0: ;	"ORA <%b", 2, 3,
op05m0x1:
	load_dir
	docount 2, 3+1
	ora16
	dobreak
op05m1x0:
op05m1x1:
	load_dir
	docount 2, 3
	ora8
	dobreak
op06m0x0: ;	"SHL <%b", 2, 5,
op06m0x1:
	load_dir
	docount 2, 5+1
	shl16
	dobreak
op06m1x0:
op06m1x1:
	load_dir
	docount 2, 5
	shl8
	dobreak
op07m0x0: ;	"ORA [<%b]", 2, 6,
op07m0x1:
	load_dir_indir_long
	docount 2, 6+1
	ora16
	dobreak
op07m1x0:
op07m1x1:
	load_dir_indir_long
	docount 2, 6
	ora8
	dobreak
op08m0x0: ;	"PSH P", 1, 3, // PHP
op08m0x1:
op08m1x0:
op08m1x1:
	pushbyte cl
	docount 1, 3
	dobreak
op09m0x0: ;	"ORA %#", 2(+1), 2,
op09m0x1:
	get_imm
	docount 2+1, 2+1
	ora16 imm
	dobreak
op09m1x0:
op09m1x1:
	get_imm
	docount 2, 2
	ora8 imm
	dobreak
op0Am0x0: ;	"SHL A", 1, 2,
op0Am0x1:
	docount 1, 2
	shl16_a
	dobreak
op0Am1x0:
op0Am1x1:
	docount 1, 2
	shl8_a
	dobreak
op0Bm0x0: ;	"PSH D", 1, 4, // PHD Push Direct
op0Bm0x1:
op0Bm1x0:
op0Bm1x1:
	mov ebx, dword [_reg.D]
	docount 1, 4
	pushbyte bh
	pushbyte bl
	dobreak
op0Cm0x0: ;	"TSB %w", 3, 6,
op0Cm0x1:
	load_abs
	docount 3, 6+1
	tsb16
	dobreak
op0Cm1x0:
op0Cm1x1:
	load_abs
	docount 3, 6
	tsb8
	dobreak
op0Dm0x0: ;	"ORA %w", 3, 4,
op0Dm0x1:
	load_abs
	docount 3, 4+1
	ora16
	dobreak
op0Dm1x0:
op0Dm1x1:
	load_abs
	docount 3, 4
	ora8
	dobreak
op0Em0x0: ;	"SHL %w", 3, 6,
op0Em0x1:
	load_abs
	docount 3, 6+1
	shl16
	dobreak
op0Em1x0:
op0Em1x1:
	load_abs
	docount 3, 6
	shl8
	dobreak
op0Fm0x0: ;	"ORA %L", 4, 5,
op0Fm0x1:
	load_abs_long
	docount 4, 5+1
	ora16
	dobreak
op0Fm1x0:
op0Fm1x1:
	load_abs_long
	docount 4, 5
	ora8
	dobreak
op10m0x0: ;	"BPL @%b", 2, 2,
op10m0x1:
op10m1x0:
op10m1x1:
	add edx, 2    ; PC += 2
	test cl, FNEGATIVE
	jz @F         ; Branch
	sub esi, 2    ; cycle count
	dobreak
@@:	movsx ebx, bh
	sub esi, 3    ; cycle count
	add dx, bx
	dobreak
op11m0x0: ;	"ORA (<%b),Y", 2, 5,
	load_dir_indir_index_y16
	docount 2, 5+1
	ora16
	dobreak
op11m0x1:
	load_dir_indir_index_y8
	docount 2, 5+1
	ora16
	dobreak
op11m1x0:
	load_dir_indir_index_y16
	docount 2, 5
	ora8
	dobreak
op11m1x1:
	load_dir_indir_index_y8
	docount 2, 5
	ora8
	dobreak
op12m0x0: ;	"ORA (<%b)", 2, 5,
op12m0x1:
	load_dir_indir
	docount 2, 5+1
	ora16
	dobreak
op12m1x0:
op12m1x1:
	load_dir_indir
	docount 2, 5
	ora8
	dobreak
op13m0x0: ;	"ORA (<%b,S),Y", 2, 7,
	load_s_rel_indir_index_y16
	docount 2, 7+1
	ora16
	dobreak
op13m0x1:
	load_s_rel_indir_index_y8
	docount 2, 7+1
	ora16
	dobreak
op13m1x0:
	load_s_rel_indir_index_y16
	docount 2, 7
	ora8
	dobreak
op13m1x1:
	load_s_rel_indir_index_y8
	docount 2, 7
	ora8
	dobreak
op14m0x0: ;	"TRB <%b", 2, 5,
op14m0x1:
	load_dir
	docount 2, 5+1
	trb16
	dobreak
op14m1x0:
op14m1x1:
	load_dir
	docount 2, 5
	trb8
	dobreak
op15m0x0: ;	"ORA <%b,X", 2, 4,
	load_dir_index_x16
	docount 2, 4+1
	ora16
	dobreak
op15m0x1:
	load_dir_index_x8
	docount 2, 4+1
	ora16
	dobreak
op15m1x0:
	load_dir_index_x16
	docount 2, 4
	ora8
	dobreak
op15m1x1:
	load_dir_index_x8
	docount 2, 4
	ora8
	dobreak
op16m0x0: ;	"SHL <%b,X",2, 6,
	load_dir_index_x16
	docount 2, 6+1
	shl16
	dobreak
op16m0x1:
	load_dir_index_x8
	docount 2, 6+1
	shl16
	dobreak
op16m1x0:
	load_dir_index_x16
	docount 2, 6
	shl8
	dobreak
op16m1x1:
	load_dir_index_x8
	docount 2, 6
	shl8
	dobreak
op17m0x0: ;	"ORA [<%b],Y", 2, 6,
	load_dir_indir_long_index_y16
	docount 2, 6+1
	ora16
	dobreak
op17m0x1:
	load_dir_indir_long_index_y8
	docount 2, 6+1
	ora16
	dobreak
op17m1x0:
	load_dir_indir_long_index_y16
	docount 2, 6
	ora8
	dobreak
op17m1x1:
	load_dir_indir_long_index_y8
	docount 2, 6
	ora8
	dobreak
op18m0x0: ;	"CLC", 1, 2,
op18m0x1:
op18m1x0:
op18m1x1:
	and cl, 0FFh-FCARRY
	docount 1, 2
	dobreak;
op19m0x0: ;	"ORA %w,Y", 3, 4,
	load_abs_index_y16
	docount 3, 4+1
	ora16
	dobreak
op19m0x1:
	load_abs_index_y8
	docount 3, 4+1
	ora16
	dobreak
op19m1x0:
	load_abs_index_y16
	docount 3, 4
	ora8
	dobreak
op19m1x1:
	load_abs_index_y8
	docount 3, 4
	ora8
	dobreak
op1Am0x0: ;	"INC A", 1, 2,
op1Am0x1:
	docount 1, 2
	inca16
	dobreak
op1Am1x0:
op1Am1x1:
	docount 1, 2
	inca8
	dobreak
op1Bm0x0: ;	"TAS", 1, 2,
op1Bm0x1:
op1Bm1x0:
op1Bm1x1:
	mov eax, dword [_reg.A]
	docount 1, 2
	mov dword [_reg.S], eax
	dobreak;
op1Cm0x0: ;	"TRB %w", 3, 6,
op1Cm0x1:
	load_abs
	docount 3, 6+1
	trb16
	dobreak
op1Cm1x0:
op1Cm1x1:
	load_abs
	docount 3, 6
	trb8
	dobreak
op1Dm0x0: ;	"ORA %w,X", 3, 4,
	load_abs_index_x16
	docount 3, 4+1
	ora16
	dobreak
op1Dm0x1:
	load_abs_index_x8
	docount 3, 4+1
	ora16
	dobreak
op1Dm1x0:
	load_abs_index_x16
	docount 3, 4
	ora8
	dobreak
op1Dm1x1:
	load_abs_index_x8
	docount 3, 4
	ora8
	dobreak
op1Em0x0: ;	"SHL %w,X", 3, 7,
	load_abs_index_x16
	docount 3, 7+1
	shl16
	dobreak
op1Em0x1:
	load_abs_index_x8
	docount 3, 7+1
	shl16
	dobreak
op1Em1x0:
	load_abs_index_x16
	docount 3, 7
	shl8
	dobreak
op1Em1x1:
	load_abs_index_x8
	docount 3, 7
	shl8
	dobreak
op1Fm0x0: ;	"ORA %L,X", 4, 5,
	load_abs_long_index_x16
	docount 4, 5+1
	ora16
	dobreak
op1Fm0x1:
	load_abs_long_index_x8
	docount 4, 5+1
	ora16
	dobreak
op1Fm1x0:
	load_abs_long_index_x16
	docount 4, 5
	ora8
	dobreak
op1Fm1x1:
	load_abs_long_index_x8
	docount 4, 5
	ora8
	dobreak
op20m0x0: ;	"JSR %w", 3, 6,
op20m0x1:
op20m1x0:
op20m1x1:
	shr ebx, 8
	docount 2, 6 ; 1 less
	shortcall bl, bh
	dobreak
op21m0x0: ;	"AND (<%b,X)", 2, 6,
	load_dir_index_indir_x16
	docount 2, 6+1
	and16
	dobreak
op21m0x1:
	load_dir_index_indir_x8
	docount 2, 6+1
	and16
	dobreak
op21m1x0:
	load_dir_index_indir_x16
	docount 2, 6
	and8
	dobreak
op21m1x1:
	load_dir_index_indir_x8
	docount 2, 6
	and8
	dobreak
op22m0x0: ;	"JSL %L", 4, 8,
op22m0x1:
op22m1x0:
op22m1x1:
	shr ebx, 8
	docount 3, 8 ; 1 less
	longcall_ebx
	dobreak
op23m0x0: ;	"AND <%b,s", 2, 4,
op23m0x1:
	load_s_rel
	docount 2, 4+1
	and16
	dobreak
op23m1x0:
op23m1x1:
	load_s_rel
	docount 2, 4
	and8
	dobreak
op24m0x0: ;	"BIT <%b", 2, 3,
op24m0x1:
	load_dir
	docount 2, 3+1
	bit16
	dobreak
op24m1x0:
op24m1x1:
	load_dir
	docount 2, 3
	bit8
	dobreak
op25m0x0: ;	"AND <%b", 2, 3,
op25m0x1:
	load_dir
	docount 2, 3+1
	and16
	dobreak
op25m1x0:
op25m1x1:
	load_dir
	docount 2, 3
	and8
	dobreak
op26m0x0: ;	"ROL <%b", 2, 5,
op26m0x1:
	load_dir
	docount 2, 5
	rol16
	dobreak
op26m1x0:
op26m1x1:
	load_dir
	docount 2, 5
	rol8
	dobreak
op27m0x0: ;	"AND [<%b]", 2, 6,
op27m0x1:
	load_dir_indir_long
	docount 2, 6+1
	and16
	dobreak
op27m1x0:
op27m1x1:
	load_dir_indir_long
	docount 2, 6
	and8
	dobreak
op28m0x0: ;	"PUL P", 1, 4, // PLP
op28m0x1:
op28m1x0:
op28m1x1:
	pullbyte cl
	docount 1, 4
	test cl, 10h  ; 8-bit index?
	jz @F
	and dword [_reg.X], 0FFh ; clear high bytes
	and dword [_reg.Y], 0FFh
@@:	dobreak_mxchange
op29m0x0: ;	"AND %#", 2, 2,
op29m0x1:
	get_imm
	docount 2+1, 2+1
	and16 imm
	dobreak
op29m1x0:
op29m1x1:
	get_imm
	docount 2, 2
	and8 imm
	dobreak
op2Am0x0: ;	"ROL A", 1, 2,
op2Am0x1:
	docount 1, 2
	rol16_a
	dobreak
op2Am1x0:
op2Am1x1:
	docount 1, 2
	rol8_a
	dobreak
op2Bm0x0: ;	"PUL D", 1, 5, // PLD Pull Direct
op2Bm0x1:
op2Bm1x0:
op2Bm1x1:
	pullbyte bl
	pullbyte bh
	and cl, 0FFh-FZERO-FNEGATIVE
	inc edx
	and ebx, 0000FFFFh
	jnz @F
	or cl, FZERO
@@:	test bh, 80h
	jz @F
	or cl, FNEGATIVE
@@:	sub esi, 5
	mov dword [_reg.D], ebx
	dobreak
op2Cm0x0: ;	"BIT %w", 3, 4,
op2Cm0x1:
	load_abs
	docount 3, 4+1
	bit16

⌨️ 快捷键说明

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