summaryrefslogtreecommitdiff
path: root/src/spc700a.s
diff options
context:
space:
mode:
authorToad King2012-06-14 03:21:06 -0400
committerToad King2012-06-14 03:21:06 -0400
commit6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119 (patch)
tree885cf7f507139b795ba7b2a6fb829dc044da39dd /src/spc700a.s
downloadsnes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.tar.gz
snes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.tar.bz2
snes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.zip
initial pocketsnes commit
Diffstat (limited to 'src/spc700a.s')
-rw-r--r--src/spc700a.s28366
1 files changed, 28366 insertions, 0 deletions
diff --git a/src/spc700a.s b/src/spc700a.s
new file mode 100644
index 0000000..6a0fb41
--- /dev/null
+++ b/src/spc700a.s
@@ -0,0 +1,28366 @@
+@ notaz's SPC700 Emulator v0.12 - Assembler Output
+
+@ (c) Copyright 2006 notaz, All rights reserved.
+
+@ Modified by bitrider 2010
+
+@ this is a rewrite of spc700.cpp in ARM asm, inspired by other asm CPU cores like
+@ Cyclone and DrZ80. It is meant to be used in Snes9x emulator ports for ARM platforms.
+
+@ the code is released under Snes9x license. See spcgen.c or any other source file
+@ from Snes9x source tree.
+
+
+ .extern IAPU
+ .extern CPU @ for STOP and SLEEP
+ .extern S9xAPUGetByte
+ .extern S9xAPUSetByte
+ .extern S9xAPUGetByteZ
+ .extern S9xAPUSetByteZ
+
+ .extern S9xGetAPUDSP
+ .extern S9xSetAPUDSP
+ .extern S9xSetAPUControl
+ .extern S9xAPUSetByteFFC0
+ .extern S9xAPUSetByteFFtoF0
+ .global spc700_execute @ int cycles
+ .global Spc700JumpTab_13
+ .global Spc700JumpTab_14
+ .global Spc700JumpTab_15
+ .global Spc700JumpTab_21
+
+ opcode .req r3
+ cycles .req r4
+ context .req r5
+ opcodes .req r6
+ spc_pc .req r7
+ spc_ya .req r8
+ spc_p .req r9
+ spc_x .req r10
+ spc_s .req r11
+ spc_ram .req r12
+
+ .equ iapu_directpage, 0x00
+ .equ iapu_ram, 0x44
+ .equ iapu_extraram, 0x48
+ .equ iapu_allregs_load, 0x30
+ .equ iapu_allregs_save, 0x34
+
+ .equ flag_c, 0x01
+ .equ flag_z, 0x02
+ .equ flag_i, 0x04
+ .equ flag_h, 0x08
+ .equ flag_b, 0x10
+ .equ flag_d, 0x20
+ .equ flag_o, 0x40
+ .equ flag_n, 0x80
+
+ .equ cpu_apu_executing, 124
+
+@ --------------------------- Framework --------------------------
+ .align 4
+spc700_execute: @ int cycles
+ stmfd sp!,{r4-r11,lr}
+ ldr context,=IAPU @ Pointer to SIAPU struct
+ mov cycles,r0 @ Cycles
+ add r0,context,#iapu_allregs_load
+ ldmia r0,{opcodes,spc_pc,spc_ya,spc_p,spc_x,spc_ram}
+ ldrb opcode,[spc_pc],#1 @ Fetch first opcode
+ mov spc_s,spc_x,lsr #8
+ and spc_x,spc_x,#0xff
+
+ ldr pc,[opcodes,opcode,lsl #2] @ Jump to opcode handler
+
+
+@ We come back here after execution
+spc700End:
+ orr spc_x,spc_x,spc_s,lsl #8
+ add r0,context,#iapu_allregs_save
+ stmia r0,{spc_pc,spc_ya,spc_p,spc_x}
+ mov r0,cycles
+ ldmfd sp!,{r4-r11,pc}
+
+ .ltorg
+
+GetAPUDSP:
+ ldrb r1, [spc_ram, #0xf2]
+ mov r0, #0
+ and r2, r1, #0X0f
+ cmp r2, #0x08
+ bxeq lr
+ cmp r2, #0x09
+ ldrne r2, .APU_DSP
+ and r1, r1, #0X7f
+ ldrneb r0, [r2, r1]
+ bxne lr
+ ldr r2, .SOUNDDATA_CHANNELS
+ mov r1, r1, lsr #4
+ ldr r0, [r2, r1, asl #8]
+ add r1, r2, r1, asl #8
+ cmp r0, #0
+ ldrneh r1, [r1, #0x48]
+ bxeq lr
+ and r0, r1, #0xff
+ orr r0, r0, r1, lsr #8
+ bx lr
+.APU_DSP:
+ .long APU + 0x0b
+.SOUNDDATA_CHANNELS:
+ .long SoundData + 0x30
+ .align 4
+
+
+Apu00_13:
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu01_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1e]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu02_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x01
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu03_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu04_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu05_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu06_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu07_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu08_13:
+ ldrb r0,[spc_pc],#1
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu09_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0, r0, r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0A_13:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orrne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0B_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0C_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0D_13:
+ mov r0,spc_p,lsr #24
+ and r1,r0,#0x80
+ tst r0,r0
+ orreq r1,r1,#flag_z
+ and spc_p,spc_p,#0x7d @ clear N & Z
+ orr spc_p,spc_p,r1
+ add r1,spc_ram,spc_s
+ strb spc_p,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,r0,lsl #24
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0E_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r2,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r2,lsl #24
+ orr r0,r0,spc_ya
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0F_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ mov r0,spc_p,lsr #24
+ and r1,r0,#0x80
+ tst r0,r0
+ orrne r1,r1,#flag_z
+ and spc_p,spc_p,#0x7d @ clear N & Z
+ orr spc_p,spc_p,r1
+ add r1,spc_ram,spc_s
+ strb spc_p,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ orr spc_p,spc_p,#flag_b
+ bic spc_p,spc_p,#flag_i
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x20]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu10_13:
+ tst spc_p,#0x80000000
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu11_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1c]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu12_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x01
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu13_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu14_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu15_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu16_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu17_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu18_13:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ orr r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu19_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0, r3, r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1A_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ sub r0,r1,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ stmfd sp!,{r0}
+ ldrb r1,[spc_pc]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldmfd sp!,{r0}
+ mov r0,r0,lsr #8
+ ldrb r1,[spc_pc],#1
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1B_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r3, r0
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1C_13:
+ tst spc_ya,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and r0,spc_ya,#0x7f
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1D_13:
+ sub spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1E_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1F_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ sub sp,sp,#8
+ str r0,[sp,#4]
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ str r0,[sp]
+ ldr r0,[sp,#4]
+ add r0,r0,#1
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ ldr r1,[sp],#8
+ orr r0,r1,r0,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu20_13:
+ bic spc_p,spc_p,#flag_d
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ str spc_ram,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu21_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1a]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu22_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x02
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu23_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x02
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu24_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu25_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu26_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu27_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu28_13:
+ ldrb r0,[spc_pc],#1
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu29_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2A_13:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orreq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2B_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2C_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2D_13:
+ add r1,spc_ram,spc_s
+ strb spc_ya,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2E_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff
+ cmp r0,r1
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2F_13:
+ ldrsb r0,[spc_pc],#1
+ add spc_pc,spc_pc,r0
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu30_13:
+ tst spc_p,#0x80000000
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu31_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x18]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu32_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x02
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu33_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x02
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu34_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu35_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu36_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu37_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu38_13:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ and r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu39_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3A_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ add r0,r1,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ stmfd sp!,{r0}
+ ldrb r1,[spc_pc]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldmfd sp!,{r0}
+ mov r0,r0,lsr #8
+ ldrb r1,[spc_pc],#1
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3B_13:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3C_13:
+ and r0,spc_ya,#0xff
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3D_13:
+ add spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3E_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3F_13:
+ ldrb r2,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r2,r2,r14,lsl #8
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ add spc_pc,spc_ram,r2
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu40_13:
+ orr spc_p,spc_p,#flag_d
+ add r0,spc_ram,#0x100
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ str r0,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu41_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x16]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu42_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x04
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu43_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x04
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu44_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu45_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu46_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu47_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu48_13:
+ ldrb r0,[spc_pc],#1
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu49_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4A_13:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ biceq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4B_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4C_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4D_13:
+ add r1,spc_ram,spc_s
+ strb spc_x,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4E_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r2,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r2,lsl #24
+ bic r0,r0,spc_ya
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4F_13:
+ ldrb r2,[spc_pc],#1
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ add spc_pc,spc_ram,r2
+ add spc_pc,spc_pc,#0xff00
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu50_13:
+ tst spc_p,#0x00000040
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu51_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x14]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu52_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x04
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu53_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x04
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu54_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu55_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu56_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu57_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu58_13:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ eor r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu59_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5A_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ subs r0,spc_ya,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5B_13:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5C_13:
+ and r0,spc_ya,#0xff
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5D_13:
+ and spc_x,spc_ya,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5E_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5F_13:
+ ldrb r0, [spc_pc], #1
+ ldrb r14, [spc_pc], #1
+ add spc_pc, r0, spc_ram
+ add spc_pc, spc_pc, r14, lsl #8
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu60_13:
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu61_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x12]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu62_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x08
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu63_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x08
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu64_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu65_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu66_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu67_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu68_13:
+ ldrb r0,[spc_pc],#1
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu69_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_x,spc_x,r0,lsl #24
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_x,lsr #24
+ subs r14,r0,r1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6A_13:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ bicne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6B_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6C_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6D_13:
+ mov r0,spc_ya,lsr #8
+ add r1,spc_ram,spc_s
+ strb r0,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6E_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ sub r0,r0,#1
+ tst r0,r0
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r2,[spc_pc],#1
+ addne spc_pc,spc_pc,r2
+ subne cycles,cycles,#26
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6F_13:
+ add r1,spc_ram,spc_s
+ ldrb r0,[r1,#(0xff + 2)]
+ ldrb r1,[r1,#(0x100 + 2)]
+ add spc_s,spc_s,#2
+ orr r0,r0,r1,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu70_13:
+ tst spc_p,#0x00000040
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu71_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x10]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu72_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x08
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu73_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x08
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu74_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu75_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu76_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu77_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu78_13:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ subs r14,r0,r1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu79_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_x,spc_x,r0,lsl #24
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_x,lsr #24
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7A_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ add r0,spc_ya,r1
+ movs r2,r0,lsr #16
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ bic r2,r0,#0x00ff0000
+ eor r3,r1,r2
+ eor r14,spc_ya,r1
+ mvn r14,r14
+ and r14,r14,r3
+ tst r14,#0x8000
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7B_13:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7C_13:
+ and r0,spc_ya,#0xff
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7D_13:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,spc_x
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7E_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7F_13:
+ add spc_p,spc_ram,spc_s
+ ldrb spc_p,[spc_p,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and r0,spc_p,#(flag_z|flag_n)
+ eor r0,r0,#flag_z
+ orr spc_p,spc_p,r0,lsl #24
+ tst spc_p,#flag_d
+ addne r0,spc_ram,#0x100
+ moveq r0,spc_ram
+ str r0,[context,#iapu_directpage]
+ add r1,spc_ram,spc_s
+ ldrb r0,[r1,#(0xff + 2)]
+ ldrb r1,[r1,#(0x100 + 2)]
+ add spc_s,spc_s,#2
+ orr r0,r0,r1,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu80_13:
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu81_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xe]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu82_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x10
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu83_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x10
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu84_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu85_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu86_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu87_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu88_13:
+ ldrb r0,[spc_pc],#1
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu89_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r2,r0,r3
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r3
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r3
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8A_13:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ eorne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8B_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8C_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8D_13:
+ ldrb r0,[spc_pc],#1
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8E_13:
+ add spc_p,spc_ram,spc_s
+ ldrb spc_p,[spc_p,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and r0,spc_p,#(flag_z|flag_n)
+ eor r0,r0,#flag_z
+ orr spc_p,spc_p,r0,lsl #24
+ tst spc_p,#flag_d
+ addne r0,spc_ram,#0x100
+ moveq r0,spc_ram
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ str r0,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8F_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu90_13:
+ tst spc_p,#0x00000001
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu91_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xc]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu92_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x10
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu93_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x10
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu94_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu95_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu96_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu97_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu98_13:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ eor r2,r0,r1
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r1
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r1
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu99_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r2,r0,r3
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r3
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r3
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9A_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ subs r0,spc_ya,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ mov r2,r0,lsl #16
+ mov r2,r2,lsr #16
+ eor r3,spc_ya,r2
+ eor r14,spc_ya,r1
+ and r14,r14,r3
+ tst r14,#0x8000
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r1
+ tst r14,#0x10
+ bicne spc_p,spc_p,#flag_h
+ orreq spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9B_13:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9C_13:
+ and r0,spc_ya,#0xff
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9D_13:
+ mov spc_x,spc_s
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9E_13:
+ tst spc_x,spc_x @ div by 0?
+ orreq spc_ya,spc_ya,#0xff00
+ orreq spc_ya,spc_ya,#0x00ff
+ orreq spc_p,spc_p,#flag_o
+ beq 1002f
+ bic spc_p,spc_p,#flag_o
+@ Divide spc_ya by spc_x
+ mov r3,#0
+ mov r1,spc_x
+
+@ Shift up divisor till it's just less than numerator
+cmp spc_ya,r1,lsl #8
+movge r1,r1,lsl #8
+cmp spc_ya,r1,lsl #4
+movge r1,r1,lsl #4
+cmp spc_ya,r1,lsl #2
+movge r1,r1,lsl #2
+cmp spc_ya,r1,lsl #1
+movge r1,r1,lsl #1
+1001:
+ cmp spc_ya,r1
+ adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
+ subcs spc_ya,spc_ya,r1
+ teq r1,spc_x
+ movne r1,r1,lsr #1
+ bne 1001b
+
+ and spc_ya,spc_ya,#0xff
+ and r3,r3,#0xff
+ orr spc_ya,r3,spc_ya,lsl #8
+1002:
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#156
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9F_13:
+ and r0,spc_ya,#0xff
+ mov r1,r0,lsl #28
+ orr r0,r1,r0,lsl #20
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0,lsr #24
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA0_13:
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,#flag_i
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA1_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xa]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA2_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x20
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA3_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x20
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA4_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA5_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA6_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA7_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA8_13:
+ ldrb r0,[spc_pc],#1
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA9_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r3
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r3
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAA_13:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAB_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAC_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAD_13:
+ ldrb r0,[spc_pc],#1
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAE_13:
+ add r0,spc_ram,spc_s
+ ldrb r0,[r0,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and spc_ya,spc_ya,#0xff00
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAF_13:
+ mov r0,spc_ya
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ add spc_x,spc_x,#1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB0_13:
+ tst spc_p,#0x00000001
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB1_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x8]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB2_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x20
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB3_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x20
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB4_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB5_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB6_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB7_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB8_13:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r1
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB9_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r3
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r3
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBA_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1, [spc_pc],#1
+ mov spc_ya, r0
+ add r0, r1, #1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBB_13:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBC_13:
+ and r0,spc_ya,#0xff
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBD_13:
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ mov spc_s,spc_x
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBE_13:
+ and r0,spc_ya,#0xff
+ and r1,spc_ya,#0x0f
+ cmp r1,#9
+ subhi r0,r0,#6
+ tstls spc_p,#flag_h
+ subeq r0,r0,#6
+ cmp r0,#0x9f
+ bhi 2001f
+ tst spc_p,#flag_c
+ beq 2001f
+ orr spc_p,spc_p,#flag_c
+ b 2002f
+2001:
+ sub r0,r0,#0x60
+ bic spc_p,spc_p,#flag_c
+2002:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBF_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ add spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC0_13:
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#flag_i
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC1_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x6]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC2_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x40
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC3_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x40
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC4_13:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC5_13:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC6_13:
+ mov r0,spc_ya
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC7_13:
+ ldrb r1,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r1,r1,spc_x
+ and r1,r1,#0xff
+ ldrb r1,[r14,r1]!
+ ldrb r14,[r14,#1]
+ orr r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#91
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC8_13:
+ ldrb r0,[spc_pc],#1
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC9_13:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_x
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCA_13:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r2,#1
+ mov r2,r2,lsl r1
+ tst spc_p,#flag_c
+ orrne r0,r0,r2
+ biceq r0,r0,r2
+ bic r1, r3, #0xe000
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCB_13:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCC_13:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya,lsr #8
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCD_13:
+ ldrb spc_x,[spc_pc],#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCE_13:
+ add spc_x,spc_ram,spc_s
+ ldrb spc_x,[spc_x,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCF_13:
+ mov r0,spc_ya,lsr #8
+ and spc_ya,spc_ya,#0xff
+ mul spc_ya,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#117
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD0_13:
+ tst spc_p,#0xFF000000
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD1_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x4]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD2_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x40
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD3_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x40
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD4_13:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD5_13:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,spc_x
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD6_13:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,spc_ya, lsr #8
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD7_13:
+ ldrb r1,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r1,[r14,r1]!
+ ldrb r14,[r14,#1]
+ add r1,r1,spc_ya,lsr #8
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#91
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD8_13:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD9_13:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_x
+ add r1,r1,spc_ya,lsr #8
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDA_13:
+ ldrb r1,[spc_pc]
+ mov r0,spc_ya
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDB_13:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDC_13:
+ mov r0,spc_ya,lsr #8
+ sub r0,r0,#1
+ and r0,r0,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDD_13:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,spc_ya,lsr #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDE_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff
+ cmp r0,r1
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ addne spc_pc,spc_pc,r0
+ subne cycles,cycles,#26
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDF_13:
+ and r0,spc_ya,#0xff
+ and r1,spc_ya,#0x0f
+ cmp r1,#9
+ addhi r0,r0,#6
+ bls 3001f
+ cmphi r0,#0xf0
+ orrhi spc_p,spc_p,#flag_c
+ b 3002f
+3001:
+ tst spc_p,#flag_h
+ addne r0,r0,#6
+ beq 3002f
+ cmp r0,#0xf0
+ orrhi spc_p,spc_p,#flag_c
+3002:
+ tst spc_p,#flag_c
+ addne r0,r0,#0x60
+ bne 3003f
+ cmp r0,#0x9f
+ addhi r0,r0,#0x60
+ orrhi spc_p,spc_p,#flag_c
+ bicls spc_p,spc_p,#flag_c
+3003:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE0_13:
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#(flag_o|flag_h)
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE1_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x2]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE2_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x80
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE3_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#26
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE4_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE5_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE6_13:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE7_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE8_13:
+ ldrb r0,[spc_pc],#1
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE9_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEA_13:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r2,#1
+ mov r2,r2,lsl r1
+ eor r0,r0,r2
+ bic r1, r3, #0xe000
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEB_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEC_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuED_13:
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ eor spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEE_13:
+ add r0,spc_ram,spc_s
+ ldrb r0,[r0,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEF_13:
+ ldr r0, 5001f
+ mov r1,#0
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ str r1,[r0,#cpu_apu_executing]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+5001:
+ .long CPU
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF0_13:
+ tst spc_p,#0xFF000000
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF1_13:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x0]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#104
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF2_13:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x80
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF3_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#26
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF4_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF5_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF6_13:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF7_13:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#78
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF8_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF9_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFA_13:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#65
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFB_13:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFC_13:
+ mov r0,spc_ya,lsr #8
+ add r0,r0,#1
+ and r0,r0,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFD_13:
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,spc_ya,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#26
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFE_13:
+ sub spc_ya,spc_ya,#0x100
+ mov spc_ya,spc_ya,lsl #16
+ mov spc_ya,spc_ya,lsr #16
+ movs r0,spc_ya,lsr #8
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ addne spc_pc,spc_pc,r0
+ subne cycles,cycles,#26
+ subs cycles,cycles,#52
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFF_13:
+ ldr r0, 5001f
+ mov r1,#0
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ str r1,[r0,#cpu_apu_executing]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+5001:
+ .long CPU
+ subs cycles,cycles,#39
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+@ -------------------------- Jump Table 13 --------------------------
+Spc700JumpTab_13:
+ .long Apu00_13, Apu01_13, Apu02_13, Apu03_13, Apu04_13, Apu05_13, Apu06_13, Apu07_13 @ 00
+ .long Apu08_13, Apu09_13, Apu0A_13, Apu0B_13, Apu0C_13, Apu0D_13, Apu0E_13, Apu0F_13 @ 08
+ .long Apu10_13, Apu11_13, Apu12_13, Apu13_13, Apu14_13, Apu15_13, Apu16_13, Apu17_13 @ 10
+ .long Apu18_13, Apu19_13, Apu1A_13, Apu1B_13, Apu1C_13, Apu1D_13, Apu1E_13, Apu1F_13 @ 18
+ .long Apu20_13, Apu21_13, Apu22_13, Apu23_13, Apu24_13, Apu25_13, Apu26_13, Apu27_13 @ 20
+ .long Apu28_13, Apu29_13, Apu2A_13, Apu2B_13, Apu2C_13, Apu2D_13, Apu2E_13, Apu2F_13 @ 28
+ .long Apu30_13, Apu31_13, Apu32_13, Apu33_13, Apu34_13, Apu35_13, Apu36_13, Apu37_13 @ 30
+ .long Apu38_13, Apu39_13, Apu3A_13, Apu3B_13, Apu3C_13, Apu3D_13, Apu3E_13, Apu3F_13 @ 38
+ .long Apu40_13, Apu41_13, Apu42_13, Apu43_13, Apu44_13, Apu45_13, Apu46_13, Apu47_13 @ 40
+ .long Apu48_13, Apu49_13, Apu4A_13, Apu4B_13, Apu4C_13, Apu4D_13, Apu4E_13, Apu4F_13 @ 48
+ .long Apu50_13, Apu51_13, Apu52_13, Apu53_13, Apu54_13, Apu55_13, Apu56_13, Apu57_13 @ 50
+ .long Apu58_13, Apu59_13, Apu5A_13, Apu5B_13, Apu5C_13, Apu5D_13, Apu5E_13, Apu5F_13 @ 58
+ .long Apu60_13, Apu61_13, Apu62_13, Apu63_13, Apu64_13, Apu65_13, Apu66_13, Apu67_13 @ 60
+ .long Apu68_13, Apu69_13, Apu6A_13, Apu6B_13, Apu6C_13, Apu6D_13, Apu6E_13, Apu6F_13 @ 68
+ .long Apu70_13, Apu71_13, Apu72_13, Apu73_13, Apu74_13, Apu75_13, Apu76_13, Apu77_13 @ 70
+ .long Apu78_13, Apu79_13, Apu7A_13, Apu7B_13, Apu7C_13, Apu7D_13, Apu7E_13, Apu7F_13 @ 78
+ .long Apu80_13, Apu81_13, Apu82_13, Apu83_13, Apu84_13, Apu85_13, Apu86_13, Apu87_13 @ 80
+ .long Apu88_13, Apu89_13, Apu8A_13, Apu8B_13, Apu8C_13, Apu8D_13, Apu8E_13, Apu8F_13 @ 88
+ .long Apu90_13, Apu91_13, Apu92_13, Apu93_13, Apu94_13, Apu95_13, Apu96_13, Apu97_13 @ 90
+ .long Apu98_13, Apu99_13, Apu9A_13, Apu9B_13, Apu9C_13, Apu9D_13, Apu9E_13, Apu9F_13 @ 98
+ .long ApuA0_13, ApuA1_13, ApuA2_13, ApuA3_13, ApuA4_13, ApuA5_13, ApuA6_13, ApuA7_13 @ a0
+ .long ApuA8_13, ApuA9_13, ApuAA_13, ApuAB_13, ApuAC_13, ApuAD_13, ApuAE_13, ApuAF_13 @ a8
+ .long ApuB0_13, ApuB1_13, ApuB2_13, ApuB3_13, ApuB4_13, ApuB5_13, ApuB6_13, ApuB7_13 @ b0
+ .long ApuB8_13, ApuB9_13, ApuBA_13, ApuBB_13, ApuBC_13, ApuBD_13, ApuBE_13, ApuBF_13 @ b8
+ .long ApuC0_13, ApuC1_13, ApuC2_13, ApuC3_13, ApuC4_13, ApuC5_13, ApuC6_13, ApuC7_13 @ c0
+ .long ApuC8_13, ApuC9_13, ApuCA_13, ApuCB_13, ApuCC_13, ApuCD_13, ApuCE_13, ApuCF_13 @ c8
+ .long ApuD0_13, ApuD1_13, ApuD2_13, ApuD3_13, ApuD4_13, ApuD5_13, ApuD6_13, ApuD7_13 @ d0
+ .long ApuD8_13, ApuD9_13, ApuDA_13, ApuDB_13, ApuDC_13, ApuDD_13, ApuDE_13, ApuDF_13 @ d8
+ .long ApuE0_13, ApuE1_13, ApuE2_13, ApuE3_13, ApuE4_13, ApuE5_13, ApuE6_13, ApuE7_13 @ e0
+ .long ApuE8_13, ApuE9_13, ApuEA_13, ApuEB_13, ApuEC_13, ApuED_13, ApuEE_13, ApuEF_13 @ e8
+ .long ApuF0_13, ApuF1_13, ApuF2_13, ApuF3_13, ApuF4_13, ApuF5_13, ApuF6_13, ApuF7_13 @ f0
+ .long ApuF8_13, ApuF9_13, ApuFA_13, ApuFB_13, ApuFC_13, ApuFD_13, ApuFE_13, ApuFF_13 @ f8
+
+
+Apu00_14:
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu01_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1e]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu02_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x01
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu03_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu04_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu05_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu06_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu07_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu08_14:
+ ldrb r0,[spc_pc],#1
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu09_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0, r0, r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0A_14:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orrne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0B_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0C_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0D_14:
+ mov r0,spc_p,lsr #24
+ and r1,r0,#0x80
+ tst r0,r0
+ orreq r1,r1,#flag_z
+ and spc_p,spc_p,#0x7d @ clear N & Z
+ orr spc_p,spc_p,r1
+ add r1,spc_ram,spc_s
+ strb spc_p,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,r0,lsl #24
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0E_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r2,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r2,lsl #24
+ orr r0,r0,spc_ya
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0F_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ mov r0,spc_p,lsr #24
+ and r1,r0,#0x80
+ tst r0,r0
+ orrne r1,r1,#flag_z
+ and spc_p,spc_p,#0x7d @ clear N & Z
+ orr spc_p,spc_p,r1
+ add r1,spc_ram,spc_s
+ strb spc_p,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ orr spc_p,spc_p,#flag_b
+ bic spc_p,spc_p,#flag_i
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x20]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu10_14:
+ tst spc_p,#0x80000000
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu11_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1c]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu12_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x01
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu13_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu14_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu15_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu16_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu17_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu18_14:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ orr r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu19_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0, r3, r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1A_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ sub r0,r1,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ stmfd sp!,{r0}
+ ldrb r1,[spc_pc]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldmfd sp!,{r0}
+ mov r0,r0,lsr #8
+ ldrb r1,[spc_pc],#1
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1B_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r3, r0
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1C_14:
+ tst spc_ya,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and r0,spc_ya,#0x7f
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1D_14:
+ sub spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1E_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1F_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ sub sp,sp,#8
+ str r0,[sp,#4]
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ str r0,[sp]
+ ldr r0,[sp,#4]
+ add r0,r0,#1
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ ldr r1,[sp],#8
+ orr r0,r1,r0,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu20_14:
+ bic spc_p,spc_p,#flag_d
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ str spc_ram,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu21_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1a]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu22_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x02
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu23_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x02
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu24_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu25_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu26_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu27_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu28_14:
+ ldrb r0,[spc_pc],#1
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu29_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2A_14:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orreq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2B_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2C_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2D_14:
+ add r1,spc_ram,spc_s
+ strb spc_ya,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2E_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff
+ cmp r0,r1
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2F_14:
+ ldrsb r0,[spc_pc],#1
+ add spc_pc,spc_pc,r0
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu30_14:
+ tst spc_p,#0x80000000
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu31_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x18]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu32_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x02
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu33_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x02
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu34_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu35_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu36_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu37_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu38_14:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ and r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu39_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3A_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ add r0,r1,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ stmfd sp!,{r0}
+ ldrb r1,[spc_pc]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldmfd sp!,{r0}
+ mov r0,r0,lsr #8
+ ldrb r1,[spc_pc],#1
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3B_14:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3C_14:
+ and r0,spc_ya,#0xff
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3D_14:
+ add spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3E_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3F_14:
+ ldrb r2,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r2,r2,r14,lsl #8
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ add spc_pc,spc_ram,r2
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu40_14:
+ orr spc_p,spc_p,#flag_d
+ add r0,spc_ram,#0x100
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ str r0,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu41_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x16]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu42_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x04
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu43_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x04
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu44_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu45_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu46_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu47_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu48_14:
+ ldrb r0,[spc_pc],#1
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu49_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4A_14:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ biceq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4B_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4C_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4D_14:
+ add r1,spc_ram,spc_s
+ strb spc_x,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4E_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r2,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r2,lsl #24
+ bic r0,r0,spc_ya
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4F_14:
+ ldrb r2,[spc_pc],#1
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ add spc_pc,spc_ram,r2
+ add spc_pc,spc_pc,#0xff00
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu50_14:
+ tst spc_p,#0x00000040
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu51_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x14]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu52_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x04
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu53_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x04
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu54_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu55_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu56_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu57_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu58_14:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ eor r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu59_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5A_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ subs r0,spc_ya,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5B_14:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5C_14:
+ and r0,spc_ya,#0xff
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5D_14:
+ and spc_x,spc_ya,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5E_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5F_14:
+ ldrb r0, [spc_pc], #1
+ ldrb r14, [spc_pc], #1
+ add spc_pc, r0, spc_ram
+ add spc_pc, spc_pc, r14, lsl #8
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu60_14:
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu61_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x12]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu62_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x08
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu63_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x08
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu64_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu65_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu66_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu67_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu68_14:
+ ldrb r0,[spc_pc],#1
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu69_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_x,spc_x,r0,lsl #24
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_x,lsr #24
+ subs r14,r0,r1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6A_14:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ bicne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6B_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6C_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6D_14:
+ mov r0,spc_ya,lsr #8
+ add r1,spc_ram,spc_s
+ strb r0,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6E_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ sub r0,r0,#1
+ tst r0,r0
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r2,[spc_pc],#1
+ addne spc_pc,spc_pc,r2
+ subne cycles,cycles,#28
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6F_14:
+ add r1,spc_ram,spc_s
+ ldrb r0,[r1,#(0xff + 2)]
+ ldrb r1,[r1,#(0x100 + 2)]
+ add spc_s,spc_s,#2
+ orr r0,r0,r1,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu70_14:
+ tst spc_p,#0x00000040
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu71_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x10]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu72_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x08
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu73_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x08
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu74_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu75_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu76_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu77_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu78_14:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ subs r14,r0,r1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu79_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_x,spc_x,r0,lsl #24
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_x,lsr #24
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7A_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ add r0,spc_ya,r1
+ movs r2,r0,lsr #16
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ bic r2,r0,#0x00ff0000
+ eor r3,r1,r2
+ eor r14,spc_ya,r1
+ mvn r14,r14
+ and r14,r14,r3
+ tst r14,#0x8000
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7B_14:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7C_14:
+ and r0,spc_ya,#0xff
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7D_14:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,spc_x
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7E_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7F_14:
+ add spc_p,spc_ram,spc_s
+ ldrb spc_p,[spc_p,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and r0,spc_p,#(flag_z|flag_n)
+ eor r0,r0,#flag_z
+ orr spc_p,spc_p,r0,lsl #24
+ tst spc_p,#flag_d
+ addne r0,spc_ram,#0x100
+ moveq r0,spc_ram
+ str r0,[context,#iapu_directpage]
+ add r1,spc_ram,spc_s
+ ldrb r0,[r1,#(0xff + 2)]
+ ldrb r1,[r1,#(0x100 + 2)]
+ add spc_s,spc_s,#2
+ orr r0,r0,r1,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu80_14:
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu81_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xe]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu82_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x10
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu83_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x10
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu84_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu85_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu86_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu87_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu88_14:
+ ldrb r0,[spc_pc],#1
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu89_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r2,r0,r3
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r3
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r3
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8A_14:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ eorne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8B_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8C_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8D_14:
+ ldrb r0,[spc_pc],#1
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8E_14:
+ add spc_p,spc_ram,spc_s
+ ldrb spc_p,[spc_p,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and r0,spc_p,#(flag_z|flag_n)
+ eor r0,r0,#flag_z
+ orr spc_p,spc_p,r0,lsl #24
+ tst spc_p,#flag_d
+ addne r0,spc_ram,#0x100
+ moveq r0,spc_ram
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ str r0,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8F_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu90_14:
+ tst spc_p,#0x00000001
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu91_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xc]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu92_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x10
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu93_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x10
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu94_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu95_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu96_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu97_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu98_14:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ eor r2,r0,r1
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r1
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r1
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu99_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r2,r0,r3
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r3
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r3
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9A_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ subs r0,spc_ya,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ mov r2,r0,lsl #16
+ mov r2,r2,lsr #16
+ eor r3,spc_ya,r2
+ eor r14,spc_ya,r1
+ and r14,r14,r3
+ tst r14,#0x8000
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r1
+ tst r14,#0x10
+ bicne spc_p,spc_p,#flag_h
+ orreq spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9B_14:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9C_14:
+ and r0,spc_ya,#0xff
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9D_14:
+ mov spc_x,spc_s
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9E_14:
+ tst spc_x,spc_x @ div by 0?
+ orreq spc_ya,spc_ya,#0xff00
+ orreq spc_ya,spc_ya,#0x00ff
+ orreq spc_p,spc_p,#flag_o
+ beq 1002f
+ bic spc_p,spc_p,#flag_o
+@ Divide spc_ya by spc_x
+ mov r3,#0
+ mov r1,spc_x
+
+@ Shift up divisor till it's just less than numerator
+cmp spc_ya,r1,lsl #8
+movge r1,r1,lsl #8
+cmp spc_ya,r1,lsl #4
+movge r1,r1,lsl #4
+cmp spc_ya,r1,lsl #2
+movge r1,r1,lsl #2
+cmp spc_ya,r1,lsl #1
+movge r1,r1,lsl #1
+1001:
+ cmp spc_ya,r1
+ adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
+ subcs spc_ya,spc_ya,r1
+ teq r1,spc_x
+ movne r1,r1,lsr #1
+ bne 1001b
+
+ and spc_ya,spc_ya,#0xff
+ and r3,r3,#0xff
+ orr spc_ya,r3,spc_ya,lsl #8
+1002:
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9F_14:
+ and r0,spc_ya,#0xff
+ mov r1,r0,lsl #28
+ orr r0,r1,r0,lsl #20
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0,lsr #24
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA0_14:
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,#flag_i
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA1_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xa]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA2_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x20
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA3_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x20
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA4_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA5_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA6_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA7_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA8_14:
+ ldrb r0,[spc_pc],#1
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA9_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r3
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r3
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAA_14:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAB_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAC_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAD_14:
+ ldrb r0,[spc_pc],#1
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAE_14:
+ add r0,spc_ram,spc_s
+ ldrb r0,[r0,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and spc_ya,spc_ya,#0xff00
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAF_14:
+ mov r0,spc_ya
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ add spc_x,spc_x,#1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB0_14:
+ tst spc_p,#0x00000001
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB1_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x8]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB2_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x20
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB3_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x20
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB4_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB5_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB6_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB7_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB8_14:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r1
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB9_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r3
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r3
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBA_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1, [spc_pc],#1
+ mov spc_ya, r0
+ add r0, r1, #1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBB_14:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBC_14:
+ and r0,spc_ya,#0xff
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBD_14:
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ mov spc_s,spc_x
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBE_14:
+ and r0,spc_ya,#0xff
+ and r1,spc_ya,#0x0f
+ cmp r1,#9
+ subhi r0,r0,#6
+ tstls spc_p,#flag_h
+ subeq r0,r0,#6
+ cmp r0,#0x9f
+ bhi 2001f
+ tst spc_p,#flag_c
+ beq 2001f
+ orr spc_p,spc_p,#flag_c
+ b 2002f
+2001:
+ sub r0,r0,#0x60
+ bic spc_p,spc_p,#flag_c
+2002:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBF_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ add spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC0_14:
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#flag_i
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC1_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x6]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC2_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x40
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC3_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x40
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC4_14:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC5_14:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC6_14:
+ mov r0,spc_ya
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC7_14:
+ ldrb r1,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r1,r1,spc_x
+ and r1,r1,#0xff
+ ldrb r1,[r14,r1]!
+ ldrb r14,[r14,#1]
+ orr r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#98
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC8_14:
+ ldrb r0,[spc_pc],#1
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC9_14:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_x
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCA_14:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r2,#1
+ mov r2,r2,lsl r1
+ tst spc_p,#flag_c
+ orrne r0,r0,r2
+ biceq r0,r0,r2
+ bic r1, r3, #0xe000
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCB_14:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCC_14:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya,lsr #8
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCD_14:
+ ldrb spc_x,[spc_pc],#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCE_14:
+ add spc_x,spc_ram,spc_s
+ ldrb spc_x,[spc_x,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCF_14:
+ mov r0,spc_ya,lsr #8
+ and spc_ya,spc_ya,#0xff
+ mul spc_ya,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD0_14:
+ tst spc_p,#0xFF000000
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD1_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x4]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD2_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x40
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD3_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x40
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD4_14:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD5_14:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,spc_x
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD6_14:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,spc_ya, lsr #8
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD7_14:
+ ldrb r1,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r1,[r14,r1]!
+ ldrb r14,[r14,#1]
+ add r1,r1,spc_ya,lsr #8
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#98
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD8_14:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD9_14:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_x
+ add r1,r1,spc_ya,lsr #8
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDA_14:
+ ldrb r1,[spc_pc]
+ mov r0,spc_ya
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDB_14:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDC_14:
+ mov r0,spc_ya,lsr #8
+ sub r0,r0,#1
+ and r0,r0,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDD_14:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,spc_ya,lsr #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDE_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff
+ cmp r0,r1
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ addne spc_pc,spc_pc,r0
+ subne cycles,cycles,#28
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDF_14:
+ and r0,spc_ya,#0xff
+ and r1,spc_ya,#0x0f
+ cmp r1,#9
+ addhi r0,r0,#6
+ bls 3001f
+ cmphi r0,#0xf0
+ orrhi spc_p,spc_p,#flag_c
+ b 3002f
+3001:
+ tst spc_p,#flag_h
+ addne r0,r0,#6
+ beq 3002f
+ cmp r0,#0xf0
+ orrhi spc_p,spc_p,#flag_c
+3002:
+ tst spc_p,#flag_c
+ addne r0,r0,#0x60
+ bne 3003f
+ cmp r0,#0x9f
+ addhi r0,r0,#0x60
+ orrhi spc_p,spc_p,#flag_c
+ bicls spc_p,spc_p,#flag_c
+3003:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE0_14:
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#(flag_o|flag_h)
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE1_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x2]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE2_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x80
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE3_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#28
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE4_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE5_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE6_14:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE7_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE8_14:
+ ldrb r0,[spc_pc],#1
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE9_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEA_14:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r2,#1
+ mov r2,r2,lsl r1
+ eor r0,r0,r2
+ bic r1, r3, #0xe000
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEB_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEC_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuED_14:
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ eor spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEE_14:
+ add r0,spc_ram,spc_s
+ ldrb r0,[r0,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEF_14:
+ ldr r0, 5001f
+ mov r1,#0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ str r1,[r0,#cpu_apu_executing]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+5001:
+ .long CPU
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF0_14:
+ tst spc_p,#0xFF000000
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF1_14:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x0]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#112
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF2_14:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x80
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF3_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#28
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF4_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF5_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF6_14:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF7_14:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF8_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF9_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFA_14:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#70
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFB_14:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFC_14:
+ mov r0,spc_ya,lsr #8
+ add r0,r0,#1
+ and r0,r0,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFD_14:
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,spc_ya,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#28
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFE_14:
+ sub spc_ya,spc_ya,#0x100
+ mov spc_ya,spc_ya,lsl #16
+ mov spc_ya,spc_ya,lsr #16
+ movs r0,spc_ya,lsr #8
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ addne spc_pc,spc_pc,r0
+ subne cycles,cycles,#28
+ subs cycles,cycles,#56
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFF_14:
+ ldr r0, 5001f
+ mov r1,#0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ str r1,[r0,#cpu_apu_executing]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+5001:
+ .long CPU
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+@ -------------------------- Jump Table 14 --------------------------
+Spc700JumpTab_14:
+ .long Apu00_14, Apu01_14, Apu02_14, Apu03_14, Apu04_14, Apu05_14, Apu06_14, Apu07_14 @ 00
+ .long Apu08_14, Apu09_14, Apu0A_14, Apu0B_14, Apu0C_14, Apu0D_14, Apu0E_14, Apu0F_14 @ 08
+ .long Apu10_14, Apu11_14, Apu12_14, Apu13_14, Apu14_14, Apu15_14, Apu16_14, Apu17_14 @ 10
+ .long Apu18_14, Apu19_14, Apu1A_14, Apu1B_14, Apu1C_14, Apu1D_14, Apu1E_14, Apu1F_14 @ 18
+ .long Apu20_14, Apu21_14, Apu22_14, Apu23_14, Apu24_14, Apu25_14, Apu26_14, Apu27_14 @ 20
+ .long Apu28_14, Apu29_14, Apu2A_14, Apu2B_14, Apu2C_14, Apu2D_14, Apu2E_14, Apu2F_14 @ 28
+ .long Apu30_14, Apu31_14, Apu32_14, Apu33_14, Apu34_14, Apu35_14, Apu36_14, Apu37_14 @ 30
+ .long Apu38_14, Apu39_14, Apu3A_14, Apu3B_14, Apu3C_14, Apu3D_14, Apu3E_14, Apu3F_14 @ 38
+ .long Apu40_14, Apu41_14, Apu42_14, Apu43_14, Apu44_14, Apu45_14, Apu46_14, Apu47_14 @ 40
+ .long Apu48_14, Apu49_14, Apu4A_14, Apu4B_14, Apu4C_14, Apu4D_14, Apu4E_14, Apu4F_14 @ 48
+ .long Apu50_14, Apu51_14, Apu52_14, Apu53_14, Apu54_14, Apu55_14, Apu56_14, Apu57_14 @ 50
+ .long Apu58_14, Apu59_14, Apu5A_14, Apu5B_14, Apu5C_14, Apu5D_14, Apu5E_14, Apu5F_14 @ 58
+ .long Apu60_14, Apu61_14, Apu62_14, Apu63_14, Apu64_14, Apu65_14, Apu66_14, Apu67_14 @ 60
+ .long Apu68_14, Apu69_14, Apu6A_14, Apu6B_14, Apu6C_14, Apu6D_14, Apu6E_14, Apu6F_14 @ 68
+ .long Apu70_14, Apu71_14, Apu72_14, Apu73_14, Apu74_14, Apu75_14, Apu76_14, Apu77_14 @ 70
+ .long Apu78_14, Apu79_14, Apu7A_14, Apu7B_14, Apu7C_14, Apu7D_14, Apu7E_14, Apu7F_14 @ 78
+ .long Apu80_14, Apu81_14, Apu82_14, Apu83_14, Apu84_14, Apu85_14, Apu86_14, Apu87_14 @ 80
+ .long Apu88_14, Apu89_14, Apu8A_14, Apu8B_14, Apu8C_14, Apu8D_14, Apu8E_14, Apu8F_14 @ 88
+ .long Apu90_14, Apu91_14, Apu92_14, Apu93_14, Apu94_14, Apu95_14, Apu96_14, Apu97_14 @ 90
+ .long Apu98_14, Apu99_14, Apu9A_14, Apu9B_14, Apu9C_14, Apu9D_14, Apu9E_14, Apu9F_14 @ 98
+ .long ApuA0_14, ApuA1_14, ApuA2_14, ApuA3_14, ApuA4_14, ApuA5_14, ApuA6_14, ApuA7_14 @ a0
+ .long ApuA8_14, ApuA9_14, ApuAA_14, ApuAB_14, ApuAC_14, ApuAD_14, ApuAE_14, ApuAF_14 @ a8
+ .long ApuB0_14, ApuB1_14, ApuB2_14, ApuB3_14, ApuB4_14, ApuB5_14, ApuB6_14, ApuB7_14 @ b0
+ .long ApuB8_14, ApuB9_14, ApuBA_14, ApuBB_14, ApuBC_14, ApuBD_14, ApuBE_14, ApuBF_14 @ b8
+ .long ApuC0_14, ApuC1_14, ApuC2_14, ApuC3_14, ApuC4_14, ApuC5_14, ApuC6_14, ApuC7_14 @ c0
+ .long ApuC8_14, ApuC9_14, ApuCA_14, ApuCB_14, ApuCC_14, ApuCD_14, ApuCE_14, ApuCF_14 @ c8
+ .long ApuD0_14, ApuD1_14, ApuD2_14, ApuD3_14, ApuD4_14, ApuD5_14, ApuD6_14, ApuD7_14 @ d0
+ .long ApuD8_14, ApuD9_14, ApuDA_14, ApuDB_14, ApuDC_14, ApuDD_14, ApuDE_14, ApuDF_14 @ d8
+ .long ApuE0_14, ApuE1_14, ApuE2_14, ApuE3_14, ApuE4_14, ApuE5_14, ApuE6_14, ApuE7_14 @ e0
+ .long ApuE8_14, ApuE9_14, ApuEA_14, ApuEB_14, ApuEC_14, ApuED_14, ApuEE_14, ApuEF_14 @ e8
+ .long ApuF0_14, ApuF1_14, ApuF2_14, ApuF3_14, ApuF4_14, ApuF5_14, ApuF6_14, ApuF7_14 @ f0
+ .long ApuF8_14, ApuF9_14, ApuFA_14, ApuFB_14, ApuFC_14, ApuFD_14, ApuFE_14, ApuFF_14 @ f8
+
+
+Apu00_15:
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu01_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1e]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu02_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x01
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu03_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu04_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu05_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu06_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu07_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu08_15:
+ ldrb r0,[spc_pc],#1
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu09_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0, r0, r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0A_15:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orrne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0B_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0C_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0D_15:
+ mov r0,spc_p,lsr #24
+ and r1,r0,#0x80
+ tst r0,r0
+ orreq r1,r1,#flag_z
+ and spc_p,spc_p,#0x7d @ clear N & Z
+ orr spc_p,spc_p,r1
+ add r1,spc_ram,spc_s
+ strb spc_p,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,r0,lsl #24
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0E_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r2,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r2,lsl #24
+ orr r0,r0,spc_ya
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0F_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ mov r0,spc_p,lsr #24
+ and r1,r0,#0x80
+ tst r0,r0
+ orrne r1,r1,#flag_z
+ and spc_p,spc_p,#0x7d @ clear N & Z
+ orr spc_p,spc_p,r1
+ add r1,spc_ram,spc_s
+ strb spc_p,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ orr spc_p,spc_p,#flag_b
+ bic spc_p,spc_p,#flag_i
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x20]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu10_15:
+ tst spc_p,#0x80000000
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu11_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1c]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu12_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x01
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu13_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu14_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu15_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu16_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu17_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu18_15:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ orr r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu19_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0, r3, r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1A_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ sub r0,r1,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ stmfd sp!,{r0}
+ ldrb r1,[spc_pc]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldmfd sp!,{r0}
+ mov r0,r0,lsr #8
+ ldrb r1,[spc_pc],#1
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1B_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r3, r0
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1C_15:
+ tst spc_ya,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and r0,spc_ya,#0x7f
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1D_15:
+ sub spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1E_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1F_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ sub sp,sp,#8
+ str r0,[sp,#4]
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ str r0,[sp]
+ ldr r0,[sp,#4]
+ add r0,r0,#1
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ ldr r1,[sp],#8
+ orr r0,r1,r0,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu20_15:
+ bic spc_p,spc_p,#flag_d
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ str spc_ram,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu21_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1a]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu22_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x02
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu23_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x02
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu24_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu25_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu26_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu27_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu28_15:
+ ldrb r0,[spc_pc],#1
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu29_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2A_15:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orreq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2B_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2C_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2D_15:
+ add r1,spc_ram,spc_s
+ strb spc_ya,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2E_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff
+ cmp r0,r1
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2F_15:
+ ldrsb r0,[spc_pc],#1
+ add spc_pc,spc_pc,r0
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu30_15:
+ tst spc_p,#0x80000000
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu31_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x18]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu32_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x02
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu33_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x02
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu34_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu35_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu36_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu37_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu38_15:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ and r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu39_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3A_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ add r0,r1,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ stmfd sp!,{r0}
+ ldrb r1,[spc_pc]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldmfd sp!,{r0}
+ mov r0,r0,lsr #8
+ ldrb r1,[spc_pc],#1
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3B_15:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3C_15:
+ and r0,spc_ya,#0xff
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3D_15:
+ add spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3E_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3F_15:
+ ldrb r2,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r2,r2,r14,lsl #8
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ add spc_pc,spc_ram,r2
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu40_15:
+ orr spc_p,spc_p,#flag_d
+ add r0,spc_ram,#0x100
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ str r0,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu41_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x16]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu42_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x04
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu43_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x04
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu44_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu45_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu46_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu47_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu48_15:
+ ldrb r0,[spc_pc],#1
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu49_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4A_15:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ biceq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4B_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4C_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4D_15:
+ add r1,spc_ram,spc_s
+ strb spc_x,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4E_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r2,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r2,lsl #24
+ bic r0,r0,spc_ya
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4F_15:
+ ldrb r2,[spc_pc],#1
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ add spc_pc,spc_ram,r2
+ add spc_pc,spc_pc,#0xff00
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu50_15:
+ tst spc_p,#0x00000040
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu51_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x14]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu52_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x04
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu53_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x04
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu54_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu55_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu56_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu57_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu58_15:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ eor r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu59_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5A_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ subs r0,spc_ya,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5B_15:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5C_15:
+ and r0,spc_ya,#0xff
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5D_15:
+ and spc_x,spc_ya,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5E_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5F_15:
+ ldrb r0, [spc_pc], #1
+ ldrb r14, [spc_pc], #1
+ add spc_pc, r0, spc_ram
+ add spc_pc, spc_pc, r14, lsl #8
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu60_15:
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu61_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x12]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu62_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x08
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu63_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x08
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu64_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu65_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu66_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu67_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu68_15:
+ ldrb r0,[spc_pc],#1
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu69_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_x,spc_x,r0,lsl #24
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_x,lsr #24
+ subs r14,r0,r1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6A_15:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ bicne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6B_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6C_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6D_15:
+ mov r0,spc_ya,lsr #8
+ add r1,spc_ram,spc_s
+ strb r0,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6E_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ sub r0,r0,#1
+ tst r0,r0
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r2,[spc_pc],#1
+ addne spc_pc,spc_pc,r2
+ subne cycles,cycles,#30
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6F_15:
+ add r1,spc_ram,spc_s
+ ldrb r0,[r1,#(0xff + 2)]
+ ldrb r1,[r1,#(0x100 + 2)]
+ add spc_s,spc_s,#2
+ orr r0,r0,r1,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu70_15:
+ tst spc_p,#0x00000040
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu71_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x10]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu72_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x08
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu73_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x08
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu74_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu75_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu76_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu77_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu78_15:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ subs r14,r0,r1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu79_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_x,spc_x,r0,lsl #24
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_x,lsr #24
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7A_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ add r0,spc_ya,r1
+ movs r2,r0,lsr #16
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ bic r2,r0,#0x00ff0000
+ eor r3,r1,r2
+ eor r14,spc_ya,r1
+ mvn r14,r14
+ and r14,r14,r3
+ tst r14,#0x8000
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7B_15:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7C_15:
+ and r0,spc_ya,#0xff
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7D_15:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,spc_x
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7E_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7F_15:
+ add spc_p,spc_ram,spc_s
+ ldrb spc_p,[spc_p,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and r0,spc_p,#(flag_z|flag_n)
+ eor r0,r0,#flag_z
+ orr spc_p,spc_p,r0,lsl #24
+ tst spc_p,#flag_d
+ addne r0,spc_ram,#0x100
+ moveq r0,spc_ram
+ str r0,[context,#iapu_directpage]
+ add r1,spc_ram,spc_s
+ ldrb r0,[r1,#(0xff + 2)]
+ ldrb r1,[r1,#(0x100 + 2)]
+ add spc_s,spc_s,#2
+ orr r0,r0,r1,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu80_15:
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu81_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xe]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu82_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x10
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu83_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x10
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu84_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu85_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu86_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu87_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu88_15:
+ ldrb r0,[spc_pc],#1
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu89_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r2,r0,r3
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r3
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r3
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8A_15:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ eorne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8B_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8C_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8D_15:
+ ldrb r0,[spc_pc],#1
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8E_15:
+ add spc_p,spc_ram,spc_s
+ ldrb spc_p,[spc_p,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and r0,spc_p,#(flag_z|flag_n)
+ eor r0,r0,#flag_z
+ orr spc_p,spc_p,r0,lsl #24
+ tst spc_p,#flag_d
+ addne r0,spc_ram,#0x100
+ moveq r0,spc_ram
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ str r0,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8F_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu90_15:
+ tst spc_p,#0x00000001
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu91_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xc]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu92_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x10
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu93_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x10
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu94_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu95_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu96_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu97_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu98_15:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ eor r2,r0,r1
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r1
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r1
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu99_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r2,r0,r3
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r3
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r3
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9A_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ subs r0,spc_ya,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ mov r2,r0,lsl #16
+ mov r2,r2,lsr #16
+ eor r3,spc_ya,r2
+ eor r14,spc_ya,r1
+ and r14,r14,r3
+ tst r14,#0x8000
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r1
+ tst r14,#0x10
+ bicne spc_p,spc_p,#flag_h
+ orreq spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9B_15:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9C_15:
+ and r0,spc_ya,#0xff
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9D_15:
+ mov spc_x,spc_s
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9E_15:
+ tst spc_x,spc_x @ div by 0?
+ orreq spc_ya,spc_ya,#0xff00
+ orreq spc_ya,spc_ya,#0x00ff
+ orreq spc_p,spc_p,#flag_o
+ beq 1002f
+ bic spc_p,spc_p,#flag_o
+@ Divide spc_ya by spc_x
+ mov r3,#0
+ mov r1,spc_x
+
+@ Shift up divisor till it's just less than numerator
+cmp spc_ya,r1,lsl #8
+movge r1,r1,lsl #8
+cmp spc_ya,r1,lsl #4
+movge r1,r1,lsl #4
+cmp spc_ya,r1,lsl #2
+movge r1,r1,lsl #2
+cmp spc_ya,r1,lsl #1
+movge r1,r1,lsl #1
+1001:
+ cmp spc_ya,r1
+ adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
+ subcs spc_ya,spc_ya,r1
+ teq r1,spc_x
+ movne r1,r1,lsr #1
+ bne 1001b
+
+ and spc_ya,spc_ya,#0xff
+ and r3,r3,#0xff
+ orr spc_ya,r3,spc_ya,lsl #8
+1002:
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#180
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9F_15:
+ and r0,spc_ya,#0xff
+ mov r1,r0,lsl #28
+ orr r0,r1,r0,lsl #20
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0,lsr #24
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA0_15:
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,#flag_i
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA1_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xa]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA2_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x20
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA3_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x20
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA4_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA5_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA6_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA7_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA8_15:
+ ldrb r0,[spc_pc],#1
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA9_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r3
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r3
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAA_15:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAB_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAC_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAD_15:
+ ldrb r0,[spc_pc],#1
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAE_15:
+ add r0,spc_ram,spc_s
+ ldrb r0,[r0,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and spc_ya,spc_ya,#0xff00
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAF_15:
+ mov r0,spc_ya
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ add spc_x,spc_x,#1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB0_15:
+ tst spc_p,#0x00000001
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB1_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x8]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB2_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x20
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB3_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x20
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB4_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB5_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB6_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB7_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB8_15:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r1
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB9_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r3
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r3
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBA_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1, [spc_pc],#1
+ mov spc_ya, r0
+ add r0, r1, #1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBB_15:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBC_15:
+ and r0,spc_ya,#0xff
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBD_15:
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ mov spc_s,spc_x
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBE_15:
+ and r0,spc_ya,#0xff
+ and r1,spc_ya,#0x0f
+ cmp r1,#9
+ subhi r0,r0,#6
+ tstls spc_p,#flag_h
+ subeq r0,r0,#6
+ cmp r0,#0x9f
+ bhi 2001f
+ tst spc_p,#flag_c
+ beq 2001f
+ orr spc_p,spc_p,#flag_c
+ b 2002f
+2001:
+ sub r0,r0,#0x60
+ bic spc_p,spc_p,#flag_c
+2002:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBF_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ add spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC0_15:
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#flag_i
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC1_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x6]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC2_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x40
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC3_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x40
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC4_15:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC5_15:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC6_15:
+ mov r0,spc_ya
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC7_15:
+ ldrb r1,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r1,r1,spc_x
+ and r1,r1,#0xff
+ ldrb r1,[r14,r1]!
+ ldrb r14,[r14,#1]
+ orr r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC8_15:
+ ldrb r0,[spc_pc],#1
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC9_15:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_x
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCA_15:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r2,#1
+ mov r2,r2,lsl r1
+ tst spc_p,#flag_c
+ orrne r0,r0,r2
+ biceq r0,r0,r2
+ bic r1, r3, #0xe000
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCB_15:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCC_15:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya,lsr #8
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCD_15:
+ ldrb spc_x,[spc_pc],#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCE_15:
+ add spc_x,spc_ram,spc_s
+ ldrb spc_x,[spc_x,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCF_15:
+ mov r0,spc_ya,lsr #8
+ and spc_ya,spc_ya,#0xff
+ mul spc_ya,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#135
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD0_15:
+ tst spc_p,#0xFF000000
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD1_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x4]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD2_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x40
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD3_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x40
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD4_15:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD5_15:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,spc_x
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD6_15:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,spc_ya, lsr #8
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD7_15:
+ ldrb r1,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r1,[r14,r1]!
+ ldrb r14,[r14,#1]
+ add r1,r1,spc_ya,lsr #8
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD8_15:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD9_15:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_x
+ add r1,r1,spc_ya,lsr #8
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDA_15:
+ ldrb r1,[spc_pc]
+ mov r0,spc_ya
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDB_15:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDC_15:
+ mov r0,spc_ya,lsr #8
+ sub r0,r0,#1
+ and r0,r0,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDD_15:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,spc_ya,lsr #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDE_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff
+ cmp r0,r1
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ addne spc_pc,spc_pc,r0
+ subne cycles,cycles,#30
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDF_15:
+ and r0,spc_ya,#0xff
+ and r1,spc_ya,#0x0f
+ cmp r1,#9
+ addhi r0,r0,#6
+ bls 3001f
+ cmphi r0,#0xf0
+ orrhi spc_p,spc_p,#flag_c
+ b 3002f
+3001:
+ tst spc_p,#flag_h
+ addne r0,r0,#6
+ beq 3002f
+ cmp r0,#0xf0
+ orrhi spc_p,spc_p,#flag_c
+3002:
+ tst spc_p,#flag_c
+ addne r0,r0,#0x60
+ bne 3003f
+ cmp r0,#0x9f
+ addhi r0,r0,#0x60
+ orrhi spc_p,spc_p,#flag_c
+ bicls spc_p,spc_p,#flag_c
+3003:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE0_15:
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#(flag_o|flag_h)
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE1_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x2]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE2_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x80
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE3_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#30
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE4_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE5_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE6_15:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE7_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE8_15:
+ ldrb r0,[spc_pc],#1
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE9_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEA_15:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r2,#1
+ mov r2,r2,lsl r1
+ eor r0,r0,r2
+ bic r1, r3, #0xe000
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEB_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEC_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuED_15:
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ eor spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEE_15:
+ add r0,spc_ram,spc_s
+ ldrb r0,[r0,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEF_15:
+ ldr r0, 5001f
+ mov r1,#0
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ str r1,[r0,#cpu_apu_executing]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+5001:
+ .long CPU
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF0_15:
+ tst spc_p,#0xFF000000
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF1_15:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x0]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#120
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF2_15:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x80
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF3_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#30
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF4_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF5_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF6_15:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF7_15:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#90
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF8_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF9_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFA_15:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#75
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFB_15:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFC_15:
+ mov r0,spc_ya,lsr #8
+ add r0,r0,#1
+ and r0,r0,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFD_15:
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,spc_ya,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#30
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFE_15:
+ sub spc_ya,spc_ya,#0x100
+ mov spc_ya,spc_ya,lsl #16
+ mov spc_ya,spc_ya,lsr #16
+ movs r0,spc_ya,lsr #8
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ addne spc_pc,spc_pc,r0
+ subne cycles,cycles,#30
+ subs cycles,cycles,#60
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFF_15:
+ ldr r0, 5001f
+ mov r1,#0
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ str r1,[r0,#cpu_apu_executing]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+5001:
+ .long CPU
+ subs cycles,cycles,#45
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+@ -------------------------- Jump Table 15 --------------------------
+Spc700JumpTab_15:
+ .long Apu00_15, Apu01_15, Apu02_15, Apu03_15, Apu04_15, Apu05_15, Apu06_15, Apu07_15 @ 00
+ .long Apu08_15, Apu09_15, Apu0A_15, Apu0B_15, Apu0C_15, Apu0D_15, Apu0E_15, Apu0F_15 @ 08
+ .long Apu10_15, Apu11_15, Apu12_15, Apu13_15, Apu14_15, Apu15_15, Apu16_15, Apu17_15 @ 10
+ .long Apu18_15, Apu19_15, Apu1A_15, Apu1B_15, Apu1C_15, Apu1D_15, Apu1E_15, Apu1F_15 @ 18
+ .long Apu20_15, Apu21_15, Apu22_15, Apu23_15, Apu24_15, Apu25_15, Apu26_15, Apu27_15 @ 20
+ .long Apu28_15, Apu29_15, Apu2A_15, Apu2B_15, Apu2C_15, Apu2D_15, Apu2E_15, Apu2F_15 @ 28
+ .long Apu30_15, Apu31_15, Apu32_15, Apu33_15, Apu34_15, Apu35_15, Apu36_15, Apu37_15 @ 30
+ .long Apu38_15, Apu39_15, Apu3A_15, Apu3B_15, Apu3C_15, Apu3D_15, Apu3E_15, Apu3F_15 @ 38
+ .long Apu40_15, Apu41_15, Apu42_15, Apu43_15, Apu44_15, Apu45_15, Apu46_15, Apu47_15 @ 40
+ .long Apu48_15, Apu49_15, Apu4A_15, Apu4B_15, Apu4C_15, Apu4D_15, Apu4E_15, Apu4F_15 @ 48
+ .long Apu50_15, Apu51_15, Apu52_15, Apu53_15, Apu54_15, Apu55_15, Apu56_15, Apu57_15 @ 50
+ .long Apu58_15, Apu59_15, Apu5A_15, Apu5B_15, Apu5C_15, Apu5D_15, Apu5E_15, Apu5F_15 @ 58
+ .long Apu60_15, Apu61_15, Apu62_15, Apu63_15, Apu64_15, Apu65_15, Apu66_15, Apu67_15 @ 60
+ .long Apu68_15, Apu69_15, Apu6A_15, Apu6B_15, Apu6C_15, Apu6D_15, Apu6E_15, Apu6F_15 @ 68
+ .long Apu70_15, Apu71_15, Apu72_15, Apu73_15, Apu74_15, Apu75_15, Apu76_15, Apu77_15 @ 70
+ .long Apu78_15, Apu79_15, Apu7A_15, Apu7B_15, Apu7C_15, Apu7D_15, Apu7E_15, Apu7F_15 @ 78
+ .long Apu80_15, Apu81_15, Apu82_15, Apu83_15, Apu84_15, Apu85_15, Apu86_15, Apu87_15 @ 80
+ .long Apu88_15, Apu89_15, Apu8A_15, Apu8B_15, Apu8C_15, Apu8D_15, Apu8E_15, Apu8F_15 @ 88
+ .long Apu90_15, Apu91_15, Apu92_15, Apu93_15, Apu94_15, Apu95_15, Apu96_15, Apu97_15 @ 90
+ .long Apu98_15, Apu99_15, Apu9A_15, Apu9B_15, Apu9C_15, Apu9D_15, Apu9E_15, Apu9F_15 @ 98
+ .long ApuA0_15, ApuA1_15, ApuA2_15, ApuA3_15, ApuA4_15, ApuA5_15, ApuA6_15, ApuA7_15 @ a0
+ .long ApuA8_15, ApuA9_15, ApuAA_15, ApuAB_15, ApuAC_15, ApuAD_15, ApuAE_15, ApuAF_15 @ a8
+ .long ApuB0_15, ApuB1_15, ApuB2_15, ApuB3_15, ApuB4_15, ApuB5_15, ApuB6_15, ApuB7_15 @ b0
+ .long ApuB8_15, ApuB9_15, ApuBA_15, ApuBB_15, ApuBC_15, ApuBD_15, ApuBE_15, ApuBF_15 @ b8
+ .long ApuC0_15, ApuC1_15, ApuC2_15, ApuC3_15, ApuC4_15, ApuC5_15, ApuC6_15, ApuC7_15 @ c0
+ .long ApuC8_15, ApuC9_15, ApuCA_15, ApuCB_15, ApuCC_15, ApuCD_15, ApuCE_15, ApuCF_15 @ c8
+ .long ApuD0_15, ApuD1_15, ApuD2_15, ApuD3_15, ApuD4_15, ApuD5_15, ApuD6_15, ApuD7_15 @ d0
+ .long ApuD8_15, ApuD9_15, ApuDA_15, ApuDB_15, ApuDC_15, ApuDD_15, ApuDE_15, ApuDF_15 @ d8
+ .long ApuE0_15, ApuE1_15, ApuE2_15, ApuE3_15, ApuE4_15, ApuE5_15, ApuE6_15, ApuE7_15 @ e0
+ .long ApuE8_15, ApuE9_15, ApuEA_15, ApuEB_15, ApuEC_15, ApuED_15, ApuEE_15, ApuEF_15 @ e8
+ .long ApuF0_15, ApuF1_15, ApuF2_15, ApuF3_15, ApuF4_15, ApuF5_15, ApuF6_15, ApuF7_15 @ f0
+ .long ApuF8_15, ApuF9_15, ApuFA_15, ApuFB_15, ApuFC_15, ApuFD_15, ApuFE_15, ApuFF_15 @ f8
+
+
+Apu00_21:
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu01_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1e]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu02_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x01
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu03_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu04_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu05_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu06_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu07_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu08_21:
+ ldrb r0,[spc_pc],#1
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu09_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0, r0, r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0A_21:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orrne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0B_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0C_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0D_21:
+ mov r0,spc_p,lsr #24
+ and r1,r0,#0x80
+ tst r0,r0
+ orreq r1,r1,#flag_z
+ and spc_p,spc_p,#0x7d @ clear N & Z
+ orr spc_p,spc_p,r1
+ add r1,spc_ram,spc_s
+ strb spc_p,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,r0,lsl #24
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0E_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r2,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r2,lsl #24
+ orr r0,r0,spc_ya
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu0F_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ mov r0,spc_p,lsr #24
+ and r1,r0,#0x80
+ tst r0,r0
+ orrne r1,r1,#flag_z
+ and spc_p,spc_p,#0x7d @ clear N & Z
+ orr spc_p,spc_p,r1
+ add r1,spc_ram,spc_s
+ strb spc_p,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ orr spc_p,spc_p,#flag_b
+ bic spc_p,spc_p,#flag_i
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x20]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu10_21:
+ tst spc_p,#0x80000000
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu11_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1c]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu12_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x01
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu13_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu14_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu15_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu16_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu17_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu18_21:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ orr r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu19_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0, r3, r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1A_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ sub r0,r1,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ stmfd sp!,{r0}
+ ldrb r1,[spc_pc]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldmfd sp!,{r0}
+ mov r0,r0,lsr #8
+ ldrb r1,[spc_pc],#1
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1B_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r3, r0
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1C_21:
+ tst spc_ya,#0x80
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and r0,spc_ya,#0x7f
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0,lsl #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1D_21:
+ sub spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1E_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu1F_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ sub sp,sp,#8
+ str r0,[sp,#4]
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ str r0,[sp]
+ ldr r0,[sp,#4]
+ add r0,r0,#1
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ ldr r1,[sp],#8
+ orr r0,r1,r0,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu20_21:
+ bic spc_p,spc_p,#flag_d
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ str spc_ram,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu21_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x1a]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu22_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x02
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu23_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x02
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu24_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu25_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu26_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu27_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu28_21:
+ ldrb r0,[spc_pc],#1
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu29_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2A_21:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orreq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2B_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2C_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2D_21:
+ add r1,spc_ram,spc_s
+ strb spc_ya,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2E_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff
+ cmp r0,r1
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu2F_21:
+ ldrsb r0,[spc_pc],#1
+ add spc_pc,spc_pc,r0
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu30_21:
+ tst spc_p,#0x80000000
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu31_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x18]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu32_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x02
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu33_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x02
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu34_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu35_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu36_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu37_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ orr r0,r0,#0xff00
+ and spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu38_21:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ and r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu39_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3A_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ add r0,r1,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ stmfd sp!,{r0}
+ ldrb r1,[spc_pc]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldmfd sp!,{r0}
+ mov r0,r0,lsr #8
+ ldrb r1,[spc_pc],#1
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3B_21:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3C_21:
+ and r0,spc_ya,#0xff
+ mov r0,r0,lsl #1
+ tst spc_p,#flag_c
+ orrne r0,r0,#1
+ tst r0,#0x100
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3D_21:
+ add spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3E_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu3F_21:
+ ldrb r2,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r2,r2,r14,lsl #8
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ add spc_pc,spc_ram,r2
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu40_21:
+ orr spc_p,spc_p,#flag_d
+ add r0,spc_ram,#0x100
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ str r0,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu41_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x16]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu42_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x04
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu43_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x04
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu44_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu45_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu46_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu47_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu48_21:
+ ldrb r0,[spc_pc],#1
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu49_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4A_21:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ biceq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4B_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4C_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4D_21:
+ add r1,spc_ram,spc_s
+ strb spc_x,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4E_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r2,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r2,lsl #24
+ bic r0,r0,spc_ya
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu4F_21:
+ ldrb r2,[spc_pc],#1
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ add spc_pc,spc_ram,r2
+ add spc_pc,spc_pc,#0xff00
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu50_21:
+ tst spc_p,#0x00000040
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu51_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x14]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu52_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x04
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu53_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x04
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu54_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu55_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu56_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu57_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ eor spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu58_21:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ eor r0,r0,r1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu59_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r0,r0,r3
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5A_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ subs r0,spc_ya,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #16
+ tst r0,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5B_21:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5C_21:
+ and r0,spc_ya,#0xff
+ tst r0,#0x01
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ mov r0,r0,lsr #1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5D_21:
+ and spc_x,spc_ya,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5E_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu5F_21:
+ ldrb r0, [spc_pc], #1
+ ldrb r14, [spc_pc], #1
+ add spc_pc, r0, spc_ram
+ add spc_pc, spc_pc, r14, lsl #8
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu60_21:
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu61_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x12]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu62_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x08
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu63_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x08
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu64_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu65_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu66_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu67_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu68_21:
+ ldrb r0,[spc_pc],#1
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu69_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_x,spc_x,r0,lsl #24
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_x,lsr #24
+ subs r14,r0,r1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6A_21:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ bicne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6B_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6C_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6D_21:
+ mov r0,spc_ya,lsr #8
+ add r1,spc_ram,spc_s
+ strb r0,[r1,#0x100]
+ sub spc_s,spc_s,#1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6E_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ sub r0,r0,#1
+ tst r0,r0
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r2,[spc_pc],#1
+ addne spc_pc,spc_pc,r2
+ subne cycles,cycles,#42
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu6F_21:
+ add r1,spc_ram,spc_s
+ ldrb r0,[r1,#(0xff + 2)]
+ ldrb r1,[r1,#(0x100 + 2)]
+ add spc_s,spc_s,#2
+ orr r0,r0,r1,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu70_21:
+ tst spc_p,#0x00000040
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu71_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x10]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu72_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x08
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu73_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x08
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu74_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu75_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu76_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu77_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r14,spc_ya,#0xff
+ subs r14,r14,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu78_21:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ subs r14,r0,r1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu79_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_x,spc_x,r0,lsl #24
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_x,lsr #24
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7A_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ add r0,spc_ya,r1
+ movs r2,r0,lsr #16
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ bic r2,r0,#0x00ff0000
+ eor r3,r1,r2
+ eor r14,spc_ya,r1
+ mvn r14,r14
+ and r14,r14,r3
+ tst r14,#0x8000
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7B_21:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7C_21:
+ and r0,spc_ya,#0xff
+ tst spc_p,#flag_c
+ orrne r0,r0,#0x100
+ movs r0,r0,lsr #1
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7D_21:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,spc_x
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7E_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu7F_21:
+ add spc_p,spc_ram,spc_s
+ ldrb spc_p,[spc_p,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and r0,spc_p,#(flag_z|flag_n)
+ eor r0,r0,#flag_z
+ orr spc_p,spc_p,r0,lsl #24
+ tst spc_p,#flag_d
+ addne r0,spc_ram,#0x100
+ moveq r0,spc_ram
+ str r0,[context,#iapu_directpage]
+ add r1,spc_ram,spc_s
+ ldrb r0,[r1,#(0xff + 2)]
+ ldrb r1,[r1,#(0x100 + 2)]
+ add spc_s,spc_s,#2
+ orr r0,r0,r1,lsl #8
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu80_21:
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu81_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xe]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu82_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x10
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu83_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x10
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu84_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu85_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu86_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu87_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu88_21:
+ ldrb r0,[spc_pc],#1
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu89_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r2,r0,r3
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r3
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r3
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8A_21:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ eorne spc_p,spc_p,#flag_c
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8B_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8C_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8D_21:
+ ldrb r0,[spc_pc],#1
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8E_21:
+ add spc_p,spc_ram,spc_s
+ ldrb spc_p,[spc_p,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and r0,spc_p,#(flag_z|flag_n)
+ eor r0,r0,#flag_z
+ orr spc_p,spc_p,r0,lsl #24
+ tst spc_p,#flag_d
+ addne r0,spc_ram,#0x100
+ moveq r0,spc_ram
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ str r0,[context,#iapu_directpage]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu8F_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu90_21:
+ tst spc_p,#0x00000001
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu91_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xc]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu92_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x10
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu93_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x10
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu94_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu95_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu96_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu97_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ eor r2,spc_ya,r0
+ movs r14, spc_p, lsr #1
+ adc spc_ya, spc_ya, r0
+ movs r14,spc_ya,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r0
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,spc_ya
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu98_21:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ eor r2,r0,r1
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r1
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r1
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu99_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ eor r2,r0,r3
+ movs r14, spc_p, lsr #1
+ adc r0, r0, r3
+ movs r14,r0,lsr #8
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ eor r14,r0,r3
+ bic r14,r14,r2
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r2,r0
+ tst r14,#0x10
+ orrne spc_p,spc_p,#flag_h
+ biceq spc_p,spc_p,#flag_h
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9A_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc],#1
+ add r0,r0,#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r1,r3,r0,lsl #8
+ subs r0,spc_ya,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ mov r2,r0,lsl #16
+ mov r2,r2,lsr #16
+ eor r3,spc_ya,r2
+ eor r14,spc_ya,r1
+ and r14,r14,r3
+ tst r14,#0x8000
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r1
+ tst r14,#0x10
+ bicne spc_p,spc_p,#flag_h
+ orreq spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9B_21:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9C_21:
+ and r0,spc_ya,#0xff
+ sub r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9D_21:
+ mov spc_x,spc_s
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9E_21:
+ tst spc_x,spc_x @ div by 0?
+ orreq spc_ya,spc_ya,#0xff00
+ orreq spc_ya,spc_ya,#0x00ff
+ orreq spc_p,spc_p,#flag_o
+ beq 1002f
+ bic spc_p,spc_p,#flag_o
+@ Divide spc_ya by spc_x
+ mov r3,#0
+ mov r1,spc_x
+
+@ Shift up divisor till it's just less than numerator
+cmp spc_ya,r1,lsl #8
+movge r1,r1,lsl #8
+cmp spc_ya,r1,lsl #4
+movge r1,r1,lsl #4
+cmp spc_ya,r1,lsl #2
+movge r1,r1,lsl #2
+cmp spc_ya,r1,lsl #1
+movge r1,r1,lsl #1
+1001:
+ cmp spc_ya,r1
+ adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
+ subcs spc_ya,spc_ya,r1
+ teq r1,spc_x
+ movne r1,r1,lsr #1
+ bne 1001b
+
+ and spc_ya,spc_ya,#0xff
+ and r3,r3,#0xff
+ orr spc_ya,r3,spc_ya,lsl #8
+1002:
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#252
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+Apu9F_21:
+ and r0,spc_ya,#0xff
+ mov r1,r0,lsl #28
+ orr r0,r1,r0,lsl #20
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0,lsr #24
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA0_21:
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_p,spc_p,#flag_i
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA1_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0xa]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA2_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x20
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA3_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x20
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA4_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA5_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA6_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA7_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA8_21:
+ ldrb r0,[spc_pc],#1
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuA9_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r3
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r3
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAA_21:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r0,r0,lsr r1
+ tst r0,#1
+ orrne spc_p,spc_p,#flag_c
+ biceq spc_p,spc_p,#flag_c
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAB_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAC_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r3, r0
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1, r3
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAD_21:
+ ldrb r0,[spc_pc],#1
+ mov r1,spc_ya,lsr #8
+ subs r14,r1,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAE_21:
+ add r0,spc_ram,spc_s
+ ldrb r0,[r0,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and spc_ya,spc_ya,#0xff00
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuAF_21:
+ mov r0,spc_ya
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ add spc_x,spc_x,#1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ and spc_x,spc_x,#0xff
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB0_21:
+ tst spc_p,#0x00000001
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB1_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x8]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB2_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x20
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB3_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x20
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB4_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB5_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB6_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB7_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and r1,spc_ya,#0xff00
+ and spc_ya,spc_ya,#0xff
+ movs r14,spc_p,lsr #1
+ sbcs r2,spc_ya,r0
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,spc_ya,r2
+ eor r3,spc_ya,r0
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov spc_ya,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r1
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB8_21:
+ ldrb r0,[spc_pc,#1]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#2
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r1
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r1
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc,#-1]
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuB9_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov r3, r0
+ mov r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ movs r14,spc_p,lsr #1
+ sbcs r2,r0,r3
+ orrge spc_p,spc_p,#flag_c
+ biclt spc_p,spc_p,#flag_c
+ eor r14,r0,r2
+ eor r3,r0,r3
+ and r14,r14,r3
+ tst r14,#0x80
+ orrne spc_p,spc_p,#flag_o
+ biceq spc_p,spc_p,#flag_o
+ eor r14,r3,r2
+ tst r14,#0x10
+ orreq spc_p,spc_p,#flag_h
+ bicne spc_p,spc_p,#flag_h
+ mov r0,r2
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBA_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1, [spc_pc],#1
+ mov spc_ya, r0
+ add r0, r1, #1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBB_21:
+ ldrb r0,[spc_pc]
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ ldrb r1,[spc_pc],#1
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBC_21:
+ and r0,spc_ya,#0xff
+ add r0,r0,#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and r0,r0,#0xff
+ mov spc_ya,spc_ya,lsr #8
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,r0,spc_ya,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBD_21:
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ mov spc_s,spc_x
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBE_21:
+ and r0,spc_ya,#0xff
+ and r1,spc_ya,#0x0f
+ cmp r1,#9
+ subhi r0,r0,#6
+ tstls spc_p,#flag_h
+ subeq r0,r0,#6
+ cmp r0,#0x9f
+ bhi 2001f
+ tst spc_p,#flag_c
+ beq 2001f
+ orr spc_p,spc_p,#flag_c
+ b 2002f
+2001:
+ sub r0,r0,#0x60
+ bic spc_p,spc_p,#flag_c
+2002:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuBF_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ add spc_x,spc_x,#1
+ and spc_x,spc_x,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC0_21:
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#flag_i
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC1_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x6]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC2_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x40
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC3_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x40
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC4_21:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC5_21:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC6_21:
+ mov r0,spc_ya
+ mov r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC7_21:
+ ldrb r1,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r1,r1,spc_x
+ and r1,r1,#0xff
+ ldrb r1,[r14,r1]!
+ ldrb r14,[r14,#1]
+ orr r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#147
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC8_21:
+ ldrb r0,[spc_pc],#1
+ subs r14,spc_x,r0
+ orrcs spc_p,spc_p,#flag_c
+ biccc spc_p,spc_p,#flag_c
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r14,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuC9_21:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_x
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCA_21:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r2,#1
+ mov r2,r2,lsl r1
+ tst spc_p,#flag_c
+ orrne r0,r0,r2
+ biceq r0,r0,r2
+ bic r1, r3, #0xe000
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCB_21:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCC_21:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya,lsr #8
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCD_21:
+ ldrb spc_x,[spc_pc],#1
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCE_21:
+ add spc_x,spc_ram,spc_s
+ ldrb spc_x,[spc_x,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuCF_21:
+ mov r0,spc_ya,lsr #8
+ and spc_ya,spc_ya,#0xff
+ mul spc_ya,r0,spc_ya
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #16
+ tst spc_ya,#0xff
+ orrne spc_p,spc_p,#0x01000000
+ subs cycles,cycles,#189
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD0_21:
+ tst spc_p,#0xFF000000
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD1_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x4]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD2_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x40
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD3_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x40
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD4_21:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD5_21:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,spc_x
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD6_21:
+ ldrb r1,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r1,r1,spc_ya, lsr #8
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD7_21:
+ ldrb r1,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r1,[r14,r1]!
+ ldrb r14,[r14,#1]
+ add r1,r1,spc_ya,lsr #8
+ add r1,r1,r14,lsl #8
+ mov r0,spc_ya
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#147
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD8_21:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuD9_21:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_x
+ add r1,r1,spc_ya,lsr #8
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDA_21:
+ ldrb r1,[spc_pc]
+ mov r0,spc_ya
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+2:
+ strb r0, [r2, r1]
+1:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ add r1,r1,#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDB_21:
+ ldrb r1,[spc_pc],#1
+ mov r0,spc_ya,lsr #8
+ add r1,r1,spc_x
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDC_21:
+ mov r0,spc_ya,lsr #8
+ sub r0,r0,#1
+ and r0,r0,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDD_21:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,spc_ya,lsr #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDE_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and r1,spc_ya,#0xff
+ cmp r0,r1
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ addne spc_pc,spc_pc,r0
+ subne cycles,cycles,#42
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuDF_21:
+ and r0,spc_ya,#0xff
+ and r1,spc_ya,#0x0f
+ cmp r1,#9
+ addhi r0,r0,#6
+ bls 3001f
+ cmphi r0,#0xf0
+ orrhi spc_p,spc_p,#flag_c
+ b 3002f
+3001:
+ tst spc_p,#flag_h
+ addne r0,r0,#6
+ beq 3002f
+ cmp r0,#0xf0
+ orrhi spc_p,spc_p,#flag_c
+3002:
+ tst spc_p,#flag_c
+ addne r0,r0,#0x60
+ bne 3003f
+ cmp r0,#0x9f
+ addhi r0,r0,#0x60
+ orrhi spc_p,spc_p,#flag_c
+ bicls spc_p,spc_p,#flag_c
+3003:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE0_21:
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ bic spc_p,spc_p,#(flag_o|flag_h)
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE1_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x2]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE2_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ orr r0,r0,#0x80
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE3_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ subne cycles,cycles,#42
+ addne spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE4_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE5_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE6_21:
+ mov r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE7_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ add r0,r0,spc_x
+ and r0,r0,#0xff
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ orr r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE8_21:
+ ldrb r0,[spc_pc],#1
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuE9_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEA_21:
+ ldrb r0,[spc_pc], #1
+ ldrb r3,[spc_pc], #1
+ add r3,r0,r3,lsl #8
+ bic r0, r3, #0xe000
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ mov r1, r3, lsr #13
+ mov r2,#1
+ mov r2,r2,lsl r1
+ eor r0,r0,r2
+ bic r1, r3, #0xe000
+ add r2, r1, #40
+ tst r2, #0x10000
+ bne 1f
+ bic r2, r1, #0x0f
+ cmp r2, #0xf0
+ strneb r0, [spc_ram, r1]
+ bne 3f
+ add lr, pc, #20
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+1:
+ bl S9xAPUSetByteFFC0
+ ldr spc_ram, [context, #iapu_ram]
+3:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEB_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEC_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuED_21:
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ eor spc_p,spc_p,#flag_c
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEE_21:
+ add r0,spc_ram,spc_s
+ ldrb r0,[r0,#(0x100 + 1)]
+ add spc_s,spc_s,#1
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuEF_21:
+ ldr r0, 5001f
+ mov r1,#0
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ str r1,[r0,#cpu_apu_executing]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+5001:
+ .long CPU
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF0_21:
+ tst spc_p,#0xFF000000
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF1_21:
+ sub r0,spc_pc,spc_ram
+ add r1,spc_ram,spc_s
+ sub spc_s,spc_s,#2
+ strb r0,[r1,#0xff]
+ mov r0,r0,lsr #8
+ strb r0,[r1,#0x100]
+ ldr r0,[context,#iapu_extraram]
+ ldrh r0,[r0,#0x0]
+ add spc_pc,spc_ram,r0
+ subs cycles,cycles,#168
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF2_21:
+ ldrb r0,[spc_pc]
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ bic r0,r0,#0x80
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF3_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ tst r0,#0x80
+ addne spc_pc,spc_pc,#1
+ ldreqsb r0,[spc_pc],#1
+ subeq cycles,cycles,#42
+ addeq spc_pc,spc_pc,r0
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF4_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF5_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_x
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF6_21:
+ ldrb r0,[spc_pc],#1
+ ldrb r14,[spc_pc],#1
+ add r0,r0,spc_ya, lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF7_21:
+ ldrb r0,[spc_pc],#1
+ ldr r14,[context,#iapu_directpage]
+ ldrb r0,[r14,r0]!
+ ldrb r14,[r14,#1]
+ add r0,r0,spc_ya,lsr #8
+ add r0,r0,r14,lsl #8
+ mov r1, r0
+ ldrb r0, [spc_ram, r1]
+ cmp r1, #0x0ff
+ bhi 1f
+ cmp r1, #0xf3
+ addeq lr, pc, #12
+ beq GetAPUDSP
+ cmp r1, #0xfd
+ movhs r2, #0
+ strhsb r2, [spc_ram, r1]
+1:
+ and spc_ya,spc_ya,#0xff00
+ orr spc_ya,spc_ya,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#126
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF8_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuF9_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_ya,lsr #8
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ mov spc_x,r0
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_x,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFA_21:
+ ldrb r0,[spc_pc],#1
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ ldrb r1,[spc_pc],#1
+ ldr r2, [context, #iapu_directpage]
+ cmp r2, spc_ram
+ bne 2f
+ cmp r1, #0xf0
+ blo 2f
+ cmp r1, #0xfe
+ bhs 1f
+ add lr, pc, #16
+ cmp r1, #0xf1
+ beq S9xSetAPUControl
+ cmp r1, #0xf3
+ beq S9xSetAPUDSP
+ b S9xAPUSetByteFFtoF0
+ ldr spc_ram, [context, #iapu_ram]
+ b 1f
+2:
+ strb r0, [r2, r1]
+1:
+ subs cycles,cycles,#105
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFB_21:
+ ldrb r0,[spc_pc],#1
+ add r0,r0,spc_x
+ mov r1, r0
+ cmp r1, #0xf3
+ addeq lr, pc, #20
+ beq GetAPUDSP
+ ldr r14, [context, #iapu_directpage]
+ cmp r1, #0xfd
+ ldrb r0, [r14, r1]
+ movhs r2, #0
+ strhsb r2, [r14, r1]
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,r0,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFC_21:
+ mov r0,spc_ya,lsr #8
+ add r0,r0,#1
+ and r0,r0,#0xff
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,r0,lsl #24
+ and spc_ya,spc_ya,#0xff
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ orr spc_ya,spc_ya,r0,lsl #8
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFD_21:
+ and spc_ya,spc_ya,#0xff
+ orr spc_ya,spc_ya,spc_ya,lsl #8
+ and spc_p,spc_p,#0xff
+ orr spc_p,spc_p,spc_ya,lsl #24
+ subs cycles,cycles,#42
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFE_21:
+ sub spc_ya,spc_ya,#0x100
+ mov spc_ya,spc_ya,lsl #16
+ mov spc_ya,spc_ya,lsr #16
+ movs r0,spc_ya,lsr #8
+ addeq spc_pc,spc_pc,#1
+ ldrnesb r0,[spc_pc],#1
+ addne spc_pc,spc_pc,r0
+ subne cycles,cycles,#42
+ subs cycles,cycles,#84
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+ApuFF_21:
+ ldr r0, 5001f
+ mov r1,#0
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ str r1,[r0,#cpu_apu_executing]
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+5001:
+ .long CPU
+ subs cycles,cycles,#63
+ ldrgeb opcode,[spc_pc],#1
+ ldrge pc,[opcodes,opcode,lsl #2]
+ b spc700End
+
+
+@ -------------------------- Jump Table 21 --------------------------
+Spc700JumpTab_21:
+ .long Apu00_21, Apu01_21, Apu02_21, Apu03_21, Apu04_21, Apu05_21, Apu06_21, Apu07_21 @ 00
+ .long Apu08_21, Apu09_21, Apu0A_21, Apu0B_21, Apu0C_21, Apu0D_21, Apu0E_21, Apu0F_21 @ 08
+ .long Apu10_21, Apu11_21, Apu12_21, Apu13_21, Apu14_21, Apu15_21, Apu16_21, Apu17_21 @ 10
+ .long Apu18_21, Apu19_21, Apu1A_21, Apu1B_21, Apu1C_21, Apu1D_21, Apu1E_21, Apu1F_21 @ 18
+ .long Apu20_21, Apu21_21, Apu22_21, Apu23_21, Apu24_21, Apu25_21, Apu26_21, Apu27_21 @ 20
+ .long Apu28_21, Apu29_21, Apu2A_21, Apu2B_21, Apu2C_21, Apu2D_21, Apu2E_21, Apu2F_21 @ 28
+ .long Apu30_21, Apu31_21, Apu32_21, Apu33_21, Apu34_21, Apu35_21, Apu36_21, Apu37_21 @ 30
+ .long Apu38_21, Apu39_21, Apu3A_21, Apu3B_21, Apu3C_21, Apu3D_21, Apu3E_21, Apu3F_21 @ 38
+ .long Apu40_21, Apu41_21, Apu42_21, Apu43_21, Apu44_21, Apu45_21, Apu46_21, Apu47_21 @ 40
+ .long Apu48_21, Apu49_21, Apu4A_21, Apu4B_21, Apu4C_21, Apu4D_21, Apu4E_21, Apu4F_21 @ 48
+ .long Apu50_21, Apu51_21, Apu52_21, Apu53_21, Apu54_21, Apu55_21, Apu56_21, Apu57_21 @ 50
+ .long Apu58_21, Apu59_21, Apu5A_21, Apu5B_21, Apu5C_21, Apu5D_21, Apu5E_21, Apu5F_21 @ 58
+ .long Apu60_21, Apu61_21, Apu62_21, Apu63_21, Apu64_21, Apu65_21, Apu66_21, Apu67_21 @ 60
+ .long Apu68_21, Apu69_21, Apu6A_21, Apu6B_21, Apu6C_21, Apu6D_21, Apu6E_21, Apu6F_21 @ 68
+ .long Apu70_21, Apu71_21, Apu72_21, Apu73_21, Apu74_21, Apu75_21, Apu76_21, Apu77_21 @ 70
+ .long Apu78_21, Apu79_21, Apu7A_21, Apu7B_21, Apu7C_21, Apu7D_21, Apu7E_21, Apu7F_21 @ 78
+ .long Apu80_21, Apu81_21, Apu82_21, Apu83_21, Apu84_21, Apu85_21, Apu86_21, Apu87_21 @ 80
+ .long Apu88_21, Apu89_21, Apu8A_21, Apu8B_21, Apu8C_21, Apu8D_21, Apu8E_21, Apu8F_21 @ 88
+ .long Apu90_21, Apu91_21, Apu92_21, Apu93_21, Apu94_21, Apu95_21, Apu96_21, Apu97_21 @ 90
+ .long Apu98_21, Apu99_21, Apu9A_21, Apu9B_21, Apu9C_21, Apu9D_21, Apu9E_21, Apu9F_21 @ 98
+ .long ApuA0_21, ApuA1_21, ApuA2_21, ApuA3_21, ApuA4_21, ApuA5_21, ApuA6_21, ApuA7_21 @ a0
+ .long ApuA8_21, ApuA9_21, ApuAA_21, ApuAB_21, ApuAC_21, ApuAD_21, ApuAE_21, ApuAF_21 @ a8
+ .long ApuB0_21, ApuB1_21, ApuB2_21, ApuB3_21, ApuB4_21, ApuB5_21, ApuB6_21, ApuB7_21 @ b0
+ .long ApuB8_21, ApuB9_21, ApuBA_21, ApuBB_21, ApuBC_21, ApuBD_21, ApuBE_21, ApuBF_21 @ b8
+ .long ApuC0_21, ApuC1_21, ApuC2_21, ApuC3_21, ApuC4_21, ApuC5_21, ApuC6_21, ApuC7_21 @ c0
+ .long ApuC8_21, ApuC9_21, ApuCA_21, ApuCB_21, ApuCC_21, ApuCD_21, ApuCE_21, ApuCF_21 @ c8
+ .long ApuD0_21, ApuD1_21, ApuD2_21, ApuD3_21, ApuD4_21, ApuD5_21, ApuD6_21, ApuD7_21 @ d0
+ .long ApuD8_21, ApuD9_21, ApuDA_21, ApuDB_21, ApuDC_21, ApuDD_21, ApuDE_21, ApuDF_21 @ d8
+ .long ApuE0_21, ApuE1_21, ApuE2_21, ApuE3_21, ApuE4_21, ApuE5_21, ApuE6_21, ApuE7_21 @ e0
+ .long ApuE8_21, ApuE9_21, ApuEA_21, ApuEB_21, ApuEC_21, ApuED_21, ApuEE_21, ApuEF_21 @ e8
+ .long ApuF0_21, ApuF1_21, ApuF2_21, ApuF3_21, ApuF4_21, ApuF5_21, ApuF6_21, ApuF7_21 @ f0
+ .long ApuF8_21, ApuF9_21, ApuFA_21, ApuFB_21, ApuFC_21, ApuFD_21, ApuFE_21, ApuFF_21 @ f8