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

📄 sa1ops.s

📁 SFC游戏模拟器 snes9x 1.43 的原代码
💻 S
📖 第 1 页 / 共 5 页
字号:
Op93M1:	StackRelativeIndirectIndexed8 STA	Sta8 SRIIOp93M0:	StackRelativeIndirectIndexed8 STA2	Sta16 SRII/* STX */Op86X1:	Direct8 STX	Stx8 DIROp86X0:	Direct8 STX2	Stx16 DIROp96X1:	DirectIndexedY8 STX	Stx8 DIYOp96X0:	DirectIndexedY8 STX2	Stx16 DIYOp8EX1:	Absolute8 STX	Stx8 ABSOp8EX0:	Absolute8 STX2	Stx16 ABS/* STY */Op84X1:	Direct8 STY	Sty8 DIROp84X0:	Direct8 STY2	Sty16 DIROp94X1:	DirectIndexedX8 STY	Sty8 DIXOp94X0:	DirectIndexedX8 STY2	Sty16 DIXOp8CX1:	Absolute8 STY	Sty8 ABSOp8CX0:	Absolute8 STY2	Sty16 ABS/* STZ */Op64M1:	Direct8 STZ	Stz8 DIROp64M0:	Direct8 STZ2	Stz16 DIROp74M1:	DirectIndexedX8 STZ	Stz8 DIXOp74M0:	DirectIndexedX8 STZ2	Stz16 DIXOp9CM1:	Absolute8 STZ	Stz8 ABSOp9CM0:	Absolute8 STZ2	Stz16 ABSOp9EM1:	AbsoluteIndexedX8 STZ	Stz8 ABSXOp9EM0:	AbsoluteIndexedX8 STZ2	Stz16 ABSX/* TRB */Op14M1:	Direct8 TRB	Trb8 DIROp14M0:	Direct8 TRB2	Trb16 DIROp1CM1:	Absolute8 TRB	Trb8 ABSOp1CM0:	Absolute8 TRB2	Trb16 ABS/* TSB */Op04M1:	Direct8 TSB	Tsb8 DIROp04M0:	Direct8 TSB2	Tsb16 DIROp0CM1:	Absolute8 TSB	Tsb8 ABSOp0CM0:	Absolute8 TSB2	Tsb16 ABS/* BCC */Op90:	Relative	testb $0xff, SA1_Carry	jnz .BCC_EXIT	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC.BCC_EXIT:	jmp S9xSA1MainAsmLoop/* BCS */OpB0:	Relative	testb $0xff, SA1_Carry	jz .BCS_EXIT	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC.BCS_EXIT:	jmp S9xSA1MainAsmLoop/* BEQ */OpF0:	Relative	testb $0xff, SA1_Zero	jnz .BEQ_EXIT	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC	CPUShutdown BEQ.BEQ_EXIT:	jmp S9xSA1MainAsmLoop/* BMI */Op30:	Relative	testb $0x80, SA1_Negative	jz .BMI_EXIT	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC	CPUShutdown BMI.BMI_EXIT:	jmp S9xSA1MainAsmLoop/* BNE */OpD0:	Relative	testb $0xff, SA1_Zero	jz .BNE_EXIT	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC	CPUShutdown BNE.BNE_EXIT:	jmp S9xSA1MainAsmLoop/* BPL */Op10:	Relative	testb $0x80, SA1_Negative	jnz .BPL_EXIT	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC	CPUShutdown BPL.BPL_EXIT:	jmp S9xSA1MainAsmLoop/* BRA */Op80:	Relative	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC	CPUShutdown BRA	jmp S9xSA1MainAsmLoop/* BVC */Op50:	Relative	testb $0xff, SA1_Overflow	jnz .BVC_EXIT	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC	CPUShutdown BVC.BVC_EXIT:	jmp S9xSA1MainAsmLoop/* BVS */Op70:	Relative	testb $0xff, SA1_Overflow	jz .BVS_EXIT	andl $0xffff, %edx	addl SA1PCBase, %edx	movl %edx, PC	CPUShutdown BVS.BVS_EXIT:	jmp S9xSA1MainAsmLoop/* BRL */Op82:	RelativeLong BRL	andl $0xffff, %edx	orl SA1ShiftedPB, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* CLC */Op18:	movb $0, SA1_Carry	jmp S9xSA1MainAsmLoop/* CLD */OpD8:	andb $~Decimal, FLAGS	jmp S9xSA1MainAsmLoop/* CLI */Op58:	andb $~IRQ, FLAGS	cmpb $0, SA1IRQActive	jz .CLI_EXIT	/* XXX: test for Settings.DisableIRQ */	call S9xSA1Opcode_IRQ.CLI_EXIT:	jmp S9xSA1MainAsmLoop/* CLV */OpB8:	movb $0, SA1_Overflow	jmp S9xSA1MainAsmLoop/* DEX */OpCAX1:	movb XL, %al	decb %al	movb %al, XL	SetZN	jmp S9xSA1MainAsmLoopOpCAX0:	decw XX	setnz SA1_Zero	movb XH, %al	movb %al, SA1_Negative	jmp S9xSA1MainAsmLoop/* DEY */Op88X1:	movb YL, %al	decb %al	movb %al, YL	SetZN	jmp S9xSA1MainAsmLoopOp88X0:	decw YY	setnz SA1_Zero	movb YH, %al	movb %al, SA1_Negative	jmp S9xSA1MainAsmLoop/* INX */OpE8X1:	movb XL, %al	incb %al	movb %al, XL	SetZN	jmp S9xSA1MainAsmLoopOpE8X0:	incw XX	setnz SA1_Zero	movb XH, %al	movb %al, SA1_Negative	jmp S9xSA1MainAsmLoop/* INY */OpC8X1:	movb YL, %al	incb %al	movb %al, YL	SetZN	jmp S9xSA1MainAsmLoopOpC8X0:	incw YY	setnz SA1_Zero	movb YH, %al	movb %al, SA1_Negative	jmp S9xSA1MainAsmLoop/* NOP */OpEA:	jmp S9xSA1MainAsmLoop/* PEA */OpF4E1:	Immediate16 PEA	PushWordENew PEA	jmp S9xSA1MainAsmLoopOpF4:	Immediate16 PEA	PushWord PEA	jmp S9xSA1MainAsmLoop/* PEI */OpD4E1:	DirectIndirect8 PEI	movl %edx, %eax	PushWordENew PEI	jmp S9xSA1MainAsmLoopOpD4:	DirectIndirect8 PEI	movl %edx, %eax	PushWord PEI	jmp S9xSA1MainAsmLoop/* PER */Op62E1:	RelativeLong PER	movl %edx, %eax	PushWordENew PER	jmp S9xSA1MainAsmLoop	Op62:	RelativeLong PER	movl %edx, %eax	PushWord PER	jmp S9xSA1MainAsmLoop	/* PHA */Op48E1:	movb AL, %al	PushByteE PHA	jmp S9xSA1MainAsmLoopOp48M1:	movb AL, %al	PushByte PHA	jmp S9xSA1MainAsmLoopOp48M0:	movw AA, %ax	PushWord PHA	jmp S9xSA1MainAsmLoop/* PHB */Op8BE1:	movb DB, %al	PushByteE PHB	jmp S9xSA1MainAsmLoopOp8B:	movb DB, %al	PushByte PHB	jmp S9xSA1MainAsmLoop/* PHD */Op0BE1:	movw DD, %ax	PushWordENew PHD	jmp S9xSA1MainAsmLoopOp0B:	movw DD, %ax	PushWord PHD	jmp S9xSA1MainAsmLoop/* PHK */Op4BE1:	movb PB, %al	PushByteE PHK	jmp S9xSA1MainAsmLoopOp4B:	movb PB, %al	PushByte PHK	jmp S9xSA1MainAsmLoop/* PHP */Op08E1:	S9xSA1PackStatus PHP	movb FLAGS, %al	PushByteE PHP	jmp S9xSA1MainAsmLoopOp08:	S9xSA1PackStatus PHP	movb FLAGS, %al	PushByte PHP	jmp S9xSA1MainAsmLoop/* PHX */OpDAE1:	movb XL, %al	PushByteE PHX	jmp S9xSA1MainAsmLoopOpDAX1:	movb XL, %al	PushByte PHX	jmp S9xSA1MainAsmLoopOpDAX0:	movw XX, %ax	PushWord PHX	jmp S9xSA1MainAsmLoop/* PHY */Op5AE1:	movb YL, %al	PushByteE PHY	jmp S9xSA1MainAsmLoopOp5AX1:	movb YL, %al	PushByte PHY	jmp S9xSA1MainAsmLoopOp5AX0:	movw YY, %ax	PushWord PHY	jmp S9xSA1MainAsmLoop/* PLA */Op68E1:	PullByteE PLA	movb %al, AL	SetZN	jmp S9xSA1MainAsmLoopOp68M1:	PullByte PLA	movb %al, AL	SetZN	jmp S9xSA1MainAsmLoopOp68M0:	PullWord PLA	movw %ax, AA	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* PLB */OpABE1:	PullByteE PLB	movb %al, DB	SetZN	andl $0xff, %eax	sall $16, %eax	movl %eax, SA1ShiftedDB	jmp S9xSA1MainAsmLoopOpAB:	PullByte PLB	movb %al, DB	SetZN	andl $0xff, %eax	sall $16, %eax	movl %eax, SA1ShiftedDB	jmp S9xSA1MainAsmLoop/* PLD */Op2BE1:	PullWordENew PLD	movw %ax, DD	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoopOp2B:	PullWord PLD	movw %ax, DD	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop	/* PLP */Op28E1:	PullByteE PLPE	movb %al, FLAGS	testb $IndexFlag, FLAGS	jz .PLP16E	xorb %al, %al	movb %al, XH	movb %al, YH.PLP16E:	S9xSA1UnpackStatus PLPE	S9xSA1FixCycles PLPE	CheckForIrq PLPE	jmp S9xSA1MainAsmLoopOp28:	PullByte PLP	movb %al, FLAGS	testb $IndexFlag, FLAGS	jz .PLP16	xorb %al, %al	movb %al, XH	movb %al, YH.PLP16:	S9xSA1UnpackStatus PLP	S9xSA1FixCycles PLP	CheckForIrq PLP	jmp S9xSA1MainAsmLoop/* PLX */OpFAE1:	PullByteE PLX	movb %al, XL	SetZN	jmp S9xSA1MainAsmLoopOpFAX1:	PullByte PLX	movb %al, XL	SetZN	jmp S9xSA1MainAsmLoopOpFAX0:	PullWord PLX	movw %ax, XX	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* PLY */Op7AE1:	PullByteE PLY	movb %al, YL	SetZN	jmp S9xSA1MainAsmLoop	Op7AX1:	PullByte PLY	movb %al, YL	SetZN	jmp S9xSA1MainAsmLoopOp7AX0:	PullWord PLY	movw %ax, YY	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* SEC */Op38:	movb $1, SA1_Carry	jmp S9xSA1MainAsmLoop/* SED */OpF8:		orb $Decimal, FLAGS	jmp S9xSA1MainAsmLoop/* SEI */Op78:	orb $IRQ, FLAGS	jmp S9xSA1MainAsmLoop/* TAX */OpAAX1:	movb AL, %al	movb %al, XL	SetZN	jmp S9xSA1MainAsmLoopOpAAX0:	movw AA, %ax	movw %ax, XX	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TAY */OpA8X1:	movb AL, %al	movb %al, YL	SetZN	jmp S9xSA1MainAsmLoopOpA8X0:	movw AA, %ax	movw %ax, YY	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TCD */Op5B:	movw AA, %ax	movw %ax, DD	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TCS */Op1B:	movw AA, %ax	movw %ax, SS	testw $Emulation, FLAGS16	jz .TCS_EXIT	movb $1, SH.TCS_EXIT:	jmp S9xSA1MainAsmLoop/* TDC */Op7B:	movw DD, %ax	movw %ax, AA	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TSC */Op3B:	movw SS, %ax	movw %ax, AA	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TSX */OpBAX1:	movb SL, %al	movb %al, XL	SetZN	jmp S9xSA1MainAsmLoopOpBAX0:	movw SS, %ax	movw %ax, XX	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TXA */Op8AM1:	movb XL, %al	movb %al, AL	SetZN	jmp S9xSA1MainAsmLoopOp8AM0:	movw XX, %ax	movw %ax, AA	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TXS */Op9A:	movw XX, %ax	movw %ax, SS	testw $Emulation, FLAGS16	jz .TXS_EXIT	movb $1, SH.TXS_EXIT:	jmp S9xSA1MainAsmLoop/* TXY */Op9BX1:	movb XL, %al	movb %al, YL	SetZN	jmp S9xSA1MainAsmLoopOp9BX0:	movw XX, %ax	movw %ax, YY	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TYA */Op98M1:	movb YL, %al	movb %al, AL	SetZN	jmp S9xSA1MainAsmLoopOp98M0:	movw YY, %ax	movw %ax, AA	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* TYX */OpBBX1:	movb YL, %al	movb %al, XL	SetZN	jmp S9xSA1MainAsmLoopOpBBX0:	movw YY, %ax	movw %ax, XX	testw %ax, %ax	Set16ZN	jmp S9xSA1MainAsmLoop/* XCE */OpFB:	movw FLAGS16, %ax	andw $~(Emulation | Carry), FLAGS16	GetCarry	jnc .XCE_NO_CARRY	orw $Emulation, FLAGS16.XCE_NO_CARRY:	testw $Emulation, %ax	setnz SA1_Carry	testw $Emulation, FLAGS16	jz .XCE_NO_EMULATION2	orw $(MemoryFlag | IndexFlag), FLAGS16	movb $1, SH.XCE_NO_EMULATION2:	testw $IndexFlag, FLAGS16	jz .XCE_NO_INDEX	xorl %eax, %eax	movb %al, XH	movb %al, YH.XCE_NO_INDEX:	S9xSA1FixCycles XCE	jmp S9xSA1MainAsmLoop		.data.LC0:	.string	"*** BRK".textOp00:#ifdef DEBUGGER	testb $TRACE_FLAG, SA1Flags	je .BRK_NO_TRACE	pushl $.LC0	ccall S9xTraceMessage	addl $4,%esp.BRK_NO_TRACE:#endif	testw $Emulation, FLAGS16	jnz .BRK_EMULATION	movb PB, %al	PushByte BRK1	movl PC, %eax	subl SA1PCBase, %eax	incl %eax	PushWord BRK2		S9xSA1PackStatus BRK	movb FLAGS, %al	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte BRK3	xorl %ecx, %ecx	movl %ecx, SA1ShiftedPB	movb %cl, PB	movl $0xFFE6, %edx	call S9xSA1GetWord	movl %eax, %edx	andl $0xffff, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop.BRK_EMULATION:	movl PC, %eax	subl SA1PCBase, %eax	incl %eax	PushWord BRK2		S9xSA1PackStatus BRK2	movb FLAGS, %al	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte BRK3	xorl %ecx, %ecx	movl %ecx, SA1ShiftedPB	movb %cl, PB	movl $0xFFFE, %edx	call S9xSA1GetWord	movl %eax, %edx	andl $0xffff, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop.data.LC1:	.string	"*** IRQ".text.globl S9xSA1Opcode_IRQS9xSA1Opcode_IRQ:#ifdef DEBUGGER	testb $TRACE_FLAG, SA1Flags	je .IRQ_NO_TRACE	pushl $.LC1	ccall S9xTraceMessage	addl $4, %esp.IRQ_NO_TRACE:#endif	testw $Emulation, FLAGS16	jnz .IRQ_EMULATION	movb PB, %al	PushByte IRQ1	movl PC, %eax	subl SA1PCBase, %eax	PushWord IRQ2		S9xSA1PackStatus IRQ	movb FLAGS, %al	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte IRQ3	xorl %ecx, %ecx	movl %ecx, SA1ShiftedPB	movb %cl, PB// XXX: FIXME: wrong vector	xorl %edx, %edx	movl FillRAM, %eax	movw 0x2207(%eax), %dx	jmp S9xSA1SetPCBase.IRQ_EMULATION:	movl PC, %eax	subl SA1PCBase, %eax	PushWord IRQ4		S9xSA1PackStatus IRQ2	movb FLAGS, %al	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte IRQ5	xorl %ecx, %ecx	movl %ecx, SA1ShiftedPB	movb %cl, PB// XXX: FIXME: wrong vector	xorl %edx, %edx	movl FillRAM, %eax	movw 0x2207(%eax), %dx	jmp S9xSA1SetPCBase.data.LC2:	.string	"*** NMI".text.globl S9xSA1Opcode_NMIS9xSA1Opcode_NMI:#ifdef DEBUGGER	testb $TRACE_FLAG, SA1Flags	je .NMI_NO_TRACE	pushl $.LC2	ccall S9xTraceMessage	addl $4, %esp.NMI_NO_TRACE:#endif	testw $Emulation, FLAGS16	jnz .NMI_EMULATION	movb PB, %al	PushByte NMI1	movl PC, %eax	subl SA1PCBase, %eax	PushWord NMI2		S9xSA1PackStatus NMI	movb FLAGS, %al	andb $~Decimal, FLAGS	orb $IRQ, FLAGS	

⌨️ 快捷键说明

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