diff --git a/hbc/meta.xml b/hbc/meta.xml
index 38ead13..8d895ec 100644
--- a/hbc/meta.xml
+++ b/hbc/meta.xml
@@ -3,7 +3,8 @@
Snes9x GX
Tantric
4.2.3
- 20100722
+ 20100814
Super Nintendo Emulator
A Super Nintendo Emulator for Wii
+
diff --git a/readme.txt b/readme.txt
index 34c8ff5..59511ba 100644
--- a/readme.txt
+++ b/readme.txt
@@ -43,6 +43,12 @@ Wii homebrew is WiiBrew (www.wiibrew.org).
| UPDATE HISTORY |
•˜———–—––-- - —————————––––– ———–—––-- - —————————––––– ———–—––-- - ————————•
+[4.2.4 - August 14, 2010]
+
+* IOS 202 support removed
+* USB 2.0 support via IOS 58 added - requires that IOS58 be pre-installed
+* DVD support via AHBPROT - requires latest HBC
+
[4.2.3 - July 22, 2010]
* Fixed broken auto-update
diff --git a/source/preferences.cpp b/source/preferences.cpp
index 048ffb3..553d4a1 100644
--- a/source/preferences.cpp
+++ b/source/preferences.cpp
@@ -503,14 +503,21 @@ SavePrefs (bool silent)
return false;
sprintf(filepath, "%s%s", pathPrefix[device], APPFOLDER);
-
- if (!diropen(filepath))
+ DIR_ITER *dir = diropen(filepath);
+ if (!dir)
{
- mkdir(filepath, 0777);
+ if(mkdir(filepath, 0777) != 0)
+ return false;
sprintf(filepath, "%s%s/roms", pathPrefix[device], APPFOLDER);
- mkdir(filepath, 0777);
+ if(mkdir(filepath, 0777) != 0)
+ return false;
sprintf(filepath, "%s%s/saves", pathPrefix[device], APPFOLDER);
- mkdir(filepath, 0777);
+ if(mkdir(filepath, 0777) != 0)
+ return false;
+ }
+ else
+ {
+ dirclose(dir);
}
sprintf(filepath, "%s%s/%s", pathPrefix[device], APPFOLDER, PREF_FILE_NAME);
sprintf(prefpath, "%s%s", pathPrefix[device], APPFOLDER);
diff --git a/source/snes9xgx.cpp b/source/snes9xgx.cpp
index b12bc5f..fb2c6f4 100644
--- a/source/snes9xgx.cpp
+++ b/source/snes9xgx.cpp
@@ -214,51 +214,12 @@ void setFrameTimerMethod()
* IOS Check
***************************************************************************/
#ifdef HW_RVL
-static bool FindIOS(u32 ios)
-{
- s32 ret;
- u32 n;
-
- u64 *titles = NULL;
- u32 num_titles=0;
-
- ret = ES_GetNumTitles(&num_titles);
- if (ret < 0)
- return false;
-
- if(num_titles < 1)
- return false;
-
- titles = (u64 *)memalign(32, num_titles * sizeof(u64) + 32);
- if (!titles)
- return false;
-
- ret = ES_GetTitles(titles, num_titles);
- if (ret < 0)
- {
- free(titles);
- return false;
- }
-
- for(n=0; n < num_titles; n++)
- {
- if((titles[n] & 0xFFFFFFFF)==ios)
- {
- free(titles);
- return true;
- }
- }
- free(titles);
- return false;
-}
-
bool SaneIOS()
{
bool res = false;
u32 num_titles=0;
u32 tmd_size;
u32 ios = IOS_GetVersion();
- u32 tmdbuffer[MAX_SIGNED_TMD_SIZE] ATTRIBUTE_ALIGN(32);
if(ios > 200)
return false;
@@ -270,12 +231,23 @@ bool SaneIOS()
return false;
u64 *titles = (u64 *)memalign(32, num_titles * sizeof(u64) + 32);
+
+ if(!titles)
+ return false;
if (ES_GetTitles(titles, num_titles) < 0)
{
free(titles);
return false;
}
+
+ u32 *tmdbuffer = (u32 *)memalign(32, MAX_SIGNED_TMD_SIZE);
+
+ if(!tmdbuffer)
+ {
+ free(titles);
+ return false;
+ }
for(u32 n=0; n < num_titles; n++)
{
@@ -297,6 +269,7 @@ bool SaneIOS()
break;
}
}
+ free(tmdbuffer);
free(titles);
return res;
}
@@ -368,14 +341,11 @@ main(int argc, char *argv[])
#ifdef HW_RVL
// only reload IOS if AHBPROT is not enabled
u32 version = IOS_GetVersion();
+ s32 preferred = IOS_GetPreferredVersion();
+
+ if(version != 58 && preferred > 0 && version != (u32)preferred && __di_check_ahbprot() != 1)
+ IOS_ReloadIOS(preferred);
- if(version != 58 && __di_check_ahbprot() != 1)
- {
- if(FindIOS(58))
- IOS_ReloadIOS(58);
- else if((version < 61 || version >= 200) && FindIOS(61))
- IOS_ReloadIOS(61);
- }
DI_Init();
#endif
diff --git a/source/snes9xgx.h b/source/snes9xgx.h
index c34dab2..096f93e 100644
--- a/source/snes9xgx.h
+++ b/source/snes9xgx.h
@@ -20,7 +20,7 @@
#include "filelist.h"
#define APPNAME "Snes9x GX"
-#define APPVERSION "4.2.3"
+#define APPVERSION "4.2.4"
#define APPFOLDER "snes9xgx"
#define PREF_FILE_NAME "settings.xml"
diff --git a/update.xml b/update.xml
index fb028c7..00c9819 100644
--- a/update.xml
+++ b/update.xml
@@ -1,4 +1,4 @@
-
-
+
+