diff options
| -rw-r--r-- | src/ARM.h | 8 | ||||
| -rw-r--r-- | src/ARMInterpreter_ALU.cpp | 16 | 
2 files changed, 16 insertions, 8 deletions
@@ -241,4 +241,12 @@ public:      u32 debug;  }; +namespace ARMInterpreter +{ + +void A_UNK(ARM* cpu); +void T_UNK(ARM* cpu); + +} +  #endif // ARM_H diff --git a/src/ARMInterpreter_ALU.cpp b/src/ARMInterpreter_ALU.cpp index 822bf49..340adf4 100644 --- a/src/ARMInterpreter_ALU.cpp +++ b/src/ARMInterpreter_ALU.cpp @@ -985,7 +985,7 @@ void A_CLZ(ARM* cpu)  void A_QADD(ARM* cpu)  { -    // TODO: ARM9 only +    if (cpu->Num != 0) return A_UNK(cpu);      u32 rm = cpu->R[cpu->CurInstr & 0xF];      u32 rn = cpu->R[(cpu->CurInstr >> 16) & 0xF]; @@ -997,12 +997,12 @@ void A_QADD(ARM* cpu)          cpu->CPSR |= 0x08000000;      } -    cpu->R[(cpu->CurInstr >> 16) & 0xF] = res; +    cpu->R[(cpu->CurInstr >> 12) & 0xF] = res;  }  void A_QSUB(ARM* cpu)  { -    // TODO: ARM9 only +    if (cpu->Num != 0) return A_UNK(cpu);      u32 rm = cpu->R[cpu->CurInstr & 0xF];      u32 rn = cpu->R[(cpu->CurInstr >> 16) & 0xF]; @@ -1014,12 +1014,12 @@ void A_QSUB(ARM* cpu)          cpu->CPSR |= 0x08000000;      } -    cpu->R[(cpu->CurInstr >> 16) & 0xF] = res; +    cpu->R[(cpu->CurInstr >> 12) & 0xF] = res;  }  void A_QDADD(ARM* cpu)  { -    // TODO: ARM9 only +    if (cpu->Num != 0) return A_UNK(cpu);      u32 rm = cpu->R[cpu->CurInstr & 0xF];      u32 rn = cpu->R[(cpu->CurInstr >> 16) & 0xF]; @@ -1039,12 +1039,12 @@ void A_QDADD(ARM* cpu)          cpu->CPSR |= 0x08000000;      } -    cpu->R[(cpu->CurInstr >> 16) & 0xF] = res; +    cpu->R[(cpu->CurInstr >> 12) & 0xF] = res;  }  void A_QDSUB(ARM* cpu)  { -    // TODO: ARM9 only +    if (cpu->Num != 0) return A_UNK(cpu);      u32 rm = cpu->R[cpu->CurInstr & 0xF];      u32 rn = cpu->R[(cpu->CurInstr >> 16) & 0xF]; @@ -1064,7 +1064,7 @@ void A_QDSUB(ARM* cpu)          cpu->CPSR |= 0x08000000;      } -    cpu->R[(cpu->CurInstr >> 16) & 0xF] = res; +    cpu->R[(cpu->CurInstr >> 12) & 0xF] = res;  }  |