diff --git a/out/bins/ext_booter.bin b/out/bins/ext_booter.bin index c77cff4a..f519199b 100644 Binary files a/out/bins/ext_booter.bin and b/out/bins/ext_booter.bin differ diff --git a/out/boot.dol b/out/boot.dol index d21d66f7..a8c1789b 100644 Binary files a/out/boot.dol and b/out/boot.dol differ diff --git a/resources/wiiflow_game_booter/source/disc.c b/resources/wiiflow_game_booter/source/disc.c index 12ebf283..9e64c92d 100644 --- a/resources/wiiflow_game_booter/source/disc.c +++ b/resources/wiiflow_game_booter/source/disc.c @@ -35,6 +35,7 @@ void Disc_SetLowMem(void) *Sys_Magic = 0x0D15EA5E; // Standard Boot Code *Sys_Version = 0x00000001; // Version *Arena_L = 0x00000000; // Arena Low + *BI2 = 0x817E5480; // BI2 *Bus_Speed = 0x0E7BE2C0; // Console Bus Speed *CPU_Speed = 0x2B73A840; // Console CPU Speed *Assembler = 0x38A00040; // Assembler diff --git a/resources/wiiflow_game_booter/source/main.cpp b/resources/wiiflow_game_booter/source/main.cpp index d3e76b05..1743c3b5 100644 --- a/resources/wiiflow_game_booter/source/main.cpp +++ b/resources/wiiflow_game_booter/source/main.cpp @@ -97,6 +97,8 @@ int main() Hermes_shadow_mload(); } prog(20); + /* Clear Disc ID */ + memset((u8*)Disc_ID, 0, 32); Disc_Open(normalCFG.GameBootType);// sets Disc_ID u32 offset = 0; Disc_FindPartition(&offset); @@ -121,7 +123,10 @@ int main() gprintf("Entrypoint: %08x, Requested Game IOS: %i\n", AppEntrypoint, GameIOS); setprog(320); - /* Error 002 Fix (thanks WiiPower and uLoader) */ + /* Set Disc ID for WiiRD - must be set after ocarina stuff is done */ + memcpy((void*)0x80001800, (void*)Disc_ID, 8); + + /* Error 002 Fix (thanks WiiPower and uLoader) */ *Current_IOS = (GameIOS << 16) | 0xffff; if(!isForwarder) *Apploader_IOS = (GameIOS << 16) | 0xffff; diff --git a/source/defines.h b/source/defines.h index de43190b..77a89ed1 100644 --- a/source/defines.h +++ b/source/defines.h @@ -1,6 +1,6 @@ #define APP_NAME "WiiFlow WFL" -#define APP_VERSION "5.5.2 beta 1" +#define APP_VERSION "5.5.2" #define APP_DATA_DIR "wiiflow" #define APPS_DIR "apps/wiiflow" diff --git a/source/gui/texture.cpp b/source/gui/texture.cpp index 12b18363..dd4d4627 100644 --- a/source/gui/texture.cpp +++ b/source/gui/texture.cpp @@ -456,15 +456,17 @@ TexErr STexture::fromPNG(TexData &dest, const u8 *buffer, u8 f, u32 minMipSize, DCFlushRange(tmpData2, Size2); Cleanup(dest); } - tmpData2 = _genMipMaps(tmpData2, imgProp.imgWidth, imgProp.imgHeight, maxLODTmp, baseWidth, baseHeight); - if(tmpData2 == NULL) + u8 *tmpData3 = _genMipMaps(tmpData2, imgProp.imgWidth, imgProp.imgHeight, maxLODTmp, baseWidth, baseHeight); + if(tmpData3 == NULL) { Cleanup(dest); + MEM2_free(tmpData2); return TE_NOMEM; } + MEM2_free(tmpData2); u32 nWidth = newWidth; u32 nHeight = newHeight; - u8 *pSrc = tmpData2; + u8 *pSrc = tmpData3; if(minLODTmp > 0) pSrc += fixGX_GetTexBufferSize(baseWidth, baseHeight, f, minLODTmp > 1 ? GX_TRUE : GX_FALSE, minLODTmp - 1); dest.dataSize = fixGX_GetTexBufferSize(newWidth, newHeight, f, GX_TRUE, maxLODTmp - minLODTmp); @@ -472,7 +474,8 @@ TexErr STexture::fromPNG(TexData &dest, const u8 *buffer, u8 f, u32 minMipSize, if(dest.data == NULL) { Cleanup(dest); - MEM2_free(tmpData2); + MEM2_free(tmpData3); + //MEM2_free(tmpData2); return TE_NOMEM; } memset(dest.data, 0, dest.dataSize); @@ -496,7 +499,7 @@ TexErr STexture::fromPNG(TexData &dest, const u8 *buffer, u8 f, u32 minMipSize, nWidth >>= 1; nHeight >>= 1; } - MEM2_free(tmpData2); + MEM2_free(tmpData3); dest.maxLOD = maxLODTmp - minLODTmp; dest.format = f; dest.width = newWidth; diff --git a/source/menu/menu.cpp b/source/menu/menu.cpp index 216f0a7c..4735eb9f 100644 --- a/source/menu/menu.cpp +++ b/source/menu/menu.cpp @@ -360,7 +360,8 @@ bool CMenu::init(bool usb_mounted) m_cfg.setInt(WII_DOMAIN, "savepartition", savesPart); } gprintf("savesnand = %s:/%s/%s\n", DeviceName[savesPart], emu_nands_dir, savesNand.c_str()); - _FullNandCheck(); + m_cfg.getInt(CHANNEL_DOMAIN, "emulation", 0);// partial by default + m_cfg.getInt(WII_DOMAIN, "save_emulation", 0);// off by default } /* misc. setup */ diff --git a/source/menu/menu_game_boot.cpp b/source/menu/menu_game_boot.cpp index c3da58b0..d8c49eef 100644 --- a/source/menu/menu_game_boot.cpp +++ b/source/menu/menu_game_boot.cpp @@ -1240,7 +1240,7 @@ void CMenu::_launchWii(dir_discHdr *hdr, bool dvd, bool disc_cfg) } } - /* no more error msgs - clear btns and snds */ + /* no more error msgs - clear btns and snds and stop wait animation */ cleanup(); /* handle frag_list for .wbfs files only */ diff --git a/source/menu/menu_nandemu.cpp b/source/menu/menu_nandemu.cpp index d6dc2a8e..da94990e 100644 --- a/source/menu/menu_nandemu.cpp +++ b/source/menu/menu_nandemu.cpp @@ -180,9 +180,9 @@ void CMenu::_FullNandCheck(void) { int emulate_mode; if(i == EMU_NAND) - emulate_mode = m_cfg.getInt(CHANNEL_DOMAIN, "emulation", 1);// full by default + emulate_mode = m_cfg.getInt(CHANNEL_DOMAIN, "emulation");// partial by default else - emulate_mode = m_cfg.getInt(WII_DOMAIN, "save_emulation", 2);// full by default + emulate_mode = m_cfg.getInt(WII_DOMAIN, "save_emulation");// off by default if((i == EMU_NAND && emulate_mode == 1) || (i == SAVES_NAND && emulate_mode == 2))//full { int emuPart = _FindEmuPart(i, false); @@ -197,11 +197,12 @@ void CMenu::_FullNandCheck(void) char testpath[MAX_FAT_PATH + 42]; - //check config files + //check config file - time and date, video settings, etc... snprintf(testpath, sizeof(testpath), "%s/shared2/sys/SYSCONF", basepath); if(!fsop_FileExist(testpath)) need_config = true; + // system info like model and serial numbers, not real important. modmii creates this file. snprintf(testpath, sizeof(testpath), "%s/title/00000001/00000002/data/setting.txt", basepath); if(!fsop_FileExist(testpath)) need_config = true;