diff --git a/gui.pnproj b/gui.pnproj
index bdcf7498..941d9393 100644
--- a/gui.pnproj
+++ b/gui.pnproj
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/source/prompts/PromptWindows.cpp b/source/prompts/PromptWindows.cpp
index b96c9b2d..b9c0719c 100644
--- a/source/prompts/PromptWindows.cpp
+++ b/source/prompts/PromptWindows.cpp
@@ -926,7 +926,8 @@ WindowExitPrompt(const char *title, const char *msg, const char *btn1Label,
ShutdownAudio();
StopGX();
WII_Initialize();
- WII_LaunchTitle(TITLE_ID(0x00010001,0x48415858));
+ WII_BootHBC();
+
}
choice = 2;
}
@@ -3408,4 +3409,3 @@ HBCWindowPrompt(const char *name, const char *coder, const char *version,
return choice;
}
-
diff --git a/source/usbloader/apploader.c b/source/usbloader/apploader.c
index e4c6af88..d9626f47 100644
--- a/source/usbloader/apploader.c
+++ b/source/usbloader/apploader.c
@@ -13,15 +13,10 @@
#include "fstfile.h"
#include "settings/cfg.h"
-#define BC 0x0000000100000100ULL
-#define MIOS 0x0000000100000101ULL
-static tikview view ATTRIBUTE_ALIGN(32);
-
/*KENOBI! - FISHEARS*/
extern const unsigned char kenobiwii[];
extern const int kenobiwii_size;
/*KENOBI! - FISHEARS*/
-extern u8 dvdMounted;
/* Apploader function pointers */
typedef int (*app_main)(void **dst, int *size, int *offset);
@@ -309,24 +304,7 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
if (ret < 0)
return ret;
- if (dvdMounted==2)
- {
- int retval;
- retval = ES_GetTicketViews(BC, &view, 1);
- if (retval != 0){
- // error. do something smart here like exit. anything besides return 0;
- return 0;
- }
-
- WPAD_Shutdown();
- *(volatile unsigned int *)0xCC003024 |= 7;
-
- retval = ES_LaunchTitle(BC, &view); // bushing's code
- return 0;
- }
-
-
- /* Set apploader entry function */
+ /* Set apploader entry function */
appldr_entry = (app_entry)buffer[4];
/* Call apploader entry */
diff --git a/source/wad/title.c b/source/wad/title.c
index ff73e303..8e493935 100644
--- a/source/wad/title.c
+++ b/source/wad/title.c
@@ -820,6 +820,48 @@ s32 getTitles_Type(u32 type, u32 *titles, u32 count) {
}
+//this function expects initialize be called before it is called
+// if not, it will fail miserably and catch the wii on fire and kick you in the nuts
+#define TITLE_ID(x,y) (((u64)(x) << 32) | (y))
+s32 WII_BootHBC()
+{
+ u32 tmdsize;
+ u64 tid = 0;
+ u64 *list;
+ u32 titlecount;
+ s32 ret;
+ u32 i;
+
+ ret = ES_GetNumTitles(&titlecount);
+ if(ret < 0)
+ return WII_EINTERNAL;
+
+ list = memalign(32, titlecount * sizeof(u64) + 32);
+
+ ret = ES_GetTitles(list, titlecount);
+ if(ret < 0) {
+ free(list);
+ return WII_EINTERNAL;
+ }
+
+ for(i=0; i