2018-12-23 00:16:03 +01:00
# include " stdafx.h "
2014-06-02 19:27:24 +02:00
# include "Emu/System.h"
2016-03-21 20:43:03 +01:00
# include "Emu/IdManager.h"
# include "Emu/Cell/PPUModule.h"
2014-08-23 22:40:04 +02:00
2019-11-08 17:40:46 +01:00
# include "Emu/Cell/lv2/sys_process.h"
2014-08-23 22:40:04 +02:00
# include "cellSysutil.h"
2014-03-19 16:19:35 +01:00
2016-04-27 00:27:24 +02:00
# include "Utilities/StrUtil.h"
2018-12-31 20:03:30 +01:00
# include "Utilities/lockless.h"
2016-07-27 23:43:22 +02:00
2018-08-25 14:39:00 +02:00
LOG_CHANNEL ( cellSysutil ) ;
2014-01-08 22:16:13 +01:00
2019-01-04 14:45:32 +01:00
template < >
void fmt_class_string < CellSysutilError > : : format ( std : : string & out , u64 arg )
{
format_enum ( out , arg , [ ] ( auto error )
{
switch ( error )
{
STR_CASE ( CELL_SYSUTIL_ERROR_TYPE ) ;
STR_CASE ( CELL_SYSUTIL_ERROR_VALUE ) ;
STR_CASE ( CELL_SYSUTIL_ERROR_SIZE ) ;
STR_CASE ( CELL_SYSUTIL_ERROR_NUM ) ;
STR_CASE ( CELL_SYSUTIL_ERROR_BUSY ) ;
STR_CASE ( CELL_SYSUTIL_ERROR_STATUS ) ;
STR_CASE ( CELL_SYSUTIL_ERROR_MEMORY ) ;
}
return unknown ;
} ) ;
}
2016-07-27 23:43:22 +02:00
struct sysutil_cb_manager
{
2018-12-31 20:03:30 +01:00
struct alignas ( 8 ) registered_cb
2016-08-04 21:13:01 +02:00
{
2018-12-31 20:03:30 +01:00
vm : : ptr < CellSysutilCallback > first ;
vm : : ptr < void > second ;
} ;
2016-08-04 21:13:01 +02:00
2018-12-31 20:03:30 +01:00
atomic_t < registered_cb > callbacks [ 4 ] { } ;
2016-08-04 21:13:01 +02:00
2018-12-31 20:03:30 +01:00
lf_queue < std : : function < s32 ( ppu_thread & ) > > registered ;
2016-07-27 23:43:22 +02:00
} ;
extern void sysutil_register_cb ( std : : function < s32 ( ppu_thread & ) > & & cb )
2016-03-21 20:43:03 +01:00
{
2019-08-24 17:10:46 +02:00
const auto cbm = g_fxo - > get < sysutil_cb_manager > ( ) ;
2016-07-27 23:43:22 +02:00
cbm - > registered . push ( std : : move ( cb ) ) ;
}
extern void sysutil_send_system_cmd ( u64 status , u64 param )
{
2019-08-24 17:10:46 +02:00
// May be nullptr if emulation is stopped
if ( const auto cbm = g_fxo - > get < sysutil_cb_manager > ( ) )
2016-03-21 20:43:03 +01:00
{
2018-12-31 20:03:30 +01:00
for ( sysutil_cb_manager : : registered_cb cb : cbm - > callbacks )
2016-03-21 20:43:03 +01:00
{
if ( cb . first )
{
2016-07-27 23:43:22 +02:00
cbm - > registered . push ( [ = ] ( ppu_thread & ppu ) - > s32
2016-03-21 20:43:03 +01:00
{
// TODO: check it and find the source of the return value (void isn't equal to CELL_OK)
cb . first ( ppu , status , param , cb . second ) ;
return CELL_OK ;
} ) ;
}
}
}
}
2017-05-20 13:45:02 +02:00
template < >
void fmt_class_string < CellSysutilLang > : : format ( std : : string & out , u64 arg )
2016-03-21 20:43:03 +01:00
{
2017-05-20 13:45:02 +02:00
format_enum ( out , arg , [ ] ( CellSysutilLang value )
{
switch ( value )
{
case CELL_SYSUTIL_LANG_JAPANESE : return " Japanese " ;
case CELL_SYSUTIL_LANG_ENGLISH_US : return " English (US) " ;
case CELL_SYSUTIL_LANG_FRENCH : return " French " ;
case CELL_SYSUTIL_LANG_SPANISH : return " Spanish " ;
case CELL_SYSUTIL_LANG_GERMAN : return " German " ;
case CELL_SYSUTIL_LANG_ITALIAN : return " Italian " ;
case CELL_SYSUTIL_LANG_DUTCH : return " Dutch " ;
case CELL_SYSUTIL_LANG_PORTUGUESE_PT : return " Portuguese (PT) " ;
case CELL_SYSUTIL_LANG_RUSSIAN : return " Russian " ;
case CELL_SYSUTIL_LANG_KOREAN : return " Korean " ;
case CELL_SYSUTIL_LANG_CHINESE_T : return " Chinese (Trad.) " ;
case CELL_SYSUTIL_LANG_CHINESE_S : return " Chinese (Simp.) " ;
case CELL_SYSUTIL_LANG_FINNISH : return " Finnish " ;
case CELL_SYSUTIL_LANG_SWEDISH : return " Swedish " ;
case CELL_SYSUTIL_LANG_DANISH : return " Danish " ;
case CELL_SYSUTIL_LANG_NORWEGIAN : return " Norwegian " ;
case CELL_SYSUTIL_LANG_POLISH : return " Polish " ;
case CELL_SYSUTIL_LANG_ENGLISH_GB : return " English (UK) " ;
case CELL_SYSUTIL_LANG_PORTUGUESE_BR : return " Portuguese (BR) " ;
case CELL_SYSUTIL_LANG_TURKISH : return " Turkish " ;
}
return unknown ;
} ) ;
}
2016-03-21 20:43:03 +01:00
2017-05-20 13:45:02 +02:00
template < >
2017-09-12 23:42:00 +02:00
void fmt_class_string < CellSysutilParamId > : : format ( std : : string & out , u64 arg )
2016-04-25 12:49:12 +02:00
{
2016-08-03 22:51:05 +02:00
format_enum ( out , arg , [ ] ( auto value )
2016-04-25 12:49:12 +02:00
{
2016-08-03 22:51:05 +02:00
switch ( value )
2016-05-13 15:55:34 +02:00
{
case CELL_SYSUTIL_SYSTEMPARAM_ID_LANG : return " ID_LANG " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_ENTER_BUTTON_ASSIGN : return " ID_ENTER_BUTTON_ASSIGN " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_DATE_FORMAT : return " ID_DATE_FORMAT " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_TIME_FORMAT : return " ID_TIME_FORMAT " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_TIMEZONE : return " ID_TIMEZONE " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_SUMMERTIME : return " ID_SUMMERTIME " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_GAME_PARENTAL_LEVEL : return " ID_GAME_PARENTAL_LEVEL " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_GAME_PARENTAL_LEVEL0_RESTRICT : return " ID_GAME_PARENTAL_LEVEL0_RESTRICT " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_CURRENT_USER_HAS_NP_ACCOUNT : return " ID_CURRENT_USER_HAS_NP_ACCOUNT " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_CAMERA_PLFREQ : return " ID_CAMERA_PLFREQ " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_PAD_RUMBLE : return " ID_PAD_RUMBLE " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_KEYBOARD_TYPE : return " ID_KEYBOARD_TYPE " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_JAPANESE_KEYBOARD_ENTRY_METHOD : return " ID_JAPANESE_KEYBOARD_ENTRY_METHOD " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_CHINESE_KEYBOARD_ENTRY_METHOD : return " ID_CHINESE_KEYBOARD_ENTRY_METHOD " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_PAD_AUTOOFF : return " ID_PAD_AUTOOFF " ;
2019-05-11 07:36:16 +02:00
case CELL_SYSUTIL_SYSTEMPARAM_ID_MAGNETOMETER : return " ID_MAGNETOMETER " ;
2016-05-13 15:55:34 +02:00
case CELL_SYSUTIL_SYSTEMPARAM_ID_NICKNAME : return " ID_NICKNAME " ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_CURRENT_USERNAME : return " ID_CURRENT_USERNAME " ;
}
2016-08-03 22:51:05 +02:00
return unknown ;
} ) ;
}
2016-04-25 12:49:12 +02:00
2019-11-08 17:40:46 +01:00
// Common string checks used in libsysutil functions
s32 sysutil_check_name_string ( const char * src , s32 minlen , s32 maxlen )
{
s32 lastpos ;
if ( g_ps3_process_info . sdk_ver > 0x36FFFF )
{
// Limit null terminator boundary to before buffer max size
lastpos = std : : max ( maxlen - 1 , 0 ) ;
}
else
{
// Limit null terminator boundary to one after buffer max size
lastpos = maxlen ;
}
char cur = src [ 0 ] ;
if ( cur = = ' _ ' )
{
// Invalid character at start
return - 1 ;
}
for ( u32 index = 0 ; ; cur = src [ + + index ] )
{
if ( cur = = ' \0 ' | | index = = maxlen )
{
if ( minlen > index | | ( maxlen = = index & & src [ lastpos ] ) )
{
// String length is invalid
return - 2 ;
}
// OK
return 0 ;
}
if ( cur > = ' A ' & & cur < = ' Z ' )
{
continue ;
}
if ( cur > = ' 0 ' & & cur < = ' 9 ' )
{
continue ;
}
if ( cur = = ' - ' | | cur = = ' _ ' )
{
continue ;
}
// Invalid character found
return - 1 ;
}
}
2019-11-07 15:30:40 +01:00
error_code _cellSysutilGetSystemParamInt ( )
2019-04-05 20:14:01 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGetSystemParamInt ( CellSysutilParamId id , vm : : ptr < s32 > value )
2015-07-06 01:21:15 +02:00
{
2016-08-03 22:51:05 +02:00
cellSysutil . warning ( " cellSysutilGetSystemParamInt(id=0x%x(%s), value=*0x%x) " , id , id , value ) ;
2016-03-21 20:43:03 +01:00
2019-11-15 18:17:54 +01:00
if ( ! value )
{
return CELL_SYSUTIL_ERROR_VALUE ;
}
2016-03-21 20:43:03 +01:00
// TODO: load this information from config (preferably "sys/" group)
2013-08-19 01:06:11 +02:00
2017-09-12 23:42:00 +02:00
switch ( id )
2013-08-19 01:06:11 +02:00
{
case CELL_SYSUTIL_SYSTEMPARAM_ID_LANG :
2017-05-20 13:45:02 +02:00
* value = g_cfg . sys . language ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_ENTER_BUTTON_ASSIGN :
2018-10-03 14:18:47 +02:00
* value = g_cfg . sys . enter_button_assignment ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_DATE_FORMAT :
2014-09-01 02:51:48 +02:00
* value = CELL_SYSUTIL_DATE_FMT_DDMMYYYY ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_TIME_FORMAT :
2014-09-01 02:51:48 +02:00
* value = CELL_SYSUTIL_TIME_FMT_CLOCK24 ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_TIMEZONE :
2015-07-06 01:21:15 +02:00
* value = 180 ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_SUMMERTIME :
2015-07-06 01:21:15 +02:00
* value = 0 ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_GAME_PARENTAL_LEVEL :
2014-09-01 02:51:48 +02:00
* value = CELL_SYSUTIL_GAME_PARENTAL_OFF ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_GAME_PARENTAL_LEVEL0_RESTRICT :
2014-09-01 02:51:48 +02:00
* value = CELL_SYSUTIL_GAME_PARENTAL_LEVEL0_RESTRICT_OFF ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_CURRENT_USER_HAS_NP_ACCOUNT :
2014-09-01 02:51:48 +02:00
* value = 0 ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_CAMERA_PLFREQ :
2014-09-01 02:51:48 +02:00
* value = CELL_SYSUTIL_CAMERA_PLFREQ_DISABLED ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_PAD_RUMBLE :
2014-09-01 02:51:48 +02:00
* value = CELL_SYSUTIL_PAD_RUMBLE_OFF ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_KEYBOARD_TYPE :
2019-08-17 16:08:47 +02:00
* value = g_cfg . sys . keyboard_type ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_JAPANESE_KEYBOARD_ENTRY_METHOD :
2014-09-01 02:51:48 +02:00
* value = 0 ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_CHINESE_KEYBOARD_ENTRY_METHOD :
2014-09-01 02:51:48 +02:00
* value = 0 ;
2013-08-19 01:06:11 +02:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_PAD_AUTOOFF :
2014-09-01 02:51:48 +02:00
* value = 0 ;
2013-08-19 01:06:11 +02:00
break ;
2018-03-02 17:51:21 +01:00
case CELL_SYSUTIL_SYSTEMPARAM_ID_MAGNETOMETER :
* value = 0 ;
break ;
2013-08-19 01:06:11 +02:00
default :
2019-11-15 18:17:54 +01:00
return CELL_SYSUTIL_ERROR_VALUE ;
2013-08-19 01:06:11 +02:00
}
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGetSystemParamString ( CellSysutilParamId id , vm : : ptr < char > buf , u32 bufsize )
2013-11-29 05:56:26 +01:00
{
2016-08-03 22:51:05 +02:00
cellSysutil . trace ( " cellSysutilGetSystemParamString(id=0x%x(%s), buf=*0x%x, bufsize=%d) " , id , id , buf , bufsize ) ;
2013-11-29 05:56:26 +01:00
2019-11-15 18:17:54 +01:00
if ( ! buf )
{
return CELL_SYSUTIL_ERROR_VALUE ;
}
2014-08-31 17:01:48 +02:00
memset ( buf . get_ptr ( ) , 0 , bufsize ) ;
2014-01-14 20:03:48 +01:00
2017-09-12 23:42:00 +02:00
switch ( id )
2013-11-29 05:56:26 +01:00
{
case CELL_SYSUTIL_SYSTEMPARAM_ID_NICKNAME :
2014-08-31 17:01:48 +02:00
memcpy ( buf . get_ptr ( ) , " Unknown " , 8 ) ; // for example
2013-11-29 05:56:26 +01:00
break ;
case CELL_SYSUTIL_SYSTEMPARAM_ID_CURRENT_USERNAME :
2014-08-31 17:01:48 +02:00
memcpy ( buf . get_ptr ( ) , " Unknown " , 8 ) ;
2013-11-29 05:56:26 +01:00
break ;
default :
2019-11-15 18:17:54 +01:00
return CELL_SYSUTIL_ERROR_VALUE ;
2013-11-29 05:56:26 +01:00
}
return CELL_OK ;
}
2018-12-23 00:16:03 +01:00
// Note: the way we do things here is inaccurate(but maybe sufficient)
// The real function goes over a table of 0x20 entries[ event_code:u32 callback_addr:u32 ]
// Those callbacks are registered through cellSysutilRegisterCallbackDispatcher(u32 event_code, vm::ptr<void> func_addr)
// The function goes through all the callback looking for one callback associated with event 0x100, if any is found it is called with parameters r3=0x101 r4=0
// This particular CB seems to be associated with sysutil itself
// Then it checks for events on an event_queue associated with sysutil, checks if any cb is associated with that event and calls them with parameters that come from the event
2018-10-11 00:17:19 +02:00
error_code cellSysutilCheckCallback ( ppu_thread & ppu )
2014-09-11 21:18:19 +02:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . trace ( " cellSysutilCheckCallback() " ) ;
2013-11-16 22:12:30 +01:00
2019-08-24 17:10:46 +02:00
const auto cbm = g_fxo - > get < sysutil_cb_manager > ( ) ;
2016-07-27 23:43:22 +02:00
2019-01-03 16:18:31 +01:00
for ( auto & & func : cbm - > registered . pop_all ( ) )
2014-02-15 22:16:35 +01:00
{
2019-01-03 16:18:31 +01:00
if ( s32 res = func ( ppu ) )
2014-09-11 21:18:19 +02:00
{
2018-12-31 20:03:30 +01:00
// Currently impossible
2018-10-11 00:17:19 +02:00
return not_an_error ( res ) ;
2014-02-16 16:23:58 +01:00
}
2016-08-04 21:13:01 +02:00
2018-10-11 00:17:19 +02:00
if ( ppu . is_stopped ( ) )
{
return 0 ;
}
2014-02-15 22:16:35 +01:00
}
2014-02-01 11:17:15 +01:00
2013-11-16 22:12:30 +01:00
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilRegisterCallback ( s32 slot , vm : : ptr < CellSysutilCallback > func , vm : : ptr < void > userdata )
2013-11-16 22:12:30 +01:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . warning ( " cellSysutilRegisterCallback(slot=%d, func=*0x%x, userdata=*0x%x) " , slot , func , userdata ) ;
2013-11-16 22:12:30 +01:00
2016-07-27 23:43:22 +02:00
if ( slot > = 4 )
2014-09-11 21:18:19 +02:00
{
return CELL_SYSUTIL_ERROR_VALUE ;
}
2013-11-16 22:12:30 +01:00
2019-08-24 17:10:46 +02:00
const auto cbm = g_fxo - > get < sysutil_cb_manager > ( ) ;
2016-07-27 23:43:22 +02:00
2018-12-31 20:03:30 +01:00
cbm - > callbacks [ slot ] . store ( { func , userdata } ) ;
2016-07-27 23:43:22 +02:00
2013-11-16 22:12:30 +01:00
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilUnregisterCallback ( u32 slot )
2013-11-16 22:12:30 +01:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . warning ( " cellSysutilUnregisterCallback(slot=%d) " , slot ) ;
2014-02-15 22:16:35 +01:00
2016-07-27 23:43:22 +02:00
if ( slot > = 4 )
2014-09-11 21:18:19 +02:00
{
return CELL_SYSUTIL_ERROR_VALUE ;
}
2013-11-16 22:12:30 +01:00
2019-08-24 17:10:46 +02:00
const auto cbm = g_fxo - > get < sysutil_cb_manager > ( ) ;
2016-07-27 23:43:22 +02:00
2018-12-31 20:03:30 +01:00
cbm - > callbacks [ slot ] . store ( { } ) ;
2016-07-27 23:43:22 +02:00
2013-11-16 22:12:30 +01:00
return CELL_OK ;
}
2015-07-06 01:21:15 +02:00
bool g_bgm_playback_enabled = true ;
2014-06-09 15:35:35 +02:00
2019-11-07 15:30:40 +01:00
error_code cellSysutilEnableBgmPlayback ( )
2014-06-09 15:35:35 +02:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . warning ( " cellSysutilEnableBgmPlayback() " ) ;
2014-06-09 15:35:35 +02:00
2014-06-27 13:11:56 +02:00
// TODO
2015-07-06 01:21:15 +02:00
g_bgm_playback_enabled = true ;
2014-06-09 18:28:52 +02:00
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilEnableBgmPlaybackEx ( vm : : ptr < CellSysutilBgmPlaybackExtraParam > param )
2014-06-09 18:28:52 +02:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . warning ( " cellSysutilEnableBgmPlaybackEx(param=*0x%x) " , param ) ;
2014-06-09 18:28:52 +02:00
2014-06-27 13:11:56 +02:00
// TODO
2018-03-02 17:51:21 +01:00
g_bgm_playback_enabled = true ;
2014-06-09 18:28:52 +02:00
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilDisableBgmPlayback ( )
2014-06-09 18:28:52 +02:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . warning ( " cellSysutilDisableBgmPlayback() " ) ;
2014-06-09 18:28:52 +02:00
2014-06-27 13:11:56 +02:00
// TODO
2015-07-06 01:21:15 +02:00
g_bgm_playback_enabled = false ;
2014-06-09 18:28:52 +02:00
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilDisableBgmPlaybackEx ( vm : : ptr < CellSysutilBgmPlaybackExtraParam > param )
2014-06-09 18:28:52 +02:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . warning ( " cellSysutilDisableBgmPlaybackEx(param=*0x%x) " , param ) ;
2014-06-09 18:28:52 +02:00
2014-06-27 13:11:56 +02:00
// TODO
2015-07-06 01:21:15 +02:00
g_bgm_playback_enabled = false ;
2014-06-09 18:28:52 +02:00
2014-06-09 15:35:35 +02:00
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGetBgmPlaybackStatus ( vm : : ptr < CellSysutilBgmPlaybackStatus > status )
2014-04-04 09:24:28 +02:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . warning ( " cellSysutilGetBgmPlaybackStatus(status=*0x%x) " , status ) ;
2014-04-04 09:24:28 +02:00
2014-06-09 15:35:35 +02:00
// TODO
2014-06-27 13:11:56 +02:00
status - > playerState = CELL_SYSUTIL_BGMPLAYBACK_STATUS_STOP ;
2015-07-06 01:21:15 +02:00
status - > enableState = g_bgm_playback_enabled ? CELL_SYSUTIL_BGMPLAYBACK_STATUS_ENABLE : CELL_SYSUTIL_BGMPLAYBACK_STATUS_DISABLE ;
2014-06-27 13:11:56 +02:00
status - > currentFadeRatio = 0 ; // current volume ratio (0%)
2014-04-04 09:24:28 +02:00
memset ( status - > contentId , 0 , sizeof ( status - > contentId ) ) ;
2014-06-27 13:11:56 +02:00
memset ( status - > reserved , 0 , sizeof ( status - > reserved ) ) ;
2014-04-04 09:24:28 +02:00
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGetBgmPlaybackStatus2 ( vm : : ptr < CellSysutilBgmPlaybackStatus2 > status2 )
2014-06-09 18:28:52 +02:00
{
2016-01-12 22:57:16 +01:00
cellSysutil . warning ( " cellSysutilGetBgmPlaybackStatus2(status2=*0x%x) " , status2 ) ;
2014-06-09 18:28:52 +02:00
// TODO
2014-06-27 13:11:56 +02:00
status2 - > playerState = CELL_SYSUTIL_BGMPLAYBACK_STATUS_STOP ;
memset ( status2 - > reserved , 0 , sizeof ( status2 - > reserved ) ) ;
2014-06-09 18:28:52 +02:00
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilSetBgmPlaybackExtraParam ( )
2014-04-25 07:14:40 +02:00
{
2016-03-21 20:43:03 +01:00
cellSysutil . todo ( " cellSysutilSetBgmPlaybackExtraParam() " ) ;
return CELL_OK ;
2015-08-01 18:14:49 +02:00
}
2014-08-05 16:06:40 +02:00
2019-11-07 15:30:40 +01:00
error_code cellSysutilRegisterCallbackDispatcher ( )
2015-08-01 18:14:49 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilRegisterCallbackDispatcher() " ) ;
return CELL_OK ;
2015-08-01 18:14:49 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilUnregisterCallbackDispatcher ( )
2017-02-12 19:03:08 +01:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilUnregisterCallbackDispatcher() " ) ;
return CELL_OK ;
2017-02-12 19:03:08 +01:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilPacketRead ( )
2017-02-12 19:03:08 +01:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilPacketRead() " ) ;
return CELL_OK ;
2017-02-12 19:03:08 +01:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilPacketWrite ( )
2015-08-01 18:14:49 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilPacketWrite() " ) ;
return CELL_OK ;
2015-08-01 18:14:49 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilPacketBegin ( )
2017-02-12 19:03:08 +01:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilPacketBegin() " ) ;
return CELL_OK ;
2017-02-12 19:03:08 +01:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilPacketEnd ( )
2017-02-12 19:03:08 +01:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilPacketEnd() " ) ;
return CELL_OK ;
2017-02-12 19:03:08 +01:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGameDataAssignVmc ( )
2015-08-01 18:14:49 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilGameDataAssignVmc() " ) ;
return CELL_OK ;
2015-08-01 18:14:49 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGameDataExit ( )
2015-08-01 18:14:49 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilGameDataExit() " ) ;
return CELL_OK ;
2014-04-25 07:14:40 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGameExit_I ( )
2015-08-01 18:14:49 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilGameExit_I() " ) ;
return CELL_OK ;
2015-08-01 18:14:49 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGamePowerOff_I ( )
2015-08-01 18:14:49 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilGamePowerOff_I() " ) ;
return CELL_OK ;
2015-08-01 18:14:49 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilGameReboot_I ( )
2015-08-01 18:14:49 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilGameReboot_I() " ) ;
return CELL_OK ;
2015-08-01 18:14:49 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilSharedMemoryAlloc ( )
2017-04-05 00:12:15 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilSharedMemoryAlloc() " ) ;
return CELL_OK ;
2017-04-05 00:12:15 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilSharedMemoryFree ( )
2017-04-05 00:12:15 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilSharedMemoryFree() " ) ;
return CELL_OK ;
2017-04-05 00:12:15 +02:00
}
2019-11-07 15:30:40 +01:00
error_code cellSysutilNotification ( )
2019-04-05 20:14:01 +02:00
{
2019-09-02 13:41:57 +02:00
cellSysutil . todo ( " cellSysutilNotification() " ) ;
return CELL_OK ;
2019-04-05 20:14:01 +02:00
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml7Element11AppendChildERS0_ ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8DocumentC1Ev ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8DocumentD1Ev ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8Document5ClearEv ( )
2017-07-21 17:41:11 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8Document5WriteEPFiPKvjPvES3_ ( )
2017-12-02 21:34:21 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8Document12RegisterFileEPKvjPNS_4FileE ( )
2017-12-02 21:34:21 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8Document13CreateElementEPKciPNS_7ElementE ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8Document14SetHeaderMagicEPKc ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8Document16CreateFromBufferEPKvjb ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN4cxml8Document18GetDocumentElementEv ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZNK4cxml4File7GetAddrEv ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZNK4cxml7Element12GetAttributeEPKcPNS_9AttributeE ( )
2017-04-05 00:12:15 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZNK4cxml7Element13GetFirstChildEv ( )
2017-07-21 17:41:11 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZNK4cxml7Element14GetNextSiblingEv ( )
2017-04-05 00:12:15 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZNK4cxml9Attribute6GetIntEPi ( )
2017-04-05 00:12:15 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZNK4cxml9Attribute7GetFileEPNS_4FileE ( )
2017-04-05 00:12:15 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil6SetIntERKN4cxml7ElementEPKci ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil6GetIntERKN4cxml7ElementEPKcPi ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil7SetFileERKN4cxml7ElementEPKcRKNS0_4FileE ( )
2017-12-02 21:34:21 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil8GetFloatERKN4cxml7ElementEPKcPf ( )
2017-07-21 17:41:11 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil8SetFloatERKN4cxml7ElementEPKcf ( )
2019-04-05 20:14:01 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil9GetStringERKN4cxml7ElementEPKcPS5_Pj ( )
2017-04-05 00:12:15 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil9SetStringERKN4cxml7ElementEPKcS5_ ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil16CheckElementNameERKN4cxml7ElementEPKc ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil16FindChildElementERKN4cxml7ElementEPKcS5_S5_ ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN8cxmlutil7GetFileERKN4cxml7ElementEPKcPNS0_4FileE ( )
2017-01-27 02:17:31 +01:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN16sysutil_cxmlutil11FixedMemory3EndEi ( )
2017-08-12 23:32:00 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN16sysutil_cxmlutil11FixedMemory5BeginEi ( )
2017-08-12 23:32:00 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN16sysutil_cxmlutil11FixedMemory8AllocateEN4cxml14AllocationTypeEPvS3_jPS3_Pj ( )
2017-08-12 23:32:00 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN16sysutil_cxmlutil12PacketWriter5WriteEPKvjPv ( )
2017-08-12 23:32:00 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code _ZN16sysutil_cxmlutil12PacketWriterC1EiiRN4cxml8DocumentE ( )
2017-08-12 23:32:00 +02:00
{
UNIMPLEMENTED_FUNC ( cellSysutil ) ;
return CELL_OK ;
}
2019-11-07 15:30:40 +01:00
error_code cellSysutil_E1EC7B6A ( vm : : ptr < u32 > unk )
2017-02-12 19:03:08 +01:00
{
cellSysutil . todo ( " cellSysutil_E1EC7B6A(unk=*0x%x) " , unk ) ;
* unk = 0 ;
return CELL_OK ;
}
2015-01-05 00:07:46 +01:00
extern void cellSysutil_SaveData_init ( ) ;
2015-04-13 16:05:44 +02:00
extern void cellSysutil_GameData_init ( ) ;
2015-04-15 20:33:44 +02:00
extern void cellSysutil_MsgDialog_init ( ) ;
2015-07-30 03:43:03 +02:00
extern void cellSysutil_OskDialog_init ( ) ;
2015-07-31 01:11:43 +02:00
extern void cellSysutil_Storage_init ( ) ;
2015-08-01 18:14:49 +02:00
extern void cellSysutil_Sysconf_init ( ) ;
extern void cellSysutil_SysutilAvc_init ( ) ;
extern void cellSysutil_WebBrowser_init ( ) ;
extern void cellSysutil_AudioOut_init ( ) ;
extern void cellSysutil_VideoOut_init ( ) ;
2019-11-05 16:09:03 +01:00
extern void cellSysutil_SysCache_init ( ) ;
2015-01-05 00:07:46 +01:00
2016-03-21 20:43:03 +01:00
DECLARE ( ppu_module_manager : : cellSysutil ) ( " cellSysutil " , [ ] ( )
2014-09-11 21:18:19 +02:00
{
2015-04-13 16:05:44 +02:00
cellSysutil_SaveData_init ( ) ; // cellSaveData functions
cellSysutil_GameData_init ( ) ; // cellGameData, cellHddGame functions
2015-04-15 20:33:44 +02:00
cellSysutil_MsgDialog_init ( ) ; // cellMsgDialog functions
2015-07-30 03:43:03 +02:00
cellSysutil_OskDialog_init ( ) ; // cellOskDialog functions
2015-07-31 01:11:43 +02:00
cellSysutil_Storage_init ( ) ; // cellStorage functions
2015-08-01 18:14:49 +02:00
cellSysutil_Sysconf_init ( ) ; // cellSysconf functions
cellSysutil_SysutilAvc_init ( ) ; // cellSysutilAvc functions
cellSysutil_WebBrowser_init ( ) ; // cellWebBrowser, cellWebComponent functions
cellSysutil_AudioOut_init ( ) ; // cellAudioOut functions
cellSysutil_VideoOut_init ( ) ; // cellVideoOut functions
2019-11-05 16:09:03 +01:00
cellSysutil_SysCache_init ( ) ; // cellSysCache functions
2015-04-13 16:05:44 +02:00
2019-04-05 20:14:01 +02:00
REG_FUNC ( cellSysutil , _cellSysutilGetSystemParamInt ) ;
2015-02-20 14:58:40 +01:00
REG_FUNC ( cellSysutil , cellSysutilGetSystemParamInt ) ;
REG_FUNC ( cellSysutil , cellSysutilGetSystemParamString ) ;
REG_FUNC ( cellSysutil , cellSysutilCheckCallback ) ;
REG_FUNC ( cellSysutil , cellSysutilRegisterCallback ) ;
REG_FUNC ( cellSysutil , cellSysutilUnregisterCallback ) ;
REG_FUNC ( cellSysutil , cellSysutilGetBgmPlaybackStatus ) ;
REG_FUNC ( cellSysutil , cellSysutilGetBgmPlaybackStatus2 ) ;
REG_FUNC ( cellSysutil , cellSysutilEnableBgmPlayback ) ;
REG_FUNC ( cellSysutil , cellSysutilEnableBgmPlaybackEx ) ;
REG_FUNC ( cellSysutil , cellSysutilDisableBgmPlayback ) ;
REG_FUNC ( cellSysutil , cellSysutilDisableBgmPlaybackEx ) ;
2015-08-01 18:14:49 +02:00
REG_FUNC ( cellSysutil , cellSysutilSetBgmPlaybackExtraParam ) ;
2015-02-20 14:58:40 +01:00
2015-08-01 18:14:49 +02:00
REG_FUNC ( cellSysutil , cellSysutilRegisterCallbackDispatcher ) ;
2017-02-12 19:03:08 +01:00
REG_FUNC ( cellSysutil , cellSysutilUnregisterCallbackDispatcher ) ;
REG_FUNC ( cellSysutil , cellSysutilPacketRead ) ;
2015-08-01 18:14:49 +02:00
REG_FUNC ( cellSysutil , cellSysutilPacketWrite ) ;
2017-02-12 19:03:08 +01:00
REG_FUNC ( cellSysutil , cellSysutilPacketBegin ) ;
REG_FUNC ( cellSysutil , cellSysutilPacketEnd ) ;
2015-02-18 17:22:06 +01:00
2015-08-01 18:14:49 +02:00
REG_FUNC ( cellSysutil , cellSysutilGameDataAssignVmc ) ;
REG_FUNC ( cellSysutil , cellSysutilGameDataExit ) ;
REG_FUNC ( cellSysutil , cellSysutilGameExit_I ) ;
REG_FUNC ( cellSysutil , cellSysutilGamePowerOff_I ) ;
REG_FUNC ( cellSysutil , cellSysutilGameReboot_I ) ;
2017-01-27 02:17:31 +01:00
2017-04-05 00:12:15 +02:00
REG_FUNC ( cellSysutil , cellSysutilSharedMemoryAlloc ) ;
REG_FUNC ( cellSysutil , cellSysutilSharedMemoryFree ) ;
2019-04-05 20:14:01 +02:00
REG_FUNC ( cellSysutil , cellSysutilNotification ) ;
2017-01-27 02:17:31 +01:00
REG_FUNC ( cellSysutil , _ZN4cxml7Element11AppendChildERS0_ ) ;
REG_FUNC ( cellSysutil , _ZN4cxml8DocumentC1Ev ) ;
REG_FUNC ( cellSysutil , _ZN4cxml8DocumentD1Ev ) ;
2017-07-21 17:41:11 +02:00
REG_FUNC ( cellSysutil , _ZN4cxml8Document5ClearEv ) ;
2017-12-02 21:34:21 +01:00
REG_FUNC ( cellSysutil , _ZN4cxml8Document5WriteEPFiPKvjPvES3_ ) ;
REG_FUNC ( cellSysutil , _ZN4cxml8Document12RegisterFileEPKvjPNS_4FileE ) ;
2017-01-27 02:17:31 +01:00
REG_FUNC ( cellSysutil , _ZN4cxml8Document13CreateElementEPKciPNS_7ElementE ) ;
REG_FUNC ( cellSysutil , _ZN4cxml8Document14SetHeaderMagicEPKc ) ;
REG_FUNC ( cellSysutil , _ZN4cxml8Document16CreateFromBufferEPKvjb ) ;
REG_FUNC ( cellSysutil , _ZN4cxml8Document18GetDocumentElementEv ) ;
REG_FUNC ( cellSysutil , _ZNK4cxml4File7GetAddrEv ) ;
2017-04-05 00:12:15 +02:00
REG_FUNC ( cellSysutil , _ZNK4cxml7Element12GetAttributeEPKcPNS_9AttributeE ) ;
2017-07-21 17:41:11 +02:00
REG_FUNC ( cellSysutil , _ZNK4cxml7Element13GetFirstChildEv ) ;
2017-04-05 00:12:15 +02:00
REG_FUNC ( cellSysutil , _ZNK4cxml7Element14GetNextSiblingEv ) ;
REG_FUNC ( cellSysutil , _ZNK4cxml9Attribute6GetIntEPi ) ;
REG_FUNC ( cellSysutil , _ZNK4cxml9Attribute7GetFileEPNS_4FileE ) ;
2017-01-27 02:17:31 +01:00
REG_FUNC ( cellSysutil , _ZN8cxmlutil6SetIntERKN4cxml7ElementEPKci ) ;
REG_FUNC ( cellSysutil , _ZN8cxmlutil6GetIntERKN4cxml7ElementEPKcPi ) ;
2017-12-02 21:34:21 +01:00
REG_FUNC ( cellSysutil , _ZN8cxmlutil7SetFileERKN4cxml7ElementEPKcRKNS0_4FileE ) ;
2017-07-21 17:41:11 +02:00
REG_FUNC ( cellSysutil , _ZN8cxmlutil8GetFloatERKN4cxml7ElementEPKcPf ) ;
2019-04-05 20:14:01 +02:00
REG_FUNC ( cellSysutil , _ZN8cxmlutil8SetFloatERKN4cxml7ElementEPKcf ) ;
2017-04-05 00:12:15 +02:00
REG_FUNC ( cellSysutil , _ZN8cxmlutil9GetStringERKN4cxml7ElementEPKcPS5_Pj ) ;
2017-01-27 02:17:31 +01:00
REG_FUNC ( cellSysutil , _ZN8cxmlutil9SetStringERKN4cxml7ElementEPKcS5_ ) ;
REG_FUNC ( cellSysutil , _ZN8cxmlutil16CheckElementNameERKN4cxml7ElementEPKc ) ;
REG_FUNC ( cellSysutil , _ZN8cxmlutil16FindChildElementERKN4cxml7ElementEPKcS5_S5_ ) ;
REG_FUNC ( cellSysutil , _ZN8cxmlutil7GetFileERKN4cxml7ElementEPKcPNS0_4FileE ) ;
2018-03-02 17:51:21 +01:00
2017-08-12 23:32:00 +02:00
REG_FUNC ( cellSysutil , _ZN16sysutil_cxmlutil11FixedMemory3EndEi ) ;
REG_FUNC ( cellSysutil , _ZN16sysutil_cxmlutil11FixedMemory5BeginEi ) ;
REG_FUNC ( cellSysutil , _ZN16sysutil_cxmlutil11FixedMemory8AllocateEN4cxml14AllocationTypeEPvS3_jPS3_Pj ) ;
REG_FUNC ( cellSysutil , _ZN16sysutil_cxmlutil12PacketWriter5WriteEPKvjPv ) ;
REG_FUNC ( cellSysutil , _ZN16sysutil_cxmlutil12PacketWriterC1EiiRN4cxml8DocumentE ) ;
2018-03-02 17:51:21 +01:00
2017-02-12 19:03:08 +01:00
REG_FNID ( cellSysutil , 0xE1EC7B6A , cellSysutil_E1EC7B6A ) ;
2015-02-18 17:22:06 +01:00
} ) ;