@@ -44,8 +44,14 @@ u32 cardPullOutSignature1[4] = {0xE92D4000,0xE24DD004,0xE201003F,0xE3500011};
44
44
u32 cardPullOutSignature4 [4 ] = {0xE92D4008 ,0xE201003F ,0xE3500011 ,0x1A00000D };
45
45
u32 a9cardSendSignature [7 ] = {0xE92D40F0 ,0xE24DD004 ,0xE1A07000 ,0xE1A06001 ,0xE1A01007 ,0xE3A0000E ,0xE3A02000 };
46
46
u32 cardCheckPullOutSignature [4 ] = {0xE92D4018 ,0xE24DD004 ,0xE59F204C ,0xE1D210B0 };
47
- u32 cardReadCachedSignature [4 ] = {0xE92D4030 ,0xE24DD004 ,0xE59F5090 ,0xE3A01C02 };
47
+ u32 cardReadCachedStartSignature1 [2 ] = {0xE92D4030 ,0xE24DD004 };
48
+ u32 cardReadCachedEndSignature1 [4 ] = {0xE5950020 ,0xE3500000 ,0x13A00001 ,0x03A00000 };
48
49
50
+ u32 cardReadCachedEndSignature3 [4 ] = {0xE5950024 ,0xE3500000 ,0x13A00001 ,0x03A00000 };
51
+
52
+ u32 cardReadCachedStartSignature4 [2 ] = {0xE92D4038 ,0xE59F407C };
53
+ u32 cardReadCachedEndSignature4 [4 ] = {0xE5940024 ,0xE3500000 ,0x13A00001 ,0x03A00000 };
54
+
49
55
// irqEnable
50
56
u32 irqEnableStartSignature [4 ] = {0xE59FC02C ,0xE1DC30B0 ,0xE3A01000 ,0xE1CC10B0 };
51
57
@@ -153,10 +159,16 @@ u32 patchCardNds (const tNDSHeader* ndsHeader, u32* cardEngineLocation, module_p
153
159
u32 * a9cardReadSignature = a9cardReadSignature1 ;
154
160
u32 * cardReadStartSignature = cardReadStartSignature1 ;
155
161
u32 * cardPullOutSignature = cardPullOutSignature1 ;
156
- if (moduleParams -> sdk_version > 0x4000000 ) {
162
+ u32 * cardReadCachedStartSignature = cardReadCachedStartSignature1 ;
163
+ u32 * cardReadCachedEndSignature = cardReadCachedEndSignature1 ;
164
+ if (moduleParams -> sdk_version > 0x3000000 && moduleParams -> sdk_version < 0x4000000 ) {
165
+ cardReadCachedEndSignature = cardReadCachedEndSignature3 ;
166
+ } else if (moduleParams -> sdk_version > 0x4000000 ) {
157
167
a9cardReadSignature = a9cardReadSignature4 ;
158
168
cardReadStartSignature = cardReadStartSignature4 ;
159
169
cardPullOutSignature = cardPullOutSignature4 ;
170
+ cardReadCachedStartSignature = cardReadCachedStartSignature4 ;
171
+ cardReadCachedEndSignature = cardReadCachedEndSignature4 ;
160
172
}
161
173
162
174
// Find the card read
@@ -189,17 +201,6 @@ u32 patchCardNds (const tNDSHeader* ndsHeader, u32* cardEngineLocation, module_p
189
201
nocashMessage ("Card check pull out found\n" );
190
202
}
191
203
192
- u32 cardReadCachedOffset =
193
- getOffsetA9 ((u32 * )ndsHeader -> arm9destination , 0x00400000 ,//, ndsHeader->arm9binarySize,
194
- (u32 * )cardReadCachedSignature , 4 , 1 );
195
- if (!cardReadCachedOffset ) {
196
- nocashMessage ("Card read cached not found\n" );
197
- return 0 ;
198
- } else {
199
- debug [0 ] = cardReadCachedOffset ;
200
- nocashMessage ("Card read cached found\n" );
201
- }
202
-
203
204
u32 cardIrqEnableOffset =
204
205
getOffsetA9 ((u32 * )ndsHeader -> arm7destination , 0x00400000 ,//, ndsHeader->arm9binarySize,
205
206
(u32 * )irqEnableStartSignature , 4 , 1 );
@@ -230,6 +231,25 @@ u32 patchCardNds (const tNDSHeader* ndsHeader, u32* cardEngineLocation, module_p
230
231
debug [0 ] = cardPullOutOffset ;
231
232
nocashMessage ("Card pull out handler found\n" );
232
233
234
+
235
+ u32 cardReadCachedEndOffset =
236
+ getOffsetA9 ((u32 * )ndsHeader -> arm9destination , 0x00300000 ,//ndsHeader->arm9binarySize,
237
+ (u32 * )cardReadCachedEndSignature , 4 , 1 );
238
+ if (!cardReadCachedEndOffset ) {
239
+ nocashMessage ("Card read cached end not found\n" );
240
+ return 0 ;
241
+ }
242
+ debug [1 ] = cardReadCachedEndOffset ;
243
+ u32 cardReadCachedOffset =
244
+ getOffsetA9 ((u32 * )cardReadCachedEndOffset , -0xFF ,
245
+ (u32 * )cardReadCachedStartSignature , 2 , -1 );
246
+ if (!cardReadStartOffset ) {
247
+ nocashMessage ("Card read cached start not found\n" );
248
+ return 0 ;
249
+ }
250
+ debug [0 ] = cardReadCachedOffset ;
251
+ nocashMessage ("Card read cached found\n" );
252
+
233
253
/*
234
254
// Find the card id
235
255
u32 cardIdEndOffset =
@@ -250,7 +270,7 @@ u32 patchCardNds (const tNDSHeader* ndsHeader, u32* cardEngineLocation, module_p
250
270
debug[0] = cardIdStartOffset;
251
271
nocashMessage("Card id found\n"); */
252
272
253
- u32 arenaLoOffset =
273
+ /* u32 arenaLoOffset =
254
274
getOffsetA9((u32*)ndsHeader->arm9destination, 0x00300000,//, ndsHeader->arm9binarySize,
255
275
(u32*)arenaLowSignature, 4, 1);
256
276
if (!arenaLoOffset) {
@@ -276,7 +296,7 @@ u32 patchCardNds (const tNDSHeader* ndsHeader, u32* cardEngineLocation, module_p
276
296
//*((u32*)arenaLo2Offset) = *((u32*)arenaLo2Offset) + 0x800; // shrink heap by 8 kb
277
297
278
298
debug[13] = arenaLo2Offset;
279
- }
299
+ }*/
280
300
281
301
debug [2 ] = cardEngineLocation ;
282
302
@@ -337,7 +357,7 @@ u32 patchCardNds (const tNDSHeader* ndsHeader, u32* cardEngineLocation, module_p
337
357
if (cardCheckPullOutOffset > 0 )
338
358
copyLoop ((u32 * )cardCheckPullOutOffset , cardCheckPullOutPatch , 0x4 );
339
359
340
- copyLoop ((u32 * )cardPullOutOffset , cardPullOutPatch , 0x6C );
360
+ copyLoop ((u32 * )cardPullOutOffset , cardPullOutPatch , 0x5C );
341
361
342
362
copyLoop ((u32 * )cardIrqEnableOffset , cardIrqEnablePatch , 0x30 );
343
363
0 commit comments