mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2025-01-11 19:39:09 +01:00
- minor coding changes for creating game lists. nothing new for end users.
This commit is contained in:
parent
6152edff6c
commit
65a0d1bc59
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 3.4 MiB After Width: | Height: | Size: 3.4 MiB |
@ -71,6 +71,8 @@ static void AddToList(const dir_discHdr *element)
|
|||||||
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* used for adding wii games to the list */
|
||||||
static void AddISO(const char *GameID, const char *GameTitle, const char *GamePath,
|
static void AddISO(const char *GameID, const char *GameTitle, const char *GamePath,
|
||||||
u32 GameColor, u8 Type)
|
u32 GameColor, u8 Type)
|
||||||
{
|
{
|
||||||
@ -107,6 +109,7 @@ static void AddISO(const char *GameID, const char *GameTitle, const char *GamePa
|
|||||||
m_cacheList.push_back(ListElement);
|
m_cacheList.push_back(ListElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* read wbfs partition to add wii games to the list */
|
||||||
static void Create_Wii_WBFS_List(wbfs_t *handle)
|
static void Create_Wii_WBFS_List(wbfs_t *handle)
|
||||||
{
|
{
|
||||||
for(u32 i = 0; i < wbfs_count_discs(handle); i++)
|
for(u32 i = 0; i < wbfs_count_discs(handle); i++)
|
||||||
@ -119,7 +122,8 @@ static void Create_Wii_WBFS_List(wbfs_t *handle)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Create_Wii_EXT_List(char *FullPath)
|
/* add wii game iso(ntfs) or wbfs(fat) to the list. wbf1 and wbf2 are skipped and not added. */
|
||||||
|
static void Add_Wii_Game(char *FullPath)
|
||||||
{
|
{
|
||||||
FILE *fp = fopen(FullPath, "rb");
|
FILE *fp = fopen(FullPath, "rb");
|
||||||
if(fp)
|
if(fp)
|
||||||
@ -133,15 +137,16 @@ static void Create_Wii_EXT_List(char *FullPath)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* add gamecube game to the list */
|
||||||
u8 gc_disc[1];
|
u8 gc_disc[1];
|
||||||
const char *FST_APPEND = "sys/boot.bin";
|
const char *FST_APPEND = "sys/boot.bin";
|
||||||
const u8 FST_APPEND_SIZE = strlen(FST_APPEND);
|
const u8 FST_APPEND_SIZE = strlen(FST_APPEND);
|
||||||
static const u8 CISO_MAGIC[8] = {'C','I','S','O',0x00,0x00,0x20,0x00};
|
static const u8 CISO_MAGIC[8] = {'C','I','S','O',0x00,0x00,0x20,0x00};
|
||||||
static void Create_GC_List(char *FullPath)
|
static void Add_GameCube_Game(char *FullPath)
|
||||||
{
|
{
|
||||||
u32 hdr_offset = 0x00;
|
u32 hdr_offset = 0x00;
|
||||||
FILE *fp = fopen(FullPath, "rb");
|
FILE *fp = fopen(FullPath, "rb");
|
||||||
if(!fp && strstr(FullPath, "/root") != NULL) //fst folder
|
if(!fp && strstr(FullPath, "/root") != NULL) //fst folder (extracted game)
|
||||||
{
|
{
|
||||||
*(strstr(FullPath, "/root") + 1) = '\0';
|
*(strstr(FullPath, "/root") + 1) = '\0';
|
||||||
if(strlen(FullPath) + FST_APPEND_SIZE < MAX_MSG_SIZE) strcat(FullPath, FST_APPEND);
|
if(strlen(FullPath) + FST_APPEND_SIZE < MAX_MSG_SIZE) strcat(FullPath, FST_APPEND);
|
||||||
@ -174,27 +179,28 @@ static void Create_GC_List(char *FullPath)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *FolderTitle = NULL;
|
/* add plugin rom, song, or video to the list */
|
||||||
static void Create_Plugin_List(char *FullPath)
|
const char *RomTitle = NULL;
|
||||||
|
static void Add_Plugin_Game(char *FullPath)
|
||||||
{
|
{
|
||||||
memset((void*)&ListElement, 0, sizeof(dir_discHdr));
|
memset((void*)&ListElement, 0, sizeof(dir_discHdr));
|
||||||
|
|
||||||
strncpy(ListElement.path, FullPath, sizeof(ListElement.path) - 1);
|
strncpy(ListElement.path, FullPath, sizeof(ListElement.path) - 1);
|
||||||
memcpy(ListElement.id, "PLUGIN", 6);
|
memcpy(ListElement.id, "PLUGIN", 6);
|
||||||
|
|
||||||
FolderTitle = strrchr(FullPath, '/') + 1;
|
RomTitle = strrchr(FullPath, '/') + 1;
|
||||||
*strrchr(FolderTitle, '.') = '\0';
|
*strrchr(RomTitle, '.') = '\0';
|
||||||
|
|
||||||
char PluginMagicWord[9];
|
char PluginMagicWord[9];
|
||||||
memset(PluginMagicWord, 0, sizeof(PluginMagicWord));
|
memset(PluginMagicWord, 0, sizeof(PluginMagicWord));
|
||||||
strncpy(PluginMagicWord, fmt("%08x", m_cacheList.Magic), 8);
|
strncpy(PluginMagicWord, fmt("%08x", m_cacheList.Magic), 8);
|
||||||
char CustomTitle[64];
|
char CustomTitle[64];
|
||||||
memset(CustomTitle, 0, sizeof(CustomTitle));
|
memset(CustomTitle, 0, sizeof(CustomTitle));
|
||||||
strncpy(CustomTitle, CustomTitles.getString(PluginMagicWord, FolderTitle).c_str(), 63);
|
strncpy(CustomTitle, CustomTitles.getString(PluginMagicWord, RomTitle).c_str(), 63);
|
||||||
if(strlen(CustomTitle) > 0)
|
if(strlen(CustomTitle) > 0)
|
||||||
mbstowcs(ListElement.title, CustomTitle, 63);
|
mbstowcs(ListElement.title, CustomTitle, 63);
|
||||||
else
|
else
|
||||||
mbstowcs(ListElement.title, FolderTitle, 63);
|
mbstowcs(ListElement.title, RomTitle, 63);
|
||||||
Asciify(ListElement.title);
|
Asciify(ListElement.title);
|
||||||
|
|
||||||
ListElement.settings[0] = m_cacheList.Magic; //Plugin magic
|
ListElement.settings[0] = m_cacheList.Magic; //Plugin magic
|
||||||
@ -203,7 +209,8 @@ static void Create_Plugin_List(char *FullPath)
|
|||||||
m_cacheList.push_back(ListElement);
|
m_cacheList.push_back(ListElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Create_Homebrew_List(char *FullPath)
|
/* add homebrew boot.dol to the list */
|
||||||
|
static void Add_Homebrew_Dol(char *FullPath)
|
||||||
{
|
{
|
||||||
if(strcasestr(FullPath, "boot.") == NULL)
|
if(strcasestr(FullPath, "boot.") == NULL)
|
||||||
return;
|
return;
|
||||||
@ -226,6 +233,7 @@ static void Create_Homebrew_List(char *FullPath)
|
|||||||
m_cacheList.push_back(ListElement);
|
m_cacheList.push_back(ListElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* create channel list from nand or emu nand */
|
||||||
Channel *chan = NULL;
|
Channel *chan = NULL;
|
||||||
static void Create_Channel_List(bool realNAND)
|
static void Create_Channel_List(bool realNAND)
|
||||||
{
|
{
|
||||||
@ -292,7 +300,7 @@ void ListGenerator::CreateList(u32 Flow, u32 Device, const string& Path, const v
|
|||||||
if(DeviceHandle.GetFSType(Device) == PART_FS_WBFS)
|
if(DeviceHandle.GetFSType(Device) == PART_FS_WBFS)
|
||||||
Create_Wii_WBFS_List(DeviceHandle.GetWbfsHandle(Device));
|
Create_Wii_WBFS_List(DeviceHandle.GetWbfsHandle(Device));
|
||||||
else
|
else
|
||||||
GetFiles(Path.c_str(), FileTypes, Create_Wii_EXT_List, false);
|
GetFiles(Path.c_str(), FileTypes, Add_Wii_Game, false);
|
||||||
}
|
}
|
||||||
else if(Flow == COVERFLOW_CHANNEL)
|
else if(Flow == COVERFLOW_CHANNEL)
|
||||||
{
|
{
|
||||||
@ -305,11 +313,11 @@ void ListGenerator::CreateList(u32 Flow, u32 Device, const string& Path, const v
|
|||||||
else if(DeviceHandle.GetFSType(Device) != PART_FS_WBFS)
|
else if(DeviceHandle.GetFSType(Device) != PART_FS_WBFS)
|
||||||
{
|
{
|
||||||
if(Flow == COVERFLOW_GAMECUBE)
|
if(Flow == COVERFLOW_GAMECUBE)
|
||||||
GetFiles(Path.c_str(), FileTypes, Create_GC_List, true);//the only one that looks for a folder (/root)
|
GetFiles(Path.c_str(), FileTypes, Add_GameCube_Game, true);// true means to look for a folder (/root)
|
||||||
else if(Flow == COVERFLOW_PLUGIN)
|
else if(Flow == COVERFLOW_PLUGIN)
|
||||||
GetFiles(Path.c_str(), FileTypes, Create_Plugin_List, false, 30);//wow 30 subfolders! really?
|
GetFiles(Path.c_str(), FileTypes, Add_Plugin_Game, false, 30);//wow 30 subfolders! really?
|
||||||
else if(Flow == COVERFLOW_HOMEBREW)
|
else if(Flow == COVERFLOW_HOMEBREW)
|
||||||
GetFiles(Path.c_str(), FileTypes, Create_Homebrew_List, false);
|
GetFiles(Path.c_str(), FileTypes, Add_Homebrew_Dol, false);
|
||||||
}
|
}
|
||||||
CloseConfigs();
|
CloseConfigs();
|
||||||
if(!this->empty() && !DBName.empty()) /* Write a new Cache */
|
if(!this->empty() && !DBName.empty()) /* Write a new Cache */
|
||||||
@ -370,6 +378,7 @@ void GetFiles(const char *Path, const vector<string>& FileTypes,
|
|||||||
SubPaths.clear();
|
SubPaths.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* create sourceflow list from current source_menu.ini */
|
||||||
void ListGenerator::createSFList(u8 maxBtns, Config &m_sourceMenuCfg, const string& sourceDir)
|
void ListGenerator::createSFList(u8 maxBtns, Config &m_sourceMenuCfg, const string& sourceDir)
|
||||||
{
|
{
|
||||||
Clear();
|
Clear();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user