📄 getset.s
字号:
cmp/hi r0,r2 mov.l r0,SA1WaitCounter rotcl r0 rts mov.b r0,SA1Executing.NoMatch: rts mov.b r0,@r3#else add r2,r3 rts mov.b r0,@r3#endif .MEMMAP_MSK175: .word MEMMAP_MASK.SBSpecial: mov r4,r2 extu.b r0,r4 mova .SBJmpTable,r0 shll2 r3 add r3,r0 mov.l @r0,r3 jmp @r3 extu.w r2,r5.SBPPU: /* MAP_PPU */#ifdef VAR_CYCLES mov.b InDMA,r0 tst r0,r0 bf .SBPPU_NOADD add #6, CYCLES.SBPPU_NOADD:#endif PUSH_REGISTERS sts.l pr,@-r15 mov.l .S9xSetPPU,r3 jsr @r3 nop lds.l @r15+,pr POP_REGISTERS rts nop.SBCPU: /* MAP_CPU */#ifdef VAR_CYCLES add #6, CYCLES#endif PUSH_REGISTERS sts.l pr,@-r15 mov.l .S9xSetCPU,r3 SAVE_CYCLES jsr @r3 nop lds.l @r15+,pr POP_REGISTERS rts LOAD_CYCLES.SBDSP: /* MAP_DSP */#ifdef VAR_CYCLES add #8, CYCLES#endif PUSH_REGISTERS sts.l pr,@-r15 mov.l .S9xSetDSP,r3 SAVE_CYCLES jsr @r3 nop lds.l @r15+,pr POP_REGISTERS rts LOAD_CYCLES.SBLSRAM: /* MAP_LOROM_SRAM */ mov.l .SRAM2,r3 mov.l @r3,r0 mov.l .SRAMMask2,r5 mov.w @r5,r5 extu.w r5,r5 tst r5,r5 and r5,r2 bt .SBLSRAM_SKIP mov.b r4,@(r0,r2)// movb $1, SRAMModified.SBLSRAM_SKIP: rts#ifdef VAR_CYCLES add #8, CYCLES#else nop#endif.SBHSRAM: /* MAP_HIROM_SRAM */ mov.w .n7fff15,r3 and r2,r3 mov.w .n600015,r5 sub r5,r3 mov.l .nf00002,r5 and r5,r2 shlr2 r2 shlr r2 add r2,r3 mov.l .SRAM2,r0 mov.l @r0,r0 mov.l .SRAMMask2,r2 mov.w @r2,r2 extu.w r2,r2 tst r2,r2 and r3,r2 bt .SBHSRAM_SKIP mov.b r4,@(r0,r2)// movb $1, SRAMModified.SBHSRAM_SKIP: rts#ifdef VAR_CYCLES add #8, CYCLES#else nop#endif.SBNONE:.SBDEBUG: /* MAP_DEBUG */ rts#ifdef VAR_CYCLES add #8, CYCLES#else nop#endif.SBC4: /* MAP_C4 */ PUSH_REGISTERS sts.l pr,@-r15 mov.l .S9xSetC4,r3 jsr @r3 nop lds.l @r15+,pr POP_REGISTERS rts#ifdef VAR_CYCLES add #6, CYCLES#else nop#endif.SBBWRAM: /* MAP_BWRAM */ mov.w .n7fff15,r0 and r2,r0 mov.w .n600015,r2 sub r2,r0 mov.l .BWRAM2,r2 mov.l @r2,r2// movb $1, SRAMModified mov.b r4,@(r0,r2) rts#ifdef VAR_CYCLES add #8, CYCLES#else nop#endif.n7fff15: .word 0x7fff.n600015: .word 0x6000.globl S9xSetWord_rS9xSetWord_r:#ifdef CPU_SHUTDOWN mov #0,r3#endif mov r4,r2#ifdef CPU_SHUTDOWN mov.l r3,WaitAddress#endif mov #-MEMMAP_SHIFT,r3 shld r3,r2 mov.w .MEMMAP_MSK19,r3 and r3,r2#ifdef VAR_CYCLES mov.l .MemorySpeed2,r3 add r2,r3 mov.b @r3,r5#endif shll2 r2 mov.l .WriteMap0,r3 add r2,r3 mov.l @r3,r3 cmp/pz r3 bt .SWSpecial extu.w r4,r2#ifdef VAR_CYCLES add r5, CYCLES add r5, CYCLES#endif#ifdef CPU_SHUTDOWN mov.l SA1,r1 add r2,r3 mov.l SA1WaitByteAddress1,r2 mov.b r0,@r3 cmp/eq r2,r3 bt/s .Matched2 shlr8 r0 mov.l SA1WaitByteAddress2,r2 cmp/eq r2,r3 bf .NoMatch2.Matched2: mov.l SA1Opcodes,r2 mov.b r0,@(1,r3) mov #0,r0 cmp/hi r0,r2 mov.l r0,SA1WaitCounter rotcl r0 rts mov.b r0,SA1Executing.NoMatch2: rts mov.b r0,@(1,r3)#else add r2,r3 mov.b r0,@r3 shlr8 r0 rts mov.b r0,@(1,r3)#endif .MEMMAP_MSK19: .word MEMMAP_MASK.SWSpecial: mov r4,r2 extu.w r0,r4 mova .SWJmpTable,r0 shll2 r3 add r3,r0 mov.l @r0,r3 jmp @r3 extu.w r2,r5.SWPPU: /* MAP_PPU */#ifdef VAR_CYCLES mov.b InDMA,r0 tst r0,r0 bf .SWPPU_NOADD add #12, CYCLES.SWPPU_NOADD:#endif PUSH_REGISTERS sts.l pr,@-r15 mov.l .S9xSetPPU,r3 mov.l r4,@-r15 mov.l r5,@-r15 jsr @r3 extu.b r4,r4 mov.l .S9xSetPPU,r3 mov.l @r15+,r5 mov.l @r15+,r4 add #1,r5 shlr8 r4 jsr @r3 extu.w r5,r5 lds.l @r15+,pr POP_REGISTERS rts nop.SWCPU: /* MAP_CPU */#ifdef VAR_CYCLES add #12, CYCLES#endif PUSH_REGISTERS sts.l pr,@-r15 mov.l .S9xSetCPU,r3 mov.l r4,@-r15 SAVE_CYCLES mov.l r5,@-r15 jsr @r3 extu.b r4,r4 mov.l .S9xSetCPU,r3 mov.l @r15+,r5 mov.l @r15+,r4 add #1,r5 shlr8 r4 jsr @r3 extu.w r5,r5 lds.l @r15+,pr POP_REGISTERS rts LOAD_CYCLES .SWDSP: /* MAP_DSP */#ifdef VAR_CYCLES add #16, CYCLES#endif SAVE_CYCLES PUSH_REGISTERS sts.l pr,@-r15 mov.l .S9xSetDSP,r3 mov.l r4,@-r15 mov.l r5,@-r15 jsr @r3 extu.b r4,r4 mov.l .S9xSetDSP,r3 mov.l @r15+,r5 mov.l @r15+,r4 add #1,r5 shlr8 r4 jsr @r3 extu.w r5,r5 lds.l @r15+,pr POP_REGISTERS rts LOAD_CYCLES.SWLSRAM: /* MAP_LOROM_SRAM */ mov.l .SRAM2,r3 mov.l @r3,r0 mov.l .SRAMMask2,r5 mov.w @r5,r5 extu.w r5,r1 tst r1,r1 mov r1,r5 and r2,r1 bt/s .SWLSRAM_SKIP mov.b r4,@(r0,r1) add #1,r2 shlr8 r4 and r2,r5// movb $1, SRAMModified rts mov.b r4,@(r0,r5).SWLSRAM_SKIP: rts#ifdef VAR_CYCLES add #16, CYCLES#else nop#endif.SWHSRAM: /* MAP_HIROM_SRAM */ mov.w .n7fff2,r3 and r2,r3 mov.w .n60003,r5 sub r5,r3 mov.l .nf00002,r5 and r5,r2 shlr2 r2 shlr r2 add r2,r3 mov.l .SRAM2,r0 mov.l @r0,r0 mov.l .SRAMMask2,r2 mov.w @r2,r2 extu.w r2,r2 tst r2,r2 and r3,r2 bt .SWHSRAM_SKIP mov.b r4,@(r0,r2) add #1,r2 shlr8 r4// movb $1, SRAMModified rts mov.b r4,@(r0,r2).SWHSRAM_SKIP: rts#ifdef VAR_CYCLES add #16, CYCLES#else nop#endif.SWNONE:.SWDEBUG: /* MAP_DEBUG */ rts#ifdef VAR_CYCLES add #16, CYCLES#else nop#endif.SWC4: /* MAP_C4 */#ifdef VAR_CYCLES add #12, CYCLES#endif PUSH_REGISTERS sts.l pr,@-r15 mov.l .S9xSetC4,r3 mov.l r4,@-r15 mov.l r5,@-r15 jsr @r3 extu.b r4,r4 mov.l .S9xSetC4,r3 mov.l @r15+,r5 mov.l @r15+,r4 add #1,r5 shlr8 r4 jsr @r3 extu.w r5,r5 lds.l @r15+,pr POP_REGISTERS rts nop.SWBWRAM: /* MAP_BWRAM */#ifdef VAR_CYCLES add #16, CYCLES#endif mov.w .n7fff2,r3 and r2,r3 mov.w .n60002,r2 sub r2,r3 mov.l .BWRAM2,r2 mov.l @r2,r0 mov.b r4,@(r0,r3) add #1,r3 shlr8 r4// movb $1, SRAMModified rts mov.b r4,@(r0,r3) .globl S9xSetPCBase_rS9xSetPCBase_r: mov r4,r2 mov #-MEMMAP_SHIFT,r3 shld r3,r2 mov.w .MEMMAP_MSK2,r3 and r3,r2#ifdef VAR_CYCLES mov.l .MemorySpeed2,r3 add r2,r3 mov.b @r3,r1#endif shll2 r2 mov.l .Map2,r3 add r2,r3 mov.l @r3,r3 cmp/pz r3 bt .SPCSpecial extu.w r4,r2#ifdef VAR_CYCLES mov.l r1,MemSpeed shll r1 mov.l r1,MemSpeedx2#endif mov.l r3,PCBase add r2,r3 rts mov r3,PC.SPCSpecial: mova .SPCJmpTable,r0 shll2 r3 add r3,r0 mov.l @r0,r3 jmp @r3 nop .align 2#ifdef VAR_CYCLES.MemorySpeed2: .long MemorySpeed#endif.WriteMap0: .long WriteMap.n7fff2: .word 0x7fff.n60003: .word 0x6000.SPCPPU: /* MAP_PPU */#ifdef VAR_CYCLES mov #6,r1 mov.l r1, MemSpeed mov #12,r1 mov.l r1, MemSpeedx2#endif mov.l .FillRAM0,r3 extu.w r4,r2 mov.l @r3,PC mov.l PC,PCBase rts add r2,PC.SPCCPU: /* MAP_CPU */#ifdef VAR_CYCLES mov #6,r1 mov.l r1, MemSpeed mov #12,r1 mov.l r1, MemSpeedx2#endif mov.l .FillRAM0,r3 extu.w r4,r2 mov.l @r3,PC mov.l PC,PCBase rts add r2,PC.SPCDSP: /* MAP_DSP */#ifdef VAR_CYCLES mov #8,r1 mov.l r1, MemSpeed mov #16,r1 mov.l r1, MemSpeedx2#endif mov.l .FillRAM0,r3 extu.w r4,r2 mov.l @r3,PC mov.l PC,PCBase rts add r2,PC.SPCLSRAM: /* MAP_LOROM_SRAM */#ifdef VAR_CYCLES mov #8,r1 mov.l r1, MemSpeed mov #16,r1 mov.l r1, MemSpeedx2#endif mov.l .SRAM2,r3 extu.w r4,r2 mov.l @r3,PC mov.l PC,PCBase rts add r2,PC.SPCHSRAM: /* MAP_HIROM_SRAM */#ifdef VAR_CYCLES mov #8,r1 mov.l r1, MemSpeed mov #16,r1 mov.l r1, MemSpeedx2#endif mov.l .SRAM2,r3 mov.w .n60002,r2 mov.l @r3,PC add r2,PC extu.w r4,r2 mov.l PC,PCBase rts add r2,PC.SPCNONE:.SPCDEBUG: /* MAP_DEBUG */#ifdef VAR_CYCLES mov #8,r1 mov.l r1, MemSpeed mov #16,r1 mov.l r1, MemSpeedx2#endif mov.l .SRAM2,PC extu.w r4,r2 mov.l PC,PCBase rts add r2,PC.SPCC4: /* MAP_C4 */#ifdef VAR_CYCLES mov #8,r1 mov.l r1, MemSpeed mov #16,r1 mov.l r1, MemSpeedx2#endif mov.l .C4RAM0, r3 mov.w .n60002,r2 mov.l @r3,PC sub r2,PC extu.w r4,r2 mov.l PC,PCBase rts add r2,PC.SPCBWRAM: /* MAP_BWRAM */#ifdef VAR_CYCLES mov #8,r1 mov.l r1, MemSpeed mov #16,r1 mov.l r1, MemSpeedx2#endif mov.l .SRAM2,r3 mov.w .n60002,r2 add r2,r3 extu.w r4,r2 mov.l @r3,PC mov.l PC,PCBase rts add r2,PC .align 4.Map2: .long Map.SBJmpTable: .long .SBPPU .long .SBCPU .long .SBDSP .long .SBLSRAM .long .SBHSRAM .long .SBNONE .long .SBDEBUG .long .SBC4 .long .SBBWRAM .long .SBNONE .long .SBNONE .long .SBNONE.SWJmpTable: .long .SWPPU .long .SWCPU .long .SWDSP .long .SWLSRAM .long .SWHSRAM .long .SWNONE .long .SWDEBUG .long .SWC4 .long .SWBWRAM .long .SWNONE .long .SWNONE .long .SWNONE.SPCJmpTable: .long .SPCPPU .long .SPCCPU .long .SPCDSP .long .SPCLSRAM .long .SPCHSRAM .long .SPCNONE .long .SPCDEBUG .long .SPCC4 .long .SPCBWRAM .long .SPCNONE .long .SPCNONE .long .SPCNONE.S9xSetPPU: .long _S9xSetPPU.S9xSetCPU: .long _S9xSetCPU.S9xSetDSP: .long _S9xSetDSP.S9xSetC4: .long _S9xSetC4.BWRAM2: .long BWRAM.SRAM2: .long SRAM.SRAMMask2: .long SRAMMask.FillRAM0: .long FillRAM.C4RAM0: .long C4RAM.nf00002: .long 0xf0000.n60002: .word 0x6000.MEMMAP_MSK2: .word MEMMAP_MASK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -