@@ -137,8 +137,8 @@ void NDSCartSlot::Key1_LoadKeyBuf(bool dsimode) noexcept
137137 {
138138 // load from ARM9 BIOS at 0x99A0
139139
140- const u8 * bios = dsi.ARM9iBIOS .data ();
141- memcpy (Key1_KeyBuf.data (), bios + 0x99A0 , sizeof (Key1_KeyBuf));
140+ const u8 * bios = dsi.ARM7iBIOS .data ();
141+ memcpy (Key1_KeyBuf.data (), bios + 0xB688 , sizeof (Key1_KeyBuf));
142142 Platform::Log (LogLevel::Debug, " NDSCart: Initialized Key1_KeyBuf from ARM9i BIOS\n " );
143143 }
144144 }
@@ -163,9 +163,24 @@ void NDSCartSlot::Key1_LoadKeyBuf(bool dsimode) noexcept
163163
164164void NDSCartSlot::Key1_InitKeycode (bool dsi, u32 idcode, u32 level, u32 mod) noexcept
165165{
166+ Key1_LoadKeyBuf (dsi);
167+ u32 keycode[3 ] = {idcode, idcode>>1 , idcode<<1 };
168+ // Key1_ApplyKeycode(keycode, mod);
169+ u32 temp[2 ] = {0 ,0 };
170+
171+ for (u32 i = 0 ; i <= 0x11 ; i++)
172+ {
173+ Key1_KeyBuf[i] ^= ByteSwap (keycode[0 ]);
174+ }
175+ for (u32 i = 0 ; i <= 0x410 ; i+=2 )
176+ {
177+ Key1_Encrypt (temp);
178+ Key1_KeyBuf[i ] = temp[1 ];
179+ Key1_KeyBuf[i+1 ] = temp[0 ];
180+ }
181+ return ;
166182 Key1_LoadKeyBuf (dsi);
167183
168- u32 keycode[3 ] = {idcode, idcode>>1 , idcode<<1 };
169184 if (level >= 1 ) Key1_ApplyKeycode (keycode, mod);
170185 if (level >= 2 ) Key1_ApplyKeycode (keycode, mod);
171186 if (level >= 3 )
0 commit comments