Implement GetLicenseArea, category improvements

Also fixed newlines, CellSailEvent, fixed CellMusic changes, fixed
console_write, fixed L10n changes and removed the login dialog for now,
until a more proper implementation.
This commit is contained in:
Raul Tambre 2015-09-13 10:26:01 +03:00
parent ea376e7751
commit 8204737efa
17 changed files with 164 additions and 423 deletions

View File

@ -188,7 +188,7 @@ void GLTexture::Init(RSXTexture& tex)
{
for (int j = 0; j < tex.GetWidth(); j++)
{
dst[(i*tex.GetWidth()) + j] = src[LinearToSwizzleAddress(j, i, 0, log2width, log2height, 0)];
dst[(i * tex.GetWidth()) + j] = src[LinearToSwizzleAddress(j, i, 0, log2width, log2height, 0)];
}
}
}

View File

@ -742,9 +742,9 @@ u64 cellGcmGetLastFlipTime()
return Emu.GetGSManager().GetRender().m_last_flip_time;
}
s32 cellGcmGetLastSecondVTime()
u64 cellGcmGetLastSecondVTime()
{
UNIMPLEMENTED_FUNC(cellGcmSys);
cellGcmSys.Todo("cellGcmGetLastSecondVTime()");
return CELL_OK;
}

View File

@ -889,11 +889,8 @@ s32 l10n_convert_str(s32 cd, vm::cptr<void> src, vm::ptr<u32> src_len, vm::ptr<v
{
cellL10n.Warning("l10n_convert_str(cd=%d, src=*0x%x, src_len=*0x%x, dst=*0x%x, dst_len=*0x%x)", cd, src, src_len, dst, dst_len);
s32 src_code, dst_code;
auto element = converters.find(cd);
src_code = element->second.first;
dst_code = element->second.second;
s32 src_code = cd >> 16;
s32 dst_code = cd & 0xffff;
return L10nConvertStr(src_code, src, src_len, dst_code, dst, dst_len);
}
@ -1001,18 +998,7 @@ s32 MSJISstoUCS2s()
s32 l10n_get_converter(u32 src_code, u32 dst_code)
{
cellL10n.Warning("l10n_get_converter(src_code=%d, dst_code=%d)", src_code, dst_code);
auto it = converters.begin();
while (it != converters.end())
{
if (it->second.first == src_code && it->second.second == dst_code)
{
return it->first;
}
++it;
}
return (src_code << 16) | dst_code;
}
s32 GB18030stoUTF8s()
@ -1179,8 +1165,6 @@ s32 UTF8stoUCS2s()
Module cellL10n("cellL10n", []()
{
insertConverters();
REG_FUNC(cellL10n, UCS2toEUCJP);
REG_FUNC(cellL10n, l10n_convert);
REG_FUNC(cellL10n, UCS2toUTF32);

View File

@ -2,8 +2,6 @@
namespace vm { using namespace ps3; }
std::map<s32, std::pair<s32, s32>> converters;
// L10nResult
enum
{
@ -83,208 +81,3 @@ enum {
L10N_CODEPAGE_869,
_L10N_CODE_
};
static void insertConverters()
{
converters.clear();
converters[1] = std::make_pair(L10N_UTF8, L10N_UTF16);
converters[2] = std::make_pair(L10N_UTF8, L10N_UTF32);
converters[3] = std::make_pair(L10N_UTF8, L10N_UCS2);
converters[5] = std::make_pair(L10N_UTF8, L10N_ISO_8859_1);
converters[6] = std::make_pair(L10N_UTF8, L10N_ISO_8859_2);
converters[7] = std::make_pair(L10N_UTF8, L10N_ISO_8859_3);
converters[8] = std::make_pair(L10N_UTF8, L10N_ISO_8859_4);
converters[9] = std::make_pair(L10N_UTF8, L10N_ISO_8859_5);
converters[10] = std::make_pair(L10N_UTF8, L10N_ISO_8859_6);
converters[11] = std::make_pair(L10N_UTF8, L10N_ISO_8859_7);
converters[12] = std::make_pair(L10N_UTF8, L10N_ISO_8859_8);
converters[13] = std::make_pair(L10N_UTF8, L10N_ISO_8859_9);
converters[14] = std::make_pair(L10N_UTF8, L10N_ISO_8859_10);
converters[15] = std::make_pair(L10N_UTF8, L10N_ISO_8859_11);
converters[16] = std::make_pair(L10N_UTF8, L10N_ISO_8859_13);
converters[17] = std::make_pair(L10N_UTF8, L10N_ISO_8859_14);
converters[18] = std::make_pair(L10N_UTF8, L10N_ISO_8859_15);
converters[19] = std::make_pair(L10N_UTF8, L10N_ISO_8859_16);
converters[20] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_437);
converters[21] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_850);
converters[22] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_863);
converters[23] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_866);
converters[24] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_932);
converters[25] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_936);
converters[26] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_949);
converters[27] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_950);
converters[28] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_1251);
converters[29] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_1252);
converters[30] = std::make_pair(L10N_UTF8, L10N_EUC_CN);
converters[31] = std::make_pair(L10N_UTF8, L10N_EUC_JP);
converters[32] = std::make_pair(L10N_UTF8, L10N_EUC_KR);
converters[33] = std::make_pair(L10N_UTF8, L10N_ISO_2022_JP);
converters[34] = std::make_pair(L10N_UTF8, L10N_ARIB);
converters[35] = std::make_pair(L10N_UTF8, L10N_HZ);
converters[36] = std::make_pair(L10N_UTF8, L10N_GB18030);
converters[37] = std::make_pair(L10N_UTF8, L10N_RIS_506);
converters[38] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_852);
converters[39] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_1250);
converters[40] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_737);
converters[41] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_1253);
converters[42] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_857);
converters[43] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_1254);
converters[44] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_775);
converters[45] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_1257);
converters[46] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_855);
converters[47] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_858);
converters[48] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_860);
converters[49] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_861);
converters[50] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_865);
converters[51] = std::make_pair(L10N_UTF8, L10N_CODEPAGE_869);
converters[65536] = std::make_pair(L10N_UTF16, L10N_UTF8);
converters[65538] = std::make_pair(L10N_UTF16, L10N_UTF32);
converters[65539] = std::make_pair(L10N_UTF16, L10N_UCS2);
converters[131072] = std::make_pair(L10N_UTF32, L10N_UTF8);
converters[131073] = std::make_pair(L10N_UTF32, L10N_UTF32);
converters[131075] = std::make_pair(L10N_UTF32, L10N_UCS2);
converters[196608] = std::make_pair(L10N_UCS2, L10N_UTF8);
converters[196609] = std::make_pair(L10N_UCS2, L10N_UTF16);
converters[196610] = std::make_pair(L10N_UCS2, L10N_UTF32);
converters[196613] = std::make_pair(L10N_UCS2, L10N_ISO_8859_1);
converters[196614] = std::make_pair(L10N_UCS2, L10N_ISO_8859_2);
converters[196615] = std::make_pair(L10N_UCS2, L10N_ISO_8859_3);
converters[196616] = std::make_pair(L10N_UCS2, L10N_ISO_8859_4);
converters[196617] = std::make_pair(L10N_UCS2, L10N_ISO_8859_5);
converters[196618] = std::make_pair(L10N_UCS2, L10N_ISO_8859_6);
converters[196619] = std::make_pair(L10N_UCS2, L10N_ISO_8859_7);
converters[196620] = std::make_pair(L10N_UCS2, L10N_ISO_8859_8);
converters[196621] = std::make_pair(L10N_UCS2, L10N_ISO_8859_9);
converters[196622] = std::make_pair(L10N_UCS2, L10N_ISO_8859_10);
converters[196623] = std::make_pair(L10N_UCS2, L10N_ISO_8859_11);
converters[196624] = std::make_pair(L10N_UCS2, L10N_ISO_8859_13);
converters[196625] = std::make_pair(L10N_UCS2, L10N_ISO_8859_14);
converters[196626] = std::make_pair(L10N_UCS2, L10N_ISO_8859_15);
converters[196627] = std::make_pair(L10N_UCS2, L10N_ISO_8859_16);
converters[196628] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_437);
converters[196629] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_850);
converters[196630] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_863);
converters[196631] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_866);
converters[196632] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_932);
converters[196633] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_936);
converters[196634] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_949);
converters[196635] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_950);
converters[196636] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_1251);
converters[196637] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_1252);
converters[196638] = std::make_pair(L10N_UCS2, L10N_EUC_CN);
converters[196639] = std::make_pair(L10N_UCS2, L10N_EUC_JP);
converters[196640] = std::make_pair(L10N_UCS2, L10N_EUC_KR);
converters[196641] = std::make_pair(L10N_UCS2, L10N_ISO_2022_JP);
converters[196642] = std::make_pair(L10N_UCS2, L10N_ARIB);
converters[196643] = std::make_pair(L10N_UCS2, L10N_HZ);
converters[196644] = std::make_pair(L10N_UCS2, L10N_GB18030);
converters[196645] = std::make_pair(L10N_UCS2, L10N_RIS_506);
converters[196646] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_852);
converters[196647] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_1250);
converters[196648] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_737);
converters[196649] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_1253);
converters[196650] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_857);
converters[196651] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_1254);
converters[196652] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_775);
converters[196653] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_1257);
converters[196654] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_855);
converters[196655] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_858);
converters[196656] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_860);
converters[196657] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_861);
converters[196658] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_865);
converters[196659] = std::make_pair(L10N_UCS2, L10N_CODEPAGE_869);
converters[327680] = std::make_pair(L10N_ISO_8859_1, L10N_UTF8);
converters[327683] = std::make_pair(L10N_ISO_8859_1, L10N_UCS2);
converters[393216] = std::make_pair(L10N_ISO_8859_2, L10N_UTF8);
converters[393219] = std::make_pair(L10N_ISO_8859_2, L10N_UCS2);
converters[458752] = std::make_pair(L10N_ISO_8859_3, L10N_UTF8);
converters[458755] = std::make_pair(L10N_ISO_8859_3, L10N_UCS2);
converters[524288] = std::make_pair(L10N_ISO_8859_4, L10N_UTF8);
converters[524291] = std::make_pair(L10N_ISO_8859_4, L10N_UCS2);
converters[589824] = std::make_pair(L10N_ISO_8859_5, L10N_UTF8);
converters[589827] = std::make_pair(L10N_ISO_8859_5, L10N_UCS2);
converters[655360] = std::make_pair(L10N_ISO_8859_6, L10N_UTF8);
converters[655363] = std::make_pair(L10N_ISO_8859_6, L10N_UCS2);
converters[720896] = std::make_pair(L10N_ISO_8859_7, L10N_UTF8);
converters[720899] = std::make_pair(L10N_ISO_8859_7, L10N_UCS2);
converters[786432] = std::make_pair(L10N_ISO_8859_8, L10N_UTF8);
converters[786435] = std::make_pair(L10N_ISO_8859_8, L10N_UCS2);
converters[851968] = std::make_pair(L10N_ISO_8859_9, L10N_UTF8);
converters[851971] = std::make_pair(L10N_ISO_8859_9, L10N_UCS2);
converters[917504] = std::make_pair(L10N_ISO_8859_10, L10N_UTF8);
converters[917507] = std::make_pair(L10N_ISO_8859_10, L10N_UCS2);
converters[983040] = std::make_pair(L10N_ISO_8859_11, L10N_UTF8);
converters[983043] = std::make_pair(L10N_ISO_8859_11, L10N_UCS2);
converters[1048576] = std::make_pair(L10N_ISO_8859_13, L10N_UTF8);
converters[1048579] = std::make_pair(L10N_ISO_8859_13, L10N_UCS2);
converters[1114112] = std::make_pair(L10N_ISO_8859_14, L10N_UTF8);
converters[1114115] = std::make_pair(L10N_ISO_8859_14, L10N_UCS2);
converters[1179648] = std::make_pair(L10N_ISO_8859_15, L10N_UTF8);
converters[1179651] = std::make_pair(L10N_ISO_8859_15, L10N_UCS2);
converters[1245184] = std::make_pair(L10N_ISO_8859_16, L10N_UTF8);
converters[1245187] = std::make_pair(L10N_ISO_8859_16, L10N_UCS2);
converters[1310720] = std::make_pair(L10N_CODEPAGE_437, L10N_UTF8);
converters[1310723] = std::make_pair(L10N_CODEPAGE_437, L10N_UCS2);
converters[1376256] = std::make_pair(L10N_CODEPAGE_850, L10N_UTF8);
converters[1376259] = std::make_pair(L10N_CODEPAGE_850, L10N_UCS2);
converters[1441792] = std::make_pair(L10N_CODEPAGE_863, L10N_UTF8);
converters[1441795] = std::make_pair(L10N_CODEPAGE_863, L10N_UCS2);
converters[1507328] = std::make_pair(L10N_CODEPAGE_866, L10N_UTF8);
converters[1507331] = std::make_pair(L10N_CODEPAGE_866, L10N_UCS2);
converters[1572864] = std::make_pair(L10N_CODEPAGE_932, L10N_UTF8);
converters[1572867] = std::make_pair(L10N_CODEPAGE_932, L10N_UCS2);
converters[1638400] = std::make_pair(L10N_CODEPAGE_936, L10N_UTF8);
converters[1638403] = std::make_pair(L10N_CODEPAGE_936, L10N_UCS2);
converters[1703936] = std::make_pair(L10N_CODEPAGE_949, L10N_UTF8);
converters[1703939] = std::make_pair(L10N_CODEPAGE_949, L10N_UCS2);
converters[1769472] = std::make_pair(L10N_CODEPAGE_950, L10N_UTF8);
converters[1769475] = std::make_pair(L10N_CODEPAGE_950, L10N_UCS2);
converters[1835008] = std::make_pair(L10N_CODEPAGE_1251, L10N_UTF8);
converters[1835011] = std::make_pair(L10N_CODEPAGE_1251, L10N_UCS2);
converters[1900544] = std::make_pair(L10N_CODEPAGE_1252, L10N_UTF8);
converters[1900547] = std::make_pair(L10N_CODEPAGE_1252, L10N_UCS2);
converters[1966080] = std::make_pair(L10N_EUC_CN, L10N_UTF8);
converters[1966083] = std::make_pair(L10N_EUC_CN, L10N_UCS2);
converters[2031616] = std::make_pair(L10N_EUC_JP, L10N_UTF8);
converters[2031619] = std::make_pair(L10N_EUC_JP, L10N_UCS2);
converters[2097152] = std::make_pair(L10N_EUC_KR, L10N_UTF8);
converters[2097155] = std::make_pair(L10N_EUC_KR, L10N_UCS2);
converters[2162688] = std::make_pair(L10N_ISO_2022_JP, L10N_UTF8);
converters[2162691] = std::make_pair(L10N_ISO_2022_JP, L10N_UCS2);
converters[2228224] = std::make_pair(L10N_ARIB, L10N_UTF8);
converters[2228227] = std::make_pair(L10N_ARIB, L10N_UCS2);
converters[2293760] = std::make_pair(L10N_HZ, L10N_UTF8);
converters[2293763] = std::make_pair(L10N_HZ, L10N_UCS2);
converters[2359296] = std::make_pair(L10N_GB18030, L10N_UTF8);
converters[2359299] = std::make_pair(L10N_GB18030, L10N_UCS2);
converters[2424832] = std::make_pair(L10N_RIS_506, L10N_UTF8);
converters[2424835] = std::make_pair(L10N_RIS_506, L10N_UCS2);
converters[2490368] = std::make_pair(L10N_CODEPAGE_852, L10N_UTF8);
converters[2490371] = std::make_pair(L10N_CODEPAGE_852, L10N_UCS2);
converters[2555904] = std::make_pair(L10N_CODEPAGE_1250, L10N_UTF8);
converters[2555907] = std::make_pair(L10N_CODEPAGE_1250, L10N_UCS2);
converters[2621440] = std::make_pair(L10N_CODEPAGE_737, L10N_UTF8);
converters[2621443] = std::make_pair(L10N_CODEPAGE_737, L10N_UCS2);
converters[2686976] = std::make_pair(L10N_CODEPAGE_1253, L10N_UTF8);
converters[2686979] = std::make_pair(L10N_CODEPAGE_1253, L10N_UCS2);
converters[2752512] = std::make_pair(L10N_CODEPAGE_857, L10N_UTF8);
converters[2752515] = std::make_pair(L10N_CODEPAGE_857, L10N_UCS2);
converters[2818048] = std::make_pair(L10N_CODEPAGE_1254, L10N_UTF8);
converters[2818051] = std::make_pair(L10N_CODEPAGE_1254, L10N_UCS2);
converters[2883584] = std::make_pair(L10N_CODEPAGE_775, L10N_UTF8);
converters[2883587] = std::make_pair(L10N_CODEPAGE_775, L10N_UCS2);
converters[2949120] = std::make_pair(L10N_CODEPAGE_1257, L10N_UTF8);
converters[2949123] = std::make_pair(L10N_CODEPAGE_1257, L10N_UCS2);
converters[3014656] = std::make_pair(L10N_CODEPAGE_855, L10N_UTF8);
converters[3014659] = std::make_pair(L10N_CODEPAGE_855, L10N_UCS2);
converters[3080192] = std::make_pair(L10N_CODEPAGE_858, L10N_UTF8);
converters[3080195] = std::make_pair(L10N_CODEPAGE_858, L10N_UCS2);
converters[3145728] = std::make_pair(L10N_CODEPAGE_860, L10N_UTF8);
converters[3145731] = std::make_pair(L10N_CODEPAGE_860, L10N_UCS2);
converters[3211264] = std::make_pair(L10N_CODEPAGE_861, L10N_UTF8);
converters[3211267] = std::make_pair(L10N_CODEPAGE_861, L10N_UCS2);
converters[3276800] = std::make_pair(L10N_CODEPAGE_865, L10N_UTF8);
converters[3276803] = std::make_pair(L10N_CODEPAGE_865, L10N_UCS2);
converters[3342336] = std::make_pair(L10N_CODEPAGE_869, L10N_UTF8);
converters[3342339] = std::make_pair(L10N_CODEPAGE_869, L10N_UCS2);
}

View File

@ -114,40 +114,24 @@ s32 cellMusicInitialize2(s32 mode, s32 spuPriority, vm::ptr<CellMusic2Callback>
{
cellMusic.Todo("cellMusicInitialize2(mode=%d, spuPriority=%d, func=*0x%x, userData=*0x%x)", mode, spuPriority, func, userData);
if (mode != CELL_MUSIC2_PLAYER_MODE_NORMAL)
{
cellMusic.Todo("Unknown player mode: 0x%x", mode);
return CELL_MUSIC2_ERROR_PARAM;
}
named_thread_t(WRAP_EXPR("CellMusicInit"), [=]()
{
if (mode != CELL_MUSIC2_PLAYER_MODE_NORMAL)
{
cellMusic.Todo("Unknown player mode: 0x%x", mode);
Emu.GetCallbackManager().Async([=](CPUThread& CPU)
{
vm::var<u32> ret(CPU);
*ret = CELL_MUSIC2_ERROR_PARAM;
func(static_cast<PPUThread&>(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData);
});
}
const auto music = fxm::make<music2_t>();
if (!music)
{
Emu.GetCallbackManager().Async([=](CPUThread& CPU)
{
vm::var<u32> ret(CPU);
*ret = CELL_MUSIC2_ERROR_GENERIC;
func(static_cast<PPUThread&>(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData);
});
return;
}
const auto music = fxm::make_always<music2_t>();
music->func = func;
music->userData = userData;
Emu.GetCallbackManager().Async([=](CPUThread& CPU)
Emu.GetCallbackManager().Register([=](CPUThread& CPU) -> s32
{
vm::var<u32> ret(CPU);
*ret = CELL_OK;
func(static_cast<PPUThread&>(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData);
return CELL_OK;
});
}).detach();

View File

@ -5,114 +5,114 @@ namespace vm { using namespace ps3; }
// Error Codes
enum
{
CELL_MUSIC_OK = 0,
CELL_MUSIC_CANCELED = 1,
CELL_MUSIC_PLAYBACK_FINISHED = 0x8002c101,
CELL_MUSIC_ERROR_PARAM = 0x8002c102,
CELL_MUSIC_ERROR_BUSY = 0x8002c103,
CELL_MUSIC_ERROR_NO_ACTIVE_CONTENT = 0x8002c104,
CELL_MUSIC_ERROR_NO_MATCH_FOUND = 0x8002c105,
CELL_MUSIC_ERROR_INVALID_CONTEXT = 0x8002c106,
CELL_MUSIC_ERROR_PLAYBACK_FAILURE = 0x8002c107,
CELL_MUSIC_ERROR_NO_MORE_CONTENT = 0x8002c108,
CELL_MUSIC_DIALOG_OPEN = 0x8002c109,
CELL_MUSIC_DIALOG_CLOSE = 0x8002c10A,
CELL_MUSIC_ERROR_GENERIC = 0x8002c1FF,
CELL_MUSIC2_OK = CELL_MUSIC_OK,
CELL_MUSIC2_CANCELED = CELL_MUSIC_CANCELED,
CELL_MUSIC2_PLAYBACK_FINISHED = CELL_MUSIC_PLAYBACK_FINISHED,
CELL_MUSIC2_ERROR_PARAM = CELL_MUSIC_ERROR_PARAM,
CELL_MUSIC2_ERROR_BUSY = CELL_MUSIC_ERROR_BUSY,
CELL_MUSIC_OK = 0,
CELL_MUSIC_CANCELED = 1,
CELL_MUSIC_PLAYBACK_FINISHED = 0x8002c101,
CELL_MUSIC_ERROR_PARAM = 0x8002c102,
CELL_MUSIC_ERROR_BUSY = 0x8002c103,
CELL_MUSIC_ERROR_NO_ACTIVE_CONTENT = 0x8002c104,
CELL_MUSIC_ERROR_NO_MATCH_FOUND = 0x8002c105,
CELL_MUSIC_ERROR_INVALID_CONTEXT = 0x8002c106,
CELL_MUSIC_ERROR_PLAYBACK_FAILURE = 0x8002c107,
CELL_MUSIC_ERROR_NO_MORE_CONTENT = 0x8002c108,
CELL_MUSIC_DIALOG_OPEN = 0x8002c109,
CELL_MUSIC_DIALOG_CLOSE = 0x8002c10A,
CELL_MUSIC_ERROR_GENERIC = 0x8002c1FF,
CELL_MUSIC2_OK = CELL_MUSIC_OK,
CELL_MUSIC2_CANCELED = CELL_MUSIC_CANCELED,
CELL_MUSIC2_PLAYBACK_FINISHED = CELL_MUSIC_PLAYBACK_FINISHED,
CELL_MUSIC2_ERROR_PARAM = CELL_MUSIC_ERROR_PARAM,
CELL_MUSIC2_ERROR_BUSY = CELL_MUSIC_ERROR_BUSY,
CELL_MUSIC2_ERROR_NO_ACTIVE_CONTENT = CELL_MUSIC_ERROR_NO_ACTIVE_CONTENT,
CELL_MUSIC2_ERROR_NO_MATCH_FOUND = CELL_MUSIC_ERROR_NO_MATCH_FOUND,
CELL_MUSIC2_ERROR_INVALID_CONTEXT = CELL_MUSIC_ERROR_INVALID_CONTEXT,
CELL_MUSIC2_ERROR_PLAYBACK_FAILURE = CELL_MUSIC_ERROR_PLAYBACK_FAILURE,
CELL_MUSIC2_ERROR_NO_MORE_CONTENT = CELL_MUSIC_ERROR_NO_MORE_CONTENT,
CELL_MUSIC2_DIALOG_OPEN = CELL_MUSIC_DIALOG_OPEN,
CELL_MUSIC2_DIALOG_CLOSE = CELL_MUSIC_DIALOG_CLOSE,
CELL_MUSIC2_ERROR_GENERIC = CELL_MUSIC_ERROR_GENERIC,
CELL_MUSIC2_ERROR_NO_MATCH_FOUND = CELL_MUSIC_ERROR_NO_MATCH_FOUND,
CELL_MUSIC2_ERROR_INVALID_CONTEXT = CELL_MUSIC_ERROR_INVALID_CONTEXT,
CELL_MUSIC2_ERROR_PLAYBACK_FAILURE = CELL_MUSIC_ERROR_PLAYBACK_FAILURE,
CELL_MUSIC2_ERROR_NO_MORE_CONTENT = CELL_MUSIC_ERROR_NO_MORE_CONTENT,
CELL_MUSIC2_DIALOG_OPEN = CELL_MUSIC_DIALOG_OPEN,
CELL_MUSIC2_DIALOG_CLOSE = CELL_MUSIC_DIALOG_CLOSE,
CELL_MUSIC2_ERROR_GENERIC = CELL_MUSIC_ERROR_GENERIC,
};
enum
{
CELL_SYSUTIL_MUSIC_INITIALIZING_FINISHED = 1,
CELL_SYSUTIL_MUSIC_SHUTDOWN_FINISHED = 4, // Was 3 in 1.03, changed to 4 in 1.1
CELL_SYSUTIL_MUSIC_LOADING_FINISHED = 5,
CELL_SYSUTIL_MUSIC_UNLOADING_FINISHED = 7,
CELL_SYSUTIL_MUSIC_RELEASED = 9,
CELL_SYSUTIL_MUSIC_GRABBED = 11,
CELL_SYSUTIL_MUSIC_SHUTDOWN_FINISHED = 4, // Was 3 in 1.03, changed to 4 in 1.1
CELL_SYSUTIL_MUSIC_LOADING_FINISHED = 5,
CELL_SYSUTIL_MUSIC_UNLOADING_FINISHED = 7,
CELL_SYSUTIL_MUSIC_RELEASED = 9,
CELL_SYSUTIL_MUSIC_GRABBED = 11,
};
enum
{
CELL_SYSUTIL_MUSIC2_INITIALIZING_FINISHED = CELL_SYSUTIL_MUSIC_INITIALIZING_FINISHED,
CELL_SYSUTIL_MUSIC2_SHUTDOWN_FINISHED = CELL_SYSUTIL_MUSIC_SHUTDOWN_FINISHED,
CELL_SYSUTIL_MUSIC2_LOADING_FINISHED = CELL_SYSUTIL_MUSIC_LOADING_FINISHED,
CELL_SYSUTIL_MUSIC2_UNLOADING_FINISHED = CELL_SYSUTIL_MUSIC_UNLOADING_FINISHED,
CELL_SYSUTIL_MUSIC2_RELEASED = CELL_SYSUTIL_MUSIC_RELEASED,
CELL_SYSUTIL_MUSIC2_GRABBED = CELL_SYSUTIL_MUSIC_GRABBED,
CELL_SYSUTIL_MUSIC2_SHUTDOWN_FINISHED = CELL_SYSUTIL_MUSIC_SHUTDOWN_FINISHED,
CELL_SYSUTIL_MUSIC2_LOADING_FINISHED = CELL_SYSUTIL_MUSIC_LOADING_FINISHED,
CELL_SYSUTIL_MUSIC2_UNLOADING_FINISHED = CELL_SYSUTIL_MUSIC_UNLOADING_FINISHED,
CELL_SYSUTIL_MUSIC2_RELEASED = CELL_SYSUTIL_MUSIC_RELEASED,
CELL_SYSUTIL_MUSIC2_GRABBED = CELL_SYSUTIL_MUSIC_GRABBED,
};
enum
{
CELL_MUSIC_EVENT_STATUS_NOTIFICATION = 0,
CELL_MUSIC_EVENT_INITIALIZE_RESULT = 1,
CELL_MUSIC_EVENT_FINALIZE_RESULT = 2,
CELL_MUSIC_EVENT_SELECT_CONTENTS_RESULT = 3,
CELL_MUSIC_EVENT_SET_PLAYBACK_COMMAND_RESULT = 4,
CELL_MUSIC_EVENT_SET_VOLUME_RESULT = 5,
CELL_MUSIC_EVENT_STATUS_NOTIFICATION = 0,
CELL_MUSIC_EVENT_INITIALIZE_RESULT = 1,
CELL_MUSIC_EVENT_FINALIZE_RESULT = 2,
CELL_MUSIC_EVENT_SELECT_CONTENTS_RESULT = 3,
CELL_MUSIC_EVENT_SET_PLAYBACK_COMMAND_RESULT = 4,
CELL_MUSIC_EVENT_SET_VOLUME_RESULT = 5,
CELL_MUSIC_EVENT_SET_SELECTION_CONTEXT_RESULT = 6,
CELL_MUSIC_EVENT_UI_NOTIFICATION = 7,
CELL_MUSIC_EVENT_UI_NOTIFICATION = 7,
};
enum
{
CELL_MUSIC2_EVENT_STATUS_NOTIFICATION = CELL_MUSIC_EVENT_STATUS_NOTIFICATION,
CELL_MUSIC2_EVENT_INITIALIZE_RESULT = CELL_MUSIC_EVENT_INITIALIZE_RESULT,
CELL_MUSIC2_EVENT_FINALIZE_RESULT = CELL_MUSIC_EVENT_FINALIZE_RESULT,
CELL_MUSIC2_EVENT_SELECT_CONTENTS_RESULT = CELL_MUSIC_EVENT_SELECT_CONTENTS_RESULT,
CELL_MUSIC2_EVENT_SET_PLAYBACK_COMMAND_RESULT = CELL_MUSIC_EVENT_SET_PLAYBACK_COMMAND_RESULT,
CELL_MUSIC2_EVENT_SET_VOLUME_RESULT = CELL_MUSIC_EVENT_SET_VOLUME_RESULT,
CELL_MUSIC2_EVENT_STATUS_NOTIFICATION = CELL_MUSIC_EVENT_STATUS_NOTIFICATION,
CELL_MUSIC2_EVENT_INITIALIZE_RESULT = CELL_MUSIC_EVENT_INITIALIZE_RESULT,
CELL_MUSIC2_EVENT_FINALIZE_RESULT = CELL_MUSIC_EVENT_FINALIZE_RESULT,
CELL_MUSIC2_EVENT_SELECT_CONTENTS_RESULT = CELL_MUSIC_EVENT_SELECT_CONTENTS_RESULT,
CELL_MUSIC2_EVENT_SET_PLAYBACK_COMMAND_RESULT = CELL_MUSIC_EVENT_SET_PLAYBACK_COMMAND_RESULT,
CELL_MUSIC2_EVENT_SET_VOLUME_RESULT = CELL_MUSIC_EVENT_SET_VOLUME_RESULT,
CELL_MUSIC2_EVENT_SET_SELECTION_CONTEXT_RESULT = CELL_MUSIC_EVENT_SET_SELECTION_CONTEXT_RESULT,
CELL_MUSIC2_EVENT_UI_NOTIFICATION = CELL_MUSIC_EVENT_UI_NOTIFICATION,
CELL_MUSIC2_EVENT_UI_NOTIFICATION = CELL_MUSIC_EVENT_UI_NOTIFICATION,
};
enum
{
CELL_MUSIC_PB_CMD_STOP = 0,
CELL_MUSIC_PB_CMD_PLAY = 1,
CELL_MUSIC_PB_CMD_PAUSE = 2,
CELL_MUSIC_PB_CMD_NEXT = 3,
CELL_MUSIC_PB_CMD_PREV = 4,
CELL_MUSIC_PB_CMD_STOP = 0,
CELL_MUSIC_PB_CMD_PLAY = 1,
CELL_MUSIC_PB_CMD_PAUSE = 2,
CELL_MUSIC_PB_CMD_NEXT = 3,
CELL_MUSIC_PB_CMD_PREV = 4,
CELL_MUSIC_PB_CMD_FASTFORWARD = 5,
CELL_MUSIC_PB_CMD_FASTREVERSE = 6,
};
enum
{
CELL_MUSIC2_PB_CMD_STOP = CELL_MUSIC_PB_CMD_STOP,
CELL_MUSIC2_PB_CMD_PLAY = CELL_MUSIC_PB_CMD_PLAY,
CELL_MUSIC2_PB_CMD_PAUSE = CELL_MUSIC_PB_CMD_PAUSE,
CELL_MUSIC2_PB_CMD_NEXT = CELL_MUSIC_PB_CMD_NEXT,
CELL_MUSIC2_PB_CMD_PREV = CELL_MUSIC_PB_CMD_PREV,
CELL_MUSIC2_PB_CMD_STOP = CELL_MUSIC_PB_CMD_STOP,
CELL_MUSIC2_PB_CMD_PLAY = CELL_MUSIC_PB_CMD_PLAY,
CELL_MUSIC2_PB_CMD_PAUSE = CELL_MUSIC_PB_CMD_PAUSE,
CELL_MUSIC2_PB_CMD_NEXT = CELL_MUSIC_PB_CMD_NEXT,
CELL_MUSIC2_PB_CMD_PREV = CELL_MUSIC_PB_CMD_PREV,
CELL_MUSIC2_PB_CMD_FASTFORWARD = CELL_MUSIC_PB_CMD_FASTFORWARD,
CELL_MUSIC2_PB_CMD_FASTREVERSE = CELL_MUSIC_PB_CMD_FASTREVERSE,
};
enum
{
CELL_MUSIC_PB_STATUS_STOP = 0,
CELL_MUSIC_PB_STATUS_PLAY = 1,
CELL_MUSIC_PB_STATUS_PAUSE = 2,
CELL_MUSIC_PB_STATUS_STOP = 0,
CELL_MUSIC_PB_STATUS_PLAY = 1,
CELL_MUSIC_PB_STATUS_PAUSE = 2,
CELL_MUSIC_PB_STATUS_FASTFORWARD = 3,
CELL_MUSIC_PB_STATUS_FASTREVERSE = 4,
};
enum
{
CELL_MUSIC2_PB_STATUS_STOP = CELL_MUSIC_PB_STATUS_STOP,
CELL_MUSIC2_PB_STATUS_PLAY = CELL_MUSIC_PB_STATUS_PLAY,
CELL_MUSIC2_PB_STATUS_PAUSE = CELL_MUSIC_PB_STATUS_PAUSE,
CELL_MUSIC2_PB_STATUS_STOP = CELL_MUSIC_PB_STATUS_STOP,
CELL_MUSIC2_PB_STATUS_PLAY = CELL_MUSIC_PB_STATUS_PLAY,
CELL_MUSIC2_PB_STATUS_PAUSE = CELL_MUSIC_PB_STATUS_PAUSE,
CELL_MUSIC2_PB_STATUS_FASTFORWARD = CELL_MUSIC_PB_STATUS_FASTFORWARD,
CELL_MUSIC2_PB_STATUS_FASTREVERSE = CELL_MUSIC_PB_STATUS_FASTREVERSE,
};
@ -120,15 +120,15 @@ enum
enum
{
CELL_MUSIC_PLAYBACK_MEMORY_CONTAINER_SIZE = 11 * 1024 * 1024,
CELL_MUSIC_PLAYER_MODE_NORMAL = 0,
CELL_MUSIC2_PLAYER_MODE_NORMAL = CELL_MUSIC_PLAYER_MODE_NORMAL,
CELL_MUSIC_SELECTION_CONTEXT_SIZE = 2048,
CELL_MUSIC_PLAYER_MODE_NORMAL = 0,
CELL_MUSIC2_PLAYER_MODE_NORMAL = CELL_MUSIC_PLAYER_MODE_NORMAL,
CELL_MUSIC_SELECTION_CONTEXT_SIZE = 2048,
};
using CellMusicCallback = void(u32 evnt, vm::ptr<void> param, vm::ptr<void> userData);
using CellMusic2Callback = void(u32 evnt, vm::ptr<u32> param, vm::ptr<void> userData);
using CellMusicCallback = void(u32 event, vm::ptr<void> param, vm::ptr<void> userData);
using CellMusic2Callback = void(u32 event, vm::ptr<u32> param, vm::ptr<void> userData);
struct CellMusicSelectionContext
{
char data[CELL_MUSIC_SELECTION_CONTEXT_SIZE];
};
};

View File

@ -38,7 +38,7 @@ SignInDialogInstance::SignInDialogInstance()
void SignInDialogInstance::Close()
{
state = signInDialogClose;
//state = signInDialogClose;
}
s32 cellNetCtlInit()
@ -345,83 +345,23 @@ s32 cellNetCtlGetInfo(s32 code, vm::ptr<CellNetCtlInfo> info)
return CELL_OK;
}
void dialogOpenCallback()
{
named_thread_t(WRAP_EXPR("SignInDialog Thread"), [=]()
{
while (g_sign_in_dialog->state == signInDialogOpen)
{
if (Emu.IsStopped())
{
g_sign_in_dialog->state = signInDialogAbort;
break;
}
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // hack
}
CallAfter([]()
{
g_sign_in_dialog->Destroy();
g_sign_in_dialog->state = signInDialogNone;
});
}).detach();
}
s32 cellNetCtlNetStartDialogLoadAsync(vm::ptr<CellNetCtlNetStartDialogParam> param)
{
cellNetCtl.Warning("cellNetCtlNetStartDialogLoadAsync(param=*0x%x)", param);
// TODO: Actually sign into PSN or an emulated network similar to PSN (ESN)
// TODO: Properly open the dialog prompt for sign in
sysutilSendSystemCommand(CELL_SYSUTIL_NET_CTL_NETSTART_LOADED, 0);
g_sign_in_dialog->status = CELL_NET_CTL_ERROR_DIALOG_CANCELED;
sysutilSendSystemCommand(CELL_SYSUTIL_NET_CTL_NETSTART_FINISHED, 0);
// The way this is handled, is heavily inspired by the cellMsgDialogOpen2 implementation
if (param->type == CELL_NET_CTL_NETSTART_TYPE_NP)
{
cellNetCtl.Warning("cellNetCtlNetStartDialogLoadAsync(CELL_NET_CTL_NETSTART_TYPE_NP)", param);
// Make sure that the dialog is not already open.
SignInDialogState old = signInDialogNone;
if (!g_sign_in_dialog->state.compare_exchange_strong(old, signInDialogInit))
{
return CELL_SYSUTIL_ERROR_BUSY;
}
CallAfter([]()
{
if (Emu.IsStopped())
{
g_sign_in_dialog->state.exchange(signInDialogNone);
return;
}
g_sign_in_dialog->Create();
g_sign_in_dialog->state.exchange(signInDialogOpen);
dialogOpenCallback();
});
}
else
{
cellNetCtl.Warning("cellNetCtlNetStartDialogLoadAsync(CELL_NET_CTL_NETSTART_TYPE_NET)", param);
sysutilSendSystemCommand(CELL_SYSUTIL_NET_CTL_NETSTART_FINISHED, 0);
}
return CELL_OK;
return CELL_NET_CTL_ERROR_NOT_CONNECTED;
}
s32 cellNetCtlNetStartDialogAbortAsync()
{
cellNetCtl.Todo("cellNetCtlNetStartDialogAbortAsync()");
SignInDialogState old = signInDialogOpen;
if (!g_sign_in_dialog->state.compare_exchange_strong(old, signInDialogAbort))
{
cellNetCtl.Error("cellNetCtlNetStartDialogAbortAsync(): Aborting the dialog failed.");
}
g_sign_in_dialog->status = CELL_NET_CTL_ERROR_DIALOG_ABORTED;
return CELL_OK;

View File

@ -261,18 +261,9 @@ struct CellNetCtlNatInfo
typedef void(cellNetCtlHandler)(s32 prev_state, s32 new_state, s32 event, s32 error_code, vm::ptr<u32> arg);
enum SignInDialogState
{
signInDialogNone,
signInDialogInit,
signInDialogOpen,
signInDialogClose,
signInDialogAbort,
};
struct SignInDialogInstance
{
std::atomic<SignInDialogState> state;
//std::atomic<SignInDialogState> state;
s32 status;

View File

@ -15,8 +15,8 @@ void playerBoot(vm::ptr<CellSailPlayer> pSelf, u64 userParam)
Emu.GetCallbackManager().Async([=](CPUThread& cpu)
{
CellSailEvent event;
event.major = CELL_SAIL_EVENT_PLAYER_STATE_CHANGED;
event.minor = 0;
event.u32x2.major = CELL_SAIL_EVENT_PLAYER_STATE_CHANGED;
event.u32x2.minor = 0;
pSelf->callback(static_cast<PPUThread&>(cpu), pSelf->callbackArg, event, CELL_SAIL_PLAYER_STATE_BOOT_TRANSITION, 0);
});
@ -26,8 +26,8 @@ void playerBoot(vm::ptr<CellSailPlayer> pSelf, u64 userParam)
Emu.GetCallbackManager().Async([=](CPUThread& cpu)
{
CellSailEvent event;
event.major = CELL_SAIL_EVENT_PLAYER_CALL_COMPLETED;
event.minor = CELL_SAIL_PLAYER_CALL_BOOT;
event.u32x2.major = CELL_SAIL_EVENT_PLAYER_CALL_COMPLETED;
event.u32x2.minor = CELL_SAIL_PLAYER_CALL_BOOT;
pSelf->callback(static_cast<PPUThread&>(cpu), pSelf->callbackArg, event, 0, 0);
});
}
@ -636,8 +636,8 @@ s32 cellSailPlayerInitialize2(
Emu.GetCallbackManager().Async([=](CPUThread& cpu)
{
CellSailEvent event;
event.major = CELL_SAIL_EVENT_PLAYER_STATE_CHANGED;
event.minor = 0;
event.u32x2.major = CELL_SAIL_EVENT_PLAYER_STATE_CHANGED;
event.u32x2.minor = 0;
pSelf->callback(static_cast<PPUThread&>(cpu), pSelf->callbackArg, event, CELL_SAIL_PLAYER_STATE_INITIALIZED, 0);
});

View File

@ -664,8 +664,12 @@ struct CellSailSourceStreamingProfile
union CellSailEvent
{
be_t<u32> major;
be_t<u32> minor;
struct
{
be_t<u32> major;
be_t<u32> minor;
} u32x2;
be_t<u64> value;
};

View File

@ -203,4 +203,4 @@ struct CellSysutilAvc2WindowAttribute
{
be_t<CellSysutilAvc2WindowAttributeId> attr_id;
CellSysutilAvc2WindowAttributeParam attr_param;
};
};

View File

@ -1,12 +1,36 @@
#include "stdafx.h"
#include "Emu/System.h"
#include "Emu/Memory/Memory.h"
#include "Emu/SysCalls/Modules.h"
extern Module cellSysutilMisc;
// License areas
enum
{
CELL_SYSUTIL_LICENSE_AREA_J = 0,
CELL_SYSUTIL_LICENSE_AREA_A = 1,
CELL_SYSUTIL_LICENSE_AREA_E = 2,
CELL_SYSUTIL_LICENSE_AREA_H = 3,
CELL_SYSUTIL_LICENSE_AREA_K = 4,
CELL_SYSUTIL_LICENSE_AREA_C = 5,
CELL_SYSUTIL_LICENSE_AREA_OTHER = 100,
};
s32 cellSysutilGetLicenseArea()
{
throw EXCEPTION("");
cellSysutilMisc.Warning("cellSysutilGetLicenseArea()");
switch (const char region = Emu.GetTitleID().at(2))
{
case 'J': return CELL_SYSUTIL_LICENSE_AREA_J;
case 'U': return CELL_SYSUTIL_LICENSE_AREA_A;
case 'E': return CELL_SYSUTIL_LICENSE_AREA_E;
case 'H': return CELL_SYSUTIL_LICENSE_AREA_H;
case 'K': return CELL_SYSUTIL_LICENSE_AREA_K;
case 'A': return CELL_SYSUTIL_LICENSE_AREA_C;
default: cellSysutilMisc.Todo("Unknown license area: %s", Emu.GetTitleID().c_str()); return CELL_SYSUTIL_LICENSE_AREA_OTHER;
}
}
Module cellSysutilMisc("cellSysutilMisc", []()

View File

@ -145,12 +145,13 @@ s32 console_putc()
throw EXCEPTION("");
}
void console_write(vm::ptr<char> data, u32 len)
s32 console_write(vm::ptr<char> data, u32 len)
{
sysPrxForUser.Warning("console_write(data=*0x%x, len=%d)", data, len);
sysPrxForUser.Warning("*** data='%s'", data.get_ptr());
LOG_NOTICE(TTY, "%s", data.get_ptr());
LOG_NOTICE(TTY, { data.get_ptr(), len });
return CELL_OK;
}

View File

@ -42,7 +42,8 @@ class WxDirDeleteTraverser : public wxDirTraverser
public:
virtual wxDirTraverseResult OnFile(const wxString& filename) override
{
if (!wxRemoveFile(filename)){
if (!wxRemoveFile(filename))
{
LOG_ERROR(HLE, "Couldn't delete File: %s", fmt::ToUTF8(filename).c_str());
}
return wxDIR_CONTINUE;
@ -51,7 +52,8 @@ public:
{
wxDir dir(dirname);
dir.Traverse(*this);
if (!wxRmDir(dirname)){
if (!wxRmDir(dirname))
{
//this get triggered a few times while clearing folders
//but if this gets reimplented we should probably warn
//if directories can't be removed
@ -120,7 +122,7 @@ void GameViewer::LoadGames()
void GameViewer::LoadPSF()
{
m_game_data.clear();
for(uint i=0; i<m_games.size(); ++i)
for (u32 i = 0; i < m_games.size(); ++i)
{
const std::string sfb = m_path + m_games[i] + "/PS3_DISC.SFB";
const std::string sfo = m_path + m_games[i] + (Emu.GetVFS().ExistsFile(sfb) ? "/PS3_GAME/PARAM.SFO" : "/PARAM.SFO");
@ -174,6 +176,21 @@ void GameViewer::LoadPSF()
game.category = "Disc Game";
game.icon_path = local_path + "/" + m_games[i] + "/PS3_GAME/ICON0.PNG";
}
else if (game.category.substr(0, 2) == "HM")
{
game.category = "Home";
game.icon_path = local_path + "/" + m_games[i] + "/ICON0.PNG";
}
else if (game.category.substr(0, 2) == "AV")
{
game.category = "Audio/Video";
game.icon_path = local_path + "/" + m_games[i] + "/ICON0.PNG";
}
else if (game.category.substr(0, 2) == "GD")
{
game.category = "Game Data";
game.icon_path = local_path + "/" + m_games[i] + "/PS3_GAME/ICON0.PNG";
}
m_game_data.push_back(game);
}
@ -210,7 +227,7 @@ void GameViewer::LoadSettings()
void GameViewer::DClick(wxListEvent& event)
{
long i = GetFirstSelected();
if(i < 0) return;
if (i < 0) return;
const std::string& path = m_path + m_game_data[i].root;
@ -220,12 +237,14 @@ void GameViewer::DClick(wxListEvent& event)
Emu.GetVFS().Init("/");
std::string local_path;
if (Emu.GetVFS().GetDevice(path, local_path) && !Emu.BootGame(local_path)) {
if (Emu.GetVFS().GetDevice(path, local_path) && !Emu.BootGame(local_path))
{
LOG_ERROR(HLE, "Boot error: elf not found! [%s]", path.c_str());
return;
}
if (Ini.HLEAlwaysStart.GetValue() && Emu.IsReady()) {
if (Ini.HLEAlwaysStart.GetValue() && Emu.IsReady())
{
Emu.Run();
}
}
@ -250,7 +269,7 @@ void GameViewer::RemoveGame(wxCommandEvent& event)
Emu.GetVFS().UnMountAll();
//TODO: Replace wxWidgetsSpecific filesystem stuff?
// TODO: Replace wxWidgetsSpecific filesystem stuff?
WxDirDeleteTraverser deleter;
wxDir localDir(del_path);
localDir.Traverse(deleter);

View File

@ -133,7 +133,7 @@ SettingsDialog::SettingsDialog(wxWindow *parent)
wxCheckBox* chbox_dbg_ap_functioncall = new wxCheckBox(p_misc, wxID_ANY, "Auto Pause at Function Call");
//Custom EmulationDir
wxCheckBox* chbox_emulationdir_enable = new wxCheckBox(p_system, wxID_ANY, "Use Path Below as EmulationDir ? (Need Restart)");
wxCheckBox* chbox_emulationdir_enable = new wxCheckBox(p_system, wxID_ANY, "Use path below as EmulationDir. (Restart required)");
wxTextCtrl* txt_emulationdir_path = new wxTextCtrl(p_system, wxID_ANY, Emu.GetEmulatorPath());
@ -308,6 +308,7 @@ SettingsDialog::SettingsDialog(wxWindow *parent)
s_round_audio_out->Add(cbox_audio_out, wxSizerFlags().Border(wxALL, 5).Expand());
// Miscellaneous
s_round_hle_log_lvl->Add(cbox_hle_loglvl, wxSizerFlags().Border(wxALL, 5).Expand());
// Networking

View File

@ -76,4 +76,4 @@ void SignInDialogFrame::Create()
void SignInDialogFrame::Destroy()
{
m_dialog.reset();
}
}

View File

@ -9,4 +9,4 @@ class SignInDialogFrame : public SignInDialogInstance
public:
virtual void Create() override;
virtual void Destroy() override;
};
};