\r
// opcodes often used by games\r
static const unsigned short hot_opcodes[] = {\r
- 0x6701, // beq $3\r
- 0x6601, // bne $3\r
+ 0x6702, // beq $3\r
+ 0x6602, // bne $3\r
0x51c8, // dbra Dn, $2\r
0x4a38, // tst.b $0.w\r
0xd040, // add.w Dn, Dn\r
0x0240, // andi.w #$0, D0\r
0x2038, // move.l $0.w, D0\r
0xb0b8, // cmp.l $0.w, D0\r
- 0x6001, // bra $3\r
+ 0x6002, // bra $3\r
0x30c0, // move.w D0, (A0)+\r
0x3028, // move.w ($0,A0), D0\r
0x0c40, // cmpi.w #$0, D0\r
0xb038, // cmp.b $0.w, D0\r
0x3039, // move.w $0.l, D0\r
0x4840, // swap D0\r
- 0x6101, // bsr $3\r
+ 0x6102, // bsr $3\r
0x6100, // bsr $2\r
0x5e40, // addq.w #7, D0\r
0x1039, // move.b $0.l, D0\r
0xc040, // and.w D0, D0\r
0x3180, // move.w D0, (A0,D0.w)\r
0x1198, // move.b (A0)+, (A0,D0.w)\r
- 0x6501, // bcs $3\r
+ 0x6502, // bcs $3\r
0x6500, // bcs $2\r
- 0x6401, // bcc $3\r
- 0x6a01, // bpl $3\r
+ 0x6402, // bcc $3\r
+ 0x6a02, // bpl $3\r
0x41f0, // lea (A0,D0.w), A0\r
0x4a28, // tst.b ($0,A0)\r
0x0828, // btst #$0, ($0,A0)\r
ot(" bx lr\n");\r
ltorg();\r
#else\r
- ot(";@ do nothing\n");\r
+ ot(";@ fix final jumptable entries\n");\r
+ ot(" ldr r12,=CycloneJumpTab\n");\r
+ ot(" add r12,r12,#0x10000*4\n");\r
+ ot(" ldr r0,[r12,#-3*4]\n");\r
+ ot(" str r0,[r12,#-2*4]\n");\r
+ ot(" str r0,[r12,#-1*4]\n");\r
ot(" bx lr\n");\r
#endif\r
ot("\n");\r
ot(" ldr r6,[r7,#0x54]\n");\r
ot(" ldrh r8,[r4],#2 ;@ Fetch next opcode\n");\r
ot(" subs r5,r5,#44 ;@ Subtract cycles\n");\r
- ot(" ldrge pc,[r6,r8,asl #2] ;@ Jump to opcode handler\n");\r
+ ot(" ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler\n");\r
ot(" b CycloneEnd\n");\r
ot("\n");\r
\r
ot(" ldr r6,[r7,#0x54]\n");\r
ot(" ldrh r8,[r4],#2 ;@ Fetch next opcode\n");\r
ot(" subs r5,r5,#50 ;@ Subtract cycles\n");\r
- ot(" ldrge pc,[r6,r8,asl #2] ;@ Jump to opcode handler\n");\r
+ ot(" ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler\n");\r
ot(" b CycloneEnd\n");\r
ot("\n");\r
#endif\r
ot(" cmp r5,#0\n");\r
ot(" orr r0,r0,#2 ;@ go to trace mode\n");\r
ot(" str r0,[r7,#0x58]\n");\r
- ot(" blt CycloneEnd\n"); // should take care of situation where we come here when already tracing\r
+ ot(" ble CycloneEnd\n"); // should take care of situation where we come here when already tracing\r
ot(";@ CheckInterrupt:\n");\r
ot(" movs r0,r1,lsr #24 ;@ Get IRQ level\n");\r
ot(" beq CycloneDoTrace\n");\r
ot(" bl Exception\n");\r
ot(" ldrh r8,[r4],#2 ;@ Fetch next opcode\n");\r
ot(" subs r5,r5,#34 ;@ Subtract cycles\n");\r
- ot(" ldrge pc,[r6,r8,asl #2] ;@ Jump to opcode handler\n");\r
+ ot(" ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler\n");\r
ot(" b CycloneEnd\n");\r
ot("\n");\r
ot("TraceDisabled%s\n", ms?"":":");\r
ot(" ldrh r8,[r4],#2 ;@ Fetch next opcode\n");\r
ot(" cmp r5,#0\n");\r
- ot(" ldrge pc,[r6,r8,asl #2] ;@ Jump to opcode handler\n");\r
+ ot(" ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler\n");\r
ot(" b CycloneEnd\n");\r
ot("\n");\r
#endif\r
ot(" %s CycloneDoTrace\n",globl);\r
ot(" %s CycloneJumpTab\n",globl);\r
ot(" %s Op____\n",globl);\r
- ot(" %s Op6001\n",globl);\r
- ot(" %s Op6601\n",globl);\r
- ot(" %s Op6701\n",globl);\r
+ ot(" %s Op6002\n",globl);\r
+ ot(" %s Op6602\n",globl);\r
+ ot(" %s Op6702\n",globl);\r
#endif\r
ot("\n");\r
ot(ms?"CycloneVer dcd 0x":"CycloneVer: .long 0x");\r