diff --git a/source/usbloader/alternatedol.h b/source/usbloader/alternatedol.h index fb5d66ea..622622e6 100644 --- a/source/usbloader/alternatedol.h +++ b/source/usbloader/alternatedol.h @@ -10,7 +10,7 @@ extern "C" { bool Load_Dol(void **buffer, int* dollen, char * path); bool Remove_001_Protection(void *Address, int Size); u32 load_dol_image(void * dolstart); - u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u8 vipatch); + u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat); #ifdef __cplusplus } diff --git a/source/usbloader/apploader.c b/source/usbloader/apploader.c index 885df7f3..e7c8280c 100644 --- a/source/usbloader/apploader.c +++ b/source/usbloader/apploader.c @@ -440,7 +440,7 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8 FST_ENTRY *fst = (FST_ENTRY *)*(u32 *)0x80000038; - *entry = (entry_point) Load_Dol_from_disc(fst[alternatedoloffset].fileoffset, videoSelected, patchcountrystring, vipatch); + *entry = (entry_point) Load_Dol_from_disc(fst[alternatedoloffset].fileoffset, videoSelected, patchcountrystring, vipatch, cheat); if (*entry == 0) SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0); diff --git a/source/usbloader/disc.c b/source/usbloader/disc.c index a2c7af05..9446b441 100644 --- a/source/usbloader/disc.c +++ b/source/usbloader/disc.c @@ -295,11 +295,14 @@ s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 pa if (ret < 0) return ret; + bool cheatloaded = false; + if (cheat == 1) { /* OCARINA STUFF - FISHEARS*/ if(ocarina_load_code((u8 *) gameid) > 0) { ocarina_do_code(); + cheatloaded = true; } } @@ -335,7 +338,7 @@ s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 pa appentrypoint = (u32) p_entry; - if (cheat == 1) + if (cheat == 1 && cheatloaded) { __asm__( "lis %r3, appentrypoint@h\n"