@@ -995,6 +995,7 @@ u32 savePatchUniversal (const tNDSHeader* ndsHeader, u32* cardEngineLocation, mo
995
995
996
996
if (!EepromWriteJump ) {
997
997
// alternate v1 order
998
+ thumbType = 1 ;
998
999
EepromProgJump = getOffsetThumb ((u16 * )JumpTableFunc , ndsHeader -> arm7binarySize ,
999
1000
a7JumpTableSignatureUniversalThumb_pt2 , 2 , -1 );
1000
1001
@@ -1041,59 +1042,93 @@ u32 savePatchUniversal (const tNDSHeader* ndsHeader, u32* cardEngineLocation, mo
1041
1042
u32 srcAddr ;
1042
1043
1043
1044
if (usesThumb ) {
1045
+ if (thumbType == 1 ) {
1046
+ u32 * eepromRead = (u32 * ) (EepromReadJump + 0xA );
1047
+ dbg_printf ("Eeprom read:\t" );
1048
+ dbg_hexa ((u32 )eepromRead );
1049
+ dbg_printf ("\n" );
1050
+ * eepromRead = arm7FunctionThumb [5 ];
1051
+
1052
+ u32 * eepromPageWrite = (u32 * ) (EepromWriteJump + 0xA );
1053
+ dbg_printf ("Eeprom page write:\t" );
1054
+ dbg_hexa ((u32 )eepromPageWrite );
1055
+ dbg_printf ("\n" );
1056
+ * eepromPageWrite = arm7FunctionThumb [3 ];
1057
+
1058
+ u32 * eepromPageProg = (u32 * ) (EepromProgJump + 0xA );
1059
+ dbg_printf ("Eeprom page prog:\t" );
1060
+ dbg_hexa ((u32 )eepromPageProg );
1061
+ dbg_printf ("\n" );
1062
+ * eepromPageProg = arm7FunctionThumb [4 ];
1063
+
1064
+ u32 * eepromPageVerify = (u32 * ) (EepromVerifyJump + 0xA );
1065
+ dbg_printf ("Eeprom verify:\t" );
1066
+ dbg_hexa ((u32 )eepromPageVerify );
1067
+ dbg_printf ("\n" );
1068
+ * eepromPageVerify = arm7FunctionThumb [2 ];
1069
+
1070
+ u32 * eepromPageErase = (u32 * ) (EepromEraseJump + 0x8 );
1071
+ dbg_printf ("Eeprom page erase:\t" );
1072
+ dbg_hexa ((u32 )eepromPageErase );
1073
+ dbg_printf ("\n" );
1074
+ * eepromPageErase = arm7FunctionThumb [1 ];
1075
+
1076
+ } else {
1077
+ u16 instrs [2 ];
1078
+
1079
+ u16 * eepromRead = (u16 * ) (EepromReadJump + 0x6 );
1080
+ dbg_printf ("Eeprom read:\t" );
1081
+ dbg_hexa ((u32 )eepromRead );
1082
+ dbg_printf ("\n" );
1083
+ srcAddr = EepromReadJump + 0x6 - vAddrOfRelocSrc + 0x37F8000 ;
1084
+ generateA7InstrThumb (instrs , srcAddr ,
1085
+ arm7FunctionThumb [5 ]);
1086
+ eepromRead [0 ]= instrs [0 ];
1087
+ eepromRead [1 ]= instrs [1 ];
1088
+
1089
+ u16 * eepromPageWrite = (u16 * ) (EepromWriteJump + 0x6 );
1090
+ dbg_printf ("Eeprom page write:\t" );
1091
+ dbg_hexa ((u32 )eepromPageWrite );
1092
+ dbg_printf ("\n" );
1093
+ srcAddr = EepromWriteJump + 0x6 - vAddrOfRelocSrc + 0x37F8000 ;
1094
+ generateA7InstrThumb (instrs , srcAddr ,
1095
+ arm7FunctionThumb [3 ]);
1096
+ eepromPageWrite [0 ]= instrs [0 ];
1097
+ eepromPageWrite [1 ]= instrs [1 ];
1098
+
1099
+ u16 * eepromPageProg = (u16 * ) (EepromProgJump + 0x6 );
1100
+ dbg_printf ("Eeprom page prog:\t" );
1101
+ dbg_hexa ((u32 )eepromPageProg );
1102
+ dbg_printf ("\n" );
1103
+ srcAddr = EepromProgJump + 0x6 - vAddrOfRelocSrc + 0x37F8000 ;
1104
+ generateA7InstrThumb (instrs , srcAddr ,
1105
+ arm7FunctionThumb [4 ]);
1106
+ eepromPageProg [0 ]= instrs [0 ];
1107
+ eepromPageProg [1 ]= instrs [1 ];
1108
+
1109
+ u16 * eepromPageVerify = (u16 * ) (EepromVerifyJump + 0x6 );
1110
+ dbg_printf ("Eeprom verify:\t" );
1111
+ dbg_hexa ((u32 )eepromPageVerify );
1112
+ dbg_printf ("\n" );
1113
+ srcAddr = EepromVerifyJump + 0x6 - vAddrOfRelocSrc + 0x37F8000 ;
1114
+ generateA7InstrThumb (instrs , srcAddr ,
1115
+ arm7FunctionThumb [2 ]);
1116
+ eepromPageVerify [0 ]= instrs [0 ];
1117
+ eepromPageVerify [1 ]= instrs [1 ];
1118
+
1119
+
1120
+ u16 * eepromPageErase = (u16 * ) (EepromEraseJump + 0x4 );
1121
+ dbg_printf ("Eeprom page erase:\t" );
1122
+ dbg_hexa ((u32 )eepromPageErase );
1123
+ dbg_printf ("\n" );
1124
+ srcAddr = EepromEraseJump + 0x4 - vAddrOfRelocSrc + 0x37F8000 ;
1125
+ generateA7InstrThumb (instrs , srcAddr ,
1126
+ arm7FunctionThumb [1 ]);
1127
+ eepromPageErase [0 ]= instrs [0 ];
1128
+ eepromPageErase [1 ]= instrs [1 ];
1129
+
1130
+ }
1044
1131
1045
- u16 instrs [2 ];
1046
-
1047
- u16 * eepromRead = (u16 * ) (EepromReadJump + 0x6 );
1048
- dbg_printf ("Eeprom read:\t" );
1049
- dbg_hexa ((u32 )eepromRead );
1050
- dbg_printf ("\n" );
1051
- srcAddr = EepromReadJump + 0x6 - vAddrOfRelocSrc + 0x37F8000 ;
1052
- generateA7InstrThumb (instrs , srcAddr ,
1053
- arm7FunctionThumb [5 ]);
1054
- eepromRead [0 ]= instrs [0 ];
1055
- eepromRead [1 ]= instrs [1 ];
1056
-
1057
- u16 * eepromPageWrite = (u16 * ) (EepromWriteJump + 0x6 );
1058
- dbg_printf ("Eeprom page write:\t" );
1059
- dbg_hexa ((u32 )eepromPageWrite );
1060
- dbg_printf ("\n" );
1061
- srcAddr = EepromWriteJump + 0x6 - vAddrOfRelocSrc + 0x37F8000 ;
1062
- generateA7InstrThumb (instrs , srcAddr ,
1063
- arm7FunctionThumb [3 ]);
1064
- eepromPageWrite [0 ]= instrs [0 ];
1065
- eepromPageWrite [1 ]= instrs [1 ];
1066
-
1067
- u16 * eepromPageProg = (u16 * ) (EepromProgJump + 0x6 );
1068
- dbg_printf ("Eeprom page prog:\t" );
1069
- dbg_hexa ((u32 )eepromPageProg );
1070
- dbg_printf ("\n" );
1071
- srcAddr = EepromProgJump + 0x6 - vAddrOfRelocSrc + 0x37F8000 ;
1072
- generateA7InstrThumb (instrs , srcAddr ,
1073
- arm7FunctionThumb [4 ]);
1074
- eepromPageProg [0 ]= instrs [0 ];
1075
- eepromPageProg [1 ]= instrs [1 ];
1076
-
1077
- u16 * eepromPageVerify = (u16 * ) (EepromVerifyJump + 0x6 );
1078
- dbg_printf ("Eeprom verify:\t" );
1079
- dbg_hexa ((u32 )eepromPageVerify );
1080
- dbg_printf ("\n" );
1081
- srcAddr = EepromVerifyJump + 0x6 - vAddrOfRelocSrc + 0x37F8000 ;
1082
- generateA7InstrThumb (instrs , srcAddr ,
1083
- arm7FunctionThumb [2 ]);
1084
- eepromPageVerify [0 ]= instrs [0 ];
1085
- eepromPageVerify [1 ]= instrs [1 ];
1086
-
1087
-
1088
- u16 * eepromPageErase = (u16 * ) (EepromEraseJump + 0x4 );
1089
- dbg_printf ("Eeprom page erase:\t" );
1090
- dbg_hexa ((u32 )eepromPageErase );
1091
- dbg_printf ("\n" );
1092
- srcAddr = EepromEraseJump + 0x4 - vAddrOfRelocSrc + 0x37F8000 ;
1093
- generateA7InstrThumb (instrs , srcAddr ,
1094
- arm7FunctionThumb [1 ]);
1095
- eepromPageErase [0 ]= instrs [0 ];
1096
- eepromPageErase [1 ]= instrs [1 ];
1097
1132
1098
1133
} else {
1099
1134
0 commit comments