From 147bd161cfd1b4557099321fb3ecfcac5e096cd3 Mon Sep 17 00:00:00 2001 From: Nathan Bourgeois Date: Thu, 15 Oct 2020 03:09:36 -0400 Subject: [PATCH] Add more --- src/main.zig | 2 +- src/psp/sdk/pspaudio.zig | 209 +++++++++++++++- src/psp/sdk/pspmodulemgr.zig | 144 +++++++++-- src/psp/sdk/pspmp3.zig | 175 +++++++++++++- src/psp/sdk/pspmpeg.zig | 205 ++++++++++++++-- src/psp/sdk/psppower.zig | 234 ++++++++++++++++-- src/psp/sdk/psputility.zig | 454 +++++++++++++++++------------------ src/psp/sdk/zSafeTodo.txt | 11 - 8 files changed, 1116 insertions(+), 318 deletions(-) delete mode 100644 src/psp/sdk/zSafeTodo.txt diff --git a/src/main.zig b/src/main.zig index 9d6903b..5e2e5fd 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,4 +1,4 @@ -const psp = @import("psp/utils/psp.zig"); +const psp = @import("psp/pspsdk.zig"); comptime{ asm(psp.module_info("Zig PSP", 0, 1, 0)); diff --git a/src/psp/sdk/pspaudio.zig b/src/psp/sdk/pspaudio.zig index 6008f7a..0b59629 100644 --- a/src/psp/sdk/pspaudio.zig +++ b/src/psp/sdk/pspaudio.zig @@ -1,9 +1,9 @@ -pub const enum_PspAudioFormats = extern enum(c_int) { - PSP_AUDIO_FORMAT_STEREO = 0, - PSP_AUDIO_FORMAT_MONO = 16, +pub const PspAudioFormats = extern enum(c_int) { + Stereo = 0, + Mono = 16, _, }; -const struct_unnamed_1 = extern struct { +pub const PspAudioInputParams = extern struct { unknown1: c_int, gain: c_int, unknown2: c_int, @@ -11,31 +11,226 @@ const struct_unnamed_1 = extern struct { unknown4: c_int, unknown5: c_int, }; -pub const PspAudioFormats = enum_PspAudioFormats; -pub const pspAudioInputParams = struct_unnamed_1; + +// Allocate and initialize a hardware output channel. +// +// @param channel - Use a value between 0 - 7 to reserve a specific channel. +// Pass PSP_AUDIO_NEXT_CHANNEL to get the first available channel. +// @param samplecount - The number of samples that can be output on the channel per +// output call. It must be a value between ::PSP_AUDIO_SAMPLE_MIN +// and ::PSP_AUDIO_SAMPLE_MAX, and it must be aligned to 64 bytes +// (use the ::PSP_AUDIO_SAMPLE_ALIGN macro to align it). +// @param format - The output format to use for the channel. One of ::PspAudioFormats. +// +// @return The channel number on success, an error code if less than 0. pub extern fn sceAudioChReserve(channel: c_int, samplecount: c_int, format: c_int) c_int; + +// Release a hardware output channel. +// +// @param channel - The channel to release. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioChRelease(channel: c_int) c_int; + +// Output audio of the specified channel +// +// @param channel - The channel number. +// +// @param vol - The volume. +// +// @param buf - Pointer to the PCM data to output. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioOutput(channel: c_int, vol: c_int, buf: ?*c_void) c_int; + +// Output audio of the specified channel (blocking) +// +// @param channel - The channel number. +// +// @param vol - The volume. +// +// @param buf - Pointer to the PCM data to output. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioOutputBlocking(channel: c_int, vol: c_int, buf: ?*c_void) c_int; + +// Output panned audio of the specified channel +// +// @param channel - The channel number. +// +// @param leftvol - The left volume. +// +// @param rightvol - The right volume. +// +// @param buf - Pointer to the PCM data to output. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioOutputPanned(channel: c_int, leftvol: c_int, rightvol: c_int, buf: ?*c_void) c_int; + +// Output panned audio of the specified channel (blocking) +// +// @param channel - The channel number. +// +// @param leftvol - The left volume. +// +// @param rightvol - The right volume. +// +// @param buf - Pointer to the PCM data to output. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioOutputPannedBlocking(channel: c_int, leftvol: c_int, rightvol: c_int, buf: ?*c_void) c_int; + +// Get count of unplayed samples remaining +// +// @param channel - The channel number. +// +// @return Number of samples to be played, an error if less than 0. pub extern fn sceAudioGetChannelRestLen(channel: c_int) c_int; + +// Get count of unplayed samples remaining +// +// @param channel - The channel number. +// +// @return Number of samples to be played, an error if less than 0. pub extern fn sceAudioGetChannelRestLength(channel: c_int) c_int; + +// Change the output sample count, after it's already been reserved +// +// @param channel - The channel number. +// @param samplecount - The number of samples to output in one output call. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioSetChannelDataLen(channel: c_int, samplecount: c_int) c_int; + +// Change the format of a channel +// +// @param channel - The channel number. +// +// @param format - One of ::PspAudioFormats +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioChangeChannelConfig(channel: c_int, format: c_int) c_int; + +// Change the volume of a channel +// +// @param channel - The channel number. +// +// @param leftvol - The left volume. +// +// @param rightvol - The right volume. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioChangeChannelVolume(channel: c_int, leftvol: c_int, rightvol: c_int) c_int; + +// Reserve the audio output and set the output sample count +// +// @param samplecount - The number of samples to output in one output call (min 17, max 4111). +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioOutput2Reserve(samplecount: c_int) c_int; + +// Release the audio output +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioOutput2Release() c_int; + +// Change the output sample count, after it's already been reserved +// +// @param samplecount - The number of samples to output in one output call (min 17, max 4111). +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioOutput2ChangeLength(samplecount: c_int) c_int; + +// Output audio (blocking) +// +// @param vol - The volume. +// +// @param buf - Pointer to the PCM data. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioOutput2OutputBlocking(vol: c_int, buf: ?*c_void) c_int; + +// Get count of unplayed samples remaining +// +// @return Number of samples to be played, an error if less than 0. pub extern fn sceAudioOutput2GetRestSample() c_int; + +// Reserve the audio output +// +// @param samplecount - The number of samples to output in one output call (min 17, max 4111). +// +// @param freq - The frequency. One of 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11050, 8000. +// +// @param channels - Number of channels. Pass 2 (stereo). +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioSRCChReserve(samplecount: c_int, freq: c_int, channels: c_int) c_int; + +// Release the audio output +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioSRCChRelease() c_int; + +// Output audio +// +// @param vol - The volume. +// +// @param buf - Pointer to the PCM data to output. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioSRCOutputBlocking(vol: c_int, buf: ?*c_void) c_int; + +// Init audio input +// +// @param unknown1 - Unknown. Pass 0. +// +// @param gain - Gain. +// +// @param unknown2 - Unknown. Pass 0. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioInputInit(unknown1: c_int, gain: c_int, unknown2: c_int) c_int; -pub extern fn sceAudioInputInitEx(params: [*c]pspAudioInputParams) c_int; + +// Init audio input (with extra arguments) +// +// @param params - A pointer to a ::pspAudioInputParams struct. +// +// @return 0 on success, an error if less than 0. +pub extern fn sceAudioInputInitEx(params: [*]PspAudioInputParams) c_int; + +// Perform audio input (blocking) +// +// @param samplecount - Number of samples. +// +// @param freq - Either 44100, 22050 or 11025. +// +// @param buf - Pointer to where the audio data will be stored. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioInputBlocking(samplecount: c_int, freq: c_int, buf: ?*c_void) c_int; + +// Perform audio input +// +// @param samplecount - Number of samples. +// +// @param freq - Either 44100, 22050 or 11025. +// +// @param buf - Pointer to where the audio data will be stored. +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioInput(samplecount: c_int, freq: c_int, buf: ?*c_void) c_int; + +// Get the number of samples that were acquired +// +// @return Number of samples acquired, an error if less than 0. pub extern fn sceAudioGetInputLength() c_int; + +// Wait for non-blocking audio input to complete +// +// @return 0 on success, an error if less than 0. pub extern fn sceAudioWaitInputEnd() c_int; + +// Poll for non-blocking audio input status +// +// @return 0 if input has completed, 1 if not completed or an error if less than 0. pub extern fn sceAudioPollInputEnd() c_int; diff --git a/src/psp/sdk/pspmodulemgr.zig b/src/psp/sdk/pspmodulemgr.zig index 5a13da8..8ef989f 100644 --- a/src/psp/sdk/pspmodulemgr.zig +++ b/src/psp/sdk/pspmodulemgr.zig @@ -1,6 +1,6 @@ usingnamespace @import("psptypes.zig"); -pub const struct_SceKernelLMOption = extern struct { +pub const SceKernelLMOption = extern struct { size: SceSize, mpidtext: SceUID, mpiddata: SceUID, @@ -9,25 +9,16 @@ pub const struct_SceKernelLMOption = extern struct { access: u8, creserved: [2]u8, }; -pub const SceKernelLMOption = struct_SceKernelLMOption; -pub const struct_SceKernelSMOption = extern struct { + +pub const SceKernelSMOption = extern struct { size: SceSize, mpidstack: SceUID, stacksize: SceSize, priority: c_int, attribute: c_uint, }; -pub const SceKernelSMOption = struct_SceKernelSMOption; -pub extern fn sceKernelLoadModule(path: [*c]const u8, flags: c_int, option: [*c]SceKernelLMOption) SceUID; -pub extern fn sceKernelLoadModuleMs(path: [*c]const u8, flags: c_int, option: [*c]SceKernelLMOption) SceUID; -pub extern fn sceKernelLoadModuleByID(fid: SceUID, flags: c_int, option: [*c]SceKernelLMOption) SceUID; -pub extern fn sceKernelLoadModuleBufferUsbWlan(bufsize: SceSize, buf: ?*c_void, flags: c_int, option: [*c]SceKernelLMOption) SceUID; -pub extern fn sceKernelStartModule(modid: SceUID, argsize: SceSize, argp: ?*c_void, status: [*c]c_int, option: [*c]SceKernelSMOption) c_int; -pub extern fn sceKernelStopModule(modid: SceUID, argsize: SceSize, argp: ?*c_void, status: [*c]c_int, option: [*c]SceKernelSMOption) c_int; -pub extern fn sceKernelUnloadModule(modid: SceUID) c_int; -pub extern fn sceKernelSelfStopUnloadModule(unknown: c_int, argsize: SceSize, argp: ?*c_void) c_int; -pub extern fn sceKernelStopUnloadSelfModule(argsize: SceSize, argp: ?*c_void, status: [*c]c_int, option: [*c]SceKernelSMOption) c_int; -pub const struct_SceKernelModuleInfo = extern struct { + +pub const SceKernelModuleInfo = extern struct { size: SceSize, nsegment: u8, reserved: [3]u8, @@ -43,9 +34,128 @@ pub const struct_SceKernelModuleInfo = extern struct { version: [2]u8, name: [28]u8, }; -pub const SceKernelModuleInfo = struct_SceKernelModuleInfo; -pub extern fn sceKernelQueryModuleInfo(modid: SceUID, info: [*c]SceKernelModuleInfo) c_int; -pub extern fn sceKernelGetModuleIdList(readbuf: [*c]SceUID, readbufsize: c_int, idcount: [*c]c_int) c_int; pub const PSP_MEMORY_PARTITION_KERNEL = 1; pub const PSP_MEMORY_PARTITION_USER = 2; + +// Load a module. +// @note This function restricts where it can load from (such as from flash0) +// unless you call it in kernel mode. It also must be called from a thread. +// +// @param path - The path to the module to load. +// @param flags - Unused, always 0 . +// @param option - Pointer to a mod_param_t structure. Can be NULL. +// +// @return The UID of the loaded module on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelLoadModule(path: []const u8, flags: c_int, option: *SceKernelLMOption) SceUID; + + +// Load a module from MS. +// @note This function restricts what it can load, e.g. it wont load plain executables. +// +// @param path - The path to the module to load. +// @param flags - Unused, set to 0. +// @param option - Pointer to a mod_param_t structure. Can be NULL. +// +// @return The UID of the loaded module on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelLoadModuleMs(path: []const u8, flags: c_int, option: *SceKernelLMOption) SceUID; + + +// Load a module from the given file UID. +// +// @param fid - The module's file UID. +// @param flags - Unused, always 0. +// @param option - Pointer to an optional ::SceKernelLMOption structure. +// +// @return The UID of the loaded module on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelLoadModuleByID(fid: SceUID, flags: c_int, option: *SceKernelLMOption) SceUID; + +// Load a module from a buffer using the USB/WLAN API. +// +// Can only be called from kernel mode, or from a thread that has attributes of 0xa0000000. +// +// @param bufsize - Size (in bytes) of the buffer pointed to by buf. +// @param buf - Pointer to a buffer containing the module to load. The buffer must reside at an +// address that is a multiple to 64 bytes. +// @param flags - Unused, always 0. +// @param option - Pointer to an optional ::SceKernelLMOption structure. +// +// @return The UID of the loaded module on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelLoadModuleBufferUsbWlan(bufsize: SceSize, buf: ?*c_void, flags: c_int, option: *SceKernelLMOption) SceUID; + +// Start a loaded module. +// +// @param modid - The ID of the module returned from LoadModule. +// @param argsize - Length of the args. +// @param argp - A pointer to the arguments to the module. +// @param status - Returns the status of the start. +// @param option - Pointer to an optional ::SceKernelSMOption structure. +// +// @return ??? on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelStartModule(modid: SceUID, argsize: SceSize, argp: ?*c_void, status: *c_int, option: *SceKernelSMOption) c_int; + +// Stop a running module. +// +// @param modid - The UID of the module to stop. +// @param argsize - The length of the arguments pointed to by argp. +// @param argp - Pointer to arguments to pass to the module's module_stop() routine. +// @param status - Return value of the module's module_stop() routine. +// @param option - Pointer to an optional ::SceKernelSMOption structure. +// +// @return ??? on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelStopModule(modid: SceUID, argsize: SceSize, argp: ?*c_void, status: *c_int, option: *SceKernelSMOption) c_int; + +// Unload a stopped module. +// +// @param modid - The UID of the module to unload. +// +// @return ??? on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelUnloadModule(modid: SceUID) c_int; + +// Stop and unload the current module. +// +// @param unknown - Unknown (I've seen 1 passed). +// @param argsize - Size (in bytes) of the arguments that will be passed to module_stop(). +// @param argp - Pointer to arguments that will be passed to module_stop(). +// +// @return ??? on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelSelfStopUnloadModule(unknown: c_int, argsize: SceSize, argp: ?*c_void) c_int; + +// Stop and unload the current module. +// +// @param argsize - Size (in bytes) of the arguments that will be passed to module_stop(). +// @param argp - Poitner to arguments that will be passed to module_stop(). +// @param status - Return value from module_stop(). +// @param option - Pointer to an optional ::SceKernelSMOption structure. +// +// @return ??? on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelStopUnloadSelfModule(argsize: SceSize, argp: ?*c_void, status: *c_int, option: *SceKernelSMOption) c_int; + +// Query the information about a loaded module from its UID. +// @note This fails on v1.0 firmware (and even it worked has a limited structure) +// so if you want to be compatible with both 1.5 and 1.0 (and you are running in +// kernel mode) then call this function first then ::pspSdkQueryModuleInfoV1 +// if it fails, or make separate v1 and v1.5+ builds. +// +// @param modid - The UID of the loaded module. +// @param info - Pointer to a ::SceKernelModuleInfo structure. +// +// @return 0 on success, otherwise one of ::PspKernelErrorCodes. +pub extern fn sceKernelQueryModuleInfo(modid: SceUID, info: *SceKernelModuleInfo) c_int; + +// Get a list of module IDs. NOTE: This is only available on 1.5 firmware +// and above. For V1 use ::pspSdkGetModuleIdList. +// +// @param readbuf - Buffer to store the module list. +// @param readbufsize - Number of elements in the readbuffer. +// @param idcount - Returns the number of module ids +// +// @return >= 0 on success +pub extern fn sceKernelGetModuleIdList(readbuf: *SceUID, readbufsize: c_int, idcount: *c_int) c_int; + +// Get the ID of the module occupying the address +// +// @param moduleAddr - A pointer to the module +// +// @return >= 0 on success, otherwise one of ::PspKernelErrorCodes +pub extern fn sceKernelGetModuleIdByAddress(moduleAddr: ?*c_void) c_int; diff --git a/src/psp/sdk/pspmp3.zig b/src/psp/sdk/pspmp3.zig index d0015d9..be5e498 100644 --- a/src/psp/sdk/pspmp3.zig +++ b/src/psp/sdk/pspmp3.zig @@ -11,20 +11,185 @@ pub const SceMp3InitArg = extern struct { pcmBufSize: SceInt32, }; -pub extern fn sceMp3ReserveMp3Handle(args: [*c]SceMp3InitArg) SceInt32; +// sceMp3ReserveMp3Handle +// +// @param args - Pointer to SceMp3InitArg structure +// +// @return sceMp3 handle on success, < 0 on error. +pub extern fn sceMp3ReserveMp3Handle(args: *SceMp3InitArg) SceInt32; +pub fn mp3ReserveMp3Handle(args: *SceMp3InitArg) !SceInt32 { + var res = sceMp3ReserveMp3Handle(args); + if(res < 0){ + return error.Unexpected; + } + return res; +} + +// sceMp3ReleaseMp3Handle +// +// @param handle - sceMp3 handle +// +// @return 0 if success, < 0 on error. pub extern fn sceMp3ReleaseMp3Handle(handle: SceInt32) SceInt32; -pub extern fn sceMp3InitResource(...) SceInt32; -pub extern fn sceMp3TermResource(...) SceInt32; +pub fn mp3ReleaseMp3Handle(handle: SceInt32) !void { + var res = sceMp3ReleaseMp3Handle(handle); + if(res < 0){ + return error.Unexpected; + } +} + +// sceMp3InitResource +// +// @return 0 if success, < 0 on error. +pub extern fn sceMp3InitResource() SceInt32; +pub fn mp3InitResource() !void { + var res = sceMp3InitResource(); + if(res < 0){ + return error.Unexpected; + } +} + +// sceMp3TermResource +// +// @return 0 if success, < 0 on error. +pub extern fn sceMp3TermResource() SceInt32; +pub fn mp3TermResource() !void { + var res = sceMp3TermResource(); + if(res < 0){ + return error.Unexpected; + } +} + +// sceMp3Init +// +// @param handle - sceMp3 handle +// +// @return 0 if success, < 0 on error. pub extern fn sceMp3Init(handle: SceInt32) SceInt32; -pub extern fn sceMp3Decode(handle: SceInt32, dst: [*c][*c]SceShort16) SceInt32; -pub extern fn sceMp3GetInfoToAddStreamData(handle: SceInt32, dst: [*c][*c]SceUChar8, towrite: [*c]SceInt32, srcpos: [*c]SceInt32) SceInt32; +pub fn mp3Init(handle: SceInt32) !void { + var res = sceMp3Init(handle); + if(res < 0){ + return error.Unexpected; + } +} + +// sceMp3Decode +// +// @param handle - sceMp3 handle +// @param dst - Pointer to destination pcm samples buffer +// +// @return number of bytes in decoded pcm buffer, < 0 on error. +pub extern fn sceMp3Decode(handle: SceInt32, dst: *[]SceShort16) SceInt32; +pub fn mp3Decode(handle: SceInt32, dst: *[]SceShort16) !i32 { + var res = sceMp3Decode(handle, dst); + if(res < 0){ + return error.Unexpected; + } + return res; +} + +// sceMp3GetInfoToAddStreamData +// +// @param handle - sceMp3 handle +// @param dst - Pointer to stream data buffer +// @param towrite - Space remaining in stream data buffer +// @param srcpos - Position in source stream to start reading from +// +// @return 0 if success, < 0 on error. +pub extern fn sceMp3GetInfoToAddStreamData(handle: SceInt32, dst: *[]SceUChar8, towrite: *SceInt32, srcpos: *SceInt32) SceInt32; +pub fn mp3GetInfoToAddStreamData(handle: SceInt32, dst: *[]SceUChar8, towrite: *SceInt32, srcpos: *SceInt32) !void { + var res = sceMp3GetInfoToAddStreamData(handle, dst, towrite, srcpos); + if(res < 0){ + return error.Unexpected; + } +} + +// sceMp3NotifyAddStreamData +// +// @param handle - sceMp3 handle +// @param size - number of bytes added to the stream data buffer +// +// @return 0 if success, < 0 on error. pub extern fn sceMp3NotifyAddStreamData(handle: SceInt32, size: SceInt32) SceInt32; +pub fn mp3NotifyAddStreamData(handle: SceInt32, size: SceInt32) !void { + var res = sceMp3NotifyAddStreamData(handle, size); + if(res < 0){ + return error.Unexpected; + } +} + +// sceMp3CheckStreamDataNeeded +// +// @param handle - sceMp3 handle +// +// @return 1 if more stream data is needed, < 0 on error. pub extern fn sceMp3CheckStreamDataNeeded(handle: SceInt32) SceInt32; + +// sceMp3SetLoopNum +// +// @param handle - sceMp3 handle +// @param loop - Number of loops +// +// @return 0 if success, < 0 on error. pub extern fn sceMp3SetLoopNum(handle: SceInt32, loop: SceInt32) SceInt32; +pub fn mp3SetLoopNum(handle: SceInt32, loop: SceInt32) !void { + var res = sceMp3SetLoopNum(handle, loop); + if(res < 0){ + return error.Unexpected; + } +} + +// sceMp3GetLoopNum +// +// @param handle - sceMp3 handle +// +// @return Number of loops pub extern fn sceMp3GetLoopNum(handle: SceInt32) SceInt32; + +// sceMp3GetSumDecodedSample +// +// @param handle - sceMp3 handle +// +// @return Number of decoded samples pub extern fn sceMp3GetSumDecodedSample(handle: SceInt32) SceInt32; + +// sceMp3GetMaxOutputSample +// +// @param handle - sceMp3 handle +// +// @return Number of max samples to output pub extern fn sceMp3GetMaxOutputSample(handle: SceInt32) SceInt32; + +// sceMp3GetSamplingRate +// +// @param handle - sceMp3 handle +// +// @return Sampling rate of the mp3 pub extern fn sceMp3GetSamplingRate(handle: SceInt32) SceInt32; + +// sceMp3GetBitRate +// +// @param handle - sceMp3 handle +// +// @return Bitrate of the mp3 pub extern fn sceMp3GetBitRate(handle: SceInt32) SceInt32; + +// sceMp3GetMp3ChannelNum +// +// @param handle - sceMp3 handle +// +// @return Number of channels of the mp3 pub extern fn sceMp3GetMp3ChannelNum(handle: SceInt32) SceInt32; + +// sceMp3ResetPlayPosition +// +// @param handle - sceMp3 handle +// +// @return < 0 on error pub extern fn sceMp3ResetPlayPosition(handle: SceInt32) SceInt32; +pub fn mp3ResetPlayPosition(handle: SceInt32) !void { + var res = sceMp3ResetPlayPosition(handle); + if(res < 0){ + return error.Unexpected; + } +} diff --git a/src/psp/sdk/pspmpeg.zig b/src/psp/sdk/pspmpeg.zig index 170336c..84f1e14 100644 --- a/src/psp/sdk/pspmpeg.zig +++ b/src/psp/sdk/pspmpeg.zig @@ -1,13 +1,13 @@ usingnamespace @import("psptypes.zig"); -pub const struct_SceMpegLLI = extern struct { +pub const SceMpegLLI = extern struct { pSrc: ScePVoid, pDst: ScePVoid, Next: ScePVoid, iSize: SceInt32, }; -pub const SceMpegLLI = struct_SceMpegLLI; -pub const struct_SceMpegYCrCbBuffer = extern struct { + +pub const SceMpegYCrCbBuffer = extern struct { iFrameBufferHeight16: SceInt32, iFrameBufferWidth16: SceInt32, iUnknown: SceInt32, @@ -23,15 +23,12 @@ pub const struct_SceMpegYCrCbBuffer = extern struct { iFrameBufferWidth: SceInt32, iUnknown3: [11]SceInt32, }; -pub const SceMpegYCrCbBuffer = struct_SceMpegYCrCbBuffer; -pub extern fn sceMpegBaseYCrCbCopyVme(YUVBuffer: ScePVoid, Buffer: [*c]SceInt32, Type: SceInt32) SceInt32; -pub extern fn sceMpegBaseCscInit(width: SceInt32) SceInt32; -pub extern fn sceMpegBaseCscVme(pRGBbuffer: ScePVoid, pRGBbuffer2: ScePVoid, width: SceInt32, pYCrCbBuffer: [*c]SceMpegYCrCbBuffer) SceInt32; -pub extern fn sceMpegbase_BEA18F91(pLLI: [*c]SceMpegLLI) SceInt32; + pub const SceMpeg = ScePVoid; pub const SceMpegStream = SceVoid; pub const sceMpegRingbufferCB = ?fn (ScePVoid, SceInt32, ScePVoid) callconv(.C) SceInt32; -pub const struct_SceMpegRingbuffer = extern struct { + +pub const SceMpegRingbuffer = extern struct { iPackets: SceInt32, iUnk0: SceUInt32, iUnk1: SceUInt32, @@ -44,8 +41,8 @@ pub const struct_SceMpegRingbuffer = extern struct { iUnk5: SceUInt32, pSceMpeg: SceMpeg, }; -pub const SceMpegRingbuffer = struct_SceMpegRingbuffer; -pub const struct_SceMpegAu = extern struct { + +pub const SceMpegAu = extern struct { iPtsMSB: SceUInt32, iPts: SceUInt32, iDtsMSB: SceUInt32, @@ -53,34 +50,210 @@ pub const struct_SceMpegAu = extern struct { iEsBuffer: SceUInt32, iAuSize: SceUInt32, }; -pub const SceMpegAu = struct_SceMpegAu; -pub const struct_SceMpegAvcMode = extern struct { + +pub const SceMpegAvcMode = extern struct { iUnk0: SceInt32, iPixelFormat: SceInt32, }; -pub const SceMpegAvcMode = struct_SceMpegAvcMode; -pub extern fn sceMpegInit(...) SceInt32; -pub extern fn sceMpegFinish(...) SceVoid; + +//MpegBase +pub extern fn sceMpegBaseYCrCbCopyVme(YUVBuffer: ScePVoid, Buffer: [*c]SceInt32, Type: SceInt32) SceInt32; +pub extern fn sceMpegBaseCscInit(width: SceInt32) SceInt32; +pub extern fn sceMpegBaseCscVme(pRGBbuffer: ScePVoid, pRGBbuffer2: ScePVoid, width: SceInt32, pYCrCbBuffer: [*c]SceMpegYCrCbBuffer) SceInt32; +pub extern fn sceMpegbase_BEA18F91(pLLI: [*c]SceMpegLLI) SceInt32; + + +// sceMpegInit +// +// @return 0 if success. +pub extern fn sceMpegInit() SceInt32; + +//sceMpegFinish +pub extern fn sceMpegFinish() SceVoid; + +// sceMpegRingbufferQueryMemSize +// +// @param iPackets - number of packets in the ringbuffer +// +// @return < 0 if error else ringbuffer data size. pub extern fn sceMpegRingbufferQueryMemSize(iPackets: SceInt32) SceInt32; + + +// sceMpegRingbufferConstruct +// +// @param Ringbuffer - pointer to a sceMpegRingbuffer struct +// @param iPackets - number of packets in the ringbuffer +// @param pData - pointer to allocated memory +// @param iSize - size of allocated memory, shoud be sceMpegRingbufferQueryMemSize(iPackets) +// @param Callback - ringbuffer callback +// @param pCBparam - param passed to callback +// +// @return 0 if success. pub extern fn sceMpegRingbufferConstruct(Ringbuffer: [*c]SceMpegRingbuffer, iPackets: SceInt32, pData: ScePVoid, iSize: SceInt32, Callback: sceMpegRingbufferCB, pCBparam: ScePVoid) SceInt32; + +// sceMpegRingbufferDestruct +// +// @param Ringbuffer - pointer to a sceMpegRingbuffer struct pub extern fn sceMpegRingbufferDestruct(Ringbuffer: [*c]SceMpegRingbuffer) SceVoid; + +// sceMpegQueryMemSize +// +// @param Ringbuffer - pointer to a sceMpegRingbuffer struct +// +// @return < 0 if error else number of free packets in the ringbuffer. pub extern fn sceMpegRingbufferAvailableSize(Ringbuffer: [*c]SceMpegRingbuffer) SceInt32; + +// sceMpegRingbufferPut +// +// @param Ringbuffer - pointer to a sceMpegRingbuffer struct +// @param iNumPackets - num packets to put into the ringbuffer +// @param iAvailable - free packets in the ringbuffer, should be sceMpegRingbufferAvailableSize() +// +// @return < 0 if error else number of packets. pub extern fn sceMpegRingbufferPut(Ringbuffer: [*c]SceMpegRingbuffer, iNumPackets: SceInt32, iAvailable: SceInt32) SceInt32; + +// sceMpegQueryMemSize +// +// @param iUnk - Unknown, set to 0 +// +// @return < 0 if error else decoder data size. pub extern fn sceMpegQueryMemSize(iUnk: c_int) SceInt32; + +// sceMpegCreate +// +// @param Mpeg - will be filled +// @param pData - pointer to allocated memory of size = sceMpegQueryMemSize() +// @param iSize - size of data, should be = sceMpegQueryMemSize() +// @param Ringbuffer - a ringbuffer +// @param iFrameWidth - display buffer width, set to 512 if writing to framebuffer +// @param iUnk1 - unknown, set to 0 +// @param iUnk2 - unknown, set to 0 +// +// @return 0 if success. pub extern fn sceMpegCreate(Mpeg: [*c]SceMpeg, pData: ScePVoid, iSize: SceInt32, Ringbuffer: [*c]SceMpegRingbuffer, iFrameWidth: SceInt32, iUnk1: SceInt32, iUnk2: SceInt32) SceInt32; + +// sceMpegDelete +// +// @param Mpeg - SceMpeg handle pub extern fn sceMpegDelete(Mpeg: [*c]SceMpeg) SceVoid; + +// sceMpegQueryStreamOffset +// +// @param Mpeg - SceMpeg handle +// @param pBuffer - pointer to file header +// @param iOffset - will contain stream offset in bytes, usually 2048 +// +// @return 0 if success. pub extern fn sceMpegQueryStreamOffset(Mpeg: [*c]SceMpeg, pBuffer: ScePVoid, iOffset: [*c]SceInt32) SceInt32; + +// sceMpegQueryStreamSize +// +// @param pBuffer - pointer to file header +// @param iSize - will contain stream size in bytes +// +// @return 0 if success. pub extern fn sceMpegQueryStreamSize(pBuffer: ScePVoid, iSize: [*c]SceInt32) SceInt32; + +// sceMpegRegistStream +// +// @param Mpeg - SceMpeg handle +// @param iStreamID - stream id, 0 for video, 1 for audio +// @param iUnk - unknown, set to 0 +// +// @return 0 if error. pub extern fn sceMpegRegistStream(Mpeg: [*c]SceMpeg, iStreamID: SceInt32, iUnk: SceInt32) ?*SceMpegStream; + +// sceMpegUnRegistStream +// +// @param Mpeg - SceMpeg handle +// @param pStream - pointer to stream pub extern fn sceMpegUnRegistStream(Mpeg: SceMpeg, pStream: ?*SceMpegStream) SceVoid; + +// sceMpegFlushAllStreams +// +// @return 0 if success. pub extern fn sceMpegFlushAllStream(Mpeg: [*c]SceMpeg) SceInt32; + +// sceMpegMallocAvcEsBuf +// +// @return 0 if error else pointer to buffer. pub extern fn sceMpegMallocAvcEsBuf(Mpeg: [*c]SceMpeg) ScePVoid; + +// sceMpegFreeAvcEsBuf pub extern fn sceMpegFreeAvcEsBuf(Mpeg: [*c]SceMpeg, pBuf: ScePVoid) SceVoid; + +// sceMpegQueryAtracEsSize +// +// @param Mpeg - SceMpeg handle +// @param iEsSize - will contain size of Es +// @param iOutSize - will contain size of decoded data +// +// @return 0 if success. pub extern fn sceMpegQueryAtracEsSize(Mpeg: [*c]SceMpeg, iEsSize: [*c]SceInt32, iOutSize: [*c]SceInt32) SceInt32; + +// sceMpegInitAu +// +// @param Mpeg - SceMpeg handle +// @param pEsBuffer - prevously allocated Es buffer +// @param pAu - will contain pointer to Au +// +// @return 0 if success. pub extern fn sceMpegInitAu(Mpeg: [*c]SceMpeg, pEsBuffer: ScePVoid, pAu: [*c]SceMpegAu) SceInt32; + +// sceMpegGetAvcAu +// +// @param Mpeg - SceMpeg handle +// @param pStream - associated stream +// @param pAu - will contain pointer to Au +// @param iUnk - unknown +// +// @return 0 if success. pub extern fn sceMpegGetAvcAu(Mpeg: [*c]SceMpeg, pStream: ?*SceMpegStream, pAu: [*c]SceMpegAu, iUnk: [*c]SceInt32) SceInt32; + +// sceMpegAvcDecodeMode +// +// @param Mpeg - SceMpeg handle +// @param pMode - pointer to SceMpegAvcMode struct defining the decode mode (pixelformat) +// @return 0 if success. pub extern fn sceMpegAvcDecodeMode(Mpeg: [*c]SceMpeg, pMode: [*c]SceMpegAvcMode) SceInt32; + +// sceMpegAvcDecode +// +// @param Mpeg - SceMpeg handle +// @param pAu - video Au +// @param iFrameWidth - output buffer width, set to 512 if writing to framebuffer +// @param pBuffer - buffer that will contain the decoded frame +// @param iInit - will be set to 0 on first call, then 1 +// +// @return 0 if success. pub extern fn sceMpegAvcDecode(Mpeg: [*c]SceMpeg, pAu: [*c]SceMpegAu, iFrameWidth: SceInt32, pBuffer: ScePVoid, iInit: [*c]SceInt32) SceInt32; + +// sceMpegAvcDecodeStop +// +// @param Mpeg - SceMpeg handle +// @param iFrameWidth - output buffer width, set to 512 if writing to framebuffer +// @param pBuffer - buffer that will contain the decoded frame +// @param iStatus - frame number +// +// @return 0 if success. pub extern fn sceMpegAvcDecodeStop(Mpeg: [*c]SceMpeg, iFrameWidth: SceInt32, pBuffer: ScePVoid, iStatus: [*c]SceInt32) SceInt32; + +// sceMpegGetAtracAu +// +// @param Mpeg - SceMpeg handle +// @param pStream - associated stream +// @param pAu - will contain pointer to Au +// @param pUnk - unknown +// +// @return 0 if success. pub extern fn sceMpegGetAtracAu(Mpeg: [*c]SceMpeg, pStream: ?*SceMpegStream, pAu: [*c]SceMpegAu, pUnk: ScePVoid) SceInt32; + +// sceMpegAtracDecode +// +// @param Mpeg - SceMpeg handle +// @param pAu - video Au +// @param pBuffer - buffer that will contain the decoded frame +// @param iInit - set this to 1 on first call +// +// @return 0 if success. pub extern fn sceMpegAtracDecode(Mpeg: [*c]SceMpeg, pAu: [*c]SceMpegAu, pBuffer: ScePVoid, iInit: SceInt32) SceInt32; diff --git a/src/psp/sdk/psppower.zig b/src/psp/sdk/psppower.zig index 7a44a7d..4d239d9 100644 --- a/src/psp/sdk/psppower.zig +++ b/src/psp/sdk/psppower.zig @@ -1,51 +1,243 @@ usingnamespace @import("psptypes.zig"); +pub const PSPPowerCB = extern enum(u32){ + Battpower = 0x0000007f, + BatteryExist = 0x00000080, + BatteryLow = 0x00000100, + ACPower = 0x00001000, + Suspending = 0x00010000, + Resuming = 0x00020000, + ResumeComplete = 0x00040000, + Standby = 0x00080000, + HoldSwitch = 0x40000000, + PowerSwitch = 0x80000000, +}; + +pub const PSPPowerTick = extern enum(u32){ + All = 0, + Suspend = 1, + Display = 6 +}; + pub const powerCallback_t = ?fn (c_int, c_int) callconv(.C) void; + +// Register Power Callback Function +// +// @param slot - slot of the callback in the list, 0 to 15, pass -1 to get an auto assignment. +// @param cbid - callback id from calling sceKernelCreateCallback +// +// @return 0 on success, the slot number if -1 is passed, < 0 on error. pub extern fn scePowerRegisterCallback(slot: c_int, cbid: SceUID) c_int; +pub fn powerRegisterCallback(slot: c_int, cbid: SceUID) !i32 { + var res = scePowerRegisterCallback(slot, cbid); + if(res < 0){ + return error.Unexpected; + } + return res; +} + +// Unregister Power Callback Function +// +// @param slot - slot of the callback +// +// @return 0 on success, < 0 on error. pub extern fn scePowerUnregisterCallback(slot: c_int) c_int; +pub fn powerUnregisterCallback(slot: c_int) !void { + var res = scePowerUnregisterCallback(slot); + if(res < 0){ + return error.Unexpected; + } +} + +// Check if unit is plugged in +// +// @return 1 if plugged in, 0 if not plugged in, < 0 on error. pub extern fn scePowerIsPowerOnline() c_int; +pub fn powerIsPowerOnline() !bool { + var res = scePowerIsPowerOnline(); + if(res < 0){ + return error.Unexpected; + } + return res == 1; +} + +// Check if a battery is present +// +// @return 1 if battery present, 0 if battery not present, < 0 on error. pub extern fn scePowerIsBatteryExist() c_int; +pub fn powerIsBatteryExist() !bool { + var res = scePowerIsBatteryExist(); + if(res < 0){ + return error.Unexpected; + } + return res == 1; +} + +// Check if the battery is charging +// +// @return 1 if battery charging, 0 if battery not charging, < 0 on error. pub extern fn scePowerIsBatteryCharging() c_int; +pub fn powerIsBatteryCharging() !bool { + var res = scePowerIsBatteryCharging(); + if(res < 0){ + return error.Unexpected; + } + return res == 1; +} + +// Get the status of the battery charging pub extern fn scePowerGetBatteryChargingStatus() c_int; + + +// Check if the battery is low +// +// @return 1 if the battery is low, 0 if the battery is not low, < 0 on error. pub extern fn scePowerIsLowBattery() c_int; +pub fn powerIsLowBattery() !bool { + var res = scePowerIsLowBattery(); + if(res < 0){ + return error.Unexpected; + } + return res == 1; +} + +// Get battery life as integer percent +// +// @return Battery charge percentage (0-100), < 0 on error. pub extern fn scePowerGetBatteryLifePercent() c_int; +pub fn powerGetBatteryLifePercent() !i32 { + var res = scePowerGetBatteryLifePercent(); + if(res < 0){ + return error.Unexpected; + } + return res; +} + +// Get battery life as time +// +// @return Battery life in minutes, < 0 on error. pub extern fn scePowerGetBatteryLifeTime() c_int; +pub fn powerGetBatteryLifeTime() !i32 { + var res = scePowerGetBatteryLifeTime(); + if(res < 0){ + return error.Unexpected; + } + return res; +} + +// Get temperature of the battery pub extern fn scePowerGetBatteryTemp() c_int; -pub extern fn scePowerGetBatteryElec() c_int; + +// Get battery volt level pub extern fn scePowerGetBatteryVolt() c_int; + +// Set CPU Frequency +// @param cpufreq - new CPU frequency, valid values are 1 - 333 pub extern fn scePowerSetCpuClockFrequency(cpufreq: c_int) c_int; + +// Set Bus Frequency +// @param busfreq - new BUS frequency, valid values are 1 - 167 pub extern fn scePowerSetBusClockFrequency(busfreq: c_int) c_int; + +// Alias for scePowerGetCpuClockFrequencyInt +// @return frequency as int pub extern fn scePowerGetCpuClockFrequency() c_int; + +// Get CPU Frequency as Integer +// @return frequency as int pub extern fn scePowerGetCpuClockFrequencyInt() c_int; + +// Get CPU Frequency as Float +// @return frequency as float pub extern fn scePowerGetCpuClockFrequencyFloat() f32; + +// Alias for scePowerGetBusClockFrequencyInt +// @return frequency as int pub extern fn scePowerGetBusClockFrequency() c_int; + +// Get Bus fequency as Integer +// @return frequency as int pub extern fn scePowerGetBusClockFrequencyInt() c_int; + +// Get Bus frequency as Float +// @return frequency as float pub extern fn scePowerGetBusClockFrequencyFloat() f32; + +// Set Clock Frequencies +// +// @param pllfreq - pll frequency, valid from 19-333 +// @param cpufreq - cpu frequency, valid from 1-333 +// @param busfreq - bus frequency, valid from 1-167 +// +// and: +// +// cpufreq <= pllfreq +// busfreq*2 <= pllfreq +// pub extern fn scePowerSetClockFrequency(pllfreq: c_int, cpufreq: c_int, busfreq: c_int) c_int; + +// Lock power switch +// +// Note: if the power switch is toggled while locked +// it will fire immediately after being unlocked. +// +// @param unknown - pass 0 +// +// @return 0 on success, < 0 on error. pub extern fn scePowerLock(unknown: c_int) c_int; +pub fn powerLock(unknown: c_int) !void { + var res = scePowerLock(unknown); + if(res < 0){ + return error.Unexpected; + } +} + +// Unlock power switch +// +// @param unknown - pass 0 +// +// @return 0 on success, < 0 on error. pub extern fn scePowerUnlock(unknown: c_int) c_int; -pub extern fn scePowerTick(type: c_int) c_int; +pub fn powerUnlock(unknown: c_int) !void { + var res = scePowerUnlock(unknown); + if(res < 0){ + return error.Unexpected; + } +} + +// Generate a power tick, preventing unit from +// powering off and turning off display. +// +// @param type - Either PSP_POWER_TICK_ALL, PSP_POWER_TICK_SUSPEND or PSP_POWER_TICK_DISPLAY +// +// @return 0 on success, < 0 on error. +pub extern fn scePowerTick(typec: c_int) c_int; +pub fn powerTick(typec: PSPPowerTick) !void { + var res = scePowerTick(@enumToInt(typec)); + if(res < 0){ + return error.Unexpected; + } +} + +// Get Idle timer pub extern fn scePowerGetIdleTimer() c_int; + +// Enable Idle timer +// +// @param unknown - pass 0 pub extern fn scePowerIdleTimerEnable(unknown: c_int) c_int; + +// Disable Idle timer +// +// @param unknown - pass 0 pub extern fn scePowerIdleTimerDisable(unknown: c_int) c_int; -pub extern fn scePowerRequestStandby() c_int; -pub extern fn scePowerRequestSuspend() c_int; -pub const PSPPowerCB = extern enum(u32){ - Battpower = 0x0000007f, - BatteryExist = 0x00000080, - BatteryLow = 0x00000100, - ACPower = 0x00001000, - Suspending = 0x00010000, - Resuming = 0x00020000, - ResumeComplete = 0x00040000, - Standby = 0x00080000, - HoldSwitch = 0x40000000, - PowerSwitch = 0x80000000, -}; +// Request the PSP to go into standby +// +// @return 0 always +pub extern fn scePowerRequestStandby() c_int; -pub const PSPPowerTick = extern enum(u32){ - All = 0, - Suspend = 1, - Display = 6 -}; +// Request the PSP to go into suspend +// +// @return 0 always +pub extern fn scePowerRequestSuspend() c_int; diff --git a/src/psp/sdk/psputility.zig b/src/psp/sdk/psputility.zig index 13c134b..e20de69 100644 --- a/src/psp/sdk/psputility.zig +++ b/src/psp/sdk/psputility.zig @@ -1,4 +1,4 @@ -const struct_unnamed_1 = extern struct { +pub const PspUtilityDialogCommon = extern struct { size: c_uint, language: c_int, buttonSwap: c_int, @@ -9,128 +9,122 @@ const struct_unnamed_1 = extern struct { result: c_int, reserved: [4]c_int, }; -pub const pspUtilityDialogCommon = struct_unnamed_1; -const enum_unnamed_2 = extern enum(c_int) { - PSP_UTILITY_MSGDIALOG_MODE_ERROR = 0, - PSP_UTILITY_MSGDIALOG_MODE_TEXT = 1, - _, -}; -pub const pspUtilityMsgDialogMode = enum_unnamed_2; -const enum_unnamed_3 = extern enum(c_int) { - PSP_UTILITY_MSGDIALOG_OPTION_ERROR = 0, - PSP_UTILITY_MSGDIALOG_OPTION_TEXT = 1, - PSP_UTILITY_MSGDIALOG_OPTION_YESNO_BUTTONS = 16, - PSP_UTILITY_MSGDIALOG_OPTION_DEFAULT_NO = 256, + +pub const PspUtilityMsgDialogMode = extern enum(c_int) { + Error = 0, + Text = 1, _, }; -pub const pspUtilityMsgDialogOption = enum_unnamed_3; -const enum_unnamed_4 = extern enum(c_int) { - PSP_UTILITY_MSGDIALOG_RESULT_UNKNOWN1 = 0, - PSP_UTILITY_MSGDIALOG_RESULT_YES = 1, - PSP_UTILITY_MSGDIALOG_RESULT_NO = 2, - PSP_UTILITY_MSGDIALOG_RESULT_BACK = 3, - _, +const PspUtilityMsgDialogOption = extern enum(c_int) { + Error = 0, + Text = 1, + YesNoButtons = 16, + DefaultNo = 256, }; -pub const pspUtilityMsgDialogPressed = enum_unnamed_4; -pub const struct__pspUtilityMsgDialogParams = extern struct { - base: pspUtilityDialogCommon, + +pub const PspUtilityMsgDialogPressed = extern enum(c_int) { + Unknown1 = 0, + Yes = 1, + No = 2, + Back = 3, +}; +pub const PspUtilityMsgDialogParams = extern struct { + base: PspUtilityDialogCommon, unknown: c_int, - mode: pspUtilityMsgDialogMode, + mode: PspUtilityMsgDialogMode, errorValue: c_uint, message: [512]u8, options: c_int, - buttonPressed: pspUtilityMsgDialogPressed, + buttonPressed: PspUtilityMsgDialogPressed, }; -pub const pspUtilityMsgDialogParams = struct__pspUtilityMsgDialogParams; -pub extern fn sceUtilityMsgDialogInitStart(params: [*c]pspUtilityMsgDialogParams) c_int; +pub extern fn sceUtilityMsgDialogInitStart(params: *PspUtilityMsgDialogParams) c_int; pub extern fn sceUtilityMsgDialogShutdownStart() void; pub extern fn sceUtilityMsgDialogGetStatus() c_int; pub extern fn sceUtilityMsgDialogUpdate(n: c_int) void; pub extern fn sceUtilityMsgDialogAbort() c_int; -pub const enum_pspUtilityNetconfActions = extern enum(c_int) { - PSP_NETCONF_ACTION_CONNECTAP, - PSP_NETCONF_ACTION_DISPLAYSTATUS, - PSP_NETCONF_ACTION_CONNECT_ADHOC, - _, +pub const PspUtilityNetconfActions = extern enum(c_int) { + ConnectAp, + DisplayStatus, + ConnectAdhoc, }; -pub const struct_pspUtilityNetconfAdhoc = extern struct { +pub const PspUtilityNetconfAdhoc = extern struct { name: [8]u8, timeout: c_uint, }; -pub const struct__pspUtilityNetconfData = extern struct { - base: pspUtilityDialogCommon, +pub const PspUtilityNetconfData = extern struct { + base: PspUtilityDialogCommon, action: c_int, - adhocparam: [*c]struct_pspUtilityNetconfAdhoc, + adhocparam: *PspUtilityNetconfAdhoc, hotspot: c_int, hotspot_connected: c_int, wifisp: c_int, }; -pub const pspUtilityNetconfData = struct__pspUtilityNetconfData; -pub extern fn sceUtilityNetconfInitStart(data: [*c]pspUtilityNetconfData) c_int; + +pub extern fn sceUtilityNetconfInitStart(data: *PspUtilityNetconfData) c_int; pub extern fn sceUtilityNetconfShutdownStart() c_int; pub extern fn sceUtilityNetconfUpdate(unknown: c_int) c_int; pub extern fn sceUtilityNetconfGetStatus() c_int; -const union_unnamed_9 = extern union { +const NetData = extern union { asUint: u32_7, asString: [128]u8, }; -pub const netData = union_unnamed_9; + pub extern fn sceUtilityCheckNetParam(id: c_int) c_int; -pub extern fn sceUtilityGetNetParam(conf: c_int, param: c_int, data: [*c]netData) c_int; +pub extern fn sceUtilityGetNetParam(conf: c_int, param: c_int, data: *NetData) c_int; pub extern fn sceUtilityCreateNetParam(conf: c_int) c_int; pub extern fn sceUtilitySetNetParam(param: c_int, val: ?*const c_void) c_int; pub extern fn sceUtilityCopyNetParam(src: c_int, dest: c_int) c_int; pub extern fn sceUtilityDeleteNetParam(conf: c_int) c_int; -const enum_unnamed_10 = extern enum(c_int) { - PSP_UTILITY_SAVEDATA_AUTOLOAD = 0, - PSP_UTILITY_SAVEDATA_AUTOSAVE = 1, - PSP_UTILITY_SAVEDATA_LOAD = 2, - PSP_UTILITY_SAVEDATA_SAVE = 3, - PSP_UTILITY_SAVEDATA_LISTLOAD = 4, - PSP_UTILITY_SAVEDATA_LISTSAVE = 5, - PSP_UTILITY_SAVEDATA_LISTDELETE = 6, - PSP_UTILITY_SAVEDATADELETE = 7, +const PspUtilitySavedataMode = extern enum(c_int) { + Autoload = 0, + Autosave = 1, + Load = 2, + Save = 3, + ListLoad = 4, + ListSave = 5, + ListDelete = 6, + Delete = 7, _, }; -pub const PspUtilitySavedataMode = enum_unnamed_10; -const enum_unnamed_11 = extern enum(c_int) { - PSP_UTILITY_SAVEDATA_FOCUS_UNKNOWN = 0, - PSP_UTILITY_SAVEDATA_FOCUS_FIRSTLIST = 1, - PSP_UTILITY_SAVEDATA_FOCUS_LASTLIST = 2, - PSP_UTILITY_SAVEDATA_FOCUS_LATEST = 3, - PSP_UTILITY_SAVEDATA_FOCUS_OLDEST = 4, - PSP_UTILITY_SAVEDATA_FOCUS_UNKNOWN2 = 5, - PSP_UTILITY_SAVEDATA_FOCUS_UNKNOWN3 = 6, - PSP_UTILITY_SAVEDATA_FOCUS_FIRSTEMPTY = 7, - PSP_UTILITY_SAVEDATA_FOCUS_LASTEMPTY = 8, + +const PspUtilitySavedataFocus = extern enum(c_int) { + Unknown = 0, + FirstList = 1, + LastList = 2, + Latest = 3, + Oldest = 4, + Unknown2 = 5, + Unknown3 = 6, + FirstEmpty = 7, + LastEmpty = 8, _, }; -pub const PspUtilitySavedataFocus = enum_unnamed_11; -pub const struct_PspUtilitySavedataSFOParam = extern struct { + +pub const PspUtilitySavedataSFOParam = extern struct { title: [128]u8, savedataTitle: [128]u8, detail: [1024]u8, parentalLevel: u8, unknown: [3]u8, }; -pub const PspUtilitySavedataSFOParam = struct_PspUtilitySavedataSFOParam; -pub const struct_PspUtilitySavedataFileData = extern struct { + +pub const PspUtilitySavedataFileData = extern struct { buf: ?*c_void, bufSize: SceSize, size: SceSize, unknown: c_int, }; -pub const PspUtilitySavedataFileData = struct_PspUtilitySavedataFileData; -pub const struct_PspUtilitySavedataListSaveNewData = extern struct { + +pub const PspUtilitySavedataListSaveNewData = extern struct { icon0: PspUtilitySavedataFileData, title: [*c]u8, }; -pub const PspUtilitySavedataListSaveNewData = struct_PspUtilitySavedataListSaveNewData; -pub const struct_SceUtilitySavedataParam = extern struct { - base: pspUtilityDialogCommon, + +pub const SceUtilitySavedataParam = extern struct { + base: PspUtilityDialogCommon, mode: PspUtilitySavedataMode, unknown1: c_int, overwrite: c_int, @@ -152,25 +146,126 @@ pub const struct_SceUtilitySavedataParam = extern struct { focus: PspUtilitySavedataFocus, unknown2: [4]c_int, }; -pub const SceUtilitySavedataParam = struct_SceUtilitySavedataParam; -pub extern fn sceUtilitySavedataInitStart(params: [*c]SceUtilitySavedataParam) c_int; +pub extern fn sceUtilitySavedataInitStart(params: *SceUtilitySavedataParam) c_int; pub extern fn sceUtilitySavedataGetStatus() c_int; pub extern fn sceUtilitySavedataShutdownStart() c_int; pub extern fn sceUtilitySavedataUpdate(unknown: c_int) void; -const enum_unnamed_12 = extern enum(c_int) { - PSP_UTILITY_GAMESHARING_MODE_SINGLE = 1, - PSP_UTILITY_GAMESHARING_MODE_MULTIPLE = 2, + +pub extern fn sceUtilityGameSharingInitStart(params: *PspUtilityGameSharingParams) c_int; +pub extern fn sceUtilityGameSharingShutdownStart() void; +pub extern fn sceUtilityGameSharingGetStatus() c_int; +pub extern fn sceUtilityGameSharingUpdate(n: c_int) void; + +pub extern fn sceUtilityHtmlViewerInitStart(params: *PspUtilityHtmlViewerParam) c_int; +pub extern fn sceUtilityHtmlViewerShutdownStart() c_int; +pub extern fn sceUtilityHtmlViewerUpdate(n: c_int) c_int; +pub extern fn sceUtilityHtmlViewerGetStatus() c_int; +pub extern fn sceUtilitySetSystemParamInt(id: c_int, value: c_int) c_int; +pub extern fn sceUtilitySetSystemParamString(id: c_int, str: [*c]const u8) c_int; +pub extern fn sceUtilityGetSystemParamInt(id: c_int, value: [*c]c_int) c_int; +pub extern fn sceUtilityGetSystemParamString(id: c_int, str: [*c]u8, len: c_int) c_int; + +pub extern fn sceUtilityOskInitStart(params: *SceUtilityOskParams) c_int; +pub extern fn sceUtilityOskShutdownStart() c_int; +pub extern fn sceUtilityOskUpdate(n: c_int) c_int; +pub extern fn sceUtilityOskGetStatus() c_int; +pub extern fn sceUtilityLoadNetModule(module: c_int) c_int; +pub extern fn sceUtilityUnloadNetModule(module: c_int) c_int; +pub extern fn sceUtilityLoadAvModule(module: c_int) c_int; +pub extern fn sceUtilityUnloadAvModule(module: c_int) c_int; +pub extern fn sceUtilityLoadUsbModule(module: c_int) c_int; +pub extern fn sceUtilityUnloadUsbModule(module: c_int) c_int; +pub extern fn sceUtilityLoadModule(module: c_int) c_int; +pub extern fn sceUtilityUnloadModule(module: c_int) c_int; + +pub const PspUtilityDialogState = extern enum(c_int) { + None = 0, + Init = 1, + Visible = 2, + Quit = 3, + Finished = 4, +}; + +pub const SceUtilityOskInputType = extern enum(c_int) { + All = 0, + LatinDigit = 1, + LatinSymbol = 2, + LatinLowercase = 4, + LatinUppercase = 8, + JapaneseDigit = 256, + JapaneseSymbol = 512, + JapaneseLowercase = 1024, + JapaneseUppercase = 2048, + JapaneseHiragana = 4096, + JapaneseHalfKatakana = 8192, + JapaneseKatakana = 16384, + JapaneseKanji = 32768, + RussianLowercase = 65536, + RussianUppercase = 131072, + Korean = 262144, + Url = 524288, +}; + +pub const SceUtilityOskInputLanguage = extern enum(c_int) { + Default = 0, + Japanese = 1, + English = 2, + French = 3, + Spanish = 4, + German = 5, + Italian = 6, + Dutch = 7, + Portugese = 8, + Russian = 9, + Korean = 10, +}; +pub const SceUtilityOskState = extern enum(c_int) { + None = 0, + Initing = 1, + Inited = 2, + Visible = 3, + Quit = 4, + Finished = 5, +}; +pub const SceUtilityOskResult = extern enum(c_int) { + Unchanged = 0, + Cancelled = 1, + Changed = 2, +}; + +pub const PspUtilityHtmlViewerDisconnectModes = extern enum(c_int) { + Enable = 0, + Disable = 1, + Confirm = 2, + _, +}; +pub const PspUtilityHtmlViewerInterfaceModes = extern enum(c_int) { + Full = 0, + Limited = 1, + None = 2, + _, +}; +pub const PspUtilityHtmlViewerCookieModes = extern enum(c_int) { + Disabled = 0, + Enabled = 1, + Confirm = 2, + Default = 3, _, }; -pub const pspUtilityGameSharingMode = enum_unnamed_12; -const enum_unnamed_13 = extern enum(c_int) { - PSP_UTILITY_GAMESHARING_DATA_TYPE_FILE = 1, - PSP_UTILITY_GAMESHARING_DATA_TYPE_MEMORY = 2, +pub const PspUtilityGameSharingMode = extern enum(c_int) { + Single = 1, + Multiple = 2, _, }; -pub const pspUtilityGameSharingDataType = enum_unnamed_13; -pub const struct__pspUtilityGameSharingParams = extern struct { - base: pspUtilityDialogCommon, + +pub const PspUtilityGameSharingDataType = extern enum(c_int) { + File = 1, + Memory = 2, + _, +}; + +pub const PspUtilityGameSharingParams = extern struct { + base: PspUtilityDialogCommon, unknown1: c_int, unknown2: c_int, name: [8]u8, @@ -179,70 +274,46 @@ pub const struct__pspUtilityGameSharingParams = extern struct { unknown5: c_int, result: c_int, filepath: [*c]u8, - mode: pspUtilityGameSharingMode, - datatype: pspUtilityGameSharingDataType, + mode: PspUtilityGameSharingMode, + datatype: PspUtilityGameSharingDataType, data: ?*c_void, datasize: c_uint, }; -pub const pspUtilityGameSharingParams = struct__pspUtilityGameSharingParams; -pub extern fn sceUtilityGameSharingInitStart(params: [*c]pspUtilityGameSharingParams) c_int; -pub extern fn sceUtilityGameSharingShutdownStart() void; -pub extern fn sceUtilityGameSharingGetStatus() c_int; -pub extern fn sceUtilityGameSharingUpdate(n: c_int) void; -pub const enum_pspUtilityHtmlViewerDisconnectModes = extern enum(c_int) { - PSP_UTILITY_HTMLVIEWER_DISCONNECTMODE_ENABLE = 0, - PSP_UTILITY_HTMLVIEWER_DISCONNECTMODE_DISABLE = 1, - PSP_UTILITY_HTMLVIEWER_DISCONNECTMODE_CONFIRM = 2, - _, -}; -pub const enum_pspUtilityHtmlViewerInterfaceModes = extern enum(c_int) { - PSP_UTILITY_HTMLVIEWER_INTERFACEMODE_FULL = 0, - PSP_UTILITY_HTMLVIEWER_INTERFACEMODE_LIMITED = 1, - PSP_UTILITY_HTMLVIEWER_INTERFACEMODE_NONE = 2, - _, -}; -pub const enum_pspUtilityHtmlViewerCookieModes = extern enum(c_int) { - PSP_UTILITY_HTMLVIEWER_COOKIEMODE_DISABLED = 0, - PSP_UTILITY_HTMLVIEWER_COOKIEMODE_ENABLED = 1, - PSP_UTILITY_HTMLVIEWER_COOKIEMODE_CONFIRM = 2, - PSP_UTILITY_HTMLVIEWER_COOKIEMODE_DEFAULT = 3, - _, -}; -pub const enum_pspUtilityHtmlViewerTextSizes = extern enum(c_int) { - PSP_UTILITY_HTMLVIEWER_TEXTSIZE_LARGE = 0, - PSP_UTILITY_HTMLVIEWER_TEXTSIZE_NORMAL = 1, - PSP_UTILITY_HTMLVIEWER_TEXTSIZE_SMALL = 2, - _, -}; -pub const enum_pspUtilityHtmlViewerDisplayModes = extern enum(c_int) { - PSP_UTILITY_HTMLVIEWER_DISPLAYMODE_NORMAL = 0, - PSP_UTILITY_HTMLVIEWER_DISPLAYMODE_FIT = 1, - PSP_UTILITY_HTMLVIEWER_DISPLAYMODE_SMART_FIT = 2, + +pub const PspUtilityHtmlViewerTextSizes = extern enum(c_int) { + Large = 0, + Normal = 1, + Small = 2, _, }; -pub const enum_pspUtilityHtmlViewerConnectModes = extern enum(c_int) { - PSP_UTILITY_HTMLVIEWER_CONNECTMODE_LAST = 0, - PSP_UTILITY_HTMLVIEWER_CONNECTMODE_MANUAL_ONCE = 1, - PSP_UTILITY_HTMLVIEWER_CONNECTMODE_MANUAL_ALL = 2, +pub const PspUtilityHtmlViewerDisplayModes = extern enum(c_int) { + Normal = 0, + Fit = 1, + SmartFit = 2, _, }; -pub const enum_pspUtilityHtmlViewerOptions = extern enum(c_int) { - PSP_UTILITY_HTMLVIEWER_OPEN_SCE_START_PAGE = 1, - PSP_UTILITY_HTMLVIEWER_DISABLE_STARTUP_LIMITS = 2, - PSP_UTILITY_HTMLVIEWER_DISABLE_EXIT_DIALOG = 4, - PSP_UTILITY_HTMLVIEWER_DISABLE_CURSOR = 8, - PSP_UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_COMPLETE_DIALOG = 16, - PSP_UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_START_DIALOG = 32, - PSP_UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_DESTINATION_DIALOG = 64, - PSP_UTILITY_HTMLVIEWER_LOCK_DOWNLOAD_DESTINATION_DIALOG = 128, - PSP_UTILITY_HTMLVIEWER_DISABLE_TAB_DISPLAY = 256, - PSP_UTILITY_HTMLVIEWER_ENABLE_ANALOG_HOLD = 512, - PSP_UTILITY_HTMLVIEWER_ENABLE_FLASH = 1024, - PSP_UTILITY_HTMLVIEWER_DISABLE_LRTRIGGER = 2048, +pub const PspUtilityHtmlViewerConnectModes = extern enum(c_int) { + Last = 0, + ManualOnce = 1, + ManualAll = 2, _, }; -pub const struct_pspUtilityHtmlViewerParam = extern struct { - base: pspUtilityDialogCommon, +pub const PspUtilityHtmlViewerOptions = extern enum(c_int) { + OpenSceStartPage = 1, + DisableStartupLimits = 2, + DisableExitDialog = 4, + DisableCursor = 8, + DisableDownloadCompleteDialog = 16, + DisableDownloadStartDialog = 32, + DisableDownloadDestinationDialog = 64, + LockDownloadDestinationDialog = 128, + DisableTabDisplay = 256, + EnableAnalogHold = 512, + EnableFlash = 1024, + DisableLRTrigger = 2048, +}; +pub const PspUtilityHtmlViewerParam = extern struct { + base: PspUtilityDialogCommon, memaddr: ?*c_void, memsize: c_uint, unknown1: c_int, @@ -265,65 +336,9 @@ pub const struct_pspUtilityHtmlViewerParam = extern struct { memused: c_uint, unknown4: [10]c_int, }; -pub const pspUtilityHtmlViewerParam = struct_pspUtilityHtmlViewerParam; -pub extern fn sceUtilityHtmlViewerInitStart(params: [*c]pspUtilityHtmlViewerParam) c_int; -pub extern fn sceUtilityHtmlViewerShutdownStart() c_int; -pub extern fn sceUtilityHtmlViewerUpdate(n: c_int) c_int; -pub extern fn sceUtilityHtmlViewerGetStatus() c_int; -pub extern fn sceUtilitySetSystemParamInt(id: c_int, value: c_int) c_int; -pub extern fn sceUtilitySetSystemParamString(id: c_int, str: [*c]const u8) c_int; -pub extern fn sceUtilityGetSystemParamInt(id: c_int, value: [*c]c_int) c_int; -pub extern fn sceUtilityGetSystemParamString(id: c_int, str: [*c]u8, len: c_int) c_int; -pub const enum_SceUtilityOskInputLanguage = extern enum(c_int) { - PSP_UTILITY_OSK_LANGUAGE_DEFAULT = 0, - PSP_UTILITY_OSK_LANGUAGE_JAPANESE = 1, - PSP_UTILITY_OSK_LANGUAGE_ENGLISH = 2, - PSP_UTILITY_OSK_LANGUAGE_FRENCH = 3, - PSP_UTILITY_OSK_LANGUAGE_SPANISH = 4, - PSP_UTILITY_OSK_LANGUAGE_GERMAN = 5, - PSP_UTILITY_OSK_LANGUAGE_ITALIAN = 6, - PSP_UTILITY_OSK_LANGUAGE_DUTCH = 7, - PSP_UTILITY_OSK_LANGUAGE_PORTUGESE = 8, - PSP_UTILITY_OSK_LANGUAGE_RUSSIAN = 9, - PSP_UTILITY_OSK_LANGUAGE_KOREAN = 10, - _, -}; -pub const enum_SceUtilityOskState = extern enum(c_int) { - PSP_UTILITY_OSK_DIALOG_NONE = 0, - PSP_UTILITY_OSK_DIALOG_INITING = 1, - PSP_UTILITY_OSK_DIALOG_INITED = 2, - PSP_UTILITY_OSK_DIALOG_VISIBLE = 3, - PSP_UTILITY_OSK_DIALOG_QUIT = 4, - PSP_UTILITY_OSK_DIALOG_FINISHED = 5, - _, -}; -pub const enum_SceUtilityOskResult = extern enum(c_int) { - PSP_UTILITY_OSK_RESULT_UNCHANGED = 0, - PSP_UTILITY_OSK_RESULT_CANCELLED = 1, - PSP_UTILITY_OSK_RESULT_CHANGED = 2, - _, -}; -pub const enum_SceUtilityOskInputType = extern enum(c_int) { - PSP_UTILITY_OSK_INPUTTYPE_ALL = 0, - PSP_UTILITY_OSK_INPUTTYPE_LATIN_DIGIT = 1, - PSP_UTILITY_OSK_INPUTTYPE_LATIN_SYMBOL = 2, - PSP_UTILITY_OSK_INPUTTYPE_LATIN_LOWERCASE = 4, - PSP_UTILITY_OSK_INPUTTYPE_LATIN_UPPERCASE = 8, - PSP_UTILITY_OSK_INPUTTYPE_JAPANESE_DIGIT = 256, - PSP_UTILITY_OSK_INPUTTYPE_JAPANESE_SYMBOL = 512, - PSP_UTILITY_OSK_INPUTTYPE_JAPANESE_LOWERCASE = 1024, - PSP_UTILITY_OSK_INPUTTYPE_JAPANESE_UPPERCASE = 2048, - PSP_UTILITY_OSK_INPUTTYPE_JAPANESE_HIRAGANA = 4096, - PSP_UTILITY_OSK_INPUTTYPE_JAPANESE_HALF_KATAKANA = 8192, - PSP_UTILITY_OSK_INPUTTYPE_JAPANESE_KATAKANA = 16384, - PSP_UTILITY_OSK_INPUTTYPE_JAPANESE_KANJI = 32768, - PSP_UTILITY_OSK_INPUTTYPE_RUSSIAN_LOWERCASE = 65536, - PSP_UTILITY_OSK_INPUTTYPE_RUSSIAN_UPPERCASE = 131072, - PSP_UTILITY_OSK_INPUTTYPE_KOREAN = 262144, - PSP_UTILITY_OSK_INPUTTYPE_URL = 524288, - _, -}; -pub const struct__SceUtilityOskData = extern struct { + + +pub const SceUtilityOskData = extern struct { unk_00: c_int, unk_04: c_int, language: c_int, @@ -338,55 +353,14 @@ pub const struct__SceUtilityOskData = extern struct { result: c_int, outtextlimit: c_int, }; -pub const SceUtilityOskData = struct__SceUtilityOskData; -pub const struct__SceUtilityOskParams = extern struct { - base: pspUtilityDialogCommon, + +pub const SceUtilityOskParams = extern struct { + base: PspUtilityDialogCommon, datacount: c_int, data: [*c]SceUtilityOskData, state: c_int, unk_60: c_int, }; -pub const SceUtilityOskParams = struct__SceUtilityOskParams; -pub extern fn sceUtilityOskInitStart(params: [*c]SceUtilityOskParams) c_int; -pub extern fn sceUtilityOskShutdownStart() c_int; -pub extern fn sceUtilityOskUpdate(n: c_int) c_int; -pub extern fn sceUtilityOskGetStatus() c_int; -pub extern fn sceUtilityLoadNetModule(module: c_int) c_int; -pub extern fn sceUtilityUnloadNetModule(module: c_int) c_int; -pub extern fn sceUtilityLoadAvModule(module: c_int) c_int; -pub extern fn sceUtilityUnloadAvModule(module: c_int) c_int; -pub extern fn sceUtilityLoadUsbModule(module: c_int) c_int; -pub extern fn sceUtilityUnloadUsbModule(module: c_int) c_int; -pub extern fn sceUtilityLoadModule(module: c_int) c_int; -pub extern fn sceUtilityUnloadModule(module: c_int) c_int; -const enum_unnamed_14 = extern enum(c_int) { - PSP_UTILITY_DIALOG_NONE = 0, - PSP_UTILITY_DIALOG_INIT = 1, - PSP_UTILITY_DIALOG_VISIBLE = 2, - PSP_UTILITY_DIALOG_QUIT = 3, - PSP_UTILITY_DIALOG_FINISHED = 4, - _, -}; -pub const pspUtilityDialogState = enum_unnamed_14; - -pub const _pspUtilityMsgDialogParams = struct__pspUtilityMsgDialogParams; -pub const pspUtilityNetconfActions = enum_pspUtilityNetconfActions; -pub const pspUtilityNetconfAdhoc = struct_pspUtilityNetconfAdhoc; -pub const _pspUtilityNetconfData = struct__pspUtilityNetconfData; -pub const _pspUtilityGameSharingParams = struct__pspUtilityGameSharingParams; -pub const pspUtilityHtmlViewerDisconnectModes = enum_pspUtilityHtmlViewerDisconnectModes; -pub const pspUtilityHtmlViewerInterfaceModes = enum_pspUtilityHtmlViewerInterfaceModes; -pub const pspUtilityHtmlViewerCookieModes = enum_pspUtilityHtmlViewerCookieModes; -pub const pspUtilityHtmlViewerTextSizes = enum_pspUtilityHtmlViewerTextSizes; -pub const pspUtilityHtmlViewerDisplayModes = enum_pspUtilityHtmlViewerDisplayModes; -pub const pspUtilityHtmlViewerConnectModes = enum_pspUtilityHtmlViewerConnectModes; -pub const pspUtilityHtmlViewerOptions = enum_pspUtilityHtmlViewerOptions; -pub const SceUtilityOskInputLanguage = enum_SceUtilityOskInputLanguage; -pub const SceUtilityOskState = enum_SceUtilityOskState; -pub const SceUtilityOskResult = enum_SceUtilityOskResult; -pub const SceUtilityOskInputType = enum_SceUtilityOskInputType; -pub const _SceUtilityOskData = struct__SceUtilityOskData; -pub const _SceUtilityOskParams = struct__SceUtilityOskParams; pub const ModuleNet = extern enum(c_int){ Common = 1, diff --git a/src/psp/sdk/zSafeTodo.txt b/src/psp/sdk/zSafeTodo.txt deleted file mode 100644 index 926ea4f..0000000 --- a/src/psp/sdk/zSafeTodo.txt +++ /dev/null @@ -1,11 +0,0 @@ -- audio -- http -- iofilemgr -- modulemgr -- mp3 -- mpeg -- net -- power -- rtc -- threadman -- utility