forked from Popn_Tools/popnhax
no more crash in menu, only once you select a song :(
This commit is contained in:
parent
2e94df0984
commit
06957c8340
@ -90,7 +90,7 @@ void (*add_song_in_list)();
|
|||||||
void (*categ_inject_songlist)();
|
void (*categ_inject_songlist)();
|
||||||
|
|
||||||
struct songlist_struct_s *new_song_list = NULL;
|
struct songlist_struct_s *new_song_list = NULL;
|
||||||
void get_subcateg_size_impl()
|
void get_subcateg_size_impl_old()
|
||||||
{
|
{
|
||||||
__asm("push edx\n");
|
__asm("push edx\n");
|
||||||
__asm("mov _idx, eax\n");
|
__asm("mov _idx, eax\n");
|
||||||
@ -106,6 +106,53 @@ void get_subcateg_size_impl()
|
|||||||
__asm("pop edx\n");
|
__asm("pop edx\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t tmp_array_begin;
|
||||||
|
uint32_t tmp_array_end;
|
||||||
|
uint32_t tmp_zone;
|
||||||
|
void get_subcateg_size_impl()
|
||||||
|
{
|
||||||
|
//on ecrit dans la zone d'où la fonction habituelle lit, p'tet ça marchera
|
||||||
|
|
||||||
|
__asm("push ebx\n");
|
||||||
|
__asm("push edx\n");
|
||||||
|
|
||||||
|
__asm("push eax\n");
|
||||||
|
__asm("push ecx\n");
|
||||||
|
__asm("mov _idx, eax\n");
|
||||||
|
|
||||||
|
__asm("lea eax, dword ptr [eax+eax*2]");
|
||||||
|
__asm("lea ecx, dword ptr [ecx+eax*8+0x1D8C]");
|
||||||
|
__asm("mov _tmp_zone, ecx");
|
||||||
|
__asm("pop ecx\n");
|
||||||
|
__asm("pop eax\n");
|
||||||
|
|
||||||
|
tmp_size = subcategories[idx-2].size;
|
||||||
|
// tmp_categ_ptr = (uint32_t)&(subcategories[idx]);
|
||||||
|
// tmp_songlist_ptr = (uint32_t)&(subcategories[idx].songlist);
|
||||||
|
new_song_list = (struct songlist_struct_s*) songlist_struct_addr;
|
||||||
|
// new_song_list = (struct songlist_struct_s*) calloc(1, sizeof(struct songlist_struct_s));
|
||||||
|
tmp_array_begin = (uint32_t)&(subcategories[idx-2].songlist[0]);
|
||||||
|
new_song_list->array_start = tmp_array_begin;
|
||||||
|
tmp_array_end = (uint32_t)&(subcategories[idx-2].songlist[tmp_size]);
|
||||||
|
new_song_list->array_end = tmp_array_end;
|
||||||
|
|
||||||
|
__asm("push ecx");
|
||||||
|
__asm("push edx");
|
||||||
|
__asm("mov ecx, _tmp_zone");
|
||||||
|
__asm("mov edx, _tmp_array_end");
|
||||||
|
__asm("mov dword ptr ds:[ecx+0x10], edx");
|
||||||
|
__asm("mov edx, _tmp_array_begin");
|
||||||
|
__asm("mov dword ptr ds:[ecx+0xC], edx");
|
||||||
|
__asm("pop edx");
|
||||||
|
__asm("pop ecx");
|
||||||
|
|
||||||
|
__asm("mov eax, [_tmp_size]");
|
||||||
|
__asm("mov ecx, _new_song_list");
|
||||||
|
|
||||||
|
__asm("pop edx\n");
|
||||||
|
__asm("pop ebx\n");
|
||||||
|
}
|
||||||
|
|
||||||
void get_subcateg_name_impl()
|
void get_subcateg_name_impl()
|
||||||
{
|
{
|
||||||
__asm("push ecx\n");
|
__asm("push ecx\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user