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

📄 sa1ops.s

📁 SFC游戏模拟器 snes9x 1.43 的原代码
💻 S
📖 第 1 页 / 共 5 页
字号:
	PushByte NMI3	xorl %ecx, %ecx	movl %ecx, SA1ShiftedPB	movb %cl, PB// XXX: FIXME: wrong vector	xorl %edx, %edx	movl FillRAM, %eax	movw 0x2205(%eax), %dx	jmp S9xSA1SetPCBase.NMI_EMULATION:	movl PC, %eax	subl SA1PCBase, %eax	PushWord NMI4		S9xSA1PackStatus NMI2	movb FLAGS, %al	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte NMI5	xorl %ecx, %ecx	movl %ecx, SA1ShiftedPB	movb %cl, PB// XXX: FIXME: wrong vector	xorl %edx, %edx	movl FillRAM, %eax	movw 0x2205(%eax), %dx	jmp S9xSA1SetPCBase.data.LC3:	.string	"*** COP".textOp02:#ifdef DEBUGGER	testb $TRACE_FLAG, SA1Flags	je .COP_NO_TRACE	pushl $.LC3	ccall S9xTraceMessage	addl $4,%esp.COP_NO_TRACE:#endif	testw $Emulation, FLAGS16	jnz .COP_EMULATION	movb PB, %al	PushByte COP1	movl PC, %eax	subl SA1PCBase, %eax	incl %eax	PushWord COP2		S9xSA1PackStatus COP	movb FLAGS, %al	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte COP3	xorl %ecx, %ecx	movl %ecx, SA1ShiftedPB	movb %cl, PB	movl $0xFFE4, %edx	call S9xSA1GetWord	movl %eax, %edx	andl $0xffff, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop.COP_EMULATION:	movl PC, %eax	subl SA1PCBase, %eax	incl %eax	PushWord COP4		S9xSA1PackStatus COP2	movb FLAGS, %al	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte COP5	xorl %ecx, %ecx	movl %ecx, SA1ShiftedPB	movb %cl, PB	movl $0xFFF4, %edx	call S9xSA1GetWord	movl %eax, %edx	andl $0xffff, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* JML */OpDC:	AbsoluteIndirectLong8 JML	movl %edx, %ecx	andl $0xff0000, %ecx	movl %ecx, SA1ShiftedPB	sarl $16, %ecx	movb %cl, PB	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoopOp5C:	AbsoluteLong8 JML	movl %edx, %ecx	andl $0xff0000, %ecx	movl %ecx, SA1ShiftedPB	sarl $16, %ecx	movb %cl, PB	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* JMP */Op4C:	Absolute8 JMP	andl $0xffff, %edx	orl  SA1ShiftedPB, %edx	call S9xSA1SetPCBase	CPUShutdown JMP	jmp S9xSA1MainAsmLoopOp6C:	AbsoluteIndirect8 JMP	andl $0xffff, %edx	orl  SA1ShiftedPB, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoopOp7C:	AbsoluteIndexedIndirect8 JMP	andl $0xffff, %edx	orl SA1ShiftedPB, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* JSL */Op22E1:	movb PB, %al	PushByte JSL_ABSL_E	movl PC, %eax	subl SA1PCBase, %eax	addl $2, %eax	PushWordENew JSL_ABSL_E	AbsoluteLong8 JSL	movl %edx, %ecx	andl $0xff0000, %ecx	movl %ecx, SA1ShiftedPB	sarl $16, %ecx	movb %cl, PB	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoopOp22:	movb PB, %al	PushByte JSL_ABSL	movl PC, %eax	subl SA1PCBase, %eax	addl $2, %eax	PushWord JSL_ABSL	AbsoluteLong8 JSL	movl %edx, %ecx	andl $0xff0000, %ecx	movl %ecx, SA1ShiftedPB	sarl $16, %ecx	movb %cl, PB	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* RTL */Op6BE1:	PullWord RTL_E	pushl %eax	PullByte RTL_E	movl SS, %edx	addl $0xFF, %edx	movb $0x01, %dh	movw %dx, SS	popl %edx	movb %al, PB	incw %dx	andl $0xff, %eax	andl $0xffff, %edx	sall $16, %eax	movl %eax, SA1ShiftedPB	orl %eax, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoopOp6B:	PullWord RTL	pushl %eax	PullByte RTL	popl %edx	movb %al, PB	incw %dx	andl $0xff, %eax	andl $0xffff, %edx	sall $16, %eax	movl %eax, SA1ShiftedPB	orl %eax, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* JSR ABS */Op20:	movl PC, %eax	subl SA1PCBase, %eax	incl %eax	PushWord JSR_ABS	Absolute8 JSR_ABS	andl $0xffff, %edx	orl  SA1ShiftedPB, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* JSR ABS INDEXED INDIRECT */OpFCE1:	movl PC, %eax	subl SA1PCBase, %eax	incl %eax	PushWordENew JSR_AII_E	AbsoluteIndexedIndirect8 JSR	andl $0xffff, %edx	orl  SA1ShiftedPB, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoopOpFC:	movl PC, %eax	subl SA1PCBase, %eax	incl %eax	PushWord JSR_AII	AbsoluteIndexedIndirect8 JSR	andl $0xffff, %edx	orl  SA1ShiftedPB, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* RTS */Op60:	PullWord RTS	incl %eax	movl %eax, %edx	andl $0xffff, %edx	orl  SA1ShiftedPB, %edx	call S9xSA1SetPCBase	jmp S9xSA1MainAsmLoop/* MVN */Op54X1:	xorl %edx, %edx	movb (PC), %dl	movb %dl, DB	sall $16, %edx	movl %edx, SA1ShiftedDB	movb 1(PC), %dl	sall $16, %edx	movw XX, %dx	call S9xSA1GetByte	movl SA1ShiftedDB, %edx	movw YY, %dx	call S9xSA1SetByte	incb XL	incb YL	movw AA, %ax	decw %ax	movw %ax, AA	cmpw $0xffff, %ax	je .MVN_EXIT8	decl PC	jmp S9xSA1MainAsmLoop.MVN_EXIT8:	addl $2, PC	jmp S9xSA1MainAsmLoopOp54X0:	xorl %edx, %edx	movb (PC), %dl	movb %dl, DB	sall $16, %edx	movl %edx, SA1ShiftedDB	movb 1(PC), %dl	sall $16, %edx	movw XX, %dx	call S9xSA1GetByte	movl SA1ShiftedDB, %edx	movw YY, %dx	call S9xSA1SetByte	incw XX	incw YY	movw AA, %ax	decw %ax	movw %ax, AA	cmpw $0xffff, %ax	je .MVN_EXIT16	decl PC	jmp S9xSA1MainAsmLoop.MVN_EXIT16:	addl $2, PC	jmp S9xSA1MainAsmLoop/* MVP */Op44X1:	xorl %edx, %edx	movb (PC), %dl	movb %dl, DB	sall $16, %edx	movl %edx, SA1ShiftedDB	movb 1(PC), %dl	sall $16, %edx	movw XX, %dx	call S9xSA1GetByte	movl SA1ShiftedDB, %edx	movw YY, %dx	call S9xSA1SetByte	decb XL	decb YL	movw AA, %ax	decw %ax	movw %ax, AA	cmpw $0xffff, %ax	je .MVP_EXIT8	decl PC	jmp S9xSA1MainAsmLoop.MVP_EXIT8:	addl $2, PC	jmp S9xSA1MainAsmLoopOp44X0:	xorl %edx, %edx	movb (PC), %dl	movb %dl, DB	sall $16, %edx	movl %edx, SA1ShiftedDB	movb 1(PC), %dl	sall $16, %edx	movw XX, %dx	call S9xSA1GetByte	movl SA1ShiftedDB, %edx	movw YY, %dx	call S9xSA1SetByte	decw XX	decw YY	movw AA, %ax	decw %ax	movw %ax, AA	cmpw $0xffff, %ax	je .MVP_EXIT16	decl PC	jmp S9xSA1MainAsmLoop.MVP_EXIT16:	addl $2, PC	jmp S9xSA1MainAsmLoop/* REP */OpC2:	movb (PC), %al	incl PC	notb %al	andb %al, FLAGS	andb %al, SA1_Negative	andb %al, SA1_Carry	testb $Zero, %al	setz %ah	orb %ah, SA1_Zero	shrb $6, %al	andb %al, SA1_Overflow	testw $Emulation, FLAGS16	jz .REP_NO_EMU	orb $(MemoryFlag | IndexFlag), FLAGS	.REP_NO_EMU:	testb $IndexFlag, FLAGS	jz .REP16	xorb %al, %al	movb %al, XH	movb %al, YH.REP16:	S9xSA1FixCycles REP	CheckForIrq REP	jmp S9xSA1MainAsmLoop/* SEP */OpE2:	movb (PC), %al	incl PC	orb %al, FLAGS	orb %al, SA1_Negative	movb %al, %ah	shrb $6, %ah	andb $1, %ah	orb %ah, SA1_Overflow	test $Zero, %al	jz .SEP_NO_ZERO	movb $0, SA1_Zero.SEP_NO_ZERO:	andb $1, %al	orb %al, SA1_Carry	testw $Emulation, FLAGS16	jz .SEP_NO_EMU	orb $(MemoryFlag | IndexFlag), FLAGS	.SEP_NO_EMU:	testb $IndexFlag, FLAGS	jz .SEP16	xorb %al, %al	movb %al, XH	movb %al, YH.SEP16:	S9xSA1FixCycles SEP	jmp S9xSA1MainAsmLoop/* XBA */OpEB:	movb AL, %ah	movb AH, %al	movb %ah, AH	movb %al, AL	SetZN	jmp S9xSA1MainAsmLoop/* RTI */Op40:	PullByte RTI	movb %al, FLAGS	PullWord RTI	andl $0xffff, %eax	pushl %eax	testw $Emulation, FLAGS16	jnz .RTI_EMU	PullByte RTI2	andl $0xff, %eax	jmp .RTI_SKIP_EMU.RTI_EMU:	orb $(MemoryFlag | IndexFlag), FLAGS	/*XXX: HERE xorl %eax, %eax*/	movl SA1ShiftedPB, %eax	sarl $16, %eax.RTI_SKIP_EMU:	movb %al, PB	popl %edx	sall $16, %eax	orl %eax, %edx	movl %eax, SA1ShiftedPB	call S9xSA1SetPCBase	testb $IndexFlag, FLAGS	jz .RTI16	xorb %al, %al	movb %al, XH	movb %al, YH.RTI16:	S9xSA1UnpackStatus RTI	S9xSA1FixCycles RTI	CheckForIrq RTI	jmp S9xSA1MainAsmLoop/* WAI */OpCB:	movb $1, SA1WaitingForInterrupt	decl PC#if 0// XXX: FIXME	movb Shutdown, %al	testb %al, %al	je .NoShutdown	movl NextEvent, CYCLES	cmpb $0, APUExecuting	je S9xSA1MainAsmLoop	movb $0, CPUExecuting.WAITExecAPU:#ifdef DEBUGGER	testb $2,APUFlags	je .WAITNoAPUS9xSA1Trace	STORE_REGISTERS	ccall S9xSA1TraceAPU	LOAD_REGISTERS.WAITNoAPUS9xSA1Trace:#endif	xorl %eax,%eax#ifdef SPC700_C	movl APUPC,%edx	SAVE_CYCLES	movb (%edx),%al#else	movb (APUPC),%al#endif	movl S9xAPUCycles(,%eax,4), %edx	movl S9xApuOpcodes(,%eax,4),%eax	addl %edx, APUCycles	call *%eax#ifdef SPC700_C        LOAD_CYCLES#endif	movl NextEvent, %eax	cmpl %eax, APUCycles	jl .WAITExecAPU	movb $1, CPUExecuting	jmp S9xSA1MainAsmLoop#endif.NoShutdown:	jmp S9xSA1MainAsmLoop/* ??? */OpDB:	decl PC	orb $DEBUG_MODE_FLAG, SA1Flags	jmp S9xSA1MainAsmLoopOp42:	jmp S9xSA1MainAsmLoop.globl S9xSA1OpcodesM1X1.data	.align 4S9xSA1OpcodesM1X1:	.long Op00	.long Op01M1	.long Op02	.long Op03M1	.long Op04M1	.long Op05M1	.long Op06M1	.long Op07M1	.long Op08	.long Op09M1	.long Op0AM1	.long Op0B	.long Op0CM1	.long Op0DM1	.long Op0EM1	.long Op0FM1	.long Op10	.long Op11M1	.long Op12M1	.long Op13M1	.long Op14M1	.long Op15M1	.long Op16M1	.long Op17M1	.long Op18	.long Op19M1	.long Op1AM1	.long Op1B	.long Op1CM1	.long Op1DM1	.long Op1EM1	.long Op1FM1	.long Op20	.long Op21M1	.long Op22	.long Op23M1	.long Op24M1	.long Op25M1	.long Op26M1	.long Op27M1	.long Op28	.long Op29M1	.long Op2AM1	.long Op2B	.long Op2CM1	.long Op2DM1	.long Op2EM1	.long Op2FM1	.long Op30	.long Op31M1	.long Op32M1	.long Op33M1	.long Op34M1	.long Op35M1	.long Op36M1	.long Op37M1	.long Op38	.long Op39M1	.long Op3AM1	.long Op3B	.long Op3CM1	.long Op3DM1	.long Op3EM1	.long Op3FM1	.long Op40	.long Op41M1	.long Op42	.long Op43M1	.long Op44X1	.long Op45M1	.long Op46M1	.long Op47M1	.long Op48M1	.long Op49M1	.long Op4AM1	.long Op4B	.long Op4C	.long Op4DM1	.long Op4EM1	.long Op4FM1	.long Op50	.long Op51M1	.long Op52M1	.long Op53M1	.long Op54X1	.long Op55M1	.long Op56M1	.long Op57M1	.long Op58	.long Op59M1	.long Op5AX1	.long Op5B	.long Op5C	.long Op5DM1	.long Op5EM1	.long Op5FM1	.long Op60	.long Op61M1	.long Op62	.long Op63M1	.long Op64M1	.long Op65M1	.long Op66M1	.long Op67M1	.long Op68M1	.long Op69M1	.long Op6AM1	.long Op6B	.long Op6C	.long Op6DM1	.long Op6EM1	.long Op6FM1	.long Op70	.long Op71M1	.long Op72M1	.long Op73M1	.long Op74M1	.long Op75M1	.long Op76M1	.long Op77M1	.long Op78	.long Op79M1	.long Op7AX1	.long Op7B	.long Op7C	.long Op7DM1	.long Op7EM1	.long Op7FM1	.long Op80	.long Op81M1	.long Op82	.long Op83M1	.long Op84X1	.long Op85M1	.long Op86X1	.long Op87M1	.long Op88X1	.long Op89M1	.long Op8AM1	.long Op8B	.long Op8CX1	.long Op8DM1	.long Op8EX1	.long Op8FM1	.long Op90	.long Op91M1	.long Op92M1	.long Op93M1	.long Op94X1	.long Op95M1	.long Op96X1	.long Op97M1	.long Op98M1	.long Op99M1	.long Op9A	.long Op9BX1	.long Op9CM1	.long Op9DM1	.long Op9EM1	.long Op9FM1	.long OpA0X1	.long OpA1M1	.long OpA2X1	.long OpA3M1	.long OpA4X1	.long OpA5M1	.long OpA6X1	.long OpA7M1	.long OpA8X1	.long OpA9M1	.long OpAAX1	.long OpAB	.long OpACX1	.long OpADM1	.long OpAEX1	.long OpAFM1	.long OpB0	.long OpB1M1	.long OpB2M1	.long OpB3M1	.long OpB4X1	.long OpB5M1	.long OpB6X1	.long OpB7M1	.long OpB8	.long OpB9M1	.long OpBAX1	.long OpBBX1	.long OpBCX1	.long OpBDM1	.long OpBEX1	.long OpBFM1	.long OpC0X1	.long OpC1M1	.long OpC2	.long OpC3M1	.long OpC4X1	.long OpC5M1	.long OpC6M1	.long OpC7M1	.long OpC8X1	.long OpC9M1	.long OpCAX1	.long OpCB	.long OpCCX1	.long OpCDM1	.long OpCEM1	.long OpCFM1	.long OpD0	.long OpD1M1	.long OpD2M1	.long OpD3M1	.long OpD4	.long OpD5M1	.long OpD6M1	.long OpD7M1	.long OpD8	.long OpD9M1	.long OpDAX1	.long OpDB	.long OpDC	.long OpDDM1	.long OpDEM1	.long OpDFM1	.long OpE0X1	.long OpE1M1	.long OpE2	.long OpE3M1	.long OpE4X1	.long OpE5M1	.long OpE6M1	.long OpE7M1	.long OpE8X1	.long OpE9M1	.long OpEA	.long OpEB	.long OpECX1	.long OpEDM1	.long OpEEM1	.long OpEFM1	.long OpF0	.long OpF1M1	.long OpF2M1	.long OpF3M1	.long OpF4	.long OpF5M1	.long OpF6M1	.long OpF7M1	.long OpF8	.long OpF9M1	.long OpFAX1	.long OpFB	.long OpFC	.long OpFDM1	.long OpFEM1	.long OpFFM1.globl S9xSA1OpcodesE1.data	.align 4S9xSA1OpcodesE1:	.long Op00	.long Op01M1	.long Op02	.long Op03M1	.long Op04M1	.long Op05M1	.long Op06M1	.long Op07M1	.long Op08E1	.long Op09M1	.long Op0AM1	.long Op0BE1	.long Op0CM1	.long Op0DM1	.long Op0EM1	.long Op0FM1	.long Op10	.long Op11M1	.long Op12M1	.long Op13M1	.long Op14M1	.long Op15M1	.long Op16M1	.long Op17M1	.long Op18	.long Op19M1	.long Op1AM1	.long Op1B	.long Op1CM1	.long Op1DM1	.long Op1EM1	.long Op1FM1	.long Op20	.long Op21M1	.long Op22E1	.long Op23M1	.long Op24M1	.long Op25M1	.long Op26M1	.long Op27M1	.long Op28E1	.long Op29M1	.long Op2AM1	.long Op2BE1	.long Op2CM1	.long Op2DM1	.long Op2EM1	.long Op2FM1	.long Op30	.long Op31M1	.long Op32M1	.long Op33M1	.long Op34M1	.long Op35M1	.long Op36M1	.long Op37M1	.long Op38	.long Op39M1	.long Op3AM1	.long Op3B	.long Op3CM1	.long Op3DM1	.long Op3EM1	.long Op3FM1	.long Op40	.long Op41M1	.long Op42	.long Op43M1	.long Op44X1	.long Op45M1	.long Op46M1	.long Op47M1	.long Op48E1	.long Op49M1	.long Op4AM1	.long Op4BE1	.long Op4C	.long Op4DM1	.long Op4EM1	.long Op4FM1	.long Op50	.long Op51M1	.long Op52M1	.long Op53M1	.long Op54X1	.long Op55M1	.long Op56M1	.long Op57M1	.long Op58	.long Op59M1	.long Op5AE1	.long Op5B	.long Op5C	.long Op5DM1	.long Op5EM1	.long Op5FM1	.long Op60	.long Op61M1	.long Op62E1	.long Op63M1	.long Op64M1	.long Op65M1	.long Op66M1	.long Op67M1	.long Op68E1	.long Op69M1	.long Op6AM1	.long Op6BE1	.long Op6C	.long Op6DM1	.long Op6EM1	.long Op6FM1	.long Op70	.long Op71M1	.long Op72M1	.long Op73M1	.long Op74M1	.long Op75M1	.long Op76M1	.long Op77M1	.long Op78	.long Op79M1	.long Op7AE1	.long Op7B	.long Op7C	.long Op7DM1	.long Op7EM1	.long Op7FM1	.long Op80	.long Op81M1	.long Op82	.long Op83M1	.long Op84X1

⌨️ 快捷键说明

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