external_booter.bin fixes that i missed when i changed the booter in v5.5.0 beta 12 commit 9f7da43

- added missing *BI2 = 0x817E5480; to  Disc_SetLowMem() for wii games.
- added missing memcpy((void*)0x80001800, (void*)Disc_ID, 8); needed for debugger and ocarina cheats engine.

- fixed default setting for savegame emulation back to OFF (0). v5.5.0 and v5.5.1 new clean install's would set it to FULL (2) which caused wii games to crash on boot up. if you have this issue you can simply go to main settings>nand emulation settings and set it to OFF.
- changes to STexture::fromPNG() to hopefully clear up the out of mem issue when downloading and converting the cover png to a wfc cache file.
- v5.5.2
This commit is contained in:
Fledge68 2022-02-07 07:19:27 -06:00
parent 8a5a0fd438
commit 6f6b3ec2d8
9 changed files with 23 additions and 12 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 MiB

After

Width:  |  Height:  |  Size: 4.4 MiB

View File

@ -35,6 +35,7 @@ void Disc_SetLowMem(void)
*Sys_Magic = 0x0D15EA5E; // Standard Boot Code *Sys_Magic = 0x0D15EA5E; // Standard Boot Code
*Sys_Version = 0x00000001; // Version *Sys_Version = 0x00000001; // Version
*Arena_L = 0x00000000; // Arena Low *Arena_L = 0x00000000; // Arena Low
*BI2 = 0x817E5480; // BI2
*Bus_Speed = 0x0E7BE2C0; // Console Bus Speed *Bus_Speed = 0x0E7BE2C0; // Console Bus Speed
*CPU_Speed = 0x2B73A840; // Console CPU Speed *CPU_Speed = 0x2B73A840; // Console CPU Speed
*Assembler = 0x38A00040; // Assembler *Assembler = 0x38A00040; // Assembler

View File

@ -97,6 +97,8 @@ int main()
Hermes_shadow_mload(); Hermes_shadow_mload();
} }
prog(20); prog(20);
/* Clear Disc ID */
memset((u8*)Disc_ID, 0, 32);
Disc_Open(normalCFG.GameBootType);// sets Disc_ID Disc_Open(normalCFG.GameBootType);// sets Disc_ID
u32 offset = 0; u32 offset = 0;
Disc_FindPartition(&offset); Disc_FindPartition(&offset);
@ -121,6 +123,9 @@ int main()
gprintf("Entrypoint: %08x, Requested Game IOS: %i\n", AppEntrypoint, GameIOS); gprintf("Entrypoint: %08x, Requested Game IOS: %i\n", AppEntrypoint, GameIOS);
setprog(320); setprog(320);
/* 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) */ /* Error 002 Fix (thanks WiiPower and uLoader) */
*Current_IOS = (GameIOS << 16) | 0xffff; *Current_IOS = (GameIOS << 16) | 0xffff;
if(!isForwarder) if(!isForwarder)

View File

@ -1,6 +1,6 @@
#define APP_NAME "WiiFlow WFL" #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 APP_DATA_DIR "wiiflow"
#define APPS_DIR "apps/wiiflow" #define APPS_DIR "apps/wiiflow"

View File

@ -456,15 +456,17 @@ TexErr STexture::fromPNG(TexData &dest, const u8 *buffer, u8 f, u32 minMipSize,
DCFlushRange(tmpData2, Size2); DCFlushRange(tmpData2, Size2);
Cleanup(dest); Cleanup(dest);
} }
tmpData2 = _genMipMaps(tmpData2, imgProp.imgWidth, imgProp.imgHeight, maxLODTmp, baseWidth, baseHeight); u8 *tmpData3 = _genMipMaps(tmpData2, imgProp.imgWidth, imgProp.imgHeight, maxLODTmp, baseWidth, baseHeight);
if(tmpData2 == NULL) if(tmpData3 == NULL)
{ {
Cleanup(dest); Cleanup(dest);
MEM2_free(tmpData2);
return TE_NOMEM; return TE_NOMEM;
} }
MEM2_free(tmpData2);
u32 nWidth = newWidth; u32 nWidth = newWidth;
u32 nHeight = newHeight; u32 nHeight = newHeight;
u8 *pSrc = tmpData2; u8 *pSrc = tmpData3;
if(minLODTmp > 0) if(minLODTmp > 0)
pSrc += fixGX_GetTexBufferSize(baseWidth, baseHeight, f, minLODTmp > 1 ? GX_TRUE : GX_FALSE, minLODTmp - 1); 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); 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) if(dest.data == NULL)
{ {
Cleanup(dest); Cleanup(dest);
MEM2_free(tmpData2); MEM2_free(tmpData3);
//MEM2_free(tmpData2);
return TE_NOMEM; return TE_NOMEM;
} }
memset(dest.data, 0, dest.dataSize); memset(dest.data, 0, dest.dataSize);
@ -496,7 +499,7 @@ TexErr STexture::fromPNG(TexData &dest, const u8 *buffer, u8 f, u32 minMipSize,
nWidth >>= 1; nWidth >>= 1;
nHeight >>= 1; nHeight >>= 1;
} }
MEM2_free(tmpData2); MEM2_free(tmpData3);
dest.maxLOD = maxLODTmp - minLODTmp; dest.maxLOD = maxLODTmp - minLODTmp;
dest.format = f; dest.format = f;
dest.width = newWidth; dest.width = newWidth;

View File

@ -360,7 +360,8 @@ bool CMenu::init(bool usb_mounted)
m_cfg.setInt(WII_DOMAIN, "savepartition", savesPart); m_cfg.setInt(WII_DOMAIN, "savepartition", savesPart);
} }
gprintf("savesnand = %s:/%s/%s\n", DeviceName[savesPart], emu_nands_dir, savesNand.c_str()); 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 */ /* misc. setup */

View File

@ -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(); cleanup();
/* handle frag_list for .wbfs files only */ /* handle frag_list for .wbfs files only */

View File

@ -180,9 +180,9 @@ void CMenu::_FullNandCheck(void)
{ {
int emulate_mode; int emulate_mode;
if(i == EMU_NAND) 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 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 if((i == EMU_NAND && emulate_mode == 1) || (i == SAVES_NAND && emulate_mode == 2))//full
{ {
int emuPart = _FindEmuPart(i, false); int emuPart = _FindEmuPart(i, false);
@ -197,11 +197,12 @@ void CMenu::_FullNandCheck(void)
char testpath[MAX_FAT_PATH + 42]; 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); snprintf(testpath, sizeof(testpath), "%s/shared2/sys/SYSCONF", basepath);
if(!fsop_FileExist(testpath)) if(!fsop_FileExist(testpath))
need_config = true; 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); snprintf(testpath, sizeof(testpath), "%s/title/00000001/00000002/data/setting.txt", basepath);
if(!fsop_FileExist(testpath)) if(!fsop_FileExist(testpath))
need_config = true; need_config = true;