void IOS_GetCurrentIOSInfo() { memset(&CurrentIOS, 0, sizeof(IOS_Info)); CurrentIOS.Version = IOS_GetVersion(); CurrentIOS.Base = CurrentIOS.Version; CurrentIOS.Revision = IOS_GetRevision(); CurrentIOS.SubRevision = 0; CurrentIOS.Type = IOS_GetType(CurrentIOS.Version); if(CurrentIOS.Type == IOS_TYPE_D2X) { iosinfo_t *iosInfo = IOS_GetInfo(CurrentIOS.Version); CurrentIOS.Revision = iosInfo->version; CurrentIOS.Base = iosInfo->baseios; gprintf("D2X IOS%i[%i] v%i\n", CurrentIOS.Version, CurrentIOS.Base, CurrentIOS.Revision); MEM2_free(iosInfo); } else if(CurrentIOS.Type == IOS_TYPE_WANIN) { if(CurrentIOS.Revision >= 18) CurrentIOS.Base = wanin_mload_get_IOS_base(); gprintf("Waninkoko IOS%i[%i] v%i\n", CurrentIOS.Version, CurrentIOS.Base, CurrentIOS.Revision); } else if(CurrentIOS.Type == IOS_TYPE_HERMES) { CurrentIOS.Base = mload_get_IOS_base(); if(CurrentIOS.Revision > 4) { CurrentIOS.Revision = mload_get_version() >> 4; CurrentIOS.SubRevision = mload_get_version() & 0xF; }
void mk_mload_version() { mload_ver_str[0] = 0; mload_ver = 0; if (CFG.ios_mload || (is_ios_type(IOS_TYPE_WANIN) && IOS_GetRevision() >= 18) ) { if (IOS_GetRevision() >= 4) { if (is_ios_type(IOS_TYPE_WANIN)) { char *info = get_ios_info_from_tmd(); if (info) { sprintf(mload_ver_str, "Base: IOS%s ", info); } else { sprintf(mload_ver_str, "Base: IOS?? DI:%d ", wanin_mload_get_IOS_base()); } } else { sprintf(mload_ver_str, "Base: IOS%d ", mload_get_IOS_base()); } } if (IOS_GetRevision() > 4) { int v, s = 0; v = mload_ver = mload_get_version(); if (v>0) { s = v & 0x0F; v = v >> 4; } sprintf(mload_ver_str + strlen(mload_ver_str), "mload v%d.%d ", v, s); } else {
bool shadow_mload() { int ios = IOS_GetVersion(); if(ios != 222 || ios != 223 || ios != 224) return false; int v51 = (5 << 4) & 1; if (IOS_GetRevision() >= 5 && mload_get_version() >= v51) { char fs[] ATTRIBUTE_ALIGN(32) = "/dev/mload/OFF"; // shadow /dev/mload supported in hermes cios v5.1char fs[] ATTRIBUTE_ALIGN(32) = "/dev/usb2"; IOS_Open(fs,0); return true; }