diff --git a/Source/Project64-core/N64System/Recompiler/Arm/ArmOpCode.h b/Source/Project64-core/N64System/Recompiler/Arm/ArmOpCode.h
index 13e216a3c..8b809d196 100644
--- a/Source/Project64-core/N64System/Recompiler/Arm/ArmOpCode.h
+++ b/Source/Project64-core/N64System/Recompiler/Arm/ArmOpCode.h
@@ -47,13 +47,6 @@ union ArmThumbOpcode
unsigned opcode : 7;
} Reg;
- struct
- {
- unsigned imm8 : 8;
- unsigned rdn : 3;
- unsigned opcode : 5;
- } Imm8;
-
struct
{
unsigned rd : 3;
@@ -70,6 +63,13 @@ union ArmThumbOpcode
unsigned opcode : 5;
} Imm5;
+ struct
+ {
+ unsigned imm8 : 8;
+ unsigned rdn : 3;
+ unsigned opcode : 5;
+ } Imm8;
+
struct
{
unsigned rn : 3;
@@ -122,6 +122,61 @@ union Arm32Opcode
unsigned reserved : 1;
} RnRdImm12;
+ struct
+ {
+ unsigned Rn : 4;
+ unsigned op3 : 2;
+ unsigned D : 1;
+ unsigned U : 1;
+ unsigned op2 : 8;
+
+ unsigned imm8 : 8;
+ unsigned op1 : 4;
+ unsigned vd : 4;
+ } RnVdImm8;
+
+ struct
+ {
+ unsigned vn : 4;
+ unsigned op1 : 2;
+ unsigned d : 1;
+ unsigned op2 : 9;
+
+ unsigned vm : 4;
+ unsigned op3 : 1;
+ unsigned m : 1;
+ unsigned op4 : 1;
+ unsigned n : 1;
+ unsigned sz : 1;
+ unsigned op5 : 3;
+ unsigned vd : 4;
+ } VnVmVd;
+
+ struct
+ {
+ unsigned rn : 4;
+ unsigned opcode : 12;
+
+ unsigned rm : 4;
+ unsigned imm : 2;
+ unsigned Opcode2 : 6;
+ unsigned rt : 4;
+ } imm2;
+
+ struct
+ {
+ unsigned rn : 4;
+ unsigned s : 1;
+ unsigned opcode : 11;
+
+ unsigned rm : 4;
+ unsigned type : 2;
+ unsigned imm2 : 2;
+ unsigned rd : 4;
+ unsigned imm3 : 3;
+ unsigned opcode2 : 1;
+ } imm5;
+
struct
{
unsigned rn : 4;
@@ -130,6 +185,20 @@ union Arm32Opcode
unsigned rt : 4;
} imm12;
+ struct
+ {
+ unsigned rn : 4;
+ unsigned s : 1;
+ unsigned opcode : 5;
+ unsigned i : 1;
+ unsigned opcode2 : 5;
+
+ unsigned imm8 : 8;
+ unsigned rd : 4;
+ unsigned imm3 : 3;
+ unsigned opcode3 : 1;
+ } imm8_3_1;
+
struct
{
unsigned imm4 : 4;
@@ -164,6 +233,77 @@ union Arm32Opcode
unsigned rn : 4;
unsigned opcode : 12;
} uint32;
+
+ struct
+ {
+ unsigned rm : 4;
+ unsigned opcode3 : 8;
+ unsigned rt : 4;
+ unsigned rn : 4;
+ unsigned opcode2 : 1;
+ unsigned w : 1;
+ unsigned opcode1 : 1;
+ unsigned u : 1;
+ unsigned p : 1;
+ unsigned opcode : 3;
+ unsigned cond : 4;
+ } reg_cond;
+
+ struct
+ {
+ unsigned rm : 4;
+ unsigned opcode3 : 1;
+ unsigned type : 2;
+ unsigned imm5 : 5;
+ unsigned rt : 4;
+ unsigned rn : 4;
+ unsigned opcode2 : 1;
+ unsigned w : 1;
+ unsigned opcode1 : 1;
+ unsigned u : 1;
+ unsigned p : 1;
+ unsigned opcode : 3;
+ unsigned cond : 4;
+ } reg_cond_imm5;
+
+ struct
+ {
+ unsigned imm12 : 12;
+ unsigned rt : 4;
+ unsigned rn : 4;
+ unsigned opcode2 : 1;
+ unsigned w : 1;
+ unsigned opcode1 : 1;
+ unsigned u : 1;
+ unsigned p : 1;
+ unsigned opcode : 3;
+ unsigned cond : 4;
+ } reg_cond_imm12;
+
+ struct
+ {
+ unsigned opcode : 16;
+
+ unsigned opcode2 : 12;
+ unsigned rt : 4;
+ } fpscr;
+
+ struct
+ {
+ unsigned opcode : 16;
+
+ unsigned rm : 4;
+ unsigned rotate : 2;
+ unsigned opcode2 : 2;
+ unsigned rd : 4;
+ unsigned opcode3 : 4;
+ } rotate;
+
+ struct
+ {
+ unsigned opcode : 16;
+ unsigned register_list : 16;
+ } PushPop;
};
#pragma warning(pop)
diff --git a/Source/Project64-core/Project64-core.vcxproj b/Source/Project64-core/Project64-core.vcxproj
index 84945c12a..11f65bee5 100644
--- a/Source/Project64-core/Project64-core.vcxproj
+++ b/Source/Project64-core/Project64-core.vcxproj
@@ -180,7 +180,6 @@
-
diff --git a/Source/Project64-core/Project64-core.vcxproj.filters b/Source/Project64-core/Project64-core.vcxproj.filters
index f711c73e9..33558e80a 100644
--- a/Source/Project64-core/Project64-core.vcxproj.filters
+++ b/Source/Project64-core/Project64-core.vcxproj.filters
@@ -539,9 +539,6 @@
Header Files\N64 System\Recompiler
-
- Header Files\N64 System\Recompiler
-
Header Files\N64 System\Mips
@@ -650,5 +647,11 @@
Header Files\N64 System\Recompiler\Arm
+
+ Header Files
+
+
+ Header Files
+
\ No newline at end of file