Systemmenu per Channel starten

      Systemmenu per Channel starten

      Hey Leute - hat jemand eine wad, für nen wiichannel, der mir das Systemmenu der wii lädt?
      Für´s Verständnis - ich nutze Wiiflow und habe das im Priiloader als Autoboot installiert und "return to" auf Autoboot..
      Früher habe ich eine kleine .WBFS-Datei (DJWA00) genutzt, die mir das Systemmenu lädt, was auch immer perfekt geklappt hat. wenn ich allerdings den Wiiflow-Mastermod nutze funktioniert das nicht und es wird der Mastermod neu gestartet - starte ich den normalen wiiflow mit der selben config funktioniert das wieder. Base-CIOS38 ist eingestellt.
      Lange rede kurzer sinn - hat jemand mal bitte eine Channelwad für mich, die mir das Systemmenu startet?
      Ich habe mir ein paar How-tos angesehen, da geht es aber immer nur um Spiele oder Apps aber wie ich das Systemmenu da verlinken könnte wird nirgendwo erwähnt..

      MfG
      ..seit erscheinen des Twilight Hack 0.1beta1 mit dabei..
      Systemmenü 4.3Ev2 [BigN];
      Wiiflow (4.2.1-r441) + Plugins Pack v7;
      HBC v1.1.2 / IOS58;
      BootMii boot2/IOS;
      Priiloader v0.8(beta v7);
      d2x-cIOS v10-beta(r52);
      Hermes-cIOS-mod v5.1;
      cMIOS Custom MIOS v10

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Senseless-Creature ()

      Vllt wirst du hier fündig
      Custom Channels



      Konsole/HandheldBundle/FarbeFirmwareZubehörHinweise
      PS4Jet Black; Bundle Watch Dogs 1+2; seit 17.12.2016OFW: 5.008GB microSD in USB-SD-Lesegerät1TB Festplatte
      PS3 SlimPS3 Wonderbook EditionOFW: 4.81HDD: 500 GB Seagate Momentus
      PSP 3004Slim & Lite in Piano BlackOFW6.618 [SanDisk] GB MS PRO DuoTCFW 6.61 PRO-C f3; Datecode: 8D
      PS2 PhatBlackedition [neue PS2 seit 12.07.12]SCPH 50004 - V9int. HDD "Seagate Barracuda 40 GB"DVDRegion per ARMax; FreeMcBoot 1.8
      -->meine 4. PS2<--



      Leider nicht - es gibt einen Bootmii-iOS forwarder aber einen forwarder, der das SM lädt ist ja auch sonst ziemlich sinnfrei, darum hat sowas bisher niemand erstellt..
      Ich würde mir ja selber einen erstellen aber in den How-To's wird nur erklärt, wie ich eine App bzw. ein Verzeichnis auf der SD hinterlegen kann - das SM liegt aber nicht auf meiner sd
      ..seit erscheinen des Twilight Hack 0.1beta1 mit dabei..
      Systemmenü 4.3Ev2 [BigN];
      Wiiflow (4.2.1-r441) + Plugins Pack v7;
      HBC v1.1.2 / IOS58;
      BootMii boot2/IOS;
      Priiloader v0.8(beta v7);
      d2x-cIOS v10-beta(r52);
      Hermes-cIOS-mod v5.1;
      cMIOS Custom MIOS v10
      Es gibt einen Opera bzw Netflix booter. Da musst du nur die Title ID tauschen und ihn compilieren.

      C-Quellcode

      1. #include <gccore.h>
      2. #include <wiiuse/wpad.h>
      3. #include <ogc/ios.h>
      4. #include <fat.h>
      5. #include <stdio.h>
      6. #include <stdlib.h>
      7. #include <string.h>
      8. #include <unistd.h>
      9. static void *xfb = NULL;
      10. static GXRModeObj *vmode = NULL;
      11. char * url = "";
      12. void setupVideo() {
      13. VIDEO_Init();
      14. vmode = VIDEO_GetPreferredMode(NULL);
      15. VIDEO_Configure(vmode);
      16. xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(vmode));
      17. console_init (xfb, 20, 20, vmode->fbWidth, vmode->xfbHeight, vmode->fbWidth*VI_DISPLAY_PIX_SZ);
      18. VIDEO_Configure(vmode);
      19. VIDEO_ClearFrameBuffer(vmode, xfb, COLOR_BLACK);
      20. VIDEO_SetNextFramebuffer(xfb);
      21. VIDEO_SetBlack(0);
      22. VIDEO_Flush();
      23. VIDEO_WaitVSync();
      24. if (vmode->viTVMode & VI_NON_INTERLACE)
      25. VIDEO_WaitVSync();
      26. }
      27. s32 launchTitle(u64 TitleID, char * url) {
      28. WII_Initialize();
      29. if (url[0] != 0) {
      30. //Load title with specified URL as an argument
      31. return WII_LaunchTitleWithArgs(TitleID, 0, url, NULL);
      32. } else {
      33. return WII_LaunchTitle(TitleID);
      34. }
      35. }
      36. s32 readCfg(char * path) {
      37. int c = 0;
      38. int i = 0;
      39. FILE *f = fopen(path, "r");
      40. if (f == NULL)
      41. return 0;
      42. fseek(f , 0 , SEEK_END);
      43. u32 size = ftell(f);
      44. rewind(f);
      45. url = (char*) malloc(sizeof(char)*size);
      46. while (c != EOF) {
      47. c = fgetc(f);
      48. if (31 < c && c < 127)
      49. url[i++] = c;
      50. }
      51. url[i] = '\0';
      52. fclose(f);
      53. return 1;
      54. }
      55. int main(int argc, char **argv) {
      56. setupVideo();
      57. fatInitDefault();
      58. s32 ret;
      59. if (argc > 0) {
      60. char path[MAXPATHLEN];
      61. int len = strlen(argv[0]);
      62. int i = 0;
      63. for(i = len; argv[0][i] != '/'; i--);
      64. if(i < 1)
      65. readCfg("sd:/url.cfg");
      66. else {
      67. argv[0][i] = 0;
      68. sprintf(path, "%s/url.cfg", argv[0]);
      69. readCfg(path);
      70. }
      71. }
      72. ret = launchTitle(0x0001000148414445LL, url);
      73. if (ret < 0) {
      74. ret = launchTitle(0x000100014841444ALL, url);
      75. }
      76. if (ret < 0) {
      77. ret = launchTitle(0x0001000148414450LL, url);
      78. }
      79. return ret;
      80. }
      Alles anzeigen
      Ganz unten stehen die 3 verschiedenen IDs für die jeweilige Region.
      Man müsste testen, ob der Channelloader auch einfach das Systemmenü starten kann.
      0x0000000100000002LL einsetzen. Allerdings weiß ich nciht wofür das LL usw steht, aber versuch ist es wert ^^
      Müsstest du dann "nurnoch" compilieren. Beim DL ist aber keine makefile dabei :(

      //edit: Habs mit random Makefiles versucht, keine funktioniert ...

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Linox ()

      LL steht für "long long", also 64 bit. Das Problem ist aber dass 00000001-00000002 mWn nicht das Systemmenü sondern der Priiloader ist - der Priiloader setzt sich ja bei der Installation an Stelle des Systemmenüs.

      Seit Mai 2016 finden auf Wiimmfi regelmäßig Mario-Kart-Wii-Wettbewerbe statt! Klick hier für weitere Informationen.
      Since May 2016, there are Mario Kart competitions / tournaments on Wiimmfi! Click here for more information.


      My Twitch


      Dieser Beitrag wurde bereits 0 mal editiert, zuletzt von Leseratte ()

      ahhhh, stimmt :/
      Kannst du nicht etwas wii proggen? ^^
      Man müsste ja "nur" die stelle aus anderen Homebrews rauskopieren, die das systemmenü selber starten, z.b. aus dem Priiloader vielleicht?

      edit://

      Quellcode

      1. void BootMainSysMenu( u8 init )
      2. {
      3. //memory block variables used within the function:
      4. //ticket stuff:
      5. char * buf = NULL;
      6. fstats * tstatus = NULL;
      7. //TMDview stuff:
      8. u64 TitleID=0x0000000100000002LL;
      9. u32 tmd_size;
      10. static u8 tmd_buf[(sizeof(tmd_view) + MAX_NUM_TMD_CONTENTS*sizeof(tmd_view_content))] ATTRIBUTE_ALIGN(32);
      11. tmd_view *rTMD = NULL;
      12. //TMD:
      13. signed_blob *TMD = NULL;
      14. //boot file:
      15. u32 fileID = 0;
      16. char file[265] ATTRIBUTE_ALIGN(32);
      17. fstats *status = NULL;
      18. dolhdr *boot_hdr = NULL;
      19. //hacks : hashes
      20. u8* mem_block = 0;
      21. u32 max_address = 0;
      22. //general:
      23. s32 r = 0;
      24. s32 fd = 0;
      25. void (*entrypoint)();
      26. if(init == 0)
      27. {
      28. //PollDevices();
      29. }
      30. //booting sys menu
      31. //expermintal code for getting the needed tmd info. no boot index is in the views but lunatik and i think last file = boot file
      32. r = ES_GetTMDViewSize(TitleID, &tmd_size);
      33. if(r<0)
      34. {
      35. gprintf("GetTMDViewSize error %d\n",r);
      36. error = ERROR_SYSMENU_GETTMDSIZEFAILED;
      37. goto free_and_return;
      38. }
      39. r = ES_GetTMDView(TitleID, tmd_buf, tmd_size);
      40. if(r<0)
      41. {
      42. gprintf("GetTMDView error %d\n",r);
      43. error = ERROR_SYSMENU_GETTMDFAILED;
      44. goto free_and_return;
      45. }
      46. rTMD = (tmd_view *)tmd_buf;
      47. gdprintf("ios version: %u\n",(u8)rTMD->sys_version);
      48. //get main.dol filename
      49. /*for(u32 z=0; z < rTMD->num_contents; ++z)
      50. {
      51. if( rTMD->contents[z].index == rTMD->num_contents )//rTMD->boot_index )
      52. {
      53. gdprintf("content[%i] id=%08X type=%u\n", z, content->cid, content->type | 0x8001 );
      54. fileID = rTMD->contents[z].cid;
      55. break;
      56. }
      57. }*/
      58. fileID = rTMD->contents[rTMD->num_contents-1].cid;
      59. gprintf("using %08X for booting\n",rTMD->contents[rTMD->num_contents-1].cid);
      60. if( fileID == 0 )
      61. {
      62. error = ERROR_SYSMENU_BOOTNOTFOUND;
      63. goto free_and_return;
      64. }
      65. sprintf( file, "/title/00000001/00000002/content/%08x.app", fileID );
      66. file[33] = '1'; // installing preloader renamed system menu so we change the app file to have the right name
      67. fd = ISFS_Open( file, 1 );
      68. if( fd < 0 )
      69. {
      70. gprintf("error opening %08x.app! error %d\n",fileID,fd);
      71. ISFS_Close( fd );
      72. error = ERROR_SYSMENU_BOOTOPENFAILED;
      73. goto free_and_return;
      74. }
      75. status = (fstats *)mem_align(32, ALIGN32(sizeof( fstats )) );
      76. if( status == NULL )
      77. {
      78. ISFS_Close( fd );
      79. error = ERROR_MALLOC;
      80. goto free_and_return;
      81. }
      82. memset(status,0, sizeof( fstats ) );
      83. r = ISFS_GetFileStats( fd, status);
      84. if( r < 0 || status->file_length == 0)
      85. {
      86. ISFS_Close( fd );
      87. error = ERROR_SYSMENU_BOOTGETSTATS;
      88. mem_free(status);
      89. goto free_and_return;
      90. }
      91. mem_free(status);
      92. boot_hdr = (dolhdr *)mem_align(32, ALIGN32(sizeof( dolhdr )) );
      93. if(boot_hdr == NULL)
      94. {
      95. error = ERROR_MALLOC;
      96. ISFS_Close(fd);
      97. goto free_and_return;
      98. }
      99. memset( boot_hdr, 0, ALIGN32(sizeof( dolhdr )) );
      100. r = ISFS_Seek( fd, 0, SEEK_SET );
      101. if ( r < 0)
      102. {
      103. gprintf("ISFS_Seek error %d(dolhdr)\n",r);
      104. ISFS_Close(fd);
      105. goto free_and_return;
      106. }
      107. r = ISFS_Read( fd, boot_hdr, sizeof(dolhdr) );
      108. if( r < 0 || r != sizeof(dolhdr) )
      109. {
      110. gprintf("ISFS_Read error %d of dolhdr\n",r);
      111. ISFS_Close( fd );
      112. goto free_and_return;
      113. }
      114. if( boot_hdr->entrypoint != 0x3400 )
      115. {
      116. gprintf("Bogus Entrypoint detected!\n");
      117. ISFS_Close( fd );
      118. goto free_and_return;
      119. }
      120. for (u8 i = 0; i < 6; i++)
      121. {
      122. if( boot_hdr->sizeText[i] && boot_hdr->addressText[i] && boot_hdr->offsetText[i] )
      123. {
      124. ICInvalidateRange((void*)(boot_hdr->addressText[i]), boot_hdr->sizeText[i]);
      125. gdprintf("\t%08x\t\t%08x\t\t%08x\t\t\n", (boot_hdr->offsetText[i]), boot_hdr->addressText[i], boot_hdr->sizeText[i]);
      126. if( (((boot_hdr->addressText[i])&0xF0000000) != 0x80000000) || (boot_hdr->sizeText[i]>(10*1024*1024)) )
      127. {
      128. gprintf("bogus Text offset\n");
      129. ISFS_Close( fd );
      130. goto free_and_return;
      131. }
      132. r = ISFS_Seek( fd, boot_hdr->offsetText[i], SEEK_SET );
      133. if ( r < 0)
      134. {
      135. gprintf("ISFS_Seek error %d(offsetText)\n");
      136. ISFS_Close(fd);
      137. goto free_and_return;
      138. }
      139. ISFS_Read( fd, (void*)(boot_hdr->addressText[i]), boot_hdr->sizeText[i] );
      140. DCFlushRange((void*)(boot_hdr->addressText[i]), boot_hdr->sizeText[i]);
      141. }
      142. }
      143. // data sections
      144. for (u8 i = 0; i <= 10; i++)
      145. {
      146. if( boot_hdr->sizeData[i] && boot_hdr->addressData[i] && boot_hdr->offsetData[i] )
      147. {
      148. ICInvalidateRange((void*)(boot_hdr->addressData[i]), boot_hdr->sizeData[i]);
      149. gdprintf("\t%08x\t\t%08x\t\t%08x\t\t\n", (boot_hdr->offsetData[i]), boot_hdr->addressData[i], boot_hdr->sizeData[i]);
      150. if( (((boot_hdr->addressData[i])&0xF0000000) != 0x80000000) || (boot_hdr->sizeData[i]>(10*1024*1024)) )
      151. {
      152. gprintf("bogus Data offsets\n");
      153. ISFS_Close(fd);
      154. goto free_and_return;
      155. }
      156. r = ISFS_Seek( fd, boot_hdr->offsetData[i], SEEK_SET );
      157. if ( r < 0)
      158. {
      159. gdprintf("ISFS_Seek error %d(offsetData)\n");
      160. ISFS_Close(fd);
      161. goto free_and_return;
      162. }
      163. r = ISFS_Read( fd, (void*)boot_hdr->addressData[i], boot_hdr->sizeData[i] );
      164. if (r < 0)
      165. {
      166. gdprintf("ISFS_Read error %d(addressdata)\n",r);
      167. ISFS_Close(fd);
      168. goto free_and_return;
      169. }
      170. DCFlushRange((void*)boot_hdr->addressData[i], boot_hdr->sizeData[i]);
      171. }
      172. }
      173. ISFS_Close(fd);
      174. entrypoint = (void (*)())(boot_hdr->entrypoint);
      175. gdprintf("entrypoint %08X\n", entrypoint );
      176. LoadHacks_Hash(true);
      177. for(u8 i=0;i<WPAD_MAX_WIIMOTES;i++) {
      178. if(WPAD_Probe(i,0) < 0)
      179. continue;
      180. WPAD_Flush(i);
      181. WPAD_Disconnect(i);
      182. }
      183. WPAD_Shutdown();
      184. //Step 1 of IOS handling : Reloading IOS if needed;
      185. if( !SGetSetting( SETTING_USESYSTEMMENUIOS ) )
      186. {
      187. s32 ToLoadIOS = SGetSetting(SETTING_SYSTEMMENUIOS);
      188. if ( ToLoadIOS != (u8)IOS_GetVersion() )
      189. {
      190. if ( !isIOSstub(ToLoadIOS) )
      191. {
      192. __ES_Close();
      193. __IOS_ShutdownSubsystems();
      194. __ES_Init();
      195. __IOS_LaunchNewIOS ( ToLoadIOS );
      196. //why the hell the es needs 2 init's is beyond me... it just happens (see IOS_ReloadIOS in libogc's ios.c)
      197. __ES_Init();
      198. //gprintf("BootMainSysMenu : ios %d launched\n",IOS_GetVersion());
      199. //__IOS_LaunchNewIOS ( (u8)rTMD->sys_version );
      200. //__IOS_LaunchNewIOS ( 249 );
      201. system_state.ReloadedIOS = 1;
      202. }
      203. else
      204. {
      205. WPAD_Init();
      206. error=ERROR_SYSMENU_IOSSTUB;
      207. goto free_and_return;
      208. }
      209. }
      210. }
      211. /*
      212. //technically its needed... but i fail to see why...
      213. else if ((u8)IOS_GetVersion() != (u8)rTMD->sys_version)
      214. {
      215. gprintf("Use system menu is ON, but IOS %d isn't loaded. reloading IOS...\n",(u8)rTMD->sys_version);
      216. __ES_Close();
      217. __IOS_ShutdownSubsystems();
      218. __ES_Init();
      219. __IOS_LaunchNewIOS ( (u8)rTMD->sys_version );
      220. __IOS_InitializeSubsystems();
      221. gprintf("launched ios %d for system menu\n",IOS_GetVersion());
      222. system_state.ReloadedIOS = 1;
      223. }*/
      224. //Step 2 of IOS handling : ES_Identify if we are on a different ios or if we reloaded ios once already. note that the ES_Identify is only supported by ios > 20
      225. if (((u8)IOS_GetVersion() != (u8)rTMD->sys_version) || (system_state.ReloadedIOS) )
      226. {
      227. if (system_state.ReloadedIOS)
      228. gprintf("Forced into ES_Identify\n");
      229. else
      230. gprintf("Forcing ES_Identify\n",IOS_GetVersion(),(u8)rTMD->sys_version);
      231. //read ticket from FS
      232. fd = ISFS_Open("/title/00000001/00000002/content/ticket", 1 );
      233. if( fd < 0 )
      234. {
      235. error = ERROR_SYSMENU_TIKNOTFOUND;
      236. goto free_and_return;
      237. }
      238. //get size
      239. tstatus = (fstats*)mem_align( 32, sizeof( fstats ) );
      240. if(tstatus == NULL)
      241. {
      242. ISFS_Close( fd );
      243. error = ERROR_MALLOC;
      244. goto free_and_return;
      245. }
      246. r = ISFS_GetFileStats( fd, tstatus );
      247. if( r < 0 )
      248. {
      249. ISFS_Close( fd );
      250. error = ERROR_SYSMENU_TIKSIZEGETFAILED;
      251. goto free_and_return;
      252. }
      253. //create buffer
      254. buf = (char*)mem_align( 32, ALIGN32(tstatus->file_length) );
      255. if( buf == NULL )
      256. {
      257. ISFS_Close( fd );
      258. error = ERROR_MALLOC;
      259. goto free_and_return;
      260. }
      261. memset(buf, 0, tstatus->file_length );
      262. //read file
      263. r = ISFS_Read( fd, buf, tstatus->file_length );
      264. if( r < 0 )
      265. {
      266. gprintf("ES_Identify: R-err %d\n",r);
      267. ISFS_Close( fd );
      268. error = ERROR_SYSMENU_TIKREADFAILED;
      269. goto free_and_return;
      270. }
      271. ISFS_Close( fd );
      272. //get the real TMD. we didn't get the real TMD before. the views will fail to be used in identification
      273. u32 tmd_size_temp;
      274. r=ES_GetStoredTMDSize(TitleID, &tmd_size_temp);
      275. if(r < 0)
      276. {
      277. error=ERROR_SYSMENU_ESDIVERFIY_FAILED;
      278. gprintf("ES_Identify: GetStoredTMDSize error %d\n",r);
      279. __IOS_InitializeSubsystems();
      280. goto free_and_return;
      281. }
      282. TMD = (signed_blob *)mem_align( 32, ALIGN32(tmd_size_temp) );
      283. if(TMD == NULL)
      284. {
      285. gprintf("ES_Identify: memalign TMD failure\n");
      286. error = ERROR_MALLOC;
      287. __IOS_InitializeSubsystems();
      288. goto free_and_return;
      289. }
      290. memset(TMD, 0, tmd_size_temp);
      291. r=ES_GetStoredTMD(TitleID, TMD, tmd_size_temp);
      292. if(r < 0)
      293. {
      294. error=ERROR_SYSMENU_ESDIVERFIY_FAILED;
      295. gprintf("ES_Identify: GetStoredTMD error %d\n",r);
      296. __IOS_InitializeSubsystems();
      297. goto free_and_return;
      298. }
      299. r = ES_Identify( (signed_blob *)certs_bin, certs_bin_size, (signed_blob *)TMD, tmd_size_temp, (signed_blob *)buf, tstatus->file_length, 0);
      300. if( r < 0 )
      301. {
      302. error=ERROR_SYSMENU_ESDIVERFIY_FAILED;
      303. gprintf("ES_Identify error %d\n",r);
      304. __IOS_InitializeSubsystems();
      305. goto free_and_return;
      306. }
      307. if(TMD)
      308. mem_free(TMD);
      309. }
      310. //ES_SetUID(TitleID);
      311. if(tstatus)
      312. mem_free( tstatus );
      313. if(buf)
      314. mem_free( buf );
      315. *(vu32*)0x800000F8 = 0x0E7BE2C0; // Bus Clock Speed
      316. *(vu32*)0x800000FC = 0x2B73A840; // CPU Clock Speed
      317. *(vu32*)0x8000315C = 0x80800113; // DI Legacy mode ?
      318. DCFlushRange((void*)0x80000000,0x3400);
      319. gprintf("Hacks:%d\n",hacks_hash.size());
      320. if(hacks_hash.size() != 0)
      321. {
      322. mem_block = (u8*)(*boot_hdr->addressData - *boot_hdr->offsetData);
      323. max_address = (u32)(*boot_hdr->sizeData + *boot_hdr->addressData);
      324. for(u32 i = 0;i < hacks_hash.size();i++)
      325. {
      326. if(states_hash[i] == 1)
      327. {
      328. u32 add = 0;
      329. for(u32 y = 0; y < hacks_hash[i].amount;y++)
      330. {
      331. while( add + (u32)mem_block < max_address)
      332. {
      333. u8 temp_hash[hacks_hash[i].patches[y].hash.size()];
      334. u8 temp_patch[hacks_hash[i].patches[y].patch.size()];
      335. for(u32 z = 0;z < hacks_hash[i].patches[y].hash.size(); z++)
      336. {
      337. temp_hash[z] = hacks_hash[i].patches[y].hash[z];
      338. }
      339. if ( !memcmp(mem_block+add, temp_hash ,sizeof(temp_hash)) )
      340. {
      341. gprintf("Found %s @ 0x%X, patching hash # %d...\n",hacks_hash[i].desc.c_str(), add+(u32)mem_block, y+1);
      342. for(u32 z = 0;z < hacks_hash[i].patches[y].patch.size(); z++)
      343. {
      344. temp_patch[z] = hacks_hash[i].patches[y].patch[z];
      345. }
      346. memcpy(mem_block+add,temp_patch,sizeof(temp_patch) );
      347. DCFlushRange((u8 *)((add+(u32)mem_block) >> 5 << 5), (sizeof(temp_patch) >> 5 << 5) + 64);
      348. break;
      349. }
      350. add++;
      351. }//end while loop
      352. } //end for loop of all hashes of hack[i]
      353. } //end if state[i] = 1
      354. } // end general hacks loop
      355. } //end if hacks > 0
      356. if(TMD)
      357. mem_free(TMD);
      358. if(tstatus)
      359. mem_free( tstatus );
      360. if(buf)
      361. mem_free( buf );
      362. if(boot_hdr)
      363. mem_free(boot_hdr);
      364. ShutdownDevices();
      365. USB_Deinitialize();
      366. if(init == 1 || SGetSetting(SETTING_DUMPGECKOTEXT) != 0 )
      367. Control_VI_Regs(2);
      368. ISFS_Deinitialize();
      369. __STM_Close();
      370. __IPC_Reinitialize();
      371. __IOS_ShutdownSubsystems();
      372. mtmsr(mfmsr() & ~0x8000);
      373. mtmsr(mfmsr() | 0x2002);
      374. ICSync();
      375. _unstub_start();
      376. free_and_return:
      377. if(TMD)
      378. mem_free(TMD);
      379. if(tstatus)
      380. mem_free( tstatus );
      381. if(buf)
      382. mem_free( buf );
      383. if(boot_hdr)
      384. mem_free(boot_hdr);
      385. WPAD_Init();
      386. return;
      Alles anzeigen
      Aus der Priiloader Source? :D Vielleicht geht sowas ähnliches? ich glaube, wenn ich es richtig verstanden habe, checkt der nach, ob der priiloader installiert ist und startet dann die entsprechende xxxx.app :)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Linox ()

      Das ist der Code aus dem Priiloader, der die Hacks anwendet und dann das Systemmenü startet. Keine Ahnung, ob man damit auch direkt das Systemmenü starten kann....

      Evtl. kann man ja auch dem Priiloader Parameter übergeben die besagen "Hey, jetzt nicht Autostart sondern Systemmenü"?

      Seit Mai 2016 finden auf Wiimmfi regelmäßig Mario-Kart-Wii-Wettbewerbe statt! Klick hier für weitere Informationen.
      Since May 2016, there are Mario Kart competitions / tournaments on Wiimmfi! Click here for more information.


      My Twitch


      Dieser Beitrag wurde bereits 0 mal editiert, zuletzt von Leseratte ()

      Aber wie?

      Der Sinn bzw. die Funktionsweise des Priiloader ist doch, das Systemmenü zu ersetzen. Bei der Installation wird das Systemmenü woanders hin verschoben und an dessen Stelle das Systemmenü installiert. Das heißt, alles, was das Systemmenü aufruft, startet stattdessen den Priiloader.

      Seit Mai 2016 finden auf Wiimmfi regelmäßig Mario-Kart-Wii-Wettbewerbe statt! Klick hier für weitere Informationen.
      Since May 2016, there are Mario Kart competitions / tournaments on Wiimmfi! Click here for more information.


      My Twitch


      Dieser Beitrag wurde bereits 0 mal editiert, zuletzt von Leseratte ()

      Du hast ja gesagt, sowas wie "starte nicht Autostart sondern Systemmenü" wäre nützlich. Irgendein Tool gabs, wessen Name ich leider vergaß, welches halt das tat was ich beschrieb. Es startet halt das, was man festgelegt hat und bei nem festgelegten Knopfdruck was anderes, was festgelegt wurde. Sowas kann man eventuell nutzen

      Edit:
      Es war CrazyIntro. Guck mal hier
      Ja. Und?

      CrazyIntro gibt dir die Möglichkeit, entweder ne Datei, den HBC oder das Systemmenü zu starten.

      Wenn du aber Priiloader installiert hast, startet trotzdem Priiloader - und damit Wiiflow - wenn man das Systemmenü startet, denn der Priiloader ersetzt ja das Systemmenü.

      Seit Mai 2016 finden auf Wiimmfi regelmäßig Mario-Kart-Wii-Wettbewerbe statt! Klick hier für weitere Informationen.
      Since May 2016, there are Mario Kart competitions / tournaments on Wiimmfi! Click here for more information.


      My Twitch


      Dieser Beitrag wurde bereits 0 mal editiert, zuletzt von Leseratte ()

      CrazyIntro kenne ich zwar nicht aber eine App, die die Priiloader Methode nutzt wäre ja eine schöne Option - optimal wäre ja eine App, die man aus dem HBC heraus konfigurieren könnte und dann per Channel das booted, was voreingestellt wurde - das könnte ja eine beliebige App, ein Spiel, Bootmii, der Priiloader oder halt das SM oder sonst was sein.. wäre das über dieses CrazyIntro umsetzbar?
      ..seit erscheinen des Twilight Hack 0.1beta1 mit dabei..
      Systemmenü 4.3Ev2 [BigN];
      Wiiflow (4.2.1-r441) + Plugins Pack v7;
      HBC v1.1.2 / IOS58;
      BootMii boot2/IOS;
      Priiloader v0.8(beta v7);
      d2x-cIOS v10-beta(r52);
      Hermes-cIOS-mod v5.1;
      cMIOS Custom MIOS v10

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Senseless-Creature ()