mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
-added possibility to use own banner sounds for plugins, the
names just need to be added to the ini, see for example here: http://www.mediafire.com/?o1oxfw8c7icp753
This commit is contained in:
parent
b4ca1536b5
commit
fc1c81d601
2
Makefile
2
Makefile
@ -33,6 +33,7 @@ SOURCES := source \
|
|||||||
source/menu \
|
source/menu \
|
||||||
source/music \
|
source/music \
|
||||||
source/network \
|
source/network \
|
||||||
|
source/plugin \
|
||||||
source/unzip \
|
source/unzip \
|
||||||
source/xml \
|
source/xml \
|
||||||
source/wstringEx \
|
source/wstringEx \
|
||||||
@ -57,6 +58,7 @@ INCLUDES := source \
|
|||||||
source/menu \
|
source/menu \
|
||||||
source/music \
|
source/music \
|
||||||
source/network \
|
source/network \
|
||||||
|
source/plugin \
|
||||||
source/unzip \
|
source/unzip \
|
||||||
source/wstringEx \
|
source/wstringEx \
|
||||||
source/xml
|
source/xml
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -336,6 +336,8 @@ void CMenu::init(void)
|
|||||||
m_themeDataDir = sfmt("%s/%s", m_themeDir.c_str(), themeName.c_str());
|
m_themeDataDir = sfmt("%s/%s", m_themeDir.c_str(), themeName.c_str());
|
||||||
m_theme.load(sfmt("%s.ini", m_themeDataDir.c_str()).c_str());
|
m_theme.load(sfmt("%s.ini", m_themeDataDir.c_str()).c_str());
|
||||||
|
|
||||||
|
m_plugin.init(m_pluginsDir);
|
||||||
|
|
||||||
u8 defaultMenuLanguage = 7; //English
|
u8 defaultMenuLanguage = 7; //English
|
||||||
switch (CONF_GetLanguage())
|
switch (CONF_GetLanguage())
|
||||||
{
|
{
|
||||||
@ -458,7 +460,9 @@ void CMenu::cleanup(bool ios_reload)
|
|||||||
{
|
{
|
||||||
SMART_FREE(m_cameraSound);
|
SMART_FREE(m_cameraSound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_plugin.Cleanup();
|
||||||
|
|
||||||
MusicPlayer::DestroyInstance();
|
MusicPlayer::DestroyInstance();
|
||||||
SoundHandler::DestroyInstance();
|
SoundHandler::DestroyInstance();
|
||||||
soundDeinit();
|
soundDeinit();
|
||||||
@ -1954,7 +1958,6 @@ bool CMenu::_loadEmuList()
|
|||||||
DIR *pdir;
|
DIR *pdir;
|
||||||
struct dirent *pent;
|
struct dirent *pent;
|
||||||
|
|
||||||
m_plugin.load(fmt("%s/plugins.ini", m_pluginsDir.c_str()));
|
|
||||||
pdir = opendir(m_pluginsDir.c_str());
|
pdir = opendir(m_pluginsDir.c_str());
|
||||||
|
|
||||||
safe_vector<dir_discHdr> emuList;
|
safe_vector<dir_discHdr> emuList;
|
||||||
@ -1973,17 +1976,18 @@ bool CMenu::_loadEmuList()
|
|||||||
m_gameList.Load(sfmt("%s:/%s", DeviceName[currentPartition], m_gameList.m_plugin.getString("PLUGIN","romDir","").c_str()), m_gameList.m_plugin.getString("PLUGIN","fileTypes","").c_str(), m_cfg.getString("EMULATOR", "lastlanguage", "EN").c_str());
|
m_gameList.Load(sfmt("%s:/%s", DeviceName[currentPartition], m_gameList.m_plugin.getString("PLUGIN","romDir","").c_str()), m_gameList.m_plugin.getString("PLUGIN","fileTypes","").c_str(), m_cfg.getString("EMULATOR", "lastlanguage", "EN").c_str());
|
||||||
for(safe_vector<dir_discHdr>::iterator tmp_itr = m_gameList.begin(); tmp_itr != m_gameList.end(); tmp_itr++)
|
for(safe_vector<dir_discHdr>::iterator tmp_itr = m_gameList.begin(); tmp_itr != m_gameList.end(); tmp_itr++)
|
||||||
emuList.push_back(*tmp_itr);
|
emuList.push_back(*tmp_itr);
|
||||||
m_plugin.setString("GENERAL",m_gameList.m_plugin.getString("PLUGIN","magic","").c_str(),m_gameList.m_plugin.getString("PLUGIN","dolFile","").c_str());
|
m_plugin.AddPlugin(m_gameList.m_plugin);
|
||||||
}
|
}
|
||||||
m_gameList.m_plugin.unload();
|
m_gameList.m_plugin.unload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(pdir);
|
closedir(pdir);
|
||||||
m_plugin.save(true);
|
|
||||||
m_gameList.clear();
|
m_gameList.clear();
|
||||||
for(safe_vector<dir_discHdr>::iterator tmp_itr = emuList.begin(); tmp_itr != emuList.end(); tmp_itr++)
|
for(safe_vector<dir_discHdr>::iterator tmp_itr = emuList.begin(); tmp_itr != emuList.end(); tmp_itr++)
|
||||||
m_gameList.push_back(*tmp_itr);
|
m_gameList.push_back(*tmp_itr);
|
||||||
emuList.clear();
|
emuList.clear();
|
||||||
|
//If we return to the coverflow before wiiflow quit we dont need to reload plugins
|
||||||
|
m_plugin.EndAdd();
|
||||||
m_cfg.setString("EMULATOR", "lastlanguage", m_loc.getString(m_curLanguage, "gametdb_code", "EN"));
|
m_cfg.setString("EMULATOR", "lastlanguage", m_loc.getString(m_curLanguage, "gametdb_code", "EN"));
|
||||||
m_cfg.save();
|
m_cfg.save();
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#include "safe_vector.hpp"
|
#include "safe_vector.hpp"
|
||||||
#include "cachedlist.hpp"
|
#include "cachedlist.hpp"
|
||||||
|
#include "plugin/plugin.hpp"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "gui_sound.h"
|
#include "gui_sound.h"
|
||||||
@ -66,7 +67,7 @@ private:
|
|||||||
Config m_theme;
|
Config m_theme;
|
||||||
Config m_titles;
|
Config m_titles;
|
||||||
Config m_version;
|
Config m_version;
|
||||||
Config m_plugin;
|
Plugin m_plugin;
|
||||||
Channels m_channels;
|
Channels m_channels;
|
||||||
safe_vector<std::string> m_homebrewArgs;
|
safe_vector<std::string> m_homebrewArgs;
|
||||||
SmartBuf m_base_font;
|
SmartBuf m_base_font;
|
||||||
|
@ -52,15 +52,6 @@ extern const u8 deletes_png[];
|
|||||||
extern const u8 gc_ogg[];
|
extern const u8 gc_ogg[];
|
||||||
extern const u32 gc_ogg_size;
|
extern const u32 gc_ogg_size;
|
||||||
|
|
||||||
extern const u8 nes_ogg[];
|
|
||||||
extern const u32 nes_ogg_size;
|
|
||||||
|
|
||||||
extern const u8 snes_ogg[];
|
|
||||||
extern const u32 snes_ogg_size;
|
|
||||||
|
|
||||||
extern const u8 gba_ogg[];
|
|
||||||
extern const u32 gba_ogg_size;
|
|
||||||
|
|
||||||
extern u32 sector_size;
|
extern u32 sector_size;
|
||||||
extern int mainIOS;
|
extern int mainIOS;
|
||||||
static u64 sm_title_id[8] ATTRIBUTE_ALIGN(32);
|
static u64 sm_title_id[8] ATTRIBUTE_ALIGN(32);
|
||||||
@ -623,7 +614,8 @@ void CMenu::_directlaunch(const string &id)
|
|||||||
strncasecmp(DeviceHandler::Instance()->PathToFSName(path.c_str()), "WBFS", 4) == 0);
|
strncasecmp(DeviceHandler::Instance()->PathToFSName(path.c_str()), "WBFS", 4) == 0);
|
||||||
|
|
||||||
m_gameList.clear();
|
m_gameList.clear();
|
||||||
list.GetHeaders(pathlist, m_gameList, m_settingsDir, m_curLanguage, m_DMLgameDir, m_plugin);
|
Config nullCfg;
|
||||||
|
list.GetHeaders(pathlist, m_gameList, m_settingsDir, m_curLanguage, m_DMLgameDir, nullCfg);
|
||||||
if(m_gameList.size() > 0)
|
if(m_gameList.size() > 0)
|
||||||
{
|
{
|
||||||
gprintf("Game found on partition #%i\n", i);
|
gprintf("Game found on partition #%i\n", i);
|
||||||
@ -651,11 +643,7 @@ void CMenu::_launch(dir_discHdr *hdr)
|
|||||||
arguments.push_back(path);
|
arguments.push_back(path);
|
||||||
arguments.push_back(title);
|
arguments.push_back(title);
|
||||||
arguments.push_back(wiiflow_dol);
|
arguments.push_back(wiiflow_dol);
|
||||||
char magic[10];
|
_launchHomebrew(fmt("%s/%s", m_pluginsDir.c_str(), m_plugin.GetDolName(hdr->hdr.magic)), arguments);
|
||||||
snprintf(magic,sizeof(magic),"%08x",hdr->hdr.magic);
|
|
||||||
m_plugin.load(fmt("%s/plugins.ini", m_pluginsDir.c_str()));
|
|
||||||
_launchHomebrew(fmt("%s/%s", m_pluginsDir.c_str(), m_plugin.getString("GENERAL",magic,"").c_str()), arguments);
|
|
||||||
m_plugin.save(true);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if(hdr->hdr.gc_magic == 0xc2339f3d)
|
else if(hdr->hdr.gc_magic == 0xc2339f3d)
|
||||||
@ -1387,21 +1375,9 @@ void CMenu::_gameSoundThread(CMenu *m)
|
|||||||
m->m_gamesound_changed = true;
|
m->m_gamesound_changed = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if(m->m_cf.getHdr()->hdr.magic == 0x46434555)
|
else if(m->m_cf.getHdr()->hdr.gc_magic == 0x4c4f4c4f)
|
||||||
{
|
{
|
||||||
m->m_gameSound.Load(nes_ogg, nes_ogg_size, false);
|
m->m_gameSound.Load(m->m_plugin.GetBannerSound(m->m_cf.getHdr()->hdr.magic), m->m_plugin.GetBannerSoundSize(), false);
|
||||||
m->m_gamesound_changed = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if(m->m_cf.getHdr()->hdr.magic == 0x534e4553)
|
|
||||||
{
|
|
||||||
m->m_gameSound.Load(snes_ogg, snes_ogg_size, false);
|
|
||||||
m->m_gamesound_changed = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if(m->m_cf.getHdr()->hdr.magic == 0x56424158)
|
|
||||||
{
|
|
||||||
m->m_gameSound.Load(gba_ogg, gba_ogg_size, false);
|
|
||||||
m->m_gamesound_changed = true;
|
m->m_gamesound_changed = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
97
source/plugin/plugin.cpp
Normal file
97
source/plugin/plugin.cpp
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// Name : plugin.cpp
|
||||||
|
// Copyright : 2012 FIX94
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#include <gccore.h>
|
||||||
|
#include <ogcsys.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "plugin.hpp"
|
||||||
|
#include "memory/mem2.hpp"
|
||||||
|
#include "gui/text.hpp"
|
||||||
|
|
||||||
|
void Plugin::init(string m_pluginsDir)
|
||||||
|
{
|
||||||
|
pluginsDir = m_pluginsDir;
|
||||||
|
//Ready to add plugins
|
||||||
|
adding = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Plugin::EndAdd()
|
||||||
|
{
|
||||||
|
adding = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Plugin::Cleanup()
|
||||||
|
{
|
||||||
|
for(banner_pos = 0; banner_pos < magicWords.size(); banner_pos++)
|
||||||
|
MEM2_free(BannerSound[banner_pos]);
|
||||||
|
BannerSound.clear();
|
||||||
|
BannerSoundSize.clear();
|
||||||
|
magicWords.clear();
|
||||||
|
DolName.clear();
|
||||||
|
banner_pos = 0;
|
||||||
|
pluginsDir.erase(0, pluginsDir.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Plugin::AddPlugin(Config &plugin)
|
||||||
|
{
|
||||||
|
if(!adding)
|
||||||
|
return false;
|
||||||
|
u32 magic;
|
||||||
|
sscanf(plugin.getString("PLUGIN","magic","").c_str(), "%08x", &magic);
|
||||||
|
magicWords.push_back(magic);
|
||||||
|
DolName.push_back(plugin.getString("PLUGIN","dolFile",""));
|
||||||
|
|
||||||
|
string bannerfilepath = sfmt("%s/%s", pluginsDir.c_str(), plugin.getString("PLUGIN","bannerSound","").c_str());
|
||||||
|
ifstream infile;
|
||||||
|
infile.open(bannerfilepath.c_str(), ios::binary);
|
||||||
|
if(infile.is_open())
|
||||||
|
{
|
||||||
|
int size;
|
||||||
|
infile.seekg(0, ios::end);
|
||||||
|
size = infile.tellg();
|
||||||
|
infile.seekg(0, ios::beg);
|
||||||
|
//Don't free that, otherwise you would delete the sound
|
||||||
|
char* FileReadBuffer = (char*)MEM2_alloc(size);
|
||||||
|
infile.read(FileReadBuffer, size);
|
||||||
|
BannerSound.push_back((u8*)FileReadBuffer);
|
||||||
|
BannerSoundSize.push_back(size);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BannerSound.push_back(0);
|
||||||
|
BannerSoundSize.push_back(0);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8* Plugin::GetBannerSound(u32 magic)
|
||||||
|
{
|
||||||
|
for(banner_pos = 0; banner_pos < magicWords.size(); banner_pos++)
|
||||||
|
{
|
||||||
|
if(magic == magicWords[banner_pos])
|
||||||
|
return BannerSound[banner_pos];
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 Plugin::GetBannerSoundSize()
|
||||||
|
{
|
||||||
|
//We call that directly after GetBannerSound, so no need to search for the magic again
|
||||||
|
if(BannerSoundSize[banner_pos] > 0)
|
||||||
|
return BannerSoundSize[banner_pos];
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* Plugin::GetDolName(u32 magic)
|
||||||
|
{
|
||||||
|
char *null = (char*)" ";
|
||||||
|
for(banner_pos = 0; banner_pos < magicWords.size(); banner_pos++)
|
||||||
|
if(magic == magicWords[banner_pos])
|
||||||
|
return (char*)DolName[banner_pos].c_str();
|
||||||
|
return null;
|
||||||
|
}
|
38
source/plugin/plugin.hpp
Normal file
38
source/plugin/plugin.hpp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// Name : plugin.hpp
|
||||||
|
// Copyright : 2012 FIX94
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#ifndef _PLUGIN_HPP_
|
||||||
|
#define _PLUGIN_HPP_
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "config/config.hpp"
|
||||||
|
#include "safe_vector.hpp"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Plugin
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool AddPlugin(Config &plugin);
|
||||||
|
u8* GetBannerSound(u32 magic);
|
||||||
|
u32 GetBannerSoundSize();
|
||||||
|
char* GetDolName(u32 magic);
|
||||||
|
void init(string);
|
||||||
|
void Cleanup();
|
||||||
|
void EndAdd();
|
||||||
|
private:
|
||||||
|
safe_vector<u8*> BannerSound;
|
||||||
|
safe_vector<u32> BannerSoundSize;
|
||||||
|
safe_vector<u32> magicWords;
|
||||||
|
safe_vector<string> DolName;
|
||||||
|
u8 banner_pos;
|
||||||
|
string pluginsDir;
|
||||||
|
bool adding;
|
||||||
|
};
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user