diff --git a/src/psp.rs b/src/psp.rs
index d6415ff02110710942e28c469125edf474646b27..6497bd21b5f57b289a30306cac16693eb4b356ea 100644
--- a/src/psp.rs
+++ b/src/psp.rs
@@ -133,207 +133,9 @@ pub type HttpPasswordCB = Option<
     ) -> i32,
 >;
 
-#[allow(non_camel_case_types)]
 pub type socklen_t = u32;
 
-pub const INT_MIN: c_int = -2147483648;
-pub const INT_MAX: c_int = 2147483647;
-
-pub const AUDIO_VOLUME_MAX: u32 = 0x8000;
-pub const AUDIO_CHANNEL_MAX: u32 = 8;
-pub const AUDIO_NEXT_CHANNEL: i32 = -1;
-pub const AUDIO_SAMPLE_MIN: u32 = 64;
-pub const AUDIO_SAMPLE_MAX: u32 = 65472;
-
-pub const PSP_CTRL_SELECT: i32 = 0x000001;
-pub const PSP_CTRL_START: i32 = 0x000008;
-pub const PSP_CTRL_UP: i32 = 0x000010;
-pub const PSP_CTRL_RIGHT: i32 = 0x000020;
-pub const PSP_CTRL_DOWN: i32 = 0x000040;
-pub const PSP_CTRL_LEFT: i32 = 0x000080;
-pub const PSP_CTRL_LTRIGGER: i32 = 0x000100;
-pub const PSP_CTRL_RTRIGGER: i32 = 0x000200;
-pub const PSP_CTRL_TRIANGLE: i32 = 0x001000;
-pub const PSP_CTRL_CIRCLE: i32 = 0x002000;
-pub const PSP_CTRL_CROSS: i32 = 0x004000;
-pub const PSP_CTRL_SQUARE: i32 = 0x008000;
-pub const PSP_CTRL_HOME: i32 = 0x010000;
-pub const PSP_CTRL_HOLD: i32 = 0x020000;
-pub const PSP_CTRL_NOTE: i32 = 0x800000;
-pub const PSP_CTRL_SCREEN: i32 = 0x400000;
-pub const PSP_CTRL_VOLUP: i32 = 0x100000;
-pub const PSP_CTRL_VOLDOWN: i32 = 0x200000;
-pub const PSP_CTRL_WLAN_UP: i32 = 0x040000;
-pub const PSP_CTRL_REMOTE: i32 = 0x080000;
-pub const PSP_CTRL_DISC: i32 = 0x1000000;
-pub const PSP_CTRL_MS: i32 = 0x2000000;
-
-pub const USB_CAM_PID: i32 = 0x282;
-pub const USB_BUS_DRIVER_NAME: &str = "USBBusDriver";
-pub const USB_CAM_DRIVER_NAME: &str = "USBCamDriver";
-pub const USB_CAM_MIC_DRIVER_NAME: &str = "USBCamMicDriver";
-pub const USB_STOR_DRIVER_NAME: &str = "USBStor_Driver";
-
-pub const ACTIVATED: i32 = 0x200;
-pub const CONNECTED: i32 = 0x020;
-pub const ESTABLISHED: i32 = 0x002;
-
-pub const USB_CAM_FLIP: i32 = 1;
-pub const USB_CAM_MIRROR: i32 = 0x100;
-
-pub const THREAD_ATTR_VFPU: i32 = 0x00004000;
-pub const THREAD_ATTR_USER: i32 = 0x80000000;
-pub const THREAD_ATTR_USBWLAN: i32 = 0xa0000000;
-pub const THREAD_ATTR_VSH: i32 = 0xc0000000;
-pub const THREAD_ATTR_SCRATCH_SRAM: i32 = 0x00008000;
-pub const THREAD_ATTR_NO_FILLSTACK: i32 = 0x00100000;
-pub const THREAD_ATTR_CLEAR_STACK: i32 = 0x00200000;
-
-pub const EVENT_WAIT_MULTIPLE: i32 = 0x200;
-
-pub const EVENT_WAIT_AND: i32 = 0;
-pub const EVENT_WAIT_OR: i32 = 1;
-pub const EVENT_WAIT_CLEAR: i32 = 0x20;
-
-pub const POWER_INFO_POWER_SWITCH: i32 = 0x80000000;
-pub const POWER_INFO_HOLD_SWITCH: i32 = 0x40000000;
-pub const POWER_INFO_STANDBY: i32 = 0x00080000;
-pub const POWER_INFO_RESUME_COMPLETE: i32 = 0x00040000;
-pub const POWER_INFO_RESUMING: i32 = 0x00020000;
-pub const POWER_INFO_SUSPENDING: i32 = 0x00010000;
-pub const POWER_INFO_AC_POWER: i32 = 0x00001000;
-pub const POWER_INFO_BATTERY_LOW: i32 = 0x00000100;
-pub const POWER_INFO_BATTERY_EXIST: i32 = 0x00000080;
-pub const POWER_INFO_BATTERY_POWER: i32 = 0x0000007;
-
-pub const FIO_S_IFLNK: i32 = 0x4000;
-pub const FIO_S_IFDIR: i32 = 0x1000;
-pub const FIO_S_IFREG: i32 = 0x2000;
-pub const FIO_S_ISUID: i32 = 0x0800;
-pub const FIO_S_ISGID: i32 = 0x0400;
-pub const FIO_S_ISVTX: i32 = 0x0200;
-pub const FIO_S_IRUSR: i32 = 0x0100;
-pub const FIO_S_IWUSR: i32 = 0x0080;
-pub const FIO_S_IXUSR: i32 = 0x0040;
-pub const FIO_S_IRGRP: i32 = 0x0020;
-pub const FIO_S_IWGRP: i32 = 0x0010;
-pub const FIO_S_IXGRP: i32 = 0x0008;
-pub const FIO_S_IROTH: i32 = 0x0004;
-pub const FIO_S_IWOTH: i32 = 0x0002;
-pub const FIO_S_IXOTH: i32 = 0x0001;
-
-pub const FIO_SO_IFLNK: i32 = 0x0008;
-pub const FIO_SO_IFDIR: i32 = 0x0010;
-pub const FIO_SO_IFREG: i32 = 0x0020;
-pub const FIO_SO_IROTH: i32 = 0x0004;
-pub const FIO_SO_IWOTH: i32 = 0x0002;
-pub const FIO_SO_IXOTH: i32 = 0x0001;
-
-pub const PSP_O_RD_ONLY: i32 = 0x0001;
-pub const PSP_O_WR_ONLY: i32 = 0x0002;
-pub const PSP_O_RD_WR: i32 = 0x0003;
-pub const PSP_O_NBLOCK: i32 = 0x0004;
-pub const PSP_O_DIR: i32 = 0x0008;
-pub const PSP_O_APPEND: i32 = 0x0100;
-pub const PSP_O_CREAT: i32 = 0x0200;
-pub const PSP_O_TRUNC: i32 = 0x0400;
-pub const PSP_O_EXCL: i32 = 0x0800;
-pub const PSP_O_NO_WAIT: i32 = 0x8000;
-
-pub const UMD_NOT_PRESENT: i32 = 0x01;
-pub const UMD_PRESENT: i32 = 0x02;
-pub const UMD_CHANGED: i32 = 0x04;
-pub const UMD_INITING: i32 = 0x08;
-pub const UMD_INITED: i32 = 0x10;
-pub const UMD_READY: i32 = 0x20;
-
-pub const PLAY_PAUSE: i32 = 0x1;
-pub const FORWARD: i32 = 0x4;
-pub const BACK: i32 = 0x8;
-pub const VOL_UP: i32 = 0x10;
-pub const VOL_DOWN: i32 = 0x20;
-pub const HOLD: i32 = 0x80;
-
-pub const GU_PI: f32 = 3.141593;
-
-pub const GU_TEXTURE_8BIT: i32 = 1;
-pub const GU_TEXTURE_16BIT: i32 = 2;
-pub const GU_TEXTURE_32BITF: i32 = 3;
-pub const GU_COLOR_5650: i32 = 4 << 2;
-pub const GU_COLOR_5551: i32 = 5 << 2;
-pub const GU_COLOR_4444: i32 = 6 << 2;
-pub const GU_COLOR_8888: i32 = 7 << 2;
-pub const GU_NORMAL_8BIT: i32 = 1 << 5;
-pub const GU_NORMAL_16BIT: i32 = 2 << 5;
-pub const GU_NORMAL_32BITF: i32 = 3 << 5;
-pub const GU_VERTEX_8BIT: i32 = 1 << 7;
-pub const GU_VERTEX_16BIT: i32 = 2 << 7;
-pub const GU_VERTEX_32BITF: i32 = 3 << 7;
-pub const GU_WEIGHT_8BIT: i32 = 1 << 9;
-pub const GU_WEIGHT_16BIT: i32 = 2 << 9;
-pub const GU_WEIGHT_32BITF: i32 = 3 << 9;
-pub const GU_INDEX_8BIT: i32 = 1 << 11;
-pub const GU_INDEX_16BIT: i32 = 2 << 11;
-pub const GU_WEIGHTS1: i32 = num_weights(1);
-pub const GU_WEIGHTS2: i32 = num_weights(2);
-pub const GU_WEIGHTS3: i32 = num_weights(3);
-pub const GU_WEIGHTS4: i32 = num_weights(4);
-pub const GU_WEIGHTS5: i32 = num_weights(5);
-pub const GU_WEIGHTS6: i32 = num_weights(6);
-pub const GU_WEIGHTS7: i32 = num_weights(7);
-pub const GU_WEIGHTS8: i32 = num_weights(8);
-pub const GU_VERTICES1: i32 = num_vertices(1);
-pub const GU_VERTICES2: i32 = num_vertices(2);
-pub const GU_VERTICES3: i32 = num_vertices(3);
-pub const GU_VERTICES4: i32 = num_vertices(4);
-pub const GU_VERTICES5: i32 = num_vertices(5);
-pub const GU_VERTICES6: i32 = num_vertices(6);
-pub const GU_VERTICES7: i32 = num_vertices(7);
-pub const GU_VERTICES8: i32 = num_vertices(8);
-pub const GU_TRANSFORM_2D: i32 = 1 << 23;
-pub const GU_TRANSFORM_3D: i32 = 0;
-
-const fn num_weights(n: u32) -> i32 {
-    (((n - 1) & 7) << 14) as i32
-}
-
-const fn num_vertices(n: u32) -> i32 {
-    (((n - 1) & 7) << 18) as i32
-}
-
-pub const GU_COLOR_BUFFER_BIT: i32 = 1;
-pub const GU_STENCIL_BUFFER_BIT: i32 = 2;
-pub const GU_DEPTH_BUFFER_BIT: i32 = 4;
-pub const GU_FAST_CLEAR_BIT: i32 = 16;
-
-pub const GU_AMBIENT: i32 = 1;
-pub const GU_DIFFUSE: i32 = 2;
-pub const GU_SPECULAR: i32 = 4;
-pub const GU_UNKNOWN_LIGHT_COMPONENT: i32 = 8;
-
-pub const SYSTEM_REGISTRY: [u8; 7] = *b"/system";
-pub const REG_KEYNAME_SIZE: u32 = 27;
-
-pub const UTILITY_MSGDIALOG_ERROR: i32 = 0;
-pub const UTILITY_MSGDIALOG_TEXT: i32 = 1;
-pub const UTILITY_MSGDIALOG_YES_NO_BUTTONS: i32 = 0x10;
-pub const UTILITY_MSGDIALOG_DEFAULT_NO: i32 = 0x100;
-
-pub const UTILITY_HTMLVIEWER_OPEN_SCE_START_PAGE: i32 = 0x000001;
-pub const UTILITY_HTMLVIEWER_DISABLE_STARTUP_LIMITS: i32 = 0x000002;
-pub const UTILITY_HTMLVIEWER_DISABLE_EXIT_DIALOG: i32 = 0x000004;
-pub const UTILITY_HTMLVIEWER_DISABLE_CURSOR: i32 = 0x000008;
-pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_COMPLETE_DIALOG: i32 = 0x000010;
-pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_START_DIALOG: i32 = 0x000020;
-pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_DESTINATION_DIALOG: i32 =
-    0x000040;
-pub const UTILITY_HTMLVIEWER_LOCK_DOWNLOAD_DESTINATION_DIALOG: i32 = 0x000080;
-pub const UTILITY_HTMLVIEWER_DISABLE_TAB_DISPLAY: i32 = 0x000100;
-pub const UTILITY_HTMLVIEWER_ENABLE_ANALOG_HOLD: i32 = 0x000200;
-pub const UTILITY_HTMLVIEWER_ENABLE_FLASH: i32 = 0x000400;
-pub const UTILITY_HTMLVIEWER_DISABLE_LRTRIGGER: i32 = 0x000800;
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(u32)]
 pub enum AudioFormat {
@@ -341,19 +143,32 @@ pub enum AudioFormat {
     Mono = 0x10,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+#[repr(u32)]
+pub enum DisplayMode {
+    Lcd = 0,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-#[repr(C)]
-pub struct AudioInputParams {
-    pub unknown1: i32,
-    pub gain: i32,
-    pub unknown2: i32,
-    pub unknown3: i32,
-    pub unknown4: i32,
-    pub unknown5: i32,
+#[repr(u32)]
+pub enum DisplayPixelFormat {
+    Psm5650 = 0,
+    Psm5551 = 1,
+    Psm4444 = 2,
+    Psm8888 = 3,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+#[repr(u32)]
+pub enum DisplaySetBufSync {
+    Immediate = 0,
+    NextFrame = 1,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(i32)]
 pub enum AudioOutputFrequency {
@@ -368,7 +183,7 @@ pub enum AudioOutputFrequency {
     Khz8 = 8000,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(i32)]
 pub enum AudioInputFrequency {
@@ -377,172 +192,7 @@ pub enum AudioInputFrequency {
     Khz11_025 = 11025,
 }
 
-extern "C" {
-    pub fn sceAudioChReserve(
-        channel: i32,
-        sample_count: i32,
-        format: AudioFormat,
-    ) -> i32;
-    pub fn sceAudioChRelease(channel: i32) -> i32;
-    pub fn sceAudioOutput(channel: i32, vol: i32, buf: *mut c_void) -> i32;
-    pub fn sceAudioOutputBlocking(
-        channel: i32,
-        vol: i32,
-        buf: *mut c_void,
-    ) -> i32;
-    pub fn sceAudioOutputPanned(
-        channel: i32,
-        left_vol: i32,
-        right_vol: i32,
-        buf: *mut c_void,
-    ) -> i32;
-    pub fn sceAudioOutputPannedBlocking(
-        channel: i32,
-        left_vol: i32,
-        right_vol: i32,
-        buf: *mut c_void,
-    ) -> i32;
-    pub fn sceAudioGetChannelRestLen(channel: i32) -> i32;
-    pub fn sceAudioGetChannelRestLength(channel: i32) -> i32;
-    pub fn sceAudioSetChannelDataLen(channel: i32, sample_count: i32) -> i32;
-    pub fn sceAudioChangeChannelConfig(
-        channel: i32,
-        format: AudioFormat,
-    ) -> i32;
-    pub fn sceAudioChangeChannelVolume(
-        channel: i32,
-        left_vol: i32,
-        right_vol: i32,
-    ) -> i32;
-    pub fn sceAudioOutput2Reserve(sample_count: i32) -> i32;
-    pub fn sceAudioOutput2Release() -> i32;
-    pub fn sceAudioOutput2ChangeLength(sample_count: i32) -> i32;
-    pub fn sceAudioOutput2OutputBlocking(vol: i32, buf: *mut c_void) -> i32;
-    pub fn sceAudioOutput2GetRestSample() -> i32;
-    pub fn sceAudioSRCChReserve(
-        sample_count: i32,
-        freq: AudioOutputFrequency,
-        channels: i32,
-    ) -> i32;
-    pub fn sceAudioSRCChRelease() -> i32;
-    pub fn sceAudioSRCOutputBlocking(vol: i32, buf: *mut c_void) -> i32;
-    pub fn sceAudioInputInit(unknown1: i32, gain: i32, unknown2: i32) -> i32;
-    pub fn sceAudioInputInitEx(params: *mut AudioInputParams) -> i32;
-    pub fn sceAudioInputBlocking(
-        sample_count: i32,
-        freq: AudioInputFrequency,
-        buf: *mut c_void,
-    );
-    pub fn sceAudioInput(
-        sample_count: i32,
-        freq: AudioInputFrequency,
-        buf: *mut c_void,
-    );
-    pub fn sceAudioGetInputLength() -> i32;
-    pub fn sceAudioWaitInputEnd() -> i32;
-    pub fn sceAudioPollInputEnd() -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct Atrac3BufferInfo {
-    pub puc_write_position_first_buf: *mut u8,
-    pub ui_writable_byte_first_buf: u32,
-    pub ui_min_write_byte_first_buf: u32,
-    pub ui_read_position_first_buf: u32,
-    pub puc_write_position_second_buf: *mut u8,
-    pub ui_writable_byte_second_buf: u32,
-    pub ui_min_write_byte_second_buf: u32,
-    pub ui_read_position_second_buf: u32,
-}
-
-extern "C" {
-    pub fn sceAtracGetAtracID(ui_codec_type: u32) -> i32;
-    pub fn sceAtracSetDataAndGetID(buf: *mut c_void, bufsize: usize) -> i32;
-    pub fn sceAtracDecodeData(
-        atrac_id: i32,
-        out_samples: *mut u16,
-        out_n: *mut i32,
-        out_end: *mut i32,
-        out_remain_frame: *mut i32,
-    ) -> i32;
-    pub fn sceAtracGetRemainFrame(
-        atrac_id: i32,
-        out_remain_frame: *mut i32,
-    ) -> i32;
-    pub fn sceAtracGetStreamDataInfo(
-        atrac_id: i32,
-        write_pointer: *mut *mut u8,
-        available_bytes: *mut u32,
-        read_offset: *mut u32,
-    ) -> i32;
-    pub fn sceAtracAddStreamData(atrac_id: i32, bytes_to_add: u32) -> i32;
-    pub fn sceAtracGetBitrate(atrac_id: i32, out_bitrate: *mut i32) -> i32;
-    pub fn sceAtracSetLoopNum(atrac_id: i32, nloops: i32) -> i32;
-    pub fn sceAtracReleaseAtracID(atrac_id: i32) -> i32;
-    pub fn sceAtracGetNextSample(atrac_id: i32, out_n: *mut i32) -> i32;
-    pub fn sceAtracGetMaxSample(atrac_id: i32, out_max: *mut i32) -> i32;
-    pub fn sceAtracGetBufferInfoForReseting(
-        atrac_id: i32,
-        ui_sample: u32,
-        pbuffer_info: *mut Atrac3BufferInfo,
-    ) -> i32;
-    pub fn sceAtracGetChannel(atrac_id: i32, pui_channel: *mut u32) -> i32;
-    pub fn sceAtracGetInternalErrorInfo(
-        atrac_id: i32,
-        pi_result: *mut i32,
-    ) -> i32;
-    pub fn sceAtracGetLoopStatus(
-        atrac_id: i32,
-        pi_loop_num: *mut i32,
-        pui_loop_status: *mut u32,
-    ) -> i32;
-    pub fn sceAtracGetNextDecodePosition(
-        atrac_id: i32,
-        pui_sample_position: *mut u32,
-    ) -> i32;
-    pub fn sceAtracGetSecondBufferInfo(
-        atrac_id: i32,
-        pui_position: *mut u32,
-        pui_data_byte: *mut u32,
-    ) -> i32;
-    pub fn sceAtracGetSoundSample(
-        atrac_id: i32,
-        pi_end_sample: *mut i32,
-        pi_loop_start_sample: *mut i32,
-        pi_loop_end_sample: *mut i32,
-    ) -> i32;
-    pub fn sceAtracResetPlayPosition(
-        atrac_id: i32,
-        ui_sample: u32,
-        ui_write_byte_first_buf: u32,
-        ui_write_byte_second_buf: u32,
-    ) -> i32;
-    pub fn sceAtracSetData(
-        atrac_id: i32,
-        puc_buffer_addr: *mut u8,
-        ui_buffer_byte: u32,
-    ) -> i32;
-    pub fn sceAtracSetHalfwayBuffer(
-        atrac_id: i32,
-        puc_buffer_addr: *mut u8,
-        ui_read_byte: u32,
-        ui_buffer_byte: u32,
-    ) -> i32;
-    pub fn sceAtracSetHalfwayBufferAndGetID(
-        puc_buffer_addr: *mut u8,
-        ui_read_byte: u32,
-        ui_buffer_byte: u32,
-    ) -> i32;
-    pub fn sceAtracSetSecondBuffer(
-        atrac_id: i32,
-        puc_second_buffer_addr: *mut u8,
-        ui_second_buffer_byte: u32,
-    ) -> i32;
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(u32)]
 pub enum CtrlMode {
@@ -550,160 +200,7 @@ pub enum CtrlMode {
     Analog,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct SceCtrlData {
-    pub timestamp: u32,
-    pub buttons: i32,
-    pub lx: u8,
-    pub ly: u8,
-    pub rsrv: [u8; 6],
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct SceCtrlLatch {
-    pub ui_make: u32,
-    pub ui_break: u32,
-    pub ui_press: u32,
-    pub ui_release: u32,
-}
-
-extern "C" {
-    pub fn sceCtrlSetSamplingCycle(cycle: i32) -> i32;
-    pub fn sceCtrlGetSamplingCycle(pcycle: *mut i32) -> i32;
-    pub fn sceCtrlSetSamplingMode(mode: CtrlMode) -> i32;
-    pub fn sceCtrlGetSamplingMode(pmode: *mut i32) -> i32;
-    pub fn sceCtrlPeekBufferPositive(
-        pad_data: *mut SceCtrlData,
-        count: i32,
-    ) -> i32;
-    pub fn sceCtrlPeekBufferNegative(
-        pad_data: *mut SceCtrlData,
-        count: i32,
-    ) -> i32;
-    pub fn sceCtrlReadBufferPositive(
-        pad_data: *mut SceCtrlData,
-        count: i32,
-    ) -> i32;
-    pub fn sceCtrlReadBufferNegative(
-        pad_data: *mut SceCtrlData,
-        count: i32,
-    ) -> i32;
-    pub fn sceCtrlPeekLatch(latch_data: *mut SceCtrlLatch) -> i32;
-    pub fn sceCtrlReadLatch(latch_data: *mut SceCtrlLatch) -> i32;
-    pub fn sceCtrlSetIdleCancelThreshold(idlereset: i32, idleback: i32)
-        -> i32;
-    pub fn sceCtrlGetIdleCancelThreshold(
-        idlereset: *mut i32,
-        idleback: *mut i32,
-    ) -> i32;
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-#[repr(u32)]
-pub enum DisplayMode {
-    Lcd = 0,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum DisplayPixelFormat {
-    Psm5650 = 0,
-    Psm5551 = 1,
-    Psm4444 = 2,
-    Psm8888 = 3,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-#[repr(u32)]
-pub enum DisplaySetBufSync {
-    Immediate = 0,
-    NextFrame = 1,
-}
-
-extern "C" {
-    pub fn sceDisplaySetMode(
-        mode: DisplayMode,
-        width: usize,
-        height: usize,
-    ) -> u32;
-    pub fn sceDisplayGetMode(
-        pmode: *mut i32,
-        pwidth: *mut i32,
-        pheight: *mut i32,
-    ) -> i32;
-    pub fn sceDisplaySetFrameBuf(
-        top_addr: *const u8,
-        buffer_width: usize,
-        pixel_format: DisplayPixelFormat,
-        sync: DisplaySetBufSync,
-    ) -> u32;
-    pub fn sceDisplayGetFrameBuf(
-        top_addr: *mut *mut c_void,
-        buffer_width: *mut usize,
-        pixel_format: *mut DisplayPixelFormat,
-        sync: DisplaySetBufSync,
-    ) -> i32;
-    pub fn sceDisplayGetVcount() -> u32;
-    pub fn sceDisplayWaitVblank() -> i32;
-    pub fn sceDisplayWaitVblankCB() -> i32;
-    pub fn sceDisplayWaitVblankStart() -> i32;
-    pub fn sceDisplayWaitVblankStartCB() -> i32;
-    pub fn sceDisplayGetAccumulatedHcount() -> i32;
-    pub fn sceDisplayGetCurrentHcount() -> i32;
-    pub fn sceDisplayGetFramePerSec() -> f32;
-    pub fn sceDisplayIsForeground() -> i32;
-    pub fn sceDisplayIsVblank() -> i32;
-}
-
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct GeContext {
-    pub context: [u32; 512],
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct GeStack {
-    pub stack: [u32; 8],
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct GeCallbackData {
-    pub signal_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
-    pub signal_arg: *mut c_void,
-    pub finish_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
-    pub finish_arg: *mut c_void,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct GeListArgs {
-    pub size: u32,
-    pub context: *mut GeContext,
-    pub num_stacks: u32,
-    pub stacks: *mut GeStack,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct GeBreakParam {
-    pub buf: [u32; 4],
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(i32)]
 pub enum GeMatrixType {
@@ -721,7 +218,7 @@ pub enum GeMatrixType {
     TexGen,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(i32)]
 pub enum GeListState {
@@ -732,7 +229,7 @@ pub enum GeListState {
     CancelDone,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[repr(u8)]
 #[derive(Copy, Clone)]
 pub enum GeCommand {
@@ -995,62 +492,7 @@ pub enum GeCommand {
     NopFF = 0xff,
 }
 
-extern "C" {
-    pub fn sceGeEdramGetSize() -> u32;
-    pub fn sceGeEdramGetAddr() -> *mut u8;
-    pub fn sceGeEdramSetAddrTranslation(width: i32) -> i32;
-    pub fn sceGeGetCmd(cmd: i32) -> u32;
-    pub fn sceGeGetMtx(type_: GeMatrixType, matrix: *mut c_void) -> i32;
-    pub fn sceGeGetStack(stack_id: i32, stack: *mut GeStack) -> i32;
-    pub fn sceGeSaveContext(context: *mut GeContext) -> i32;
-    pub fn sceGeRestoreContext(context: *const GeContext) -> i32;
-    pub fn sceGeListEnQueue(
-        list: *const c_void,
-        stall: *mut c_void,
-        cbid: i32,
-        arg: *mut GeListArgs,
-    ) -> i32;
-    pub fn sceGeListEnQueueHead(
-        list: *const c_void,
-        stall: *mut c_void,
-        cbid: i32,
-        arg: *mut GeListArgs,
-    ) -> i32;
-    pub fn sceGeListDeQueue(qid: i32) -> i32;
-    pub fn sceGeListUpdateStallAddr(qid: i32, stall: *mut c_void) -> i32;
-    pub fn sceGeListSync(qid: i32, sync_type: i32) -> GeListState;
-    pub fn sceGeDrawSync(sync_type: i32) -> GeListState;
-    pub fn sceGeBreak(mode: i32, p_param: *mut GeBreakParam) -> i32;
-    pub fn sceGeContinue() -> i32;
-    pub fn sceGeSetCallback(cb: *mut GeCallbackData) -> i32;
-    pub fn sceGeUnsetCallback(cbid: i32) -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceKernelLoadExecParam {
-    pub size: usize,
-    pub args: usize,
-    pub argp: *mut c_void,
-    pub key: *const u8,
-}
-
-extern "C" {
-    pub fn sceKernelExitGame();
-    pub fn sceKernelRegisterExitCallback(id: SceUid) -> i32;
-    pub fn sceKernelLoadExec(
-        file: *const u8,
-        param: *mut SceKernelLoadExecParam,
-    ) -> i32;
-}
-
-#[repr(transparent)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceUid(pub i32);
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(i32)]
 pub enum SceSysMemPartitionId {
@@ -1069,7 +511,7 @@ pub enum SceSysMemPartitionId {
     SceKernelExtendedKernelPartition = 12,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(i32)]
 pub enum SceSysMemBlockTypes {
@@ -1078,153 +520,7 @@ pub enum SceSysMemBlockTypes {
     Addr,
 }
 
-extern "C" {
-    pub fn sceKernelAllocPartitionMemory(
-        partition: SceSysMemPartitionId,
-        name: *const u8,
-        type_: SceSysMemBlockTypes,
-        size: u32,
-        addr: *mut c_void,
-    ) -> SceUid;
-    pub fn sceKernelGetBlockHeadAddr(blockid: SceUid) -> *mut c_void;
-    pub fn sceKernelFreePartitionMemory(blockid: SceUid) -> i32;
-    pub fn sceKernelTotalFreeMemSize() -> usize;
-    pub fn sceKernelMaxFreeMemSize() -> usize;
-    pub fn sceKernelDevkitVersion() -> u32;
-    pub fn sceKernelSetCompiledSdkVersion(version: u32) -> i32;
-    pub fn sceKernelGetCompiledSdkVersion() -> u32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct timeval {
-    pub tv_sec: i32,
-    pub tv_usec: i32,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct timezone {
-    pub tz_minutes_west: i32,
-    pub tz_dst_time: i32,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct SceKernelUtilsSha1Context {
-    pub h: [u32; 5usize],
-    pub us_remains: u16,
-    pub us_computed: u16,
-    pub ull_total_len: u64,
-    pub buf: [u8; 64usize],
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct SceKernelUtilsMt19937Context {
-    pub count: u32,
-    pub state: [u32; 624usize],
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct SceKernelUtilsMd5Context {
-    pub h: [u32; 4usize],
-    pub pad: u32,
-    pub us_remains: u16,
-    pub us_computed: u16,
-    pub ull_total_len: u64,
-    pub buf: [u8; 64usize],
-}
-
-extern "C" {
-    pub fn sceKernelLibcTime(t: *mut i32) -> i32;
-    pub fn sceKernelLibcClock() -> u32;
-    pub fn sceKernelLibcGettimeofday(
-        tp: *mut timeval,
-        tzp: *mut timezone,
-    ) -> i32;
-    pub fn sceKernelDcacheWritebackAll();
-    pub fn sceKernelDcacheWritebackInvalidateAll();
-    pub fn sceKernelDcacheWritebackRange(p: *const c_void, size: u32);
-    pub fn sceKernelDcacheWritebackInvalidateRange(
-        p: *const c_void,
-        size: u32,
-    );
-    pub fn sceKernelDcacheInvalidateRange(p: *const c_void, size: u32);
-    pub fn sceKernelIcacheInvalidateAll();
-    pub fn sceKernelIcacheInvalidateRange(p: *const c_void, size: u32);
-    pub fn sceKernelUtilsMt19937Init(
-        ctx: *mut SceKernelUtilsMt19937Context,
-        seed: u32,
-    ) -> i32;
-    pub fn sceKernelUtilsMt19937UInt(
-        ctx: *mut SceKernelUtilsMt19937Context,
-    ) -> u32;
-    pub fn sceKernelUtilsMd5Digest(
-        data: *mut u8,
-        size: u32,
-        digest: *mut u8,
-    ) -> i32;
-    pub fn sceKernelUtilsMd5BlockInit(
-        ctx: *mut SceKernelUtilsMd5Context,
-    ) -> i32;
-    pub fn sceKernelUtilsMd5BlockUpdate(
-        ctx: *mut SceKernelUtilsMd5Context,
-        data: *mut u8,
-        size: u32,
-    ) -> i32;
-    pub fn sceKernelUtilsMd5BlockResult(
-        ctx: *mut SceKernelUtilsMd5Context,
-        digest: *mut u8,
-    ) -> i32;
-    pub fn sceKernelUtilsSha1Digest(
-        data: *mut u8,
-        size: u32,
-        digest: *mut u8,
-    ) -> i32;
-    pub fn sceKernelUtilsSha1BlockInit(
-        ctx: *mut SceKernelUtilsSha1Context,
-    ) -> i32;
-    pub fn sceKernelUtilsSha1BlockUpdate(
-        ctx: *mut SceKernelUtilsSha1Context,
-        data: *mut u8,
-        size: u32,
-    ) -> i32;
-    pub fn sceKernelUtilsSha1BlockResult(
-        ctx: *mut SceKernelUtilsSha1Context,
-        digest: *mut u8,
-    ) -> i32;
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(packed, C)]
-pub struct IntrHandlerOptionParam {
-    size: i32,
-    entry: u32,
-    common: u32,
-    gp: u32,
-    intr_code: u16,
-    sub_count: u16,
-    intr_level: u16,
-    enabled: u16,
-    calls: u32,
-    field_1c: u32,
-    total_clock_lo: u32,
-    total_clock_hi: u32,
-    min_clock_lo: u32,
-    min_clock_hi: u32,
-    max_clock_lo: u32,
-    max_clock_hi: u32,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(u32)]
 pub enum Interrupt {
@@ -1256,7 +552,7 @@ pub enum Interrupt {
     Interrupt = 66,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
 #[repr(u32)]
 pub enum SubInterrupt {
@@ -1268,3271 +564,3825 @@ pub enum SubInterrupt {
     Display = Interrupt::Vblank as u32,
 }
 
-extern "C" {
-    pub fn sceKernelRegisterSubIntrHandler(
-        int_no: i32,
-        no: i32,
-        handler: *mut c_void,
-        arg: *mut c_void,
-    ) -> i32;
-    pub fn sceKernelReleaseSubIntrHandler(int_no: i32, no: i32) -> i32;
-    pub fn sceKernelEnableSubIntr(int_no: i32, no: i32) -> i32;
-    pub fn sceKernelDisableSubIntr(int_no: i32, no: i32) -> i32;
-    pub fn QueryIntrHandlerInfo(
-        intr_code: SceUid,
-        sub_intr_code: SceUid,
-        data: *mut IntrHandlerOptionParam,
-    ) -> i32;
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+pub enum SceKernelIdListType {
+    Thread = 1,
+    Semaphore = 2,
+    EventFlag = 3,
+    Mbox = 4,
+    Vpl = 5,
+    Fpl = 6,
+    Mpipe = 7,
+    Callback = 8,
+    ThreadEventHandler = 9,
+    Alarm = 10,
+    VTimer = 11,
+    SleepThread = 64,
+    DelayThread = 65,
+    SuspendThread = 66,
+    DormantThread = 67,
 }
 
-extern "C" {
-    pub fn sceKernelCpuSuspendIntr() -> u32;
-    pub fn sceKernelCpuResumeIntr(flags: u32);
-    pub fn sceKernelCpuResumeIntrWithSync(flags: u32);
-    pub fn sceKernelIsCpuIntrSuspended(flags: u32) -> i32;
-    pub fn sceKernelIsCpuIntrEnable() -> i32;
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(i32)]
+pub enum UsbCamResolution {
+    Px160_120 = 0,
+    Px176_144 = 1,
+    Px320_240 = 2,
+    Px352_288 = 3,
+    Px640_480 = 4,
+    Px1024_768 = 5,
+    Px1280_960 = 6,
+    Px480_272 = 7,
+    Px360_272 = 8,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelLMOption {
-    pub size: usize,
-    pub m_pid_text: SceUid,
-    pub m_pid_data: SceUid,
-    pub flags: u32,
-    pub position: u8,
-    pub access: u8,
-    pub c_reserved: [u8; 2usize],
+#[repr(i32)]
+pub enum UsbCamResolutionEx {
+    Px160_120 = 0,
+    Px176_144 = 1,
+    Px320_240 = 2,
+    Px352_288 = 3,
+    Px360_272 = 4,
+    Px480_272 = 5,
+    Px640_480 = 6,
+    Px1024_768 = 7,
+    Px1280_960 = 8,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(i32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelSMOption {
-    pub size: usize,
-    pub m_pid_stack: SceUid,
-    pub stack_size: usize,
-    pub priority: i32,
-    pub attribute: u32,
+pub enum UsbCamDelay {
+    NoDelay = 0,
+    Delay10Sec = 1,
+    Delay20Sec = 2,
+    Delay30Sec = 3,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(i32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelModuleInfo {
-    pub size: usize,
-    pub n_segment: u8,
-    pub reserved: [u8; 3usize],
-    pub segment_addr: [i32; 4usize],
-    pub segment_size: [i32; 4usize],
-    pub entry_addr: u32,
-    pub gp_value: u32,
-    pub text_addr: u32,
-    pub text_size: u32,
-    pub data_size: u32,
-    pub bss_size: u32,
-    pub attribute: u16,
-    pub version: [u8; 2usize],
-    pub name: [u8; 28usize],
+pub enum UsbCamFrameRate {
+    Fps3_75 = 0,
+    Fps5 = 1,
+    Fps7_5 = 2,
+    Fps10 = 3,
+    Fps15 = 4,
+    Fps20 = 5,
+    Fps30 = 6,
+    Fps60 = 7,
 }
 
-extern "C" {
-    pub fn sceKernelLoadModule(
-        path: *const u8,
-        flags: i32,
-        option: *mut SceKernelLMOption,
-    ) -> SceUid;
-    pub fn sceKernelLoadModuleMs(
-        path: *const u8,
-        flags: i32,
-        option: *mut SceKernelLMOption,
-    ) -> SceUid;
-    pub fn sceKernelLoadModuleByID(
-        fid: SceUid,
-        flags: i32,
-        option: *mut SceKernelLMOption,
-    ) -> SceUid;
-    pub fn sceKernelLoadModuleBufferUsbWlan(
-        buf_size: usize,
-        buf: *mut c_void,
-        flags: i32,
-        option: *mut SceKernelLMOption,
-    ) -> SceUid;
-    pub fn sceKernelStartModule(
-        mod_id: SceUid,
-        arg_size: usize,
-        argp: *mut c_void,
-        status: *mut i32,
-        option: *mut SceKernelSMOption,
-    ) -> i32;
-    pub fn sceKernelStopModule(
-        mod_id: SceUid,
-        arg_size: usize,
-        argp: *mut c_void,
-        status: *mut i32,
-        option: *mut SceKernelSMOption,
-    ) -> i32;
-    pub fn sceKernelUnloadModule(mod_id: SceUid) -> i32;
-    pub fn sceKernelSelfStopUnloadModule(
-        unknown: i32,
-        arg_size: usize,
-        argp: *mut c_void,
-    ) -> i32;
-    pub fn sceKernelStopUnloadSelfModule(
-        arg_size: usize,
-        argp: *mut c_void,
-        status: *mut i32,
-        option: *mut SceKernelSMOption,
-    ) -> i32;
-    pub fn sceKernelQueryModuleInfo(
-        mod_id: SceUid,
-        info: *mut SceKernelModuleInfo,
-    ) -> i32;
-    pub fn sceKernelGetModuleIdList(
-        read_buf: *mut SceUid,
-        read_buf_size: i32,
-        id_count: *mut i32,
-    ) -> i32;
+#[repr(i32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+pub enum UsbCamWb {
+    Auto = 0,
+    Daylight = 1,
+    Fluorescent = 2,
+    Incadescent = 3,
 }
 
-extern "C" {
-    pub fn sceKernelVolatileMemLock(
-        unk: i32,
-        ptr: *mut *mut c_void,
-        size: *mut i32,
-    ) -> i32;
-    pub fn sceKernelVolatileMemTryLock(
-        unk: i32,
-        ptr: *mut *mut c_void,
-        size: *mut i32,
-    ) -> i32;
-    pub fn sceKernelVolatileMemUnlock(unk: i32) -> i32;
+#[repr(i32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+pub enum UsbCamEffectMode {
+    Normal = 0,
+    Negative = 1,
+    Blackwhite = 2,
+    Sepia = 3,
+    Blue = 4,
+    Red = 5,
+    Green = 6,
 }
 
-extern "C" {
-    pub fn sceKernelStdin() -> SceUid;
-    pub fn sceKernelStdout() -> SceUid;
-    pub fn sceKernelStderr() -> SceUid;
+#[repr(i32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+pub enum UsbCamEvLevel {
+    Pos2_0 = 0,
+    Pos1_7 = 1,
+    Pos1_5 = 2,
+    Pos1_3 = 3,
+    Pos1_0 = 4,
+    Pos0_7 = 5,
+    Pos0_5 = 6,
+    Pos0_3 = 7,
+    Zero = 8,
+    Neg0_3,
+    Neg0_5,
+    Neg0_7,
+    Neg1_0,
+    Neg1_3,
+    Neg1_5,
+    Neg1_7,
+    Neg2_0,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(i32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct DebugProfilerRegs {
-    pub enable: u32,
-    pub systemck: u32,
-    pub cpuck: u32,
-    pub internal: u32,
-    pub memory: u32,
-    pub copz: u32,
-    pub vfpu: u32,
-    pub sleep: u32,
-    pub bus_access: u32,
-    pub uncached_load: u32,
-    pub uncached_store: u32,
-    pub cached_load: u32,
-    pub cached_store: u32,
-    pub i_miss: u32,
-    pub d_miss: u32,
-    pub d_writeback: u32,
-    pub cop0_inst: u32,
-    pub fpu_inst: u32,
-    pub vfpu_inst: u32,
-    pub local_bus: u32,
+pub enum RtcCheckValidError {
+    InvalidYear = -1,
+    InvalidMonth = -2,
+    InvalidDay = -3,
+    InvalidHour = -4,
+    InvalidMinutes = -5,
+    InvalidSeconds = -6,
+    InvalidMicroseconds = -7,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
 #[derive(Copy, Clone)]
-pub struct SceKernelSysClock {
-    pub low: u32,
-    pub hi: u32,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[repr(u32)]
+pub enum PowerTick {
+    All = 0,
+    Suspend = 1,
+    Display = 6,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelThreadOptParam {
-    pub size: usize,
-    pub stack_mpid: SceUid,
+pub enum IoAssignPerms {
+    RdWr = 0,
+    RdOnly = 1,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelThreadInfo {
-    pub size: usize,
-    pub name: [u8; 32],
-    pub attr: u32,
-    pub status: i32,
-    pub entry: SceKernelThreadEntry,
-    pub stack: *mut c_void,
-    pub stack_size: i32,
-    pub gp_reg: *mut c_void,
-    pub init_priority: i32,
-    pub current_priority: i32,
-    pub wait_type: i32,
-    pub wait_id: SceUid,
-    pub wakeup_count: i32,
-    pub exit_status: i32,
-    pub run_clocks: SceKernelSysClock,
-    pub intr_preempt_count: u32,
-    pub thread_preempt_count: u32,
-    pub release_count: u32,
+#[repr(u32)]
+pub enum IoWhence {
+    Set = 0,
+    Cur = 1,
+    End = 2,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelThreadRunStatus {
-    pub size: usize,
-    pub status: i32,
-    pub current_priority: i32,
-    pub wait_type: i32,
-    pub wait_id: i32,
-    pub wakeup_count: i32,
-    pub run_clocks: SceKernelSysClock,
-    pub intr_preempt_count: u32,
-    pub thread_preempt_count: u32,
-    pub release_count: u32,
+pub enum UmdType {
+    Game = 0x10,
+    Video = 0x20,
+    Audio = 0x40,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelSemaOptParam {
-    pub size: usize,
+pub enum GuPrimitive {
+    Points = 0,
+    Lines = 1,
+    LineStrip = 2,
+    Triangles = 3,
+    TriangleStrip = 4,
+    TriangleFan = 5,
+    Sprites = 6,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelSemaInfo {
-    pub size: usize,
-    pub name: [u8; 32],
-    pub attr: u32,
-    pub init_count: i32,
-    pub current_count: i32,
-    pub max_count: i32,
-    pub num_wait_threads: i32,
+pub enum PatchPrimitive {
+    Points = 0,
+    LineStrip = 2,
+    TriangleStrip = 4,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceKernelEventFlagInfo {
-    pub size: usize,
-    pub name: [u8; 32],
-    pub attr: u32,
-    pub init_pattern: u32,
-    pub current_pattern: u32,
-    pub num_wait_threads: i32,
+#[derive(Clone, Copy)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[repr(u32)]
+pub enum GuState {
+    AlphaTest = 0,
+    DepthTest = 1,
+    ScissorTest = 2,
+    StencilTest = 3,
+    Blend = 4,
+    CullFace = 5,
+    Dither = 6,
+    Fog = 7,
+    ClipPlanes = 8,
+    Texture2D = 9,
+    Lighting = 10,
+    Light0 = 11,
+    Light1 = 12,
+    Light2 = 13,
+    Light3 = 14,
+    LineSmooth = 15,
+    PatchCullFace = 16,
+    ColorTest = 17,
+    ColorLogicOp = 18,
+    FaceNormalReverse = 19,
+    PatchFace = 20,
+    Fragment2X = 21,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelEventFlagOptParam {
-    pub size: usize,
+pub enum MatrixMode {
+    Projection = 0,
+    View = 1,
+    Model = 2,
+    Texture = 3,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceKernelMbxOptParam {
-    pub size: usize,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+#[repr(u32)]
+pub enum TexturePixelFormat {
+    Psm5650 = 0,
+    Psm5551 = 1,
+    Psm4444 = 2,
+    Psm8888 = 3,
+    PsmT4 = 4,
+    PsmT8 = 5,
+    PsmT16 = 6,
+    PsmT32 = 7,
+    PsmDxt1 = 8,
+    PsmDxt3 = 9,
+    PsmDxt5 = 10,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelMbxInfo {
-    pub size: usize,
-    pub name: [u8; 32usize],
-    pub attr: u32,
-    pub num_wait_threads: i32,
-    pub num_messages: i32,
-    pub first_message: *mut c_void,
+#[repr(u32)]
+pub enum SplineMode {
+    FillFill = 0,
+    OpenFill = 1,
+    FillOpen = 2,
+    OpenOpen = 3,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelVTimerInfo {
-    pub size: usize,
-    pub name: [u8; 32],
-    pub active: i32,
-    pub base: SceKernelSysClock,
-    pub current: SceKernelSysClock,
-    pub schedule: SceKernelSysClock,
-    pub handler: SceKernelVTimerHandler,
-    pub common: *mut c_void,
+#[repr(u32)]
+pub enum ShadingModel {
+    Flat = 0,
+    Smooth = 1,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelThreadEventHandlerInfo {
-    pub size: usize,
-    pub name: [u8; 32],
-    pub thread_id: SceUid,
-    pub mask: i32,
-    pub handler: SceKernelThreadEventHandler,
-    pub common: *mut c_void,
+#[repr(u32)]
+pub enum LogicalOperation {
+    Clear = 0,
+    And = 1,
+    AndReverse = 2,
+    Copy = 3,
+    AndInverted = 4,
+    Noop = 5,
+    Xor = 6,
+    Or = 7,
+    Nor = 8,
+    Equiv = 9,
+    Inverted = 10,
+    OrReverse = 11,
+    CopyInverted = 12,
+    OrInverted = 13,
+    Nand = 14,
+    Set = 15,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelAlarmInfo {
-    pub size: usize,
-    pub schedule: SceKernelSysClock,
-    pub handler: SceKernelAlarmHandler,
-    pub common: *mut c_void,
+#[repr(u32)]
+pub enum TextureFilter {
+    Nearest = 0,
+    Linear = 1,
+    NearestMipmapNearest = 4,
+    LinearMipmapNearest = 5,
+    NearestMipmapLinear = 6,
+    LinearMipmapLinear = 7,
 }
 
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
 #[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum SceKernelIdListType {
-    Thread = 1,
-    Semaphore = 2,
-    EventFlag = 3,
-    Mbox = 4,
-    Vpl = 5,
-    Fpl = 6,
-    Mpipe = 7,
-    Callback = 8,
-    ThreadEventHandler = 9,
-    Alarm = 10,
-    VTimer = 11,
-    SleepThread = 64,
-    DelayThread = 65,
-    SuspendThread = 66,
-    DormantThread = 67,
+pub enum TextureMapMode {
+    TextureCoords = 0,
+    TextureMatrix = 1,
+    EnvironmentMap = 2,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelSystemStatus {
-    pub size: usize,
-    pub status: u32,
-    pub idle_clocks: SceKernelSysClock,
-    pub comes_out_of_idle_count: u32,
-    pub thread_switch_count: u32,
-    pub vfpu_switch_count: u32,
+#[repr(u32)]
+pub enum TextureLevelMode {
+    Auto = 0,
+    Const = 1,
+    Slope = 2,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceKernelMppInfo {
-    pub size: usize,
-    pub name: [u8; 32],
-    pub attr: u32,
-    pub buf_size: i32,
-    pub free_size: i32,
-    pub num_send_wait_threads: i32,
-    pub num_receive_wait_threads: i32,
-}
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+#[repr(u32)]
+pub enum TextureProjectionMapMode {
+    Position = 0,
+    Uv = 1,
+    NormalizedNormal = 2,
+    Normal = 3,
+}
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelVplOptParam {
-    pub size: usize,
+#[repr(u32)]
+pub enum GuTexWrapMode {
+    Repeat = 0,
+    Clamp = 1,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelVplInfo {
-    pub size: usize,
-    pub name: [u8; 32],
-    pub attr: u32,
-    pub pool_size: i32,
-    pub free_size: i32,
-    pub num_wait_threads: i32,
+#[repr(u32)]
+pub enum FrontFaceDirection {
+    Clockwise = 0,
+    CounterClockwise = 1,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum AlphaFunc {
+    Never = 0,
+    Always,
+    Equal,
+    NotEqual,
+    Less,
+    LessOrEqual,
+    Greater,
+    GreaterOrEqual,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelFplOptParam {
-    pub size: usize,
+#[repr(u32)]
+pub enum StencilFunc {
+    Never = 0,
+    Always,
+    Equal,
+    NotEqual,
+    Less,
+    LessOrEqual,
+    Greater,
+    GreaterOrEqual,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelFplInfo {
-    pub size: usize,
-    pub name: [u8; 32usize],
-    pub attr: u32,
-    pub block_size: i32,
-    pub num_blocks: i32,
-    pub free_blocks: i32,
-    pub num_wait_threads: i32,
+#[repr(u32)]
+pub enum ColorFunc {
+    Never = 0,
+    Always,
+    Equal,
+    NotEqual,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum DepthFunc {
+    Never = 0,
+    Always,
+    Equal,
+    NotEqual,
+    Less,
+    LessOrEqual,
+    Greater,
+    GreaterOrEqual,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+#[repr(u32)]
+pub enum TextureEffect {
+    Modulate = 0,
+    Decal = 1,
+    Blend = 2,
+    Replace = 3,
+    Add = 4,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+#[repr(u32)]
+pub enum TextureColorComponent {
+    Rgb = 0,
+    Rgba = 1,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+#[repr(u32)]
+pub enum MipmapLevel {
+    None = 0,
+    Level1,
+    Level2,
+    Level3,
+    Level4,
+    Level5,
+    Level6,
+    Level7,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum BlendOp {
+    Add = 0,
+    Subtract = 1,
+    ReverseSubtract = 2,
+    Min = 3,
+    Max = 4,
+    Abs = 5,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum BlendSrc {
+    SrcColor = 0,
+    OneMinusSrcColor = 1,
+    SrcAlpha = 2,
+    OneMinusSrcAlpha = 3,
+    Fix = 10,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum BlendDst {
+    DstColor = 0,
+    OneMinusDstColor = 1,
+    DstAlpha = 4,
+    OneMinusDstAlpha = 5,
+    Fix = 10,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum StencilOperation {
+    Keep = 0,
+    Zero = 1,
+    Replace = 2,
+    Invert = 3,
+    Incr = 4,
+    Decr = 5,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum LightMode {
+    SingleColor = 0,
+    SeparateSpecularColor = 1,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum LightType {
+    Directional = 0,
+    Pointlight = 1,
+    Spotlight = 2,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[repr(u32)]
+#[derive(Copy, Clone)]
+pub enum GuContextType {
+    Direct = 0,
+    Call = 1,
+    Send = 2,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum GuQueueMode {
+    Tail = 0,
+    Head = 1,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum GuSyncMode {
+    Finish = 0,
+    Signal = 1,
+    Done = 2,
+    List = 3,
+    Send = 4,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum GuSyncBehavior {
+    Wait = 0,
+    NoWait = 1,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum GuCallbackId {
+    Signal = 1,
+    Finish = 4,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+#[repr(u32)]
+pub enum SignalBehavior {
+    Suspend = 1,
+    Continue = 2,
+}
+
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelVTimerOptParam {
-    pub size: usize,
+#[repr(u32)]
+pub enum ClutPixelFormat {
+    Psm5650 = 0,
+    Psm5551 = 1,
+    Psm4444 = 2,
+    Psm8888 = 3,
 }
 
 #[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub struct SceKernelCallbackInfo {
-    pub size: usize,
-    pub name: [u8; 32usize],
-    pub thread_id: SceUid,
-    pub callback: SceKernelCallbackFunction,
-    pub common: *mut c_void,
-    pub notify_count: i32,
-    pub notify_arg: i32,
-}
-
-extern "C" {
-    pub fn sceKernelGetThreadmanIdType(uid: SceUid) -> SceKernelIdListType;
-    pub fn sceKernelCreateThread(
-        name: *const u8,
-        entry: SceKernelThreadEntry,
-        init_priority: i32,
-        stack_size: i32,
-        attr: i32,
-        option: *mut SceKernelThreadOptParam,
-    ) -> SceUid;
-    pub fn sceKernelDeleteThread(thid: SceUid) -> i32;
-    pub fn sceKernelStartThread(
-        id: SceUid,
-        arg_len: usize,
-        arg_p: *mut c_void,
-    ) -> i32;
-    pub fn sceKernelExitThread(status: i32) -> i32;
-    pub fn sceKernelExitDeleteThread(status: i32) -> i32;
-    pub fn sceKernelTerminateThread(thid: SceUid) -> i32;
-    pub fn sceKernelTerminateDeleteThread(thid: SceUid) -> i32;
-    pub fn sceKernelSuspendDispatchThread() -> i32;
-    pub fn sceKernelResumeDispatchThread(state: i32) -> i32;
-    pub fn sceKernelSleepThread() -> i32;
-    pub fn sceKernelSleepThreadCB() -> i32;
-    pub fn sceKernelWakeupThread(thid: SceUid) -> i32;
-    pub fn sceKernelCancelWakeupThread(thid: SceUid) -> i32;
-    pub fn sceKernelSuspendThread(thid: SceUid) -> i32;
-    pub fn sceKernelResumeThread(thid: SceUid) -> i32;
-    pub fn sceKernelWaitThreadEnd(thid: SceUid, timeout: *mut u32) -> i32;
-    pub fn sceKernelWaitThreadEndCB(thid: SceUid, timeout: *mut u32) -> i32;
-    pub fn sceKernelDelayThread(delay: u32) -> i32;
-    pub fn sceKernelDelayThreadCB(delay: u32) -> i32;
-    pub fn sceKernelDelaySysClockThread(delay: *mut SceKernelSysClock) -> i32;
-    pub fn sceKernelDelaySysClockThreadCB(
-        delay: *mut SceKernelSysClock,
-    ) -> i32;
-    pub fn sceKernelChangeCurrentThreadAttr(unknown: i32, attr: i32) -> i32;
-    pub fn sceKernelChangeThreadPriority(thid: SceUid, priority: i32) -> i32;
-    pub fn sceKernelRotateThreadReadyQueue(priority: i32) -> i32;
-    pub fn sceKernelReleaseWaitThread(thid: SceUid) -> i32;
-    pub fn sceKernelGetThreadId() -> i32;
-    pub fn sceKernelGetThreadCurrentPriority() -> i32;
-    pub fn sceKernelGetThreadExitStatus(thid: SceUid) -> i32;
-    pub fn sceKernelCheckThreadStack() -> i32;
-    pub fn sceKernelGetThreadStackFreeSize(thid: SceUid) -> i32;
-    pub fn sceKernelReferThreadStatus(
-        thid: SceUid,
-        info: *mut SceKernelThreadInfo,
-    ) -> i32;
-    pub fn sceKernelReferThreadRunStatus(
-        thid: SceUid,
-        status: *mut SceKernelThreadRunStatus,
-    ) -> i32;
-    pub fn sceKernelCreateSema(
-        name: *const u8,
-        attr: u32,
-        init_val: i32,
-        max_val: i32,
-        option: *mut SceKernelSemaOptParam,
-    ) -> SceUid;
-    pub fn sceKernelDeleteSema(sema_id: SceUid) -> i32;
-    pub fn sceKernelSignalSema(sema_id: SceUid, signal: i32) -> i32;
-    pub fn sceKernelWaitSema(
-        sema_id: SceUid,
-        signal: i32,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelWaitSemaCB(
-        sema_id: SceUid,
-        signal: i32,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelPollSema(sema_id: SceUid, signal: i32) -> i32;
-    pub fn sceKernelReferSemaStatus(
-        sema_id: SceUid,
-        info: *mut SceKernelSemaInfo,
-    ) -> i32;
-    pub fn sceKernelCreateEventFlag(
-        name: *const u8,
-        attr: i32,
-        bits: i32,
-        opt: *mut SceKernelEventFlagOptParam,
-    ) -> SceUid;
-    pub fn sceKernelSetEventFlag(ev_id: SceUid, bits: u32) -> i32;
-    pub fn sceKernelClearEventFlag(ev_id: SceUid, bits: u32) -> i32;
-    pub fn sceKernelPollEventFlag(
-        ev_id: SceUid,
-        bits: u32,
-        wait: i32,
-        out_bits: *mut u32,
-    ) -> i32;
-    pub fn sceKernelWaitEventFlag(
-        ev_id: SceUid,
-        bits: u32,
-        wait: i32,
-        out_bits: *mut u32,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelWaitEventFlagCB(
-        ev_id: SceUid,
-        bits: u32,
-        wait: i32,
-        out_bits: *mut u32,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelDeleteEventFlag(ev_id: SceUid) -> i32;
-    pub fn sceKernelReferEventFlagStatus(
-        event: SceUid,
-        status: *mut SceKernelEventFlagInfo,
-    ) -> i32;
-    pub fn sceKernelCreateMbx(
-        name: *const u8,
-        attr: u32,
-        option: *mut SceKernelMbxOptParam,
-    ) -> SceUid;
-    pub fn sceKernelDeleteMbx(mbx_id: SceUid) -> i32;
-    pub fn sceKernelSendMbx(mbx_id: SceUid, message: *mut c_void) -> i32;
-    pub fn sceKernelReceiveMbx(
-        mbx_id: SceUid,
-        message: *mut *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelReceiveMbxCB(
-        mbx_id: SceUid,
-        message: *mut *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelPollMbx(mbx_id: SceUid, pmessage: *mut *mut c_void)
-        -> i32;
-    pub fn sceKernelCancelReceiveMbx(mbx_id: SceUid, num: *mut i32) -> i32;
-    pub fn sceKernelReferMbxStatus(
-        mbx_id: SceUid,
-        info: *mut SceKernelMbxInfo,
-    ) -> i32;
-    pub fn sceKernelSetAlarm(
-        clock: u32,
-        handler: SceKernelAlarmHandler,
-        common: *mut c_void,
-    ) -> SceUid;
-    pub fn sceKernelSetSysClockAlarm(
-        clock: *mut SceKernelSysClock,
-        handler: *mut SceKernelAlarmHandler,
-        common: *mut c_void,
-    ) -> SceUid;
-    pub fn sceKernelCancelAlarm(alarm_id: SceUid) -> i32;
-    pub fn sceKernelReferAlarmStatus(
-        alarm_id: SceUid,
-        info: *mut SceKernelAlarmInfo,
-    ) -> i32;
-    pub fn sceKernelCreateCallback(
-        name: *const u8,
-        func: SceKernelCallbackFunction,
-        arg: *mut c_void,
-    ) -> SceUid;
-    pub fn sceKernelReferCallbackStatus(
-        cb: SceUid,
-        status: *mut SceKernelCallbackInfo,
-    ) -> i32;
-    pub fn sceKernelDeleteCallback(cb: SceUid) -> i32;
-    pub fn sceKernelNotifyCallback(cb: SceUid, arg2: i32) -> i32;
-    pub fn sceKernelCancelCallback(cb: SceUid) -> i32;
-    pub fn sceKernelGetCallbackCount(cb: SceUid) -> i32;
-    pub fn sceKernelCheckCallback() -> i32;
-    pub fn sceKernelGetThreadmanIdList(
-        type_: SceKernelIdListType,
-        read_buf: *mut SceUid,
-        read_buf_size: i32,
-        id_count: *mut i32,
-    ) -> i32;
-    pub fn sceKernelReferSystemStatus(
-        status: *mut SceKernelSystemStatus,
-    ) -> i32;
-    pub fn sceKernelCreateMsgPipe(
-        name: *const u8,
-        part: i32,
-        attr: i32,
-        unk1: *mut c_void,
-        opt: *mut c_void,
-    ) -> SceUid;
-    pub fn sceKernelDeleteMsgPipe(uid: SceUid) -> i32;
-    pub fn sceKernelSendMsgPipe(
-        uid: SceUid,
-        message: *mut c_void,
-        size: u32,
-        unk1: i32,
-        unk2: *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelSendMsgPipeCB(
-        uid: SceUid,
-        message: *mut c_void,
-        size: u32,
-        unk1: i32,
-        unk2: *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelTrySendMsgPipe(
-        uid: SceUid,
-        message: *mut c_void,
-        size: u32,
-        unk1: i32,
-        unk2: *mut c_void,
-    ) -> i32;
-    pub fn sceKernelReceiveMsgPipe(
-        uid: SceUid,
-        message: *mut c_void,
-        size: u32,
-        unk1: i32,
-        unk2: *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelReceiveMsgPipeCB(
-        uid: SceUid,
-        message: *mut c_void,
-        size: u32,
-        unk1: i32,
-        unk2: *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelTryReceiveMsgPipe(
-        uid: SceUid,
-        message: *mut c_void,
-        size: u32,
-        unk1: i32,
-        unk2: *mut c_void,
-    ) -> i32;
-    pub fn sceKernelCancelMsgPipe(
-        uid: SceUid,
-        send: *mut i32,
-        recv: *mut i32,
-    ) -> i32;
-    pub fn sceKernelReferMsgPipeStatus(
-        uid: SceUid,
-        info: *mut SceKernelMppInfo,
-    ) -> i32;
-    pub fn sceKernelCreateVpl(
-        name: *const u8,
-        part: i32,
-        attr: i32,
-        size: u32,
-        opt: *mut SceKernelVplOptParam,
-    ) -> SceUid;
-    pub fn sceKernelDeleteVpl(uid: SceUid) -> i32;
-    pub fn sceKernelAllocateVpl(
-        uid: SceUid,
-        size: u32,
-        data: *mut *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelAllocateVplCB(
-        uid: SceUid,
-        size: u32,
-        data: *mut *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelTryAllocateVpl(
-        uid: SceUid,
-        size: u32,
-        data: *mut *mut c_void,
-    ) -> i32;
-    pub fn sceKernelFreeVpl(uid: SceUid, data: *mut c_void) -> i32;
-    pub fn sceKernelCancelVpl(uid: SceUid, num: *mut i32) -> i32;
-    pub fn sceKernelReferVplStatus(
-        uid: SceUid,
-        info: *mut SceKernelVplInfo,
-    ) -> i32;
-    pub fn sceKernelCreateFpl(
-        name: *const u8,
-        part: i32,
-        attr: i32,
-        size: u32,
-        blocks: u32,
-        opt: *mut SceKernelFplOptParam,
-    ) -> i32;
-    pub fn sceKernelDeleteFpl(uid: SceUid) -> i32;
-    pub fn sceKernelAllocateFpl(
-        uid: SceUid,
-        data: *mut *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelAllocateFplCB(
-        uid: SceUid,
-        data: *mut *mut c_void,
-        timeout: *mut u32,
-    ) -> i32;
-    pub fn sceKernelTryAllocateFpl(uid: SceUid, data: *mut *mut c_void)
-        -> i32;
-    pub fn sceKernelFreeFpl(uid: SceUid, data: *mut c_void) -> i32;
-    pub fn sceKernelCancelFpl(uid: SceUid, pnum: *mut i32) -> i32;
-    pub fn sceKernelReferFplStatus(
-        uid: SceUid,
-        info: *mut SceKernelFplInfo,
-    ) -> i32;
-    pub fn sceKernelUSec2SysClock(
-        usec: u32,
-        clock: *mut SceKernelSysClock,
-    ) -> i32;
-    pub fn sceKernelUSec2SysClockWide(usec: u32) -> i64;
-    pub fn sceKernelSysClock2USec(
-        clock: *mut SceKernelSysClock,
-        low: *mut u32,
-        high: *mut u32,
-    ) -> i32;
-    pub fn sceKernelSysClock2USecWide(
-        clock: i64,
-        low: *mut u32,
-        high: *mut u32,
-    ) -> i32;
-    pub fn sceKernelGetSystemTime(time: *mut SceKernelSysClock) -> i32;
-    pub fn sceKernelGetSystemTimeWide() -> i64;
-    pub fn sceKernelGetSystemTimeLow() -> u32;
-    pub fn sceKernelCreateVTimer(
-        name: *const u8,
-        opt: *mut SceKernelVTimerOptParam,
-    ) -> SceUid;
-    pub fn sceKernelDeleteVTimer(uid: SceUid) -> i32;
-    pub fn sceKernelGetVTimerBase(
-        uid: SceUid,
-        base: *mut SceKernelSysClock,
-    ) -> i32;
-    pub fn sceKernelGetVTimerBaseWide(uid: SceUid) -> i64;
-    pub fn sceKernelGetVTimerTime(
-        uid: SceUid,
-        time: *mut SceKernelSysClock,
-    ) -> i32;
-    pub fn sceKernelGetVTimerTimeWide(uid: SceUid) -> i64;
-    pub fn sceKernelSetVTimerTime(
-        uid: SceUid,
-        time: *mut SceKernelSysClock,
-    ) -> i32;
-    pub fn sceKernelSetVTimerTimeWide(uid: SceUid, time: i64) -> i64;
-    pub fn sceKernelStartVTimer(uid: SceUid) -> i32;
-    pub fn sceKernelStopVTimer(uid: SceUid) -> i32;
-    pub fn sceKernelSetVTimerHandler(
-        uid: SceUid,
-        time: *mut SceKernelSysClock,
-        handler: SceKernelVTimerHandler,
-        common: *mut c_void,
-    ) -> i32;
-    pub fn sceKernelSetVTimerHandlerWide(
-        uid: SceUid,
-        time: i64,
-        handler: SceKernelVTimerHandlerWide,
-        common: *mut c_void,
-    ) -> i32;
-    pub fn sceKernelCancelVTimerHandler(uid: SceUid) -> i32;
-    pub fn sceKernelReferVTimerStatus(
-        uid: SceUid,
-        info: *mut SceKernelVTimerInfo,
-    ) -> i32;
-    pub fn sceKernelRegisterThreadEventHandler(
-        name: *const u8,
-        thread_id: SceUid,
-        mask: i32,
-        handler: SceKernelThreadEventHandler,
-        common: *mut c_void,
-    ) -> SceUid;
-    pub fn sceKernelReleaseThreadEventHandler(uid: SceUid) -> i32;
-    pub fn sceKernelReferThreadEventHandlerStatus(
-        uid: SceUid,
-        info: *mut SceKernelThreadEventHandlerInfo,
-    ) -> i32;
-    pub fn sceKernelReferThreadProfiler() -> *mut DebugProfilerRegs;
-    pub fn sceKernelReferGlobalProfiler() -> *mut DebugProfilerRegs;
-}
-
-extern "C" {
-    pub fn sceUsbStart(
-        driver_name: *const u8,
-        size: i32,
-        args: *mut c_void,
-    ) -> i32;
-    pub fn sceUsbStop(
-        driver_name: *const u8,
-        size: i32,
-        args: *mut c_void,
-    ) -> i32;
-    pub fn sceUsbActivate(pid: u32) -> i32;
-    pub fn sceUsbDeactivate(pid: u32) -> i32;
-    pub fn sceUsbGetState() -> i32;
-    pub fn sceUsbGetDrvState(driver_name: *const u8) -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UsbCamSetupStillParam {
-    pub size: i32,
-    pub resolution: UsbCamResolution,
-    pub jpeg_size: i32,
-    pub reverse_flags: i32,
-    pub delay: UsbCamDelay,
-    pub comp_level: i32,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UsbCamSetupStillExParam {
-    pub size: i32,
-    pub unk: u32,
-    pub resolution: UsbCamResolutionEx,
-    pub jpeg_size: i32,
-    pub comp_level: i32,
-    pub unk2: u32,
-    pub unk3: u32,
-    pub flip: i32,
-    pub mirror: i32,
-    pub delay: UsbCamDelay,
-    pub unk4: [u32; 5usize],
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UsbCamSetupVideoParam {
-    pub size: i32,
-    pub resolution: UsbCamResolution,
-    pub framerate: UsbCamFrameRate,
-    pub white_balance: UsbCamWb,
-    pub saturation: i32,
-    pub brightness: i32,
-    pub contrast: i32,
-    pub sharpness: i32,
-    pub effect_mode: UsbCamEffectMode,
-    pub frame_size: i32,
-    pub unk: u32,
-    pub evl_evel: UsbCamEvLevel,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UsbCamSetupVideoExParam {
-    pub size: i32,
-    pub unk: u32,
-    pub resolution: UsbCamResolutionEx,
-    pub framerate: UsbCamFrameRate,
-    pub unk2: u32,
-    pub unk3: u32,
-    pub white_balance: UsbCamWb,
-    pub saturation: i32,
-    pub brightness: i32,
-    pub contrast: i32,
-    pub sharpness: i32,
-    pub unk4: u32,
-    pub unk5: u32,
-    pub unk6: [u32; 3usize],
-    pub effect_mode: UsbCamEffectMode,
-    pub unk7: u32,
-    pub unk8: u32,
-    pub unk9: u32,
-    pub unk10: u32,
-    pub unk11: u32,
-    pub frame_size: i32,
-    pub unk12: u32,
-    pub ev_level: UsbCamEvLevel,
-}
-
-#[repr(i32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UsbCamResolution {
-    Px160_120 = 0,
-    Px176_144 = 1,
-    Px320_240 = 2,
-    Px352_288 = 3,
-    Px640_480 = 4,
-    Px1024_768 = 5,
-    Px1280_960 = 6,
-    Px480_272 = 7,
-    Px360_272 = 8,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(i32)]
-pub enum UsbCamResolutionEx {
-    Px160_120 = 0,
-    Px176_144 = 1,
-    Px320_240 = 2,
-    Px352_288 = 3,
-    Px360_272 = 4,
-    Px480_272 = 5,
-    Px640_480 = 6,
-    Px1024_768 = 7,
-    Px1280_960 = 8,
-}
-
-#[repr(i32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UsbCamDelay {
-    NoDelay = 0,
-    Delay10Sec = 1,
-    Delay20Sec = 2,
-    Delay30Sec = 3,
-}
-
-#[repr(i32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UsbCamFrameRate {
-    Fps3_75 = 0,
-    Fps5 = 1,
-    Fps7_5 = 2,
-    Fps10 = 3,
-    Fps15 = 4,
-    Fps20 = 5,
-    Fps30 = 6,
-    Fps60 = 7,
-}
-
-#[repr(i32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UsbCamWb {
-    Auto = 0,
-    Daylight = 1,
-    Fluorescent = 2,
-    Incadescent = 3,
-}
-
-#[repr(i32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UsbCamEffectMode {
-    Normal = 0,
-    Negative = 1,
-    Blackwhite = 2,
-    Sepia = 3,
-    Blue = 4,
-    Red = 5,
-    Green = 6,
-}
-
-#[repr(i32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UsbCamEvLevel {
-    Pos2_0 = 0,
-    Pos1_7 = 1,
-    Pos1_5 = 2,
-    Pos1_3 = 3,
-    Pos1_0 = 4,
-    Pos0_7 = 5,
-    Pos0_5 = 6,
-    Pos0_3 = 7,
-    Zero = 8,
-    Neg0_3,
-    Neg0_5,
-    Neg0_7,
-    Neg1_0,
-    Neg1_3,
-    Neg1_5,
-    Neg1_7,
-    Neg2_0,
-}
-
-extern "C" {
-    pub fn sceUsbCamSetupStill(param: *mut UsbCamSetupStillParam) -> i32;
-    pub fn sceUsbCamSetupStillEx(param: *mut UsbCamSetupStillExParam) -> i32;
-    pub fn sceUsbCamStillInputBlocking(buf: *mut u8, size: usize) -> i32;
-    pub fn sceUsbCamStillInput(buf: *mut u8, size: usize) -> i32;
-    pub fn sceUsbCamStillWaitInputEnd() -> i32;
-    pub fn sceUsbCamStillPollInputEnd() -> i32;
-    pub fn sceUsbCamStillCancelInput() -> i32;
-    pub fn sceUsbCamStillGetInputLength() -> i32;
-    pub fn sceUsbCamSetupVideo(
-        param: *mut UsbCamSetupVideoParam,
-        work_area: *mut c_void,
-        work_area_size: i32,
-    ) -> i32;
-    pub fn sceUsbCamSetupVideoEx(
-        param: *mut UsbCamSetupVideoExParam,
-        work_area: *mut c_void,
-        work_area_size: i32,
-    ) -> i32;
-    pub fn sceUsbCamStartVideo() -> i32;
-    pub fn sceUsbCamStopVideo() -> i32;
-    pub fn sceUsbCamReadVideoFrameBlocking(buf: *mut u8, size: usize) -> i32;
-    pub fn sceUsbCamReadVideoFrame(buf: *mut u8, size: usize) -> i32;
-    pub fn sceUsbCamWaitReadVideoFrameEnd() -> i32;
-    pub fn sceUsbCamPollReadVideoFrameEnd() -> i32;
-    pub fn sceUsbCamGetReadVideoFrameSize() -> i32;
-    pub fn sceUsbCamSetSaturation(saturation: i32) -> i32;
-    pub fn sceUsbCamSetBrightness(brightness: i32) -> i32;
-    pub fn sceUsbCamSetContrast(contrast: i32) -> i32;
-    pub fn sceUsbCamSetSharpness(sharpness: i32) -> i32;
-    pub fn sceUsbCamSetImageEffectMode(effect_mode: UsbCamEffectMode) -> i32;
-    pub fn sceUsbCamSetEvLevel(exposure_level: UsbCamEvLevel) -> i32;
-    pub fn sceUsbCamSetReverseMode(reverse_flags: i32) -> i32;
-    pub fn sceUsbCamSetZoom(zoom: i32) -> i32;
-    pub fn sceUsbCamGetSaturation(saturation: *mut i32) -> i32;
-    pub fn sceUsbCamGetBrightness(brightness: *mut i32) -> i32;
-    pub fn sceUsbCamGetContrast(contrast: *mut i32) -> i32;
-    pub fn sceUsbCamGetSharpness(sharpness: *mut i32) -> i32;
-    pub fn sceUsbCamGetImageEffectMode(
-        effect_mode: *mut UsbCamEffectMode,
-    ) -> i32;
-    pub fn sceUsbCamGetEvLevel(exposure_level: *mut UsbCamEvLevel) -> i32;
-    pub fn sceUsbCamGetReverseMode(reverse_flags: *mut i32) -> i32;
-    pub fn sceUsbCamGetZoom(zoom: *mut i32) -> i32;
-    pub fn sceUsbCamAutoImageReverseSW(on: i32) -> i32;
-    pub fn sceUsbCamGetAutoImageReverseState() -> i32;
-    pub fn sceUsbCamGetLensDirection() -> i32;
-}
-
-extern "C" {
-    pub fn sceUsbstorBootRegisterNotify(event_flag: SceUid) -> i32;
-    pub fn sceUsbstorBootUnregisterNotify(event_flag: u32) -> i32;
-    pub fn sceUsbstorBootSetCapacity(size: u32) -> i32;
-}
-
-#[derive(Copy, Clone)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[repr(u32)]
-pub enum PowerTick {
-    All = 0,
-    Suspend = 1,
-    Display = 6,
-}
-
-extern "C" {
-    pub fn scePowerRegisterCallback(slot: i32, cbid: SceUid) -> i32;
-    pub fn scePowerUnregisterCallback(slot: i32) -> i32;
-    pub fn scePowerIsPowerOnline() -> i32;
-    pub fn scePowerIsBatteryExist() -> i32;
-    pub fn scePowerIsBatteryCharging() -> i32;
-    pub fn scePowerGetBatteryChargingStatus() -> i32;
-    pub fn scePowerIsLowBattery() -> i32;
-    pub fn scePowerGetBatteryLifePercent() -> i32;
-    pub fn scePowerGetBatteryLifeTime() -> i32;
-    pub fn scePowerGetBatteryTemp() -> i32;
-    pub fn scePowerGetBatteryElec() -> i32;
-    pub fn scePowerGetBatteryVolt() -> i32;
-    pub fn scePowerSetCpuClockFrequency(cpufreq: i32) -> i32;
-    pub fn scePowerSetBusClockFrequency(busfreq: i32) -> i32;
-    pub fn scePowerGetCpuClockFrequency() -> i32;
-    pub fn scePowerGetCpuClockFrequencyInt() -> i32;
-    pub fn scePowerGetCpuClockFrequencyFloat() -> f32;
-    pub fn scePowerGetBusClockFrequency() -> i32;
-    pub fn scePowerGetBusClockFrequencyInt() -> i32;
-    pub fn scePowerGetBusClockFrequencyFloat() -> f32;
-    pub fn scePowerSetClockFrequency(
-        pllfreq: i32,
-        cpufreq: i32,
-        busfreq: i32,
-    ) -> i32;
-    pub fn scePowerLock(unknown: i32) -> i32;
-    pub fn scePowerUnlock(unknown: i32) -> i32;
-    pub fn scePowerTick(t: PowerTick) -> i32;
-    pub fn scePowerGetIdleTimer() -> i32;
-    pub fn scePowerIdleTimerEnable(unknown: i32) -> i32;
-    pub fn scePowerIdleTimerDisable(unknown: i32) -> i32;
-    pub fn scePowerRequestStandby() -> i32;
-    pub fn scePowerRequestSuspend() -> i32;
-}
-
-extern "C" {
-    pub fn sceWlanDevIsPowerOn() -> i32;
-    pub fn sceWlanGetSwitchState() -> i32;
-    pub fn sceWlanGetEtherAddr(ether_addr: *mut u8) -> i32;
-}
-
-extern "C" {
-    pub fn sceWlanDevAttach() -> i32;
-    pub fn sceWlanDevDetach() -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspDateTime {
-    pub year: u16,
-    pub month: u16,
-    pub day: u16,
-    pub hour: u16,
-    pub minutes: u16,
-    pub seconds: u16,
-    pub microseconds: u32,
-}
-
-#[repr(i32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq))]
-#[derive(Copy, Clone)]
-pub enum RtcCheckValidError {
-    InvalidYear = -1,
-    InvalidMonth = -2,
-    InvalidDay = -3,
-    InvalidHour = -4,
-    InvalidMinutes = -5,
-    InvalidSeconds = -6,
-    InvalidMicroseconds = -7,
-}
-
-extern "C" {
-    pub fn sceRtcGetTickResolution() -> u32;
-    pub fn sceRtcGetCurrentTick(tick: *mut u64) -> i32;
-    pub fn sceRtcGetCurrentClock(tm: *mut ScePspDateTime, tz: i32) -> i32;
-    pub fn sceRtcGetCurrentClockLocalTime(tm: *mut ScePspDateTime) -> i32;
-    pub fn sceRtcConvertUtcToLocalTime(
-        tick_utc: *const u64,
-        tick_local: *mut u64,
-    ) -> i32;
-    pub fn sceRtcConvertLocalTimeToUTC(
-        tick_local: *const u64,
-        tick_utc: *mut u64,
-    ) -> i32;
-    pub fn sceRtcIsLeapYear(year: i32) -> i32;
-    pub fn sceRtcGetDaysInMonth(year: i32, month: i32) -> i32;
-    pub fn sceRtcGetDayOfWeek(year: i32, month: i32, day: i32) -> i32;
-    pub fn sceRtcCheckValid(date: *const ScePspDateTime) -> i32;
-    pub fn sceRtcSetTick(date: *mut ScePspDateTime, tick: *const u64) -> i32;
-    pub fn sceRtcGetTick(date: *const ScePspDateTime, tick: *mut u64) -> i32;
-    pub fn sceRtcCompareTick(tick1: *const u64, tick2: *const u64) -> i32;
-    pub fn sceRtcTickAddTicks(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_ticks: u64,
-    ) -> i32;
-    pub fn sceRtcTickAddMicroseconds(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_ms: u64,
-    ) -> i32;
-    pub fn sceRtcTickAddSeconds(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_seconds: u64,
-    ) -> i32;
-    pub fn sceRtcTickAddMinutes(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_minutes: u64,
-    ) -> i32;
-    pub fn sceRtcTickAddHours(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_hours: u64,
-    ) -> i32;
-    pub fn sceRtcTickAddDays(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_days: u64,
-    ) -> i32;
-    pub fn sceRtcTickAddWeeks(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_weeks: u64,
-    ) -> i32;
-    pub fn sceRtcTickAddMonths(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_months: u64,
-    ) -> i32;
-    pub fn sceRtcTickAddYears(
-        dest_tick: *mut u64,
-        src_tick: *const u64,
-        num_years: u64,
-    ) -> i32;
-    pub fn sceRtcSetTime_t(date: *mut ScePspDateTime, time: i64) -> i32;
-    pub fn sceRtcGetTime_t(date: *const ScePspDateTime, time: *mut i64)
-        -> i32;
-    pub fn sceRtcSetDosTime(date: *mut ScePspDateTime, dos_time: u32) -> i32;
-    pub fn sceRtcGetDosTime(date: *mut ScePspDateTime, dos_time: u32) -> i32;
-    pub fn sceRtcSetWin32FileTime(
-        date: *mut ScePspDateTime,
-        time: *mut u64,
-    ) -> i32;
-    pub fn sceRtcGetWin32FileTime(
-        date: *mut ScePspDateTime,
-        time: *mut u64,
-    ) -> i32;
-    pub fn sceRtcParseDateTime(
-        dest_tick: *mut u64,
-        date_string: *const u8,
-    ) -> i32;
-    pub fn sceRtcFormatRFC3339(
-        psz_date_time: *mut char,
-        p_utc: *const u64,
-        time_zone_minutes: i32,
-    ) -> i32;
-    pub fn sceRtcFormatRFC3339LocalTime(
-        psz_date_time: *mut char,
-        p_utc: *const u64,
-    ) -> i32;
-    pub fn sceRtcParseRFC3339(
-        p_utc: *mut u64,
-        psz_date_time: *const u8,
-    ) -> i32;
-    pub fn sceRtcFormatRFC2822(
-        psz_date_time: *mut char,
-        p_utc: *const u64,
-        time_zone_minutes: i32,
-    ) -> i32;
-    pub fn sceRtcFormatRFC2822LocalTime(
-        psz_date_time: *mut char,
-        p_utc: *const u64,
-    ) -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct SceIoDirent {
-    pub d_stat: SceIoStat,
-    pub d_name: [u8; 256usize],
-    pub d_private: *mut c_void,
-    pub dummy: i32,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceIoStat {
-    pub st_mode: i32,
-    pub st_attr: i32,
-    pub st_size: i64,
-    pub st_ctime: ScePspDateTime,
-    pub st_atime: ScePspDateTime,
-    pub st_mtime: ScePspDateTime,
-    pub st_private: [u32; 6usize],
+pub enum KeyType {
+    Directory = 1,
+    Integer = 2,
+    String = 3,
+    Bytes = 4,
 }
 
 #[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum IoAssignPerms {
-    RdWr = 0,
-    RdOnly = 1,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityMsgDialogMode {
+    Error,
+    Text,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum IoWhence {
-    Set = 0,
-    Cur = 1,
-    End = 2,
-}
-
-extern "C" {
-    pub fn sceIoOpen(
-        file: *const u8,
-        flags: i32,
-        permissions: IoPermissions,
-    ) -> SceUid;
-    pub fn sceIoOpenAsync(
-        file: *const u8,
-        flags: i32,
-        permissions: IoPermissions,
-    ) -> SceUid;
-    pub fn sceIoClose(fd: SceUid) -> i32;
-    pub fn sceIoCloseAsync(fd: SceUid) -> i32;
-    pub fn sceIoRead(fd: SceUid, data: *mut c_void, size: u32) -> i32;
-    pub fn sceIoReadAsync(fd: SceUid, data: *mut c_void, size: u32) -> i32;
-    pub fn sceIoWrite(fd: SceUid, data: *const c_void, size: usize) -> i32;
-    pub fn sceIoWriteAsync(fd: SceUid, data: *const c_void, size: u32) -> i32;
-    pub fn sceIoLseek(fd: SceUid, offset: i64, whence: IoWhence) -> i64;
-    pub fn sceIoLseekAsync(fd: SceUid, offset: i64, whence: IoWhence) -> i32;
-    pub fn sceIoLseek32(fd: SceUid, offset: i32, whence: IoWhence) -> i32;
-    pub fn sceIoLseek32Async(fd: SceUid, offset: i32, whence: IoWhence)
-        -> i32;
-    pub fn sceIoRemove(file: *const u8) -> i32;
-    pub fn sceIoMkdir(dir: *const u8, mode: IoPermissions) -> i32;
-    pub fn sceIoRmdir(path: *const u8) -> i32;
-    pub fn sceIoChdir(path: *const u8) -> i32;
-    pub fn sceIoRename(oldname: *const u8, newname: *const u8) -> i32;
-    pub fn sceIoDopen(dirname: *const u8) -> SceUid;
-    pub fn sceIoDread(fd: SceUid, dir: *mut SceIoDirent) -> i32;
-    pub fn sceIoDclose(fd: SceUid) -> i32;
-    pub fn sceIoDevctl(
-        dev: *const u8,
-        cmd: u32,
-        indata: *mut c_void,
-        inlen: i32,
-        outdata: *mut c_void,
-        outlen: i32,
-    ) -> i32;
-    pub fn sceIoAssign(
-        dev1: *const u8,
-        dev2: *const u8,
-        dev3: *const u8,
-        mode: IoAssignPerms,
-        unk1: *mut c_void,
-        unk2: i32,
-    ) -> i32;
-    pub fn sceIoUnassign(dev: *const u8) -> i32;
-    pub fn sceIoGetstat(file: *const u8, stat: *mut SceIoStat) -> i32;
-    pub fn sceIoChstat(
-        file: *const u8,
-        stat: *mut SceIoStat,
-        bits: i32,
-    ) -> i32;
-    pub fn sceIoIoctl(
-        fd: SceUid,
-        cmd: u32,
-        indata: *mut c_void,
-        inlen: i32,
-        outdata: *mut c_void,
-        outlen: i32,
-    ) -> i32;
-    pub fn sceIoIoctlAsync(
-        fd: SceUid,
-        cmd: u32,
-        indata: *mut c_void,
-        inlen: i32,
-        outdata: *mut c_void,
-        outlen: i32,
-    ) -> i32;
-    pub fn sceIoSync(device: *const u8, unk: u32) -> i32;
-    pub fn sceIoWaitAsync(fd: SceUid, res: *mut i64) -> i32;
-    pub fn sceIoWaitAsyncCB(fd: SceUid, res: *mut i64) -> i32;
-    pub fn sceIoPollAsync(fd: SceUid, res: *mut i64) -> i32;
-    pub fn sceIoGetAsyncStat(fd: SceUid, poll: i32, res: *mut i64) -> i32;
-    pub fn sceIoCancel(fd: SceUid) -> i32;
-    pub fn sceIoGetDevType(fd: SceUid) -> i32;
-    pub fn sceIoChangeAsyncPriority(fd: SceUid, pri: i32) -> i32;
-    pub fn sceIoSetAsyncCallback(
-        fd: SceUid,
-        cb: SceUid,
-        argp: *mut c_void,
-    ) -> i32;
-}
-
-extern "C" {
-    pub fn sceJpegInitMJpeg() -> i32;
-    pub fn sceJpegFinishMJpeg() -> i32;
-    pub fn sceJpegCreateMJpeg(width: i32, height: i32) -> i32;
-    pub fn sceJpegDeleteMJpeg() -> i32;
-    pub fn sceJpegDecodeMJpeg(
-        jpeg_buf: *mut u8,
-        size: usize,
-        rgba: *mut c_void,
-        unk: u32,
-    ) -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UmdInfo {
-    pub size: u32,
-    pub type_: UmdType,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityMsgDialogPressed {
+    Unknown1,
+    Yes,
+    No,
+    Back,
 }
 
 #[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UmdType {
-    Game = 0x10,
-    Video = 0x20,
-    Audio = 0x40,
-}
-
-extern "C" {
-    pub fn sceUmdCheckMedium() -> i32;
-    pub fn sceUmdGetDiscInfo(info: *mut UmdInfo) -> i32;
-    pub fn sceUmdActivate(unit: i32, drive: *const u8) -> i32;
-    pub fn sceUmdDeactivate(unit: i32, drive: *const u8) -> i32;
-    pub fn sceUmdWaitDriveStat(state: i32) -> i32;
-    pub fn sceUmdWaitDriveStatWithTimer(state: i32, timeout: u32) -> i32;
-    pub fn sceUmdWaitDriveStatCB(state: i32, timeout: u32) -> i32;
-    pub fn sceUmdCancelWaitDriveStat() -> i32;
-    pub fn sceUmdGetDriveStat() -> i32;
-    pub fn sceUmdGetErrorStat() -> i32;
-    pub fn sceUmdRegisterUMDCallBack(cbid: i32) -> i32;
-    pub fn sceUmdUnRegisterUMDCallBack(cbid: i32) -> i32;
-    pub fn sceUmdReplacePermit() -> i32;
-    pub fn sceUmdReplaceProhibit() -> i32;
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityDialogButtonAccept {
+    Circle,
+    Cross,
 }
 
-#[repr(transparent)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceMpeg(*mut *mut c_void);
-
-#[repr(transparent)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceMpegStream(*mut c_void);
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceMpegRingbuffer {
-    pub packets: i32,
-    pub unk0: u32,
-    pub unk1: u32,
-    pub unk2: u32,
-    pub unk3: u32,
-    pub data: *mut c_void,
-    pub callback: SceMpegRingbufferCb,
-    pub cb_param: *mut c_void,
-    pub unk4: u32,
-    pub unk5: u32,
-    pub sce_mpeg: *mut c_void,
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SceUtilityOskInputLanguage {
+    Default,
+    Japanese,
+    English,
+    French,
+    Spanish,
+    German,
+    Italian,
+    Dutch,
+    Portugese,
+    Russian,
+    Korean,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceMpegAu {
-    pub pts_msb: u32,
-    pub pts: u32,
-    pub dts_msb: u32,
-    pub dts: u32,
-    pub es_buffer: u32,
-    pub au_size: u32,
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SceUtilityOskInputType {
+    All,
+    LatinDigit,
+    LatinSymbol,
+    LatinLowercase = 4,
+    LatinUppercase = 8,
+    JapaneseDigit = 0x100,
+    JapaneseSymbol = 0x200,
+    JapaneseLowercase = 0x400,
+    JapaneseUppercase = 0x800,
+    JapaneseHiragana = 0x1000,
+    JapaneseHalfWidthKatakana = 0x2000,
+    JapaneseKatakana = 0x4000,
+    JapaneseKanji = 0x8000,
+    RussianLowercase = 0x10000,
+    RussianUppercase = 0x20000,
+    Korean = 0x40000,
+    Url = 0x80000,
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceMpegAvcMode {
-    pub unk0: i32,
-    pub pixel_format: super::DisplayPixelFormat,
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SceUtilityOskState {
+    None,
+    Initializing,
+    Initialized,
+    Visible,
+    Quit,
+    Finished,
 }
 
-extern "C" {
-    pub fn sceMpegInit() -> i32;
-    pub fn sceMpegFinish();
-    pub fn sceMpegRingbufferQueryMemSize(packets: i32) -> i32;
-    pub fn sceMpegRingbufferConstruct(
-        ringbuffer: *mut SceMpegRingbuffer,
-        packets: i32,
-        data: *mut c_void,
-        size: i32,
-        callback: SceMpegRingbufferCb,
-        cb_param: *mut c_void,
-    ) -> i32;
-    pub fn sceMpegRingbufferDestruct(ringbuffer: *mut SceMpegRingbuffer);
-    pub fn sceMpegRingbufferAvailableSize(
-        ringbuffer: *mut SceMpegRingbuffer,
-    ) -> i32;
-    pub fn sceMpegRingbufferPut(
-        ringbuffer: *mut SceMpegRingbuffer,
-        num_packets: i32,
-        available: i32,
-    ) -> i32;
-    pub fn sceMpegQueryMemSize(unk: i32) -> i32;
-    pub fn sceMpegCreate(
-        handle: SceMpeg,
-        data: *mut c_void,
-        size: i32,
-        ringbuffer: *mut SceMpegRingbuffer,
-        frame_width: i32,
-        unk1: i32,
-        unk2: i32,
-    ) -> i32;
-    pub fn sceMpegDelete(handle: SceMpeg);
-    pub fn sceMpegQueryStreamOffset(
-        handle: SceMpeg,
-        buffer: *mut c_void,
-        offset: *mut i32,
-    ) -> i32;
-    pub fn sceMpegQueryStreamSize(buffer: *mut c_void, size: *mut i32) -> i32;
-    pub fn sceMpegRegistStream(
-        handle: SceMpeg,
-        stream_id: i32,
-        unk: i32,
-    ) -> SceMpegStream;
-    pub fn sceMpegUnRegistStream(handle: SceMpeg, stream: SceMpegStream);
-    pub fn sceMpegFlushAllStream(handle: SceMpeg) -> i32;
-    pub fn sceMpegMallocAvcEsBuf(handle: SceMpeg) -> *mut c_void;
-    pub fn sceMpegFreeAvcEsBuf(handle: SceMpeg, buf: *mut c_void);
-    pub fn sceMpegQueryAtracEsSize(
-        handle: SceMpeg,
-        es_size: *mut i32,
-        out_size: *mut i32,
-    ) -> i32;
-    pub fn sceMpegInitAu(
-        handle: SceMpeg,
-        es_buffer: *mut c_void,
-        au: *mut SceMpegAu,
-    ) -> i32;
-    pub fn sceMpegGetAvcAu(
-        handle: SceMpeg,
-        stream: SceMpegStream,
-        au: *mut SceMpegAu,
-        unk: *mut i32,
-    ) -> i32;
-    pub fn sceMpegAvcDecodeMode(
-        handle: SceMpeg,
-        mode: *mut SceMpegAvcMode,
-    ) -> i32;
-    pub fn sceMpegAvcDecode(
-        handle: SceMpeg,
-        au: *mut SceMpegAu,
-        iframe_width: i32,
-        buffer: *mut c_void,
-        init: *mut i32,
-    ) -> i32;
-    pub fn sceMpegAvcDecodeStop(
-        handle: SceMpeg,
-        frame_width: i32,
-        buffer: *mut c_void,
-        status: *mut i32,
-    ) -> i32;
-    pub fn sceMpegGetAtracAu(
-        handle: SceMpeg,
-        stream: SceMpegStream,
-        au: *mut SceMpegAu,
-        unk: *mut c_void,
-    ) -> i32;
-    pub fn sceMpegAtracDecode(
-        handle: SceMpeg,
-        au: *mut SceMpegAu,
-        buffer: *mut c_void,
-        init: i32,
-    ) -> i32;
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SceUtilityOskResult {
+    Unchanged,
+    Cancelled,
+    Changed,
 }
 
-#[repr(C)]
-#[repr(align(64))]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceMpegLLI {
-    pub src: *mut c_void,
-    pub dst: *mut c_void,
-    pub next: *mut c_void,
-    pub size: i32,
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SystemParamLanguage {
+    Japanese,
+    English,
+    French,
+    Spanish,
+    German,
+    Italian,
+    Dutch,
+    Portugese,
+    Russian,
+    Korean,
+    ChineseTraditional,
+    ChineseSimplified,
 }
 
-#[repr(C)]
-#[repr(align(64))]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceMpegYCrCbBuffer {
-    pub frame_buffer_height16: i32,
-    pub frame_buffer_width16: i32,
-    pub unknown: i32,
-    pub unknown2: i32,
-    pub y_buffer: *mut c_void,
-    pub y_buffer2: *mut c_void,
-    pub cr_buffer: *mut c_void,
-    pub cb_buffer: *mut c_void,
-    pub cr_buffer2: *mut c_void,
-    pub cb_buffer2: *mut c_void,
-
-    pub frame_height: i32,
-    pub frame_width: i32,
-    pub frame_buffer_width: i32,
-    pub unknown3: [i32; 11usize],
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SystemParamId {
+    StringNickname = 1,
+    AdhocChannel,
+    WlanPowerSave,
+    DateFormat,
+    TimeFormat,
+    Timezone,
+    DaylightSavings,
+    Language,
+    Unknown,
 }
 
-extern "C" {
-    pub fn sceMpegBaseYCrCbCopyVme(
-        yuv_buffer: *mut c_void,
-        buffer: *mut i32,
-        type_: i32,
-    ) -> i32;
-    pub fn sceMpegBaseCscInit(width: i32) -> i32;
-    pub fn sceMpegBaseCscVme(
-        rgb_buffer: *mut c_void,
-        rgb_buffer2: *mut c_void,
-        width: i32,
-        y_cr_cb_buffer: *mut SceMpegYCrCbBuffer,
-    ) -> i32;
-    pub fn sceMpegbase_BEA18F91(lli: *mut SceMpegLLI) -> i32;
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SystemParamAdhocChannel {
+    ChannelAutomatic = 0,
+    Channel1 = 1,
+    Channel6 = 6,
+    Channel11 = 11,
 }
 
-extern "C" {
-    pub fn sceHprmPeekCurrentKey(key: *mut i32) -> i32;
-    pub fn sceHprmPeekLatch(latch: *mut [u32; 4]) -> i32;
-    pub fn sceHprmReadLatch(latch: *mut [u32; 4]) -> i32;
-    pub fn sceHprmIsHeadphoneExist() -> i32;
-    pub fn sceHprmIsRemoteExist() -> i32;
-    pub fn sceHprmIsMicrophoneExist() -> i32;
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SystemParamWlanPowerSaveState {
+    Off,
+    On,
 }
 
 #[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum GuPrimitive {
-    Points = 0,
-    Lines = 1,
-    LineStrip = 2,
-    Triangles = 3,
-    TriangleStrip = 4,
-    TriangleFan = 5,
-    Sprites = 6,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SystemParamDateFormat {
+    YYYYMMDD,
+    MMDDYYYY,
+    DDMMYYYY,
 }
 
 #[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum PatchPrimitive {
-    Points = 0,
-    LineStrip = 2,
-    TriangleStrip = 4,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum SystemParamTimeFormat {
+    Hour24,
+    Hour12,
 }
 
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Clone, Copy)]
-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq))]
+pub enum SystemParamDaylightSavings {
+    Std,
+    Dst,
+}
+
 #[repr(u32)]
-pub enum GuState {
-    AlphaTest = 0,
-    DepthTest = 1,
-    ScissorTest = 2,
-    StencilTest = 3,
-    Blend = 4,
-    CullFace = 5,
-    Dither = 6,
-    Fog = 7,
-    ClipPlanes = 8,
-    Texture2D = 9,
-    Lighting = 10,
-    Light0 = 11,
-    Light1 = 12,
-    Light2 = 13,
-    Light3 = 14,
-    LineSmooth = 15,
-    PatchCullFace = 16,
-    ColorTest = 17,
-    ColorLogicOp = 18,
-    FaceNormalReverse = 19,
-    PatchFace = 20,
-    Fragment2X = 21,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum AvModule {
+    AvCodec,
+    SasCore,
+    Atrac3Plus,
+    MpegBase,
+    Mp3,
+    Vaudio,
+    Aac,
+    G729,
 }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum MatrixMode {
-    Projection = 0,
-    View = 1,
-    Model = 2,
-    Texture = 3,
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum Module {
+    NetCommon = 0x100,
+    NetAdhoc,
+    NetInet,
+    NetParseUri,
+    NetHttp,
+    NetSsl,
+
+    UsbPspCm = 0x200,
+    UsbMic,
+    UsbCam,
+    UsbGps,
+
+    AvCodec = 0x300,
+    AvSascore,
+    AvAtrac3Plus,
+    AvMpegBase,
+    AvMp3,
+    AvVaudio,
+    AvAac,
+    AvG729,
+
+    NpCommon = 0x400,
+    NpService,
+    NpMatching2,
+    NpDrm = 0x500,
+
+    Irda = 0x600,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
 #[repr(u32)]
-pub enum TexturePixelFormat {
-    Psm5650 = 0,
-    Psm5551 = 1,
-    Psm4444 = 2,
-    Psm8888 = 3,
-    PsmT4 = 4,
-    PsmT8 = 5,
-    PsmT16 = 6,
-    PsmT32 = 7,
-    PsmDxt1 = 8,
-    PsmDxt3 = 9,
-    PsmDxt5 = 10,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum NetModule {
+    NetCommon = 1,
+    NetAdhoc,
+    NetInet,
+    NetParseUri,
+    NetHttp,
+    NetSsl,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum SplineMode {
-    FillFill = 0,
-    OpenFill = 1,
-    FillOpen = 2,
-    OpenOpen = 3,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UsbModule {
+    UsbPspCm = 1,
+    UsbAcc,
+    UsbMic,
+    UsbCam,
+    UsbGps,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum ShadingModel {
-    Flat = 0,
-    Smooth = 1,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum NetParam {
+    Name,
+    Ssid,
+    Secure,
+    WepKey,
+    IsStaticIp,
+    Ip,
+    NetMask,
+    Route,
+    ManualDns,
+    PrimaryDns,
+    SecondaryDns,
+    ProxyUser,
+    ProxyPass,
+    UseProxy,
+    ProxyServer,
+    ProxyPort,
+    Unknown1,
+    Unknown2,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum LogicalOperation {
-    Clear = 0,
-    And = 1,
-    AndReverse = 2,
-    Copy = 3,
-    AndInverted = 4,
-    Noop = 5,
-    Xor = 6,
-    Or = 7,
-    Nor = 8,
-    Equiv = 9,
-    Inverted = 10,
-    OrReverse = 11,
-    CopyInverted = 12,
-    OrInverted = 13,
-    Nand = 14,
-    Set = 15,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum TextureFilter {
-    Nearest = 0,
-    Linear = 1,
-    NearestMipmapNearest = 4,
-    LinearMipmapNearest = 5,
-    NearestMipmapLinear = 6,
-    LinearMipmapLinear = 7,
+pub enum UtilityNetconfAction {
+    ConnectAP,
+    DisplayStatus,
+    ConnectAdhoc,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
 #[repr(u32)]
-pub enum TextureMapMode {
-    TextureCoords = 0,
-    TextureMatrix = 1,
-    EnvironmentMap = 2,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum TextureLevelMode {
-    Auto = 0,
-    Const = 1,
-    Slope = 2,
+pub enum UtilitySavedataMode {
+    AutoLoad,
+    AutoSave,
+    Load,
+    Save,
+    ListLoad,
+    ListSave,
+    ListDelete,
+    Delete,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
 #[repr(u32)]
-pub enum TextureProjectionMapMode {
-    Position = 0,
-    Uv = 1,
-    NormalizedNormal = 2,
-    Normal = 3,
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum GuTexWrapMode {
-    Repeat = 0,
-    Clamp = 1,
+pub enum UtilitySavedataFocus {
+    Unknown1,
+    FirstList,
+    LastList,
+    Latest,
+    Oldest,
+    Unknown2,
+    Unknown3,
+    FirstEmpty,
+    LastEmpty,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum FrontFaceDirection {
-    Clockwise = 0,
-    CounterClockwise = 1,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+pub enum UtilityGameSharingMode {
+    Single = 1,
+    Multiple,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum AlphaFunc {
-    Never = 0,
-    Always,
-    Equal,
-    NotEqual,
-    Less,
-    LessOrEqual,
-    Greater,
-    GreaterOrEqual,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+pub enum UtilityGameSharingDataType {
+    File = 1,
+    Memory,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum StencilFunc {
-    Never = 0,
-    Always,
-    Equal,
-    NotEqual,
-    Less,
-    LessOrEqual,
-    Greater,
-    GreaterOrEqual,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityHtmlViewerInterfaceMode {
+    Full,
+    Limited,
+    None,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum ColorFunc {
-    Never = 0,
-    Always,
-    Equal,
-    NotEqual,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityHtmlViewerCookieMode {
+    Disabled = 0,
+    Enabled,
+    Confirm,
+    Default,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum DepthFunc {
-    Never = 0,
-    Always,
-    Equal,
-    NotEqual,
-    Less,
-    LessOrEqual,
-    Greater,
-    GreaterOrEqual,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityHtmlViewerTextSize {
+    Large,
+    Normal,
+    Small,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
 #[repr(u32)]
-pub enum TextureEffect {
-    Modulate = 0,
-    Decal = 1,
-    Blend = 2,
-    Replace = 3,
-    Add = 4,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityHtmlViewerDisplayMode {
+    Normal,
+    Fit,
+    SmartFit,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
 #[repr(u32)]
-pub enum TextureColorComponent {
-    Rgb = 0,
-    Rgba = 1,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityHtmlViewerConnectMode {
+    Last,
+    ManualOnce,
+    ManualAll,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
 #[repr(u32)]
-pub enum MipmapLevel {
-    None = 0,
-    Level1,
-    Level2,
-    Level3,
-    Level4,
-    Level5,
-    Level6,
-    Level7,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum UtilityHtmlViewerDisconnectMode {
+    Enable,
+    Disable,
+    Confirm,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum BlendOp {
-    Add = 0,
-    Subtract = 1,
-    ReverseSubtract = 2,
-    Min = 3,
-    Max = 4,
-    Abs = 5,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum ScePspnetAdhocPtpState {
+    Closed,
+    Listen,
+    SynSent,
+    SynReceived,
+    Established,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
+#[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
+pub enum AdhocMatchingMode {
+    Host = 1,
+    Client,
+    Ptp,
+}
+
 #[repr(u32)]
-pub enum BlendSrc {
-    SrcColor = 0,
-    OneMinusSrcColor = 1,
-    SrcAlpha = 2,
-    OneMinusSrcAlpha = 3,
-    Fix = 10,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum ApctlState {
+    Disconnected,
+    Scanning,
+    Joining,
+    GettingIp,
+    GotIp,
+    EapAuth,
+    KeyExchange,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum BlendDst {
-    DstColor = 0,
-    OneMinusDstColor = 1,
-    DstAlpha = 4,
-    OneMinusDstAlpha = 5,
-    Fix = 10,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum ApctlEvent {
+    ConnectRequest,
+    ScanRequest,
+    ScanComplete,
+    Established,
+    GetIp,
+    DisconnectRequest,
+    Error,
+    Info,
+    EapAuth,
+    KeyExchange,
+    Reconnect,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum StencilOperation {
-    Keep = 0,
-    Zero = 1,
-    Replace = 2,
-    Invert = 3,
-    Incr = 4,
-    Decr = 5,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum ApctlInfo {
+    ProfileName,
+    Bssid,
+    Ssid,
+    SsidLength,
+    SecurityType,
+    Strength,
+    Channel,
+    PowerSave,
+    Ip,
+    SubnetMask,
+    Gateway,
+    PrimaryDns,
+    SecondaryDns,
+    UseProxy,
+    ProxyUrl,
+    ProxyPort,
+    EapType,
+    StartBrowser,
+    Wifisp,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum LightMode {
-    SingleColor = 0,
-    SeparateSpecularColor = 1,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Clone, Copy)]
+pub enum ApctlInfoSecurityType {
+    None,
+    Wep,
+    Wpa,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
 #[repr(u32)]
-pub enum LightType {
-    Directional = 0,
-    Pointlight = 1,
-    Spotlight = 2,
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+pub enum HttpMethod {
+    Get,
+    Post,
+    Head,
 }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
 #[repr(u32)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
 #[derive(Copy, Clone)]
-pub enum GuContextType {
-    Direct = 0,
-    Call = 1,
-    Send = 2,
+pub enum HttpAuthType {
+    Basic,
+    Digest,
 }
 
+#[repr(transparent)]
+#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq, Hash))]
+#[derive(Copy, Clone)]
+pub struct SceUid(pub i32);
+
+#[repr(transparent)]
 #[cfg_attr(feature = "extra_traits", derive(Debug))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum GuQueueMode {
-    Tail = 0,
-    Head = 1,
-}
+pub struct SceMpeg(*mut *mut c_void);
 
+#[repr(transparent)]
 #[cfg_attr(feature = "extra_traits", derive(Debug))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum GuSyncMode {
-    Finish = 0,
-    Signal = 1,
-    Done = 2,
-    List = 3,
-    Send = 4,
-}
+pub struct SceMpegStream(*mut c_void);
 
+#[repr(transparent)]
 #[cfg_attr(feature = "extra_traits", derive(Debug))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum GuSyncBehavior {
-    Wait = 0,
-    NoWait = 1,
-}
+pub struct Mp3Handle(pub i32);
 
+#[repr(transparent)]
 #[cfg_attr(feature = "extra_traits", derive(Debug))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum GuCallbackId {
-    Signal = 1,
-    Finish = 4,
-}
+pub struct RegHandle(u32);
 
 #[cfg_attr(feature = "extra_traits", derive(Debug))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum SignalBehavior {
-    Suspend = 1,
-    Continue = 2,
-}
+#[repr(C)]
+pub struct sockaddr(pub u32);
 
 #[cfg_attr(feature = "extra_traits", derive(Debug))]
 #[derive(Copy, Clone)]
-#[repr(u32)]
-pub enum ClutPixelFormat {
-    Psm5650 = 0,
-    Psm5551 = 1,
-    Psm4444 = 2,
-    Psm8888 = 3,
-}
+#[repr(C)]
+pub struct in_addr(pub u32);
 
-extern "C" {
-    pub fn sceGuDepthBuffer(zbp: *mut c_void, zbw: i32);
-    pub fn sceGuDispBuffer(
-        width: i32,
-        height: i32,
-        dispbp: *mut c_void,
-        dispbw: i32,
-    );
-    pub fn sceGuDrawBuffer(
-        psm: DisplayPixelFormat,
-        fbp: *mut c_void,
-        fbw: i32,
-    );
-    pub fn sceGuDrawBufferList(
-        psm: DisplayPixelFormat,
-        fbp: *mut c_void,
-        fbw: i32,
-    );
-    pub fn sceGuDisplay(state: bool) -> bool;
-    pub fn sceGuDepthFunc(function: DepthFunc);
-    pub fn sceGuDepthMask(mask: i32);
+s! {
+    pub struct AudioInputParams {
+        pub unknown1: i32,
+        pub gain: i32,
+        pub unknown2: i32,
+        pub unknown3: i32,
+        pub unknown4: i32,
+        pub unknown5: i32,
+    }
 
-    pub fn sceGuDepthOffset(offset: i32);
-    pub fn sceGuDepthRange(near: i32, far: i32);
+    pub struct Atrac3BufferInfo {
+        pub puc_write_position_first_buf: *mut u8,
+        pub ui_writable_byte_first_buf: u32,
+        pub ui_min_write_byte_first_buf: u32,
+        pub ui_read_position_first_buf: u32,
+        pub puc_write_position_second_buf: *mut u8,
+        pub ui_writable_byte_second_buf: u32,
+        pub ui_min_write_byte_second_buf: u32,
+        pub ui_read_position_second_buf: u32,
+    }
+
+    pub struct SceCtrlData {
+        pub timestamp: u32,
+        pub buttons: i32,
+        pub lx: u8,
+        pub ly: u8,
+        pub rsrv: [u8; 6],
+    }
+
+    pub struct SceCtrlLatch {
+        pub ui_make: u32,
+        pub ui_break: u32,
+        pub ui_press: u32,
+        pub ui_release: u32,
+    }
+
+    pub struct GeStack {
+        pub stack: [u32; 8],
+    }
+
+    pub struct GeCallbackData {
+        pub signal_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
+        pub signal_arg: *mut c_void,
+        pub finish_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
+        pub finish_arg: *mut c_void,
+    }
+
+    pub struct GeListArgs {
+        pub size: u32,
+        pub context: *mut GeContext,
+        pub num_stacks: u32,
+        pub stacks: *mut GeStack,
+    }
+
+    pub struct GeBreakParam {
+        pub buf: [u32; 4],
+    }
+
+    pub struct SceKernelLoadExecParam {
+        pub size: usize,
+        pub args: usize,
+        pub argp: *mut c_void,
+        pub key: *const u8,
+    }
+
+    pub struct timeval {
+        pub tv_sec: i32,
+        pub tv_usec: i32,
+    }
+
+    pub struct timezone {
+        pub tz_minutes_west: i32,
+        pub tz_dst_time: i32,
+    }
+
+    pub struct IntrHandlerOptionParam {
+        size: i32,
+        entry: u32,
+        common: u32,
+        gp: u32,
+        intr_code: u16,
+        sub_count: u16,
+        intr_level: u16,
+        enabled: u16,
+        calls: u32,
+        field_1c: u32,
+        total_clock_lo: u32,
+        total_clock_hi: u32,
+        min_clock_lo: u32,
+        min_clock_hi: u32,
+        max_clock_lo: u32,
+        max_clock_hi: u32,
+    }
+
+    pub struct SceKernelLMOption {
+        pub size: usize,
+        pub m_pid_text: SceUid,
+        pub m_pid_data: SceUid,
+        pub flags: u32,
+        pub position: u8,
+        pub access: u8,
+        pub c_reserved: [u8; 2usize],
+    }
+
+    pub struct SceKernelSMOption {
+        pub size: usize,
+        pub m_pid_stack: SceUid,
+        pub stack_size: usize,
+        pub priority: i32,
+        pub attribute: u32,
+    }
+
+    pub struct SceKernelModuleInfo {
+        pub size: usize,
+        pub n_segment: u8,
+        pub reserved: [u8; 3usize],
+        pub segment_addr: [i32; 4usize],
+        pub segment_size: [i32; 4usize],
+        pub entry_addr: u32,
+        pub gp_value: u32,
+        pub text_addr: u32,
+        pub text_size: u32,
+        pub data_size: u32,
+        pub bss_size: u32,
+        pub attribute: u16,
+        pub version: [u8; 2usize],
+        pub name: [u8; 28usize],
+    }
+
+    pub struct DebugProfilerRegs {
+        pub enable: u32,
+        pub systemck: u32,
+        pub cpuck: u32,
+        pub internal: u32,
+        pub memory: u32,
+        pub copz: u32,
+        pub vfpu: u32,
+        pub sleep: u32,
+        pub bus_access: u32,
+        pub uncached_load: u32,
+        pub uncached_store: u32,
+        pub cached_load: u32,
+        pub cached_store: u32,
+        pub i_miss: u32,
+        pub d_miss: u32,
+        pub d_writeback: u32,
+        pub cop0_inst: u32,
+        pub fpu_inst: u32,
+        pub vfpu_inst: u32,
+        pub local_bus: u32,
+    }
+
+    pub struct SceKernelSysClock {
+        pub low: u32,
+        pub hi: u32,
+    }
+
+    pub struct SceKernelThreadOptParam {
+        pub size: usize,
+        pub stack_mpid: SceUid,
+    }
+
+    pub struct SceKernelThreadInfo {
+        pub size: usize,
+        pub name: [u8; 32],
+        pub attr: u32,
+        pub status: i32,
+        pub entry: SceKernelThreadEntry,
+        pub stack: *mut c_void,
+        pub stack_size: i32,
+        pub gp_reg: *mut c_void,
+        pub init_priority: i32,
+        pub current_priority: i32,
+        pub wait_type: i32,
+        pub wait_id: SceUid,
+        pub wakeup_count: i32,
+        pub exit_status: i32,
+        pub run_clocks: SceKernelSysClock,
+        pub intr_preempt_count: u32,
+        pub thread_preempt_count: u32,
+        pub release_count: u32,
+    }
+
+    pub struct SceKernelThreadRunStatus {
+        pub size: usize,
+        pub status: i32,
+        pub current_priority: i32,
+        pub wait_type: i32,
+        pub wait_id: i32,
+        pub wakeup_count: i32,
+        pub run_clocks: SceKernelSysClock,
+        pub intr_preempt_count: u32,
+        pub thread_preempt_count: u32,
+        pub release_count: u32,
+    }
+
+    pub struct SceKernelSemaOptParam {
+        pub size: usize,
+    }
+
+    pub struct SceKernelSemaInfo {
+        pub size: usize,
+        pub name: [u8; 32],
+        pub attr: u32,
+        pub init_count: i32,
+        pub current_count: i32,
+        pub max_count: i32,
+        pub num_wait_threads: i32,
+    }
+
+    pub struct SceKernelEventFlagInfo {
+        pub size: usize,
+        pub name: [u8; 32],
+        pub attr: u32,
+        pub init_pattern: u32,
+        pub current_pattern: u32,
+        pub num_wait_threads: i32,
+    }
+
+    pub struct SceKernelEventFlagOptParam {
+        pub size: usize,
+    }
+
+    pub struct SceKernelMbxOptParam {
+        pub size: usize,
+    }
+
+    pub struct SceKernelMbxInfo {
+        pub size: usize,
+        pub name: [u8; 32usize],
+        pub attr: u32,
+        pub num_wait_threads: i32,
+        pub num_messages: i32,
+        pub first_message: *mut c_void,
+    }
+
+    pub struct SceKernelVTimerInfo {
+        pub size: usize,
+        pub name: [u8; 32],
+        pub active: i32,
+        pub base: SceKernelSysClock,
+        pub current: SceKernelSysClock,
+        pub schedule: SceKernelSysClock,
+        pub handler: SceKernelVTimerHandler,
+        pub common: *mut c_void,
+    }
+
+    pub struct SceKernelThreadEventHandlerInfo {
+        pub size: usize,
+        pub name: [u8; 32],
+        pub thread_id: SceUid,
+        pub mask: i32,
+        pub handler: SceKernelThreadEventHandler,
+        pub common: *mut c_void,
+    }
+
+    pub struct SceKernelAlarmInfo {
+        pub size: usize,
+        pub schedule: SceKernelSysClock,
+        pub handler: SceKernelAlarmHandler,
+        pub common: *mut c_void,
+    }
+
+    pub struct SceKernelSystemStatus {
+        pub size: usize,
+        pub status: u32,
+        pub idle_clocks: SceKernelSysClock,
+        pub comes_out_of_idle_count: u32,
+        pub thread_switch_count: u32,
+        pub vfpu_switch_count: u32,
+    }
 
-    pub fn sceGuFog(near: f32, far: f32, color: u32);
-    pub fn sceGuInit();
-    pub fn sceGuTerm();
-    pub fn sceGuBreak(mode: i32);
+    pub struct SceKernelMppInfo {
+        pub size: usize,
+        pub name: [u8; 32],
+        pub attr: u32,
+        pub buf_size: i32,
+        pub free_size: i32,
+        pub num_send_wait_threads: i32,
+        pub num_receive_wait_threads: i32,
+    }
 
-    pub fn sceGuContinue();
-    pub fn sceGuSetCallback(
-        signal: GuCallbackId,
-        callback: GuCallback,
-    ) -> GuCallback;
-    pub fn sceGuSignal(behavior: SignalBehavior, signal: i32);
-    pub fn sceGuSendCommandf(cmd: GeCommand, argument: f32);
-    pub fn sceGuSendCommandi(cmd: GeCommand, argument: i32);
-    pub fn sceGuGetMemory(size: i32) -> *mut c_void;
-    pub fn sceGuStart(context_type: GuContextType, list: *mut c_void);
-    pub fn sceGuFinish() -> i32;
-    pub fn sceGuFinishId(id: u32) -> i32;
-    pub fn sceGuCallList(list: *const c_void);
-    pub fn sceGuCallMode(mode: i32);
-    pub fn sceGuCheckList() -> i32;
-    pub fn sceGuSendList(
-        mode: GuQueueMode,
-        list: *const c_void,
-        context: *mut GeContext,
-    );
-    pub fn sceGuSwapBuffers() -> *mut c_void;
-    pub fn sceGuSync(
-        mode: GuSyncMode,
-        behavior: GuSyncBehavior,
-    ) -> GeListState;
-    pub fn sceGuDrawArray(
-        prim: GuPrimitive,
-        vtype: i32,
-        count: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
-    pub fn sceGuBeginObject(
-        vtype: i32,
-        count: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
-    pub fn sceGuEndObject();
-    pub fn sceGuSetStatus(state: GuState, status: i32);
-    pub fn sceGuGetStatus(state: GuState) -> bool;
-    pub fn sceGuSetAllStatus(status: i32);
-    pub fn sceGuGetAllStatus() -> i32;
-    pub fn sceGuEnable(state: GuState);
-    pub fn sceGuDisable(state: GuState);
-    pub fn sceGuLight(
-        light: i32,
-        type_: LightType,
-        components: i32,
-        position: &ScePspFVector3,
-    );
-    pub fn sceGuLightAtt(light: i32, atten0: f32, atten1: f32, atten2: f32);
-    pub fn sceGuLightColor(light: i32, component: i32, color: u32);
-    pub fn sceGuLightMode(mode: LightMode);
-    pub fn sceGuLightSpot(
-        light: i32,
-        direction: &ScePspFVector3,
-        exponent: f32,
-        cutoff: f32,
-    );
-    pub fn sceGuClear(flags: i32);
-    pub fn sceGuClearColor(color: u32);
-    pub fn sceGuClearDepth(depth: u32);
-    pub fn sceGuClearStencil(stencil: u32);
-    pub fn sceGuPixelMask(mask: u32);
-    pub fn sceGuColor(color: u32);
-    pub fn sceGuColorFunc(func: ColorFunc, color: u32, mask: u32);
-    pub fn sceGuColorMaterial(components: i32);
-    pub fn sceGuAlphaFunc(func: AlphaFunc, value: i32, mask: i32);
+    pub struct SceKernelVplOptParam {
+        pub size: usize,
+    }
 
-    pub fn sceGuAmbient(color: u32);
+    pub struct SceKernelVplInfo {
+        pub size: usize,
+        pub name: [u8; 32],
+        pub attr: u32,
+        pub pool_size: i32,
+        pub free_size: i32,
+        pub num_wait_threads: i32,
+    }
 
-    pub fn sceGuAmbientColor(color: u32);
-    pub fn sceGuBlendFunc(
-        op: BlendOp,
-        src: BlendSrc,
-        dest: BlendDst,
-        src_fix: u32,
-        dest_fix: u32,
-    );
-    pub fn sceGuMaterial(components: i32, color: u32);
-    pub fn sceGuModelColor(
-        emissive: u32,
-        ambient: u32,
-        diffuse: u32,
-        specular: u32,
-    );
-    pub fn sceGuStencilFunc(func: StencilFunc, ref_: i32, mask: i32);
-    pub fn sceGuStencilOp(
-        fail: StencilOperation,
-        zfail: StencilOperation,
-        zpass: StencilOperation,
-    );
-    pub fn sceGuSpecular(power: f32);
-    pub fn sceGuFrontFace(order: FrontFaceDirection);
-    pub fn sceGuLogicalOp(op: LogicalOperation);
-    pub fn sceGuSetDither(matrix: &ScePspIMatrix4);
-    pub fn sceGuShadeModel(mode: ShadingModel);
-    pub fn sceGuCopyImage(
-        psm: DisplayPixelFormat,
-        sx: i32,
-        sy: i32,
-        width: i32,
-        height: i32,
-        srcw: i32,
-        src: *mut c_void,
-        dx: i32,
-        dy: i32,
-        destw: i32,
-        dest: *mut c_void,
-    );
-    pub fn sceGuTexEnvColor(color: u32);
-    pub fn sceGuTexFilter(min: TextureFilter, mag: TextureFilter);
-    pub fn sceGuTexFlush();
-    pub fn sceGuTexFunc(tfx: TextureEffect, tcc: TextureColorComponent);
-    pub fn sceGuTexImage(
-        mipmap: MipmapLevel,
-        width: i32,
-        height: i32,
-        tbw: i32,
-        tbp: *const c_void,
-    );
-    pub fn sceGuTexLevelMode(mode: TextureLevelMode, bias: f32);
-    pub fn sceGuTexMapMode(mode: TextureMapMode, a1: u32, a2: u32);
-    pub fn sceGuTexMode(
-        tpsm: TexturePixelFormat,
-        maxmips: i32,
-        a2: i32,
-        swizzle: i32,
-    );
-    pub fn sceGuTexOffset(u: f32, v: f32);
-    pub fn sceGuTexProjMapMode(mode: TextureProjectionMapMode);
-    pub fn sceGuTexScale(u: f32, v: f32);
+    pub struct SceKernelFplOptParam {
+        pub size: usize,
+    }
 
-    pub fn sceGuTexSlope(slope: f32);
-    pub fn sceGuTexSync();
-    pub fn sceGuTexWrap(u: GuTexWrapMode, v: GuTexWrapMode);
-    pub fn sceGuClutLoad(num_blocks: i32, cbp: *const c_void);
-    pub fn sceGuClutMode(
-        cpsm: ClutPixelFormat,
-        shift: u32,
-        mask: u32,
-        a3: u32,
-    );
-    pub fn sceGuOffset(x: u32, y: u32);
-    pub fn sceGuScissor(x: i32, y: i32, w: i32, h: i32);
-    pub fn sceGuViewport(cx: i32, cy: i32, width: i32, height: i32);
-    pub fn sceGuDrawBezier(
-        v_type: i32,
-        u_count: i32,
-        v_count: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
-    pub fn sceGuPatchDivide(ulevel: u32, vlevel: u32);
+    pub struct SceKernelFplInfo {
+        pub size: usize,
+        pub name: [u8; 32usize],
+        pub attr: u32,
+        pub block_size: i32,
+        pub num_blocks: i32,
+        pub free_blocks: i32,
+        pub num_wait_threads: i32,
+    }
 
-    pub fn sceGuPatchFrontFace(a0: u32);
-    pub fn sceGuPatchPrim(prim: PatchPrimitive);
+    pub struct SceKernelVTimerOptParam {
+        pub size: usize,
+    }
 
-    pub fn sceGuDrawSpline(
-        v_type: i32,
-        u_count: i32,
-        v_count: i32,
-        u_edge: i32,
-        v_edge: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
-    pub fn sceGuSetMatrix(type_: MatrixMode, matrix: &ScePspFMatrix4);
-    pub fn sceGuBoneMatrix(index: u32, matrix: &ScePspFMatrix4);
-    pub fn sceGuMorphWeight(index: i32, weight: f32);
-    pub fn sceGuDrawArrayN(
-        primitive_type: GuPrimitive,
-        v_type: i32,
-        count: i32,
-        a3: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
-}
+    pub struct SceKernelCallbackInfo {
+        pub size: usize,
+        pub name: [u8; 32usize],
+        pub thread_id: SceUid,
+        pub callback: SceKernelCallbackFunction,
+        pub common: *mut c_void,
+        pub notify_count: i32,
+        pub notify_arg: i32,
+    }
 
-extern "C" {
-    pub fn sceGumDrawArray(
-        prim: GuPrimitive,
-        v_type: i32,
-        count: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
+    pub struct UsbCamSetupStillParam {
+        pub size: i32,
+        pub resolution: UsbCamResolution,
+        pub jpeg_size: i32,
+        pub reverse_flags: i32,
+        pub delay: UsbCamDelay,
+        pub comp_level: i32,
+    }
 
-    pub fn sceGumDrawArrayN(
-        prim: GuPrimitive,
-        v_type: i32,
-        count: i32,
-        a3: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
+    pub struct UsbCamSetupStillExParam {
+        pub size: i32,
+        pub unk: u32,
+        pub resolution: UsbCamResolutionEx,
+        pub jpeg_size: i32,
+        pub comp_level: i32,
+        pub unk2: u32,
+        pub unk3: u32,
+        pub flip: i32,
+        pub mirror: i32,
+        pub delay: UsbCamDelay,
+        pub unk4: [u32; 5usize],
+    }
 
-    pub fn sceGumDrawBezier(
-        v_type: i32,
-        u_count: i32,
-        v_count: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
+    pub struct UsbCamSetupVideoParam {
+        pub size: i32,
+        pub resolution: UsbCamResolution,
+        pub framerate: UsbCamFrameRate,
+        pub white_balance: UsbCamWb,
+        pub saturation: i32,
+        pub brightness: i32,
+        pub contrast: i32,
+        pub sharpness: i32,
+        pub effect_mode: UsbCamEffectMode,
+        pub frame_size: i32,
+        pub unk: u32,
+        pub evl_evel: UsbCamEvLevel,
+    }
 
-    pub fn sceGumDrawSpline(
-        v_type: i32,
-        u_count: i32,
-        v_count: i32,
-        u_edge: i32,
-        v_edge: i32,
-        indices: *const c_void,
-        vertices: *const c_void,
-    );
+    pub struct UsbCamSetupVideoExParam {
+        pub size: i32,
+        pub unk: u32,
+        pub resolution: UsbCamResolutionEx,
+        pub framerate: UsbCamFrameRate,
+        pub unk2: u32,
+        pub unk3: u32,
+        pub white_balance: UsbCamWb,
+        pub saturation: i32,
+        pub brightness: i32,
+        pub contrast: i32,
+        pub sharpness: i32,
+        pub unk4: u32,
+        pub unk5: u32,
+        pub unk6: [u32; 3usize],
+        pub effect_mode: UsbCamEffectMode,
+        pub unk7: u32,
+        pub unk8: u32,
+        pub unk9: u32,
+        pub unk10: u32,
+        pub unk11: u32,
+        pub frame_size: i32,
+        pub unk12: u32,
+        pub ev_level: UsbCamEvLevel,
+    }
 
-    pub fn sceGumFastInverse();
-    pub fn sceGumFullInverse();
-    pub fn sceGumLoadIdentity();
-    pub fn sceGumLoadMatrix(m: &ScePspFMatrix4);
-    pub fn sceGumLookAt(
-        eye: &ScePspFVector3,
-        center: &ScePspFVector3,
-        up: &ScePspFVector3,
-    );
-    pub fn sceGumMatrixMode(mode: MatrixMode);
-    pub fn sceGumMultMatrix(m: &ScePspFMatrix4);
-    pub fn sceGumOrtho(
-        left: f32,
-        right: f32,
-        bottom: f32,
-        top: f32,
-        near: f32,
-        far: f32,
-    );
-    pub fn sceGumPerspective(fovy: f32, aspect: f32, near: f32, far: f32);
-    pub fn sceGumPopMatrix();
-    pub fn sceGumPushMatrix();
-    pub fn sceGumRotateX(angle: f32);
-    pub fn sceGumRotateY(angle: f32);
-    pub fn sceGumRotateZ(angle: f32);
-    pub fn sceGumRotateXYZ(v: &ScePspFVector3);
-    pub fn sceGumRotateZYX(v: &ScePspFVector3);
-    pub fn sceGumScale(v: &ScePspFVector3);
-    pub fn sceGumStoreMatrix(m: &mut ScePspFMatrix4);
-    pub fn sceGumTranslate(v: &ScePspFVector3);
-    pub fn sceGumUpdateMatrix();
-}
+    pub struct ScePspDateTime {
+        pub year: u16,
+        pub month: u16,
+        pub day: u16,
+        pub hour: u16,
+        pub minutes: u16,
+        pub seconds: u16,
+        pub microseconds: u32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspSRect {
-    pub x: i16,
-    pub y: i16,
-    pub w: i16,
-    pub h: i16,
-}
+    pub struct SceIoStat {
+        pub st_mode: i32,
+        pub st_attr: i32,
+        pub st_size: i64,
+        pub st_ctime: ScePspDateTime,
+        pub st_atime: ScePspDateTime,
+        pub st_mtime: ScePspDateTime,
+        pub st_private: [u32; 6usize],
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspIRect {
-    pub x: i32,
-    pub y: i32,
-    pub w: i32,
-    pub h: i32,
-}
+    pub struct UmdInfo {
+        pub size: u32,
+        pub type_: UmdType,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspL64Rect {
-    pub x: u64,
-    pub y: u64,
-    pub w: u64,
-    pub h: u64,
-}
+    pub struct SceMpegRingbuffer {
+        pub packets: i32,
+        pub unk0: u32,
+        pub unk1: u32,
+        pub unk2: u32,
+        pub unk3: u32,
+        pub data: *mut c_void,
+        pub callback: SceMpegRingbufferCb,
+        pub cb_param: *mut c_void,
+        pub unk4: u32,
+        pub unk5: u32,
+        pub sce_mpeg: *mut c_void,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFRect {
-    pub x: f32,
-    pub y: f32,
-    pub w: f32,
-    pub h: f32,
-}
+    pub struct SceMpegAu {
+        pub pts_msb: u32,
+        pub pts: u32,
+        pub dts_msb: u32,
+        pub dts: u32,
+        pub es_buffer: u32,
+        pub au_size: u32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspSVector2 {
-    pub x: i16,
-    pub y: i16,
-}
+    pub struct SceMpegAvcMode {
+        pub unk0: i32,
+        pub pixel_format: super::DisplayPixelFormat,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspIVector2 {
-    pub x: i32,
-    pub y: i32,
-}
+    #[repr(align(64))]
+    pub struct SceMpegLLI {
+        pub src: *mut c_void,
+        pub dst: *mut c_void,
+        pub next: *mut c_void,
+        pub size: i32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspL64Vector2 {
-    pub x: u64,
-    pub y: u64,
-}
+    #[repr(align(64))]
+    pub struct SceMpegYCrCbBuffer {
+        pub frame_buffer_height16: i32,
+        pub frame_buffer_width16: i32,
+        pub unknown: i32,
+        pub unknown2: i32,
+        pub y_buffer: *mut c_void,
+        pub y_buffer2: *mut c_void,
+        pub cr_buffer: *mut c_void,
+        pub cb_buffer: *mut c_void,
+        pub cr_buffer2: *mut c_void,
+        pub cb_buffer2: *mut c_void,
+
+        pub frame_height: i32,
+        pub frame_width: i32,
+        pub frame_buffer_width: i32,
+        pub unknown3: [i32; 11usize],
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFVector2 {
-    pub x: f32,
-    pub y: f32,
-}
+    pub struct ScePspSRect {
+        pub x: i16,
+        pub y: i16,
+        pub w: i16,
+        pub h: i16,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub union ScePspVector2 {
-    pub fv: ScePspFVector2,
-    pub iv: ScePspIVector2,
-    pub f: [f32; 2usize],
-    pub i: [i32; 2usize],
-}
+    pub struct ScePspIRect {
+        pub x: i32,
+        pub y: i32,
+        pub w: i32,
+        pub h: i32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspSVector3 {
-    pub x: i16,
-    pub y: i16,
-    pub z: i16,
-}
+    pub struct ScePspL64Rect {
+        pub x: u64,
+        pub y: u64,
+        pub w: u64,
+        pub h: u64,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspIVector3 {
-    pub x: i32,
-    pub y: i32,
-    pub z: i32,
-}
+    pub struct ScePspSVector2 {
+        pub x: i16,
+        pub y: i16,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspL64Vector3 {
-    pub x: u64,
-    pub y: u64,
-    pub z: u64,
-}
+    pub struct ScePspIVector2 {
+        pub x: i32,
+        pub y: i32,
+    }
 
-#[repr(C, align(16))]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFVector3 {
-    pub x: f32,
-    pub y: f32,
-    pub z: f32,
-}
+    pub struct ScePspL64Vector2 {
+        pub x: u64,
+        pub y: u64,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub union ScePspVector3 {
-    pub fv: ScePspFVector3,
-    pub iv: ScePspIVector3,
-    pub f: [f32; 3usize],
-    pub i: [i32; 3usize],
-}
+    pub struct ScePspSVector3 {
+        pub x: i16,
+        pub y: i16,
+        pub z: i16,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspSVector4 {
-    pub x: i16,
-    pub y: i16,
-    pub z: i16,
-    pub w: i16,
-}
+    pub struct ScePspIVector3 {
+        pub x: i32,
+        pub y: i32,
+        pub z: i32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspIVector4 {
-    pub x: i32,
-    pub y: i32,
-    pub z: i32,
-    pub w: i32,
-}
+    pub struct ScePspL64Vector3 {
+        pub x: u64,
+        pub y: u64,
+        pub z: u64,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspL64Vector4 {
-    pub x: u64,
-    pub y: u64,
-    pub z: u64,
-    pub w: u64,
-}
+    pub struct ScePspSVector4 {
+        pub x: i16,
+        pub y: i16,
+        pub z: i16,
+        pub w: i16,
+    }
 
-#[repr(C, align(16))]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFVector4 {
-    pub x: f32,
-    pub y: f32,
-    pub z: f32,
-    pub w: f32,
-}
+    pub struct ScePspIVector4 {
+        pub x: i32,
+        pub y: i32,
+        pub z: i32,
+        pub w: i32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFVector4Unaligned {
-    pub x: f32,
-    pub y: f32,
-    pub z: f32,
-    pub w: f32,
-}
+    pub struct ScePspL64Vector4 {
+        pub x: u64,
+        pub y: u64,
+        pub z: u64,
+        pub w: u64,
+    }
 
-#[repr(C, align(16))]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub union ScePspVector4 {
-    pub fv: ScePspFVector4,
-    pub iv: ScePspIVector4,
-    pub qw: u128,
-    pub f: [f32; 4usize],
-    pub i: [i32; 4usize],
-}
+    pub struct ScePspIMatrix2 {
+        pub x: ScePspIVector2,
+        pub y: ScePspIVector2,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspIMatrix2 {
-    pub x: ScePspIVector2,
-    pub y: ScePspIVector2,
-}
+    pub struct ScePspIMatrix3 {
+        pub x: ScePspIVector3,
+        pub y: ScePspIVector3,
+        pub z: ScePspIVector3,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFMatrix2 {
-    pub x: ScePspFVector2,
-    pub y: ScePspFVector2,
-}
+    #[repr(align(16))]
+    pub struct ScePspIMatrix4 {
+        pub x: ScePspIVector4,
+        pub y: ScePspIVector4,
+        pub z: ScePspIVector4,
+        pub w: ScePspIVector4,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub union ScePspMatrix2 {
-    pub fm: ScePspFMatrix2,
-    pub im: ScePspIMatrix2,
-    pub fv: [ScePspFVector2; 2usize],
-    pub iv: [ScePspIVector2; 2usize],
-    pub v: [ScePspVector2; 2usize],
-    pub f: [[f32; 2usize]; 2usize],
-    pub i: [[i32; 2usize]; 2usize],
-}
+    pub struct ScePspIMatrix4Unaligned {
+        pub x: ScePspIVector4,
+        pub y: ScePspIVector4,
+        pub z: ScePspIVector4,
+        pub w: ScePspIVector4,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspIMatrix3 {
-    pub x: ScePspIVector3,
-    pub y: ScePspIVector3,
-    pub z: ScePspIVector3,
-}
+    pub struct SceMp3InitArg {
+        pub mp3_stream_start: u32,
+        pub unk1: u32,
+        pub mp3_stream_end: u32,
+        pub unk2: u32,
+        pub mp3_buf: *mut c_void,
+        pub mp3_buf_size: i32,
+        pub pcm_buf: *mut c_void,
+        pub pcm_buf_size: i32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFMatrix3 {
-    pub x: ScePspFVector3,
-    pub y: ScePspFVector3,
-    pub z: ScePspFVector3,
-}
+    pub struct OpenPSID {
+        pub data: [u8; 16usize],
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub union ScePspMatrix3 {
-    pub fm: ScePspFMatrix3,
-    pub im: ScePspIMatrix3,
-    pub fv: [ScePspFVector3; 3usize],
-    pub iv: [ScePspIVector3; 3usize],
-    pub v: [ScePspVector3; 3usize],
-    pub f: [[f32; 3usize]; 3usize],
-    pub i: [[i32; 3usize]; 3usize],
-}
+    pub struct UtilityDialogCommon {
+        pub size: u32,
+        pub language: SystemParamLanguage,
+        pub button_accept: UtilityDialogButtonAccept,
+        pub graphics_thread: i32,
+        pub access_thread: i32,
+        pub font_thread: i32,
+        pub sound_thread: i32,
+        pub result: i32,
+        pub reserved: [i32; 4usize],
+    }
 
-#[repr(C, align(16))]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspIMatrix4 {
-    pub x: ScePspIVector4,
-    pub y: ScePspIVector4,
-    pub z: ScePspIVector4,
-    pub w: ScePspIVector4,
-}
+    pub struct UtilityNetconfAdhoc {
+        pub name: [u8; 8usize],
+        pub timeout: u32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspIMatrix4Unaligned {
-    pub x: ScePspIVector4,
-    pub y: ScePspIVector4,
-    pub z: ScePspIVector4,
-    pub w: ScePspIVector4,
-}
+    pub struct UtilityNetconfData {
+        pub base: UtilityDialogCommon,
+        pub action: UtilityNetconfAction,
+        pub adhocparam: *mut UtilityNetconfAdhoc,
+        pub hotspot: i32,
+        pub hotspot_connected: i32,
+        pub wifisp: i32,
+    }
 
-#[repr(C, align(16))]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFMatrix4 {
-    pub x: ScePspFVector4,
-    pub y: ScePspFVector4,
-    pub z: ScePspFVector4,
-    pub w: ScePspFVector4,
-}
+    pub struct UtilitySavedataFileData {
+        pub buf: *mut c_void,
+        pub buf_size: usize,
+        pub size: usize,
+        pub unknown: i32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct ScePspFMatrix4Unaligned {
-    pub x: ScePspFVector4,
-    pub y: ScePspFVector4,
-    pub z: ScePspFVector4,
-    pub w: ScePspFVector4,
-}
+    pub struct UtilitySavedataListSaveNewData {
+        pub icon0: UtilitySavedataFileData,
+        pub title: *mut u8,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub union ScePspMatrix4 {
-    pub fm: ScePspFMatrix4,
-    pub im: ScePspIMatrix4,
-    pub fv: [ScePspFVector4; 4usize],
-    pub iv: [ScePspIVector4; 4usize],
-    pub v: [ScePspVector4; 4usize],
-    pub f: [[f32; 4usize]; 4usize],
-    pub i: [[i32; 4usize]; 4usize],
-}
+    pub struct UtilityGameSharingParams {
+        pub base: UtilityDialogCommon,
+        pub unknown1: i32,
+        pub unknown2: i32,
+        pub name: [u8; 8usize],
+        pub unknown3: i32,
+        pub unknown4: i32,
+        pub unknown5: i32,
+        pub result: i32,
+        pub filepath: *mut u8,
+        pub mode: UtilityGameSharingMode,
+        pub datatype: UtilityGameSharingDataType,
+        pub data: *mut c_void,
+        pub datasize: u32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceMp3InitArg {
-    pub mp3_stream_start: u32,
-    pub unk1: u32,
-    pub mp3_stream_end: u32,
-    pub unk2: u32,
-    pub mp3_buf: *mut c_void,
-    pub mp3_buf_size: i32,
-    pub pcm_buf: *mut c_void,
-    pub pcm_buf_size: i32,
-}
+    pub struct UtilityHtmlViewerParam {
+        pub base: UtilityDialogCommon,
+        pub memaddr: *mut c_void,
+        pub memsize: u32,
+        pub unknown1: i32,
+        pub unknown2: i32,
+        pub initialurl: *mut u8,
+        pub numtabs: u32,
+        pub interfacemode: UtilityHtmlViewerInterfaceMode,
+        pub options: i32,
+        pub dldirname: *mut u8,
+        pub dlfilename: *mut u8,
+        pub uldirname: *mut u8,
+        pub ulfilename: *mut u8,
+        pub cookiemode: UtilityHtmlViewerCookieMode,
+        pub unknown3: u32,
+        pub homeurl: *mut u8,
+        pub textsize: UtilityHtmlViewerTextSize,
+        pub displaymode: UtilityHtmlViewerDisplayMode,
+        pub connectmode: UtilityHtmlViewerConnectMode,
+        pub disconnectmode: UtilityHtmlViewerDisconnectMode,
+        pub memused: u32,
+        pub unknown4: [i32; 10usize],
+    }
 
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(transparent)]
-pub struct Mp3Handle(pub i32);
+    pub struct SceUtilityOskData {
+        pub unk_00: i32,
+        pub unk_04: i32,
+        pub language: SceUtilityOskInputLanguage,
+        pub unk_12: i32,
+        pub inputtype: SceUtilityOskInputType,
+        pub lines: i32,
+        pub unk_24: i32,
+        pub desc: *mut u16,
+        pub intext: *mut u16,
+        pub outtextlength: i32,
+        pub outtext: *mut u16,
+        pub result: SceUtilityOskResult,
+        pub outtextlimit: i32,
+    }
 
-extern "C" {
-    pub fn sceMp3ReserveMp3Handle(args: *mut SceMp3InitArg) -> i32;
-    pub fn sceMp3ReleaseMp3Handle(handle: Mp3Handle) -> i32;
-    pub fn sceMp3InitResource() -> i32;
-    pub fn sceMp3TermResource() -> i32;
-    pub fn sceMp3Init(handle: Mp3Handle) -> i32;
-    pub fn sceMp3Decode(handle: Mp3Handle, dst: *mut *mut i16) -> i32;
-    pub fn sceMp3GetInfoToAddStreamData(
-        handle: Mp3Handle,
-        dst: *mut *mut u8,
-        to_write: *mut i32,
-        src_pos: *mut i32,
-    ) -> i32;
-    pub fn sceMp3NotifyAddStreamData(handle: Mp3Handle, size: i32) -> i32;
-    pub fn sceMp3CheckStreamDataNeeded(handle: Mp3Handle) -> i32;
-    pub fn sceMp3SetLoopNum(handle: Mp3Handle, loop_: i32) -> i32;
-    pub fn sceMp3GetLoopNum(handle: Mp3Handle) -> i32;
-    pub fn sceMp3GetSumDecodedSample(handle: Mp3Handle) -> i32;
-    pub fn sceMp3GetMaxOutputSample(handle: Mp3Handle) -> i32;
-    pub fn sceMp3GetSamplingRate(handle: Mp3Handle) -> i32;
-    pub fn sceMp3GetBitRate(handle: Mp3Handle) -> i32;
-    pub fn sceMp3GetMp3ChannelNum(handle: Mp3Handle) -> i32;
-    pub fn sceMp3ResetPlayPosition(handle: Mp3Handle) -> i32;
-}
+    pub struct SceUtilityOskParams {
+        pub base: UtilityDialogCommon,
+        pub datacount: i32,
+        pub data: *mut SceUtilityOskData,
+        pub state: SceUtilityOskState,
+        pub unk_60: i32,
+    }
 
-#[repr(transparent)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[allow(missing_copy_implementations)]
-pub struct RegHandle(u32);
+    pub struct SceNetMallocStat {
+        pub pool: i32,
+        pub maximum: i32,
+        pub free: i32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct Key {
-    pub key_type: KeyType,
-    pub name: [u8; 256usize],
-    pub name_len: u32,
-    pub unk2: u32,
-    pub unk3: u32,
-}
+    pub struct SceNetAdhocctlAdhocId {
+        pub unknown: i32,
+        pub adhoc_id: [u8; 9usize],
+        pub unk: [u8; 3usize],
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum KeyType {
-    Directory = 1,
-    Integer = 2,
-    String = 3,
-    Bytes = 4,
-}
+    pub struct SceNetAdhocctlScanInfo {
+        pub next: *mut SceNetAdhocctlScanInfo,
+        pub channel: i32,
+        pub name: [u8; 8usize],
+        pub bssid: [u8; 6usize],
+        pub unknown: [u8; 2usize],
+        pub unknown2: i32,
+    }
 
-extern "C" {
-    pub fn sceRegOpenRegistry(
-        reg: *mut Key,
-        mode: i32,
-        handle: *mut RegHandle,
-    ) -> i32;
-    pub fn sceRegFlushRegistry(handle: RegHandle) -> i32;
-    pub fn sceRegCloseRegistry(handle: RegHandle) -> i32;
-    pub fn sceRegOpenCategory(
-        handle: RegHandle,
-        name: *const u8,
-        mode: i32,
-        dir_handle: *mut RegHandle,
-    ) -> i32;
-    pub fn sceRegRemoveCategory(handle: RegHandle, name: *const u8) -> i32;
-    pub fn sceRegCloseCategory(dir_handle: RegHandle) -> i32;
-    pub fn sceRegFlushCategory(dir_handle: RegHandle) -> i32;
-    pub fn sceRegGetKeyInfo(
-        dir_handle: RegHandle,
-        name: *const u8,
-        key_handle: *mut RegHandle,
-        type_: *mut KeyType,
-        size: *mut usize,
-    ) -> i32;
-    pub fn sceRegGetKeyInfoByName(
-        dir_handle: RegHandle,
-        name: *const u8,
-        type_: *mut KeyType,
-        size: *mut usize,
-    ) -> i32;
-    pub fn sceRegGetKeyValue(
-        dir_handle: RegHandle,
-        key_handle: RegHandle,
-        buf: *mut c_void,
-        size: usize,
-    ) -> i32;
-    pub fn sceRegGetKeyValueByName(
-        dir_handle: RegHandle,
-        name: *const u8,
-        buf: *mut c_void,
-        size: usize,
-    ) -> i32;
-    pub fn sceRegSetKeyValue(
-        dir_handle: RegHandle,
-        name: *const u8,
-        buf: *const c_void,
-        size: usize,
-    ) -> i32;
-    pub fn sceRegGetKeysNum(dir_handle: RegHandle, num: *mut i32) -> i32;
-    pub fn sceRegGetKeys(dir_handle: RegHandle, buf: *mut u8, num: i32)
-        -> i32;
-    pub fn sceRegCreateKey(
-        dir_handle: RegHandle,
-        name: *const u8,
-        type_: i32,
-        size: usize,
-    ) -> i32;
-    pub fn sceRegRemoveRegistry(key: *mut Key) -> i32;
-}
+    pub struct SceNetAdhocctlGameModeInfo {
+        pub count: i32,
+        pub macs: [[u8; 6usize]; 16usize],
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct OpenPSID {
-    pub data: [u8; 16usize],
-}
+    pub struct SceNetAdhocPtpStat {
+        pub next: *mut SceNetAdhocPtpStat,
+        pub ptp_id: i32,
+        pub mac: [u8; 6usize],
+        pub peermac: [u8; 6usize],
+        pub port: u16,
+        pub peerport: u16,
+        pub sent_data: u32,
+        pub rcvd_data: u32,
+        pub state: ScePspnetAdhocPtpState,
+    }
 
-extern "C" {
-    pub fn sceOpenPSIDGetOpenPSID(openpsid: *mut OpenPSID) -> i32;
-}
+    pub struct SceNetAdhocPdpStat {
+        pub next: *mut SceNetAdhocPdpStat,
+        pub pdp_id: i32,
+        pub mac: [u8; 6usize],
+        pub port: u16,
+        pub rcvd_data: u32,
+    }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UtilityDialogCommon {
-    pub size: u32,
-    pub language: SystemParamLanguage,
-    pub button_accept: UtilityDialogButtonAccept,
-    pub graphics_thread: i32,
-    pub access_thread: i32,
-    pub font_thread: i32,
-    pub sound_thread: i32,
-    pub result: i32,
-    pub reserved: [i32; 4usize],
+    pub struct AdhocPoolStat {
+        pub size: i32,
+        pub maxsize: i32,
+        pub freesize: i32,
+    }
 }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityMsgDialogMode {
-    Error,
-    Text,
-}
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    pub struct GeContext {
+        pub context: [u32; 512],
+    }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityMsgDialogPressed {
-    Unknown1,
-    Yes,
-    No,
-    Back,
-}
+    #[allow(missing_debug_implementations)]
+    pub struct SceKernelUtilsSha1Context {
+        pub h: [u32; 5usize],
+        pub us_remains: u16,
+        pub us_computed: u16,
+        pub ull_total_len: u64,
+        pub buf: [u8; 64usize],
+    }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityDialogButtonAccept {
-    Circle,
-    Cross,
-}
+    #[allow(missing_debug_implementations)]
+    pub struct SceKernelUtilsMt19937Context {
+        pub count: u32,
+        pub state: [u32; 624usize],
+    }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SceUtilityOskInputLanguage {
-    Default,
-    Japanese,
-    English,
-    French,
-    Spanish,
-    German,
-    Italian,
-    Dutch,
-    Portugese,
-    Russian,
-    Korean,
-}
+    #[allow(missing_debug_implementations)]
+    pub struct SceKernelUtilsMd5Context {
+        pub h: [u32; 4usize],
+        pub pad: u32,
+        pub us_remains: u16,
+        pub us_computed: u16,
+        pub ull_total_len: u64,
+        pub buf: [u8; 64usize],
+    }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SceUtilityOskInputType {
-    All,
-    LatinDigit,
-    LatinSymbol,
-    LatinLowercase = 4,
-    LatinUppercase = 8,
-    JapaneseDigit = 0x100,
-    JapaneseSymbol = 0x200,
-    JapaneseLowercase = 0x400,
-    JapaneseUppercase = 0x800,
-    JapaneseHiragana = 0x1000,
-    JapaneseHalfWidthKatakana = 0x2000,
-    JapaneseKatakana = 0x4000,
-    JapaneseKanji = 0x8000,
-    RussianLowercase = 0x10000,
-    RussianUppercase = 0x20000,
-    Korean = 0x40000,
-    Url = 0x80000,
-}
+    #[allow(missing_debug_implementations)]
+    pub struct SceIoDirent {
+        pub d_stat: SceIoStat,
+        pub d_name: [u8; 256usize],
+        pub d_private: *mut c_void,
+        pub dummy: i32,
+    }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SceUtilityOskState {
-    None,
-    Initializing,
-    Initialized,
-    Visible,
-    Quit,
-    Finished,
-}
+    #[cfg_attr(feature = "extra_traits", derive(Debug))]
+    pub struct ScePspFRect {
+        pub x: f32,
+        pub y: f32,
+        pub w: f32,
+        pub h: f32,
+    }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SceUtilityOskResult {
-    Unchanged,
-    Cancelled,
-    Changed,
-}
+    #[repr(align(16))]
+    #[cfg_attr(feature = "extra_traits", derive(Debug))]
+    pub struct ScePspFVector3 {
+        pub x: f32,
+        pub y: f32,
+        pub z: f32,
+    }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SystemParamLanguage {
-    Japanese,
-    English,
-    French,
-    Spanish,
-    German,
-    Italian,
-    Dutch,
-    Portugese,
-    Russian,
-    Korean,
-    ChineseTraditional,
-    ChineseSimplified,
+    #[repr(align(16))]
+    #[cfg_attr(feature = "extra_traits", derive(Debug))]
+    pub struct ScePspFVector4 {
+        pub x: f32,
+        pub y: f32,
+        pub z: f32,
+        pub w: f32,
+    }
+
+    #[cfg_attr(feature = "extra_traits", derive(Debug))]
+    pub struct ScePspFVector4Unaligned {
+        pub x: f32,
+        pub y: f32,
+        pub z: f32,
+        pub w: f32,
+    }
+
+    #[cfg_attr(feature = "extra_traits", derive(Debug))]
+    pub struct ScePspFVector2 {
+        pub x: f32,
+        pub y: f32,
+    }
+
+    #[cfg_attr(feature = "extra_traits", derive(Debug))]
+    pub struct ScePspFMatrix2 {
+        pub x: ScePspFVector2,
+        pub y: ScePspFVector2,
+    }
+
+    #[cfg_attr(feature = "extra_traits", derive(Debug))]
+    pub struct ScePspFMatrix3 {
+        pub x: ScePspFVector3,
+        pub y: ScePspFVector3,
+        pub z: ScePspFVector3,
+    }
+
+    #[cfg_attr(feature = "extra_traits", derive(Debug))]
+    #[repr(align(16))]
+    pub struct ScePspFMatrix4 {
+        pub x: ScePspFVector4,
+        pub y: ScePspFVector4,
+        pub z: ScePspFVector4,
+        pub w: ScePspFVector4,
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub struct ScePspFMatrix4Unaligned {
+        pub x: ScePspFVector4,
+        pub y: ScePspFVector4,
+        pub z: ScePspFVector4,
+        pub w: ScePspFVector4,
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub union ScePspVector3 {
+        pub fv: ScePspFVector3,
+        pub iv: ScePspIVector3,
+        pub f: [f32; 3usize],
+        pub i: [i32; 3usize],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub union ScePspVector4 {
+        pub fv: ScePspFVector4,
+        pub iv: ScePspIVector4,
+        pub qw: u128,
+        pub f: [f32; 4usize],
+        pub i: [i32; 4usize],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub union ScePspMatrix2 {
+        pub fm: ScePspFMatrix2,
+        pub im: ScePspIMatrix2,
+        pub fv: [ScePspFVector2; 2usize],
+        pub iv: [ScePspIVector2; 2usize],
+        pub v: [ScePspVector2; 2usize],
+        pub f: [[f32; 2usize]; 2usize],
+        pub i: [[i32; 2usize]; 2usize],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub union ScePspMatrix3 {
+        pub fm: ScePspFMatrix3,
+        pub im: ScePspIMatrix3,
+        pub fv: [ScePspFVector3; 3usize],
+        pub iv: [ScePspIVector3; 3usize],
+        pub v: [ScePspVector3; 3usize],
+        pub f: [[f32; 3usize]; 3usize],
+        pub i: [[i32; 3usize]; 3usize],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub union ScePspVector2 {
+        pub fv: ScePspFVector2,
+        pub iv: ScePspIVector2,
+        pub f: [f32; 2usize],
+        pub i: [i32; 2usize],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub union ScePspMatrix4 {
+        pub fm: ScePspFMatrix4,
+        pub im: ScePspIMatrix4,
+        pub fv: [ScePspFVector4; 4usize],
+        pub iv: [ScePspIVector4; 4usize],
+        pub v: [ScePspVector4; 4usize],
+        pub f: [[f32; 4usize]; 4usize],
+        pub i: [[i32; 4usize]; 4usize],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub struct Key {
+        pub key_type: KeyType,
+        pub name: [u8; 256usize],
+        pub name_len: u32,
+        pub unk2: u32,
+        pub unk3: u32,
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub struct UtilityMsgDialogParams {
+        pub base: UtilityDialogCommon,
+        pub unknown: i32,
+        pub mode: UtilityMsgDialogMode,
+        pub error_value: u32,
+        pub message: [u8; 512usize],
+        pub options: i32,
+        pub button_pressed: UtilityMsgDialogPressed,
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub union UtilityNetData {
+        pub as_uint: u32,
+        pub as_string: [u8; 128usize],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub struct UtilitySavedataSFOParam {
+        pub title: [u8; 128usize],
+        pub savedata_title: [u8; 128usize],
+        pub detail: [u8; 1024usize],
+        pub parental_level: u8,
+        pub unknown: [u8; 3usize],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub struct SceUtilitySavedataParam {
+        pub base: UtilityDialogCommon,
+        pub mode: UtilitySavedataMode,
+        pub unknown1: i32,
+        pub overwrite: i32,
+        pub game_name: [u8; 13usize],
+        pub reserved: [u8; 3usize],
+        pub save_name: [u8; 20usize],
+        pub save_name_list: *mut [u8; 20usize],
+        pub file_name: [u8; 13usize],
+        pub reserved1: [u8; 3usize],
+        pub data_buf: *mut c_void,
+        pub data_buf_size: usize,
+        pub data_size: usize,
+        pub sfo_param: UtilitySavedataSFOParam,
+        pub icon0_file_data: UtilitySavedataFileData,
+        pub icon1_file_data: UtilitySavedataFileData,
+        pub pic1_file_data: UtilitySavedataFileData,
+        pub snd0_file_data: UtilitySavedataFileData,
+        pub new_data: *mut UtilitySavedataListSaveNewData,
+        pub focus: UtilitySavedataFocus,
+        pub unknown2: [i32; 4usize],
+        pub key: [u8; 16],
+        pub unknown3: [u8; 20],
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub struct SceNetAdhocctlPeerInfo {
+        pub next: *mut SceNetAdhocctlPeerInfo,
+        pub nickname: [u8; 128usize],
+        pub mac: [u8; 6usize],
+        pub unknown: [u8; 6usize],
+        pub timestamp: u32,
+    }
+
+    #[allow(missing_debug_implementations)]
+    pub struct SceNetAdhocctlParams {
+        pub channel: i32,
+        pub name: [u8; 8usize],
+        pub bssid: [u8; 6usize],
+        pub nickname: [u8; 128usize],
+    }
+
+    #[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
+    pub union SceNetApctlInfo {
+        pub name: [u8; 64usize],
+        pub bssid: [u8; 6usize],
+        pub ssid: [u8; 32usize],
+        pub ssid_length: u32,
+        pub security_type: u32,
+        pub strength: u8,
+        pub channel: u8,
+        pub power_save: u8,
+        pub ip: [u8; 16usize],
+        pub sub_net_mask: [u8; 16usize],
+        pub gateway: [u8; 16usize],
+        pub primary_dns: [u8; 16usize],
+        pub secondary_dns: [u8; 16usize],
+        pub use_proxy: u32,
+        pub proxy_url: [u8; 128usize],
+        pub proxy_port: u16,
+        pub eap_type: u32,
+        pub start_browser: u32,
+        pub wifisp: u32,
+    }
 }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SystemParamId {
-    StringNickname = 1,
-    AdhocChannel,
-    WlanPowerSave,
-    DateFormat,
-    TimeFormat,
-    Timezone,
-    DaylightSavings,
-    Language,
-    Unknown,
-}
+pub const INT_MIN: c_int = -2147483648;
+pub const INT_MAX: c_int = 2147483647;
+
+pub const AUDIO_VOLUME_MAX: u32 = 0x8000;
+pub const AUDIO_CHANNEL_MAX: u32 = 8;
+pub const AUDIO_NEXT_CHANNEL: i32 = -1;
+pub const AUDIO_SAMPLE_MIN: u32 = 64;
+pub const AUDIO_SAMPLE_MAX: u32 = 65472;
+
+pub const PSP_CTRL_SELECT: i32 = 0x000001;
+pub const PSP_CTRL_START: i32 = 0x000008;
+pub const PSP_CTRL_UP: i32 = 0x000010;
+pub const PSP_CTRL_RIGHT: i32 = 0x000020;
+pub const PSP_CTRL_DOWN: i32 = 0x000040;
+pub const PSP_CTRL_LEFT: i32 = 0x000080;
+pub const PSP_CTRL_LTRIGGER: i32 = 0x000100;
+pub const PSP_CTRL_RTRIGGER: i32 = 0x000200;
+pub const PSP_CTRL_TRIANGLE: i32 = 0x001000;
+pub const PSP_CTRL_CIRCLE: i32 = 0x002000;
+pub const PSP_CTRL_CROSS: i32 = 0x004000;
+pub const PSP_CTRL_SQUARE: i32 = 0x008000;
+pub const PSP_CTRL_HOME: i32 = 0x010000;
+pub const PSP_CTRL_HOLD: i32 = 0x020000;
+pub const PSP_CTRL_NOTE: i32 = 0x800000;
+pub const PSP_CTRL_SCREEN: i32 = 0x400000;
+pub const PSP_CTRL_VOLUP: i32 = 0x100000;
+pub const PSP_CTRL_VOLDOWN: i32 = 0x200000;
+pub const PSP_CTRL_WLAN_UP: i32 = 0x040000;
+pub const PSP_CTRL_REMOTE: i32 = 0x080000;
+pub const PSP_CTRL_DISC: i32 = 0x1000000;
+pub const PSP_CTRL_MS: i32 = 0x2000000;
+
+pub const USB_CAM_PID: i32 = 0x282;
+pub const USB_BUS_DRIVER_NAME: &str = "USBBusDriver";
+pub const USB_CAM_DRIVER_NAME: &str = "USBCamDriver";
+pub const USB_CAM_MIC_DRIVER_NAME: &str = "USBCamMicDriver";
+pub const USB_STOR_DRIVER_NAME: &str = "USBStor_Driver";
+
+pub const ACTIVATED: i32 = 0x200;
+pub const CONNECTED: i32 = 0x020;
+pub const ESTABLISHED: i32 = 0x002;
+
+pub const USB_CAM_FLIP: i32 = 1;
+pub const USB_CAM_MIRROR: i32 = 0x100;
+
+pub const THREAD_ATTR_VFPU: i32 = 0x00004000;
+pub const THREAD_ATTR_USER: i32 = 0x80000000;
+pub const THREAD_ATTR_USBWLAN: i32 = 0xa0000000;
+pub const THREAD_ATTR_VSH: i32 = 0xc0000000;
+pub const THREAD_ATTR_SCRATCH_SRAM: i32 = 0x00008000;
+pub const THREAD_ATTR_NO_FILLSTACK: i32 = 0x00100000;
+pub const THREAD_ATTR_CLEAR_STACK: i32 = 0x00200000;
+
+pub const EVENT_WAIT_MULTIPLE: i32 = 0x200;
+
+pub const EVENT_WAIT_AND: i32 = 0;
+pub const EVENT_WAIT_OR: i32 = 1;
+pub const EVENT_WAIT_CLEAR: i32 = 0x20;
+
+pub const POWER_INFO_POWER_SWITCH: i32 = 0x80000000;
+pub const POWER_INFO_HOLD_SWITCH: i32 = 0x40000000;
+pub const POWER_INFO_STANDBY: i32 = 0x00080000;
+pub const POWER_INFO_RESUME_COMPLETE: i32 = 0x00040000;
+pub const POWER_INFO_RESUMING: i32 = 0x00020000;
+pub const POWER_INFO_SUSPENDING: i32 = 0x00010000;
+pub const POWER_INFO_AC_POWER: i32 = 0x00001000;
+pub const POWER_INFO_BATTERY_LOW: i32 = 0x00000100;
+pub const POWER_INFO_BATTERY_EXIST: i32 = 0x00000080;
+pub const POWER_INFO_BATTERY_POWER: i32 = 0x0000007;
+
+pub const FIO_S_IFLNK: i32 = 0x4000;
+pub const FIO_S_IFDIR: i32 = 0x1000;
+pub const FIO_S_IFREG: i32 = 0x2000;
+pub const FIO_S_ISUID: i32 = 0x0800;
+pub const FIO_S_ISGID: i32 = 0x0400;
+pub const FIO_S_ISVTX: i32 = 0x0200;
+pub const FIO_S_IRUSR: i32 = 0x0100;
+pub const FIO_S_IWUSR: i32 = 0x0080;
+pub const FIO_S_IXUSR: i32 = 0x0040;
+pub const FIO_S_IRGRP: i32 = 0x0020;
+pub const FIO_S_IWGRP: i32 = 0x0010;
+pub const FIO_S_IXGRP: i32 = 0x0008;
+pub const FIO_S_IROTH: i32 = 0x0004;
+pub const FIO_S_IWOTH: i32 = 0x0002;
+pub const FIO_S_IXOTH: i32 = 0x0001;
+
+pub const FIO_SO_IFLNK: i32 = 0x0008;
+pub const FIO_SO_IFDIR: i32 = 0x0010;
+pub const FIO_SO_IFREG: i32 = 0x0020;
+pub const FIO_SO_IROTH: i32 = 0x0004;
+pub const FIO_SO_IWOTH: i32 = 0x0002;
+pub const FIO_SO_IXOTH: i32 = 0x0001;
+
+pub const PSP_O_RD_ONLY: i32 = 0x0001;
+pub const PSP_O_WR_ONLY: i32 = 0x0002;
+pub const PSP_O_RD_WR: i32 = 0x0003;
+pub const PSP_O_NBLOCK: i32 = 0x0004;
+pub const PSP_O_DIR: i32 = 0x0008;
+pub const PSP_O_APPEND: i32 = 0x0100;
+pub const PSP_O_CREAT: i32 = 0x0200;
+pub const PSP_O_TRUNC: i32 = 0x0400;
+pub const PSP_O_EXCL: i32 = 0x0800;
+pub const PSP_O_NO_WAIT: i32 = 0x8000;
+
+pub const UMD_NOT_PRESENT: i32 = 0x01;
+pub const UMD_PRESENT: i32 = 0x02;
+pub const UMD_CHANGED: i32 = 0x04;
+pub const UMD_INITING: i32 = 0x08;
+pub const UMD_INITED: i32 = 0x10;
+pub const UMD_READY: i32 = 0x20;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SystemParamAdhocChannel {
-    ChannelAutomatic = 0,
-    Channel1 = 1,
-    Channel6 = 6,
-    Channel11 = 11,
-}
+pub const PLAY_PAUSE: i32 = 0x1;
+pub const FORWARD: i32 = 0x4;
+pub const BACK: i32 = 0x8;
+pub const VOL_UP: i32 = 0x10;
+pub const VOL_DOWN: i32 = 0x20;
+pub const HOLD: i32 = 0x80;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SystemParamWlanPowerSaveState {
-    Off,
-    On,
-}
+pub const GU_PI: f32 = 3.141593;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SystemParamDateFormat {
-    YYYYMMDD,
-    MMDDYYYY,
-    DDMMYYYY,
-}
+pub const GU_TEXTURE_8BIT: i32 = 1;
+pub const GU_TEXTURE_16BIT: i32 = 2;
+pub const GU_TEXTURE_32BITF: i32 = 3;
+pub const GU_COLOR_5650: i32 = 4 << 2;
+pub const GU_COLOR_5551: i32 = 5 << 2;
+pub const GU_COLOR_4444: i32 = 6 << 2;
+pub const GU_COLOR_8888: i32 = 7 << 2;
+pub const GU_NORMAL_8BIT: i32 = 1 << 5;
+pub const GU_NORMAL_16BIT: i32 = 2 << 5;
+pub const GU_NORMAL_32BITF: i32 = 3 << 5;
+pub const GU_VERTEX_8BIT: i32 = 1 << 7;
+pub const GU_VERTEX_16BIT: i32 = 2 << 7;
+pub const GU_VERTEX_32BITF: i32 = 3 << 7;
+pub const GU_WEIGHT_8BIT: i32 = 1 << 9;
+pub const GU_WEIGHT_16BIT: i32 = 2 << 9;
+pub const GU_WEIGHT_32BITF: i32 = 3 << 9;
+pub const GU_INDEX_8BIT: i32 = 1 << 11;
+pub const GU_INDEX_16BIT: i32 = 2 << 11;
+pub const GU_WEIGHTS1: i32 = (((1 - 1) & 7) << 14) as i32;
+pub const GU_WEIGHTS2: i32 = (((2 - 1) & 7) << 14) as i32;
+pub const GU_WEIGHTS3: i32 = (((3 - 1) & 7) << 14) as i32;
+pub const GU_WEIGHTS4: i32 = (((4 - 1) & 7) << 14) as i32;
+pub const GU_WEIGHTS5: i32 = (((5 - 1) & 7) << 14) as i32;
+pub const GU_WEIGHTS6: i32 = (((6 - 1) & 7) << 14) as i32;
+pub const GU_WEIGHTS7: i32 = (((7 - 1) & 7) << 14) as i32;
+pub const GU_WEIGHTS8: i32 = (((8 - 1) & 7) << 14) as i32;
+pub const GU_VERTICES1: i32 = (((1 - 1) & 7) << 18) as i32;
+pub const GU_VERTICES2: i32 = (((2 - 1) & 7) << 18) as i32;
+pub const GU_VERTICES3: i32 = (((3 - 1) & 7) << 18) as i32;
+pub const GU_VERTICES4: i32 = (((4 - 1) & 7) << 18) as i32;
+pub const GU_VERTICES5: i32 = (((5 - 1) & 7) << 18) as i32;
+pub const GU_VERTICES6: i32 = (((6 - 1) & 7) << 18) as i32;
+pub const GU_VERTICES7: i32 = (((7 - 1) & 7) << 18) as i32;
+pub const GU_VERTICES8: i32 = (((8 - 1) & 7) << 18) as i32;
+pub const GU_TRANSFORM_2D: i32 = 1 << 23;
+pub const GU_TRANSFORM_3D: i32 = 0;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SystemParamTimeFormat {
-    Hour24,
-    Hour12,
-}
+pub const GU_COLOR_BUFFER_BIT: i32 = 1;
+pub const GU_STENCIL_BUFFER_BIT: i32 = 2;
+pub const GU_DEPTH_BUFFER_BIT: i32 = 4;
+pub const GU_FAST_CLEAR_BIT: i32 = 16;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum SystemParamDaylightSavings {
-    Std,
-    Dst,
-}
+pub const GU_AMBIENT: i32 = 1;
+pub const GU_DIFFUSE: i32 = 2;
+pub const GU_SPECULAR: i32 = 4;
+pub const GU_UNKNOWN_LIGHT_COMPONENT: i32 = 8;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum AvModule {
-    AvCodec,
-    SasCore,
-    Atrac3Plus,
-    MpegBase,
-    Mp3,
-    Vaudio,
-    Aac,
-    G729,
-}
+pub const SYSTEM_REGISTRY: [u8; 7] = *b"/system";
+pub const REG_KEYNAME_SIZE: u32 = 27;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum Module {
-    NetCommon = 0x100,
-    NetAdhoc,
-    NetInet,
-    NetParseUri,
-    NetHttp,
-    NetSsl,
+pub const UTILITY_MSGDIALOG_ERROR: i32 = 0;
+pub const UTILITY_MSGDIALOG_TEXT: i32 = 1;
+pub const UTILITY_MSGDIALOG_YES_NO_BUTTONS: i32 = 0x10;
+pub const UTILITY_MSGDIALOG_DEFAULT_NO: i32 = 0x100;
 
-    UsbPspCm = 0x200,
-    UsbMic,
-    UsbCam,
-    UsbGps,
+pub const UTILITY_HTMLVIEWER_OPEN_SCE_START_PAGE: i32 = 0x000001;
+pub const UTILITY_HTMLVIEWER_DISABLE_STARTUP_LIMITS: i32 = 0x000002;
+pub const UTILITY_HTMLVIEWER_DISABLE_EXIT_DIALOG: i32 = 0x000004;
+pub const UTILITY_HTMLVIEWER_DISABLE_CURSOR: i32 = 0x000008;
+pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_COMPLETE_DIALOG: i32 = 0x000010;
+pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_START_DIALOG: i32 = 0x000020;
+pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_DESTINATION_DIALOG: i32 =
+    0x000040;
+pub const UTILITY_HTMLVIEWER_LOCK_DOWNLOAD_DESTINATION_DIALOG: i32 = 0x000080;
+pub const UTILITY_HTMLVIEWER_DISABLE_TAB_DISPLAY: i32 = 0x000100;
+pub const UTILITY_HTMLVIEWER_ENABLE_ANALOG_HOLD: i32 = 0x000200;
+pub const UTILITY_HTMLVIEWER_ENABLE_FLASH: i32 = 0x000400;
+pub const UTILITY_HTMLVIEWER_DISABLE_LRTRIGGER: i32 = 0x000800;
+
+extern "C" {
+    pub fn sceAudioChReserve(
+        channel: i32,
+        sample_count: i32,
+        format: AudioFormat,
+    ) -> i32;
+    pub fn sceAudioChRelease(channel: i32) -> i32;
+    pub fn sceAudioOutput(channel: i32, vol: i32, buf: *mut c_void) -> i32;
+    pub fn sceAudioOutputBlocking(
+        channel: i32,
+        vol: i32,
+        buf: *mut c_void,
+    ) -> i32;
+    pub fn sceAudioOutputPanned(
+        channel: i32,
+        left_vol: i32,
+        right_vol: i32,
+        buf: *mut c_void,
+    ) -> i32;
+    pub fn sceAudioOutputPannedBlocking(
+        channel: i32,
+        left_vol: i32,
+        right_vol: i32,
+        buf: *mut c_void,
+    ) -> i32;
+    pub fn sceAudioGetChannelRestLen(channel: i32) -> i32;
+    pub fn sceAudioGetChannelRestLength(channel: i32) -> i32;
+    pub fn sceAudioSetChannelDataLen(channel: i32, sample_count: i32) -> i32;
+    pub fn sceAudioChangeChannelConfig(
+        channel: i32,
+        format: AudioFormat,
+    ) -> i32;
+    pub fn sceAudioChangeChannelVolume(
+        channel: i32,
+        left_vol: i32,
+        right_vol: i32,
+    ) -> i32;
+    pub fn sceAudioOutput2Reserve(sample_count: i32) -> i32;
+    pub fn sceAudioOutput2Release() -> i32;
+    pub fn sceAudioOutput2ChangeLength(sample_count: i32) -> i32;
+    pub fn sceAudioOutput2OutputBlocking(vol: i32, buf: *mut c_void) -> i32;
+    pub fn sceAudioOutput2GetRestSample() -> i32;
+    pub fn sceAudioSRCChReserve(
+        sample_count: i32,
+        freq: AudioOutputFrequency,
+        channels: i32,
+    ) -> i32;
+    pub fn sceAudioSRCChRelease() -> i32;
+    pub fn sceAudioSRCOutputBlocking(vol: i32, buf: *mut c_void) -> i32;
+    pub fn sceAudioInputInit(unknown1: i32, gain: i32, unknown2: i32) -> i32;
+    pub fn sceAudioInputInitEx(params: *mut AudioInputParams) -> i32;
+    pub fn sceAudioInputBlocking(
+        sample_count: i32,
+        freq: AudioInputFrequency,
+        buf: *mut c_void,
+    );
+    pub fn sceAudioInput(
+        sample_count: i32,
+        freq: AudioInputFrequency,
+        buf: *mut c_void,
+    );
+    pub fn sceAudioGetInputLength() -> i32;
+    pub fn sceAudioWaitInputEnd() -> i32;
+    pub fn sceAudioPollInputEnd() -> i32;
+
+    pub fn sceAtracGetAtracID(ui_codec_type: u32) -> i32;
+    pub fn sceAtracSetDataAndGetID(buf: *mut c_void, bufsize: usize) -> i32;
+    pub fn sceAtracDecodeData(
+        atrac_id: i32,
+        out_samples: *mut u16,
+        out_n: *mut i32,
+        out_end: *mut i32,
+        out_remain_frame: *mut i32,
+    ) -> i32;
+    pub fn sceAtracGetRemainFrame(
+        atrac_id: i32,
+        out_remain_frame: *mut i32,
+    ) -> i32;
+    pub fn sceAtracGetStreamDataInfo(
+        atrac_id: i32,
+        write_pointer: *mut *mut u8,
+        available_bytes: *mut u32,
+        read_offset: *mut u32,
+    ) -> i32;
+    pub fn sceAtracAddStreamData(atrac_id: i32, bytes_to_add: u32) -> i32;
+    pub fn sceAtracGetBitrate(atrac_id: i32, out_bitrate: *mut i32) -> i32;
+    pub fn sceAtracSetLoopNum(atrac_id: i32, nloops: i32) -> i32;
+    pub fn sceAtracReleaseAtracID(atrac_id: i32) -> i32;
+    pub fn sceAtracGetNextSample(atrac_id: i32, out_n: *mut i32) -> i32;
+    pub fn sceAtracGetMaxSample(atrac_id: i32, out_max: *mut i32) -> i32;
+    pub fn sceAtracGetBufferInfoForReseting(
+        atrac_id: i32,
+        ui_sample: u32,
+        pbuffer_info: *mut Atrac3BufferInfo,
+    ) -> i32;
+    pub fn sceAtracGetChannel(atrac_id: i32, pui_channel: *mut u32) -> i32;
+    pub fn sceAtracGetInternalErrorInfo(
+        atrac_id: i32,
+        pi_result: *mut i32,
+    ) -> i32;
+    pub fn sceAtracGetLoopStatus(
+        atrac_id: i32,
+        pi_loop_num: *mut i32,
+        pui_loop_status: *mut u32,
+    ) -> i32;
+    pub fn sceAtracGetNextDecodePosition(
+        atrac_id: i32,
+        pui_sample_position: *mut u32,
+    ) -> i32;
+    pub fn sceAtracGetSecondBufferInfo(
+        atrac_id: i32,
+        pui_position: *mut u32,
+        pui_data_byte: *mut u32,
+    ) -> i32;
+    pub fn sceAtracGetSoundSample(
+        atrac_id: i32,
+        pi_end_sample: *mut i32,
+        pi_loop_start_sample: *mut i32,
+        pi_loop_end_sample: *mut i32,
+    ) -> i32;
+    pub fn sceAtracResetPlayPosition(
+        atrac_id: i32,
+        ui_sample: u32,
+        ui_write_byte_first_buf: u32,
+        ui_write_byte_second_buf: u32,
+    ) -> i32;
+    pub fn sceAtracSetData(
+        atrac_id: i32,
+        puc_buffer_addr: *mut u8,
+        ui_buffer_byte: u32,
+    ) -> i32;
+    pub fn sceAtracSetHalfwayBuffer(
+        atrac_id: i32,
+        puc_buffer_addr: *mut u8,
+        ui_read_byte: u32,
+        ui_buffer_byte: u32,
+    ) -> i32;
+    pub fn sceAtracSetHalfwayBufferAndGetID(
+        puc_buffer_addr: *mut u8,
+        ui_read_byte: u32,
+        ui_buffer_byte: u32,
+    ) -> i32;
+    pub fn sceAtracSetSecondBuffer(
+        atrac_id: i32,
+        puc_second_buffer_addr: *mut u8,
+        ui_second_buffer_byte: u32,
+    ) -> i32;
 
-    AvCodec = 0x300,
-    AvSascore,
-    AvAtrac3Plus,
-    AvMpegBase,
-    AvMp3,
-    AvVaudio,
-    AvAac,
-    AvG729,
+    pub fn sceCtrlSetSamplingCycle(cycle: i32) -> i32;
+    pub fn sceCtrlGetSamplingCycle(pcycle: *mut i32) -> i32;
+    pub fn sceCtrlSetSamplingMode(mode: CtrlMode) -> i32;
+    pub fn sceCtrlGetSamplingMode(pmode: *mut i32) -> i32;
+    pub fn sceCtrlPeekBufferPositive(
+        pad_data: *mut SceCtrlData,
+        count: i32,
+    ) -> i32;
+    pub fn sceCtrlPeekBufferNegative(
+        pad_data: *mut SceCtrlData,
+        count: i32,
+    ) -> i32;
+    pub fn sceCtrlReadBufferPositive(
+        pad_data: *mut SceCtrlData,
+        count: i32,
+    ) -> i32;
+    pub fn sceCtrlReadBufferNegative(
+        pad_data: *mut SceCtrlData,
+        count: i32,
+    ) -> i32;
+    pub fn sceCtrlPeekLatch(latch_data: *mut SceCtrlLatch) -> i32;
+    pub fn sceCtrlReadLatch(latch_data: *mut SceCtrlLatch) -> i32;
+    pub fn sceCtrlSetIdleCancelThreshold(idlereset: i32, idleback: i32)
+        -> i32;
+    pub fn sceCtrlGetIdleCancelThreshold(
+        idlereset: *mut i32,
+        idleback: *mut i32,
+    ) -> i32;
 
-    NpCommon = 0x400,
-    NpService,
-    NpMatching2,
-    NpDrm = 0x500,
+    pub fn sceDisplaySetMode(
+        mode: DisplayMode,
+        width: usize,
+        height: usize,
+    ) -> u32;
+    pub fn sceDisplayGetMode(
+        pmode: *mut i32,
+        pwidth: *mut i32,
+        pheight: *mut i32,
+    ) -> i32;
+    pub fn sceDisplaySetFrameBuf(
+        top_addr: *const u8,
+        buffer_width: usize,
+        pixel_format: DisplayPixelFormat,
+        sync: DisplaySetBufSync,
+    ) -> u32;
+    pub fn sceDisplayGetFrameBuf(
+        top_addr: *mut *mut c_void,
+        buffer_width: *mut usize,
+        pixel_format: *mut DisplayPixelFormat,
+        sync: DisplaySetBufSync,
+    ) -> i32;
+    pub fn sceDisplayGetVcount() -> u32;
+    pub fn sceDisplayWaitVblank() -> i32;
+    pub fn sceDisplayWaitVblankCB() -> i32;
+    pub fn sceDisplayWaitVblankStart() -> i32;
+    pub fn sceDisplayWaitVblankStartCB() -> i32;
+    pub fn sceDisplayGetAccumulatedHcount() -> i32;
+    pub fn sceDisplayGetCurrentHcount() -> i32;
+    pub fn sceDisplayGetFramePerSec() -> f32;
+    pub fn sceDisplayIsForeground() -> i32;
+    pub fn sceDisplayIsVblank() -> i32;
 
-    Irda = 0x600,
-}
+    pub fn sceGeEdramGetSize() -> u32;
+    pub fn sceGeEdramGetAddr() -> *mut u8;
+    pub fn sceGeEdramSetAddrTranslation(width: i32) -> i32;
+    pub fn sceGeGetCmd(cmd: i32) -> u32;
+    pub fn sceGeGetMtx(type_: GeMatrixType, matrix: *mut c_void) -> i32;
+    pub fn sceGeGetStack(stack_id: i32, stack: *mut GeStack) -> i32;
+    pub fn sceGeSaveContext(context: *mut GeContext) -> i32;
+    pub fn sceGeRestoreContext(context: *const GeContext) -> i32;
+    pub fn sceGeListEnQueue(
+        list: *const c_void,
+        stall: *mut c_void,
+        cbid: i32,
+        arg: *mut GeListArgs,
+    ) -> i32;
+    pub fn sceGeListEnQueueHead(
+        list: *const c_void,
+        stall: *mut c_void,
+        cbid: i32,
+        arg: *mut GeListArgs,
+    ) -> i32;
+    pub fn sceGeListDeQueue(qid: i32) -> i32;
+    pub fn sceGeListUpdateStallAddr(qid: i32, stall: *mut c_void) -> i32;
+    pub fn sceGeListSync(qid: i32, sync_type: i32) -> GeListState;
+    pub fn sceGeDrawSync(sync_type: i32) -> GeListState;
+    pub fn sceGeBreak(mode: i32, p_param: *mut GeBreakParam) -> i32;
+    pub fn sceGeContinue() -> i32;
+    pub fn sceGeSetCallback(cb: *mut GeCallbackData) -> i32;
+    pub fn sceGeUnsetCallback(cbid: i32) -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum NetModule {
-    NetCommon = 1,
-    NetAdhoc,
-    NetInet,
-    NetParseUri,
-    NetHttp,
-    NetSsl,
-}
+    pub fn sceKernelExitGame();
+    pub fn sceKernelRegisterExitCallback(id: SceUid) -> i32;
+    pub fn sceKernelLoadExec(
+        file: *const u8,
+        param: *mut SceKernelLoadExecParam,
+    ) -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UsbModule {
-    UsbPspCm = 1,
-    UsbAcc,
-    UsbMic,
-    UsbCam,
-    UsbGps,
-}
+    pub fn sceKernelAllocPartitionMemory(
+        partition: SceSysMemPartitionId,
+        name: *const u8,
+        type_: SceSysMemBlockTypes,
+        size: u32,
+        addr: *mut c_void,
+    ) -> SceUid;
+    pub fn sceKernelGetBlockHeadAddr(blockid: SceUid) -> *mut c_void;
+    pub fn sceKernelFreePartitionMemory(blockid: SceUid) -> i32;
+    pub fn sceKernelTotalFreeMemSize() -> usize;
+    pub fn sceKernelMaxFreeMemSize() -> usize;
+    pub fn sceKernelDevkitVersion() -> u32;
+    pub fn sceKernelSetCompiledSdkVersion(version: u32) -> i32;
+    pub fn sceKernelGetCompiledSdkVersion() -> u32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum NetParam {
-    Name,
-    Ssid,
-    Secure,
-    WepKey,
-    IsStaticIp,
-    Ip,
-    NetMask,
-    Route,
-    ManualDns,
-    PrimaryDns,
-    SecondaryDns,
-    ProxyUser,
-    ProxyPass,
-    UseProxy,
-    ProxyServer,
-    ProxyPort,
-    Unknown1,
-    Unknown2,
-}
+    pub fn sceKernelLibcTime(t: *mut i32) -> i32;
+    pub fn sceKernelLibcClock() -> u32;
+    pub fn sceKernelLibcGettimeofday(
+        tp: *mut timeval,
+        tzp: *mut timezone,
+    ) -> i32;
+    pub fn sceKernelDcacheWritebackAll();
+    pub fn sceKernelDcacheWritebackInvalidateAll();
+    pub fn sceKernelDcacheWritebackRange(p: *const c_void, size: u32);
+    pub fn sceKernelDcacheWritebackInvalidateRange(
+        p: *const c_void,
+        size: u32,
+    );
+    pub fn sceKernelDcacheInvalidateRange(p: *const c_void, size: u32);
+    pub fn sceKernelIcacheInvalidateAll();
+    pub fn sceKernelIcacheInvalidateRange(p: *const c_void, size: u32);
+    pub fn sceKernelUtilsMt19937Init(
+        ctx: *mut SceKernelUtilsMt19937Context,
+        seed: u32,
+    ) -> i32;
+    pub fn sceKernelUtilsMt19937UInt(
+        ctx: *mut SceKernelUtilsMt19937Context,
+    ) -> u32;
+    pub fn sceKernelUtilsMd5Digest(
+        data: *mut u8,
+        size: u32,
+        digest: *mut u8,
+    ) -> i32;
+    pub fn sceKernelUtilsMd5BlockInit(
+        ctx: *mut SceKernelUtilsMd5Context,
+    ) -> i32;
+    pub fn sceKernelUtilsMd5BlockUpdate(
+        ctx: *mut SceKernelUtilsMd5Context,
+        data: *mut u8,
+        size: u32,
+    ) -> i32;
+    pub fn sceKernelUtilsMd5BlockResult(
+        ctx: *mut SceKernelUtilsMd5Context,
+        digest: *mut u8,
+    ) -> i32;
+    pub fn sceKernelUtilsSha1Digest(
+        data: *mut u8,
+        size: u32,
+        digest: *mut u8,
+    ) -> i32;
+    pub fn sceKernelUtilsSha1BlockInit(
+        ctx: *mut SceKernelUtilsSha1Context,
+    ) -> i32;
+    pub fn sceKernelUtilsSha1BlockUpdate(
+        ctx: *mut SceKernelUtilsSha1Context,
+        data: *mut u8,
+        size: u32,
+    ) -> i32;
+    pub fn sceKernelUtilsSha1BlockResult(
+        ctx: *mut SceKernelUtilsSha1Context,
+        digest: *mut u8,
+    ) -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UtilityNetconfAction {
-    ConnectAP,
-    DisplayStatus,
-    ConnectAdhoc,
-}
+    pub fn sceKernelRegisterSubIntrHandler(
+        int_no: i32,
+        no: i32,
+        handler: *mut c_void,
+        arg: *mut c_void,
+    ) -> i32;
+    pub fn sceKernelReleaseSubIntrHandler(int_no: i32, no: i32) -> i32;
+    pub fn sceKernelEnableSubIntr(int_no: i32, no: i32) -> i32;
+    pub fn sceKernelDisableSubIntr(int_no: i32, no: i32) -> i32;
+    pub fn QueryIntrHandlerInfo(
+        intr_code: SceUid,
+        sub_intr_code: SceUid,
+        data: *mut IntrHandlerOptionParam,
+    ) -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct UtilityMsgDialogParams {
-    pub base: UtilityDialogCommon,
-    pub unknown: i32,
-    pub mode: UtilityMsgDialogMode,
-    pub error_value: u32,
-    pub message: [u8; 512usize],
-    pub options: i32,
-    pub button_pressed: UtilityMsgDialogPressed,
-}
+    pub fn sceKernelCpuSuspendIntr() -> u32;
+    pub fn sceKernelCpuResumeIntr(flags: u32);
+    pub fn sceKernelCpuResumeIntrWithSync(flags: u32);
+    pub fn sceKernelIsCpuIntrSuspended(flags: u32) -> i32;
+    pub fn sceKernelIsCpuIntrEnable() -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UtilityNetconfAdhoc {
-    pub name: [u8; 8usize],
-    pub timeout: u32,
-}
+    pub fn sceKernelLoadModule(
+        path: *const u8,
+        flags: i32,
+        option: *mut SceKernelLMOption,
+    ) -> SceUid;
+    pub fn sceKernelLoadModuleMs(
+        path: *const u8,
+        flags: i32,
+        option: *mut SceKernelLMOption,
+    ) -> SceUid;
+    pub fn sceKernelLoadModuleByID(
+        fid: SceUid,
+        flags: i32,
+        option: *mut SceKernelLMOption,
+    ) -> SceUid;
+    pub fn sceKernelLoadModuleBufferUsbWlan(
+        buf_size: usize,
+        buf: *mut c_void,
+        flags: i32,
+        option: *mut SceKernelLMOption,
+    ) -> SceUid;
+    pub fn sceKernelStartModule(
+        mod_id: SceUid,
+        arg_size: usize,
+        argp: *mut c_void,
+        status: *mut i32,
+        option: *mut SceKernelSMOption,
+    ) -> i32;
+    pub fn sceKernelStopModule(
+        mod_id: SceUid,
+        arg_size: usize,
+        argp: *mut c_void,
+        status: *mut i32,
+        option: *mut SceKernelSMOption,
+    ) -> i32;
+    pub fn sceKernelUnloadModule(mod_id: SceUid) -> i32;
+    pub fn sceKernelSelfStopUnloadModule(
+        unknown: i32,
+        arg_size: usize,
+        argp: *mut c_void,
+    ) -> i32;
+    pub fn sceKernelStopUnloadSelfModule(
+        arg_size: usize,
+        argp: *mut c_void,
+        status: *mut i32,
+        option: *mut SceKernelSMOption,
+    ) -> i32;
+    pub fn sceKernelQueryModuleInfo(
+        mod_id: SceUid,
+        info: *mut SceKernelModuleInfo,
+    ) -> i32;
+    pub fn sceKernelGetModuleIdList(
+        read_buf: *mut SceUid,
+        read_buf_size: i32,
+        id_count: *mut i32,
+    ) -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UtilityNetconfData {
-    pub base: UtilityDialogCommon,
-    pub action: UtilityNetconfAction,
-    pub adhocparam: *mut UtilityNetconfAdhoc,
-    pub hotspot: i32,
-    pub hotspot_connected: i32,
-    pub wifisp: i32,
-}
+    pub fn sceKernelVolatileMemLock(
+        unk: i32,
+        ptr: *mut *mut c_void,
+        size: *mut i32,
+    ) -> i32;
+    pub fn sceKernelVolatileMemTryLock(
+        unk: i32,
+        ptr: *mut *mut c_void,
+        size: *mut i32,
+    ) -> i32;
+    pub fn sceKernelVolatileMemUnlock(unk: i32) -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub union UtilityNetData {
-    pub as_uint: u32,
-    pub as_string: [u8; 128usize],
-}
+    pub fn sceKernelStdin() -> SceUid;
+    pub fn sceKernelStdout() -> SceUid;
+    pub fn sceKernelStderr() -> SceUid;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UtilitySavedataMode {
-    AutoLoad,
-    AutoSave,
-    Load,
-    Save,
-    ListLoad,
-    ListSave,
-    ListDelete,
-    Delete,
-}
+    pub fn sceKernelGetThreadmanIdType(uid: SceUid) -> SceKernelIdListType;
+    pub fn sceKernelCreateThread(
+        name: *const u8,
+        entry: SceKernelThreadEntry,
+        init_priority: i32,
+        stack_size: i32,
+        attr: i32,
+        option: *mut SceKernelThreadOptParam,
+    ) -> SceUid;
+    pub fn sceKernelDeleteThread(thid: SceUid) -> i32;
+    pub fn sceKernelStartThread(
+        id: SceUid,
+        arg_len: usize,
+        arg_p: *mut c_void,
+    ) -> i32;
+    pub fn sceKernelExitThread(status: i32) -> i32;
+    pub fn sceKernelExitDeleteThread(status: i32) -> i32;
+    pub fn sceKernelTerminateThread(thid: SceUid) -> i32;
+    pub fn sceKernelTerminateDeleteThread(thid: SceUid) -> i32;
+    pub fn sceKernelSuspendDispatchThread() -> i32;
+    pub fn sceKernelResumeDispatchThread(state: i32) -> i32;
+    pub fn sceKernelSleepThread() -> i32;
+    pub fn sceKernelSleepThreadCB() -> i32;
+    pub fn sceKernelWakeupThread(thid: SceUid) -> i32;
+    pub fn sceKernelCancelWakeupThread(thid: SceUid) -> i32;
+    pub fn sceKernelSuspendThread(thid: SceUid) -> i32;
+    pub fn sceKernelResumeThread(thid: SceUid) -> i32;
+    pub fn sceKernelWaitThreadEnd(thid: SceUid, timeout: *mut u32) -> i32;
+    pub fn sceKernelWaitThreadEndCB(thid: SceUid, timeout: *mut u32) -> i32;
+    pub fn sceKernelDelayThread(delay: u32) -> i32;
+    pub fn sceKernelDelayThreadCB(delay: u32) -> i32;
+    pub fn sceKernelDelaySysClockThread(delay: *mut SceKernelSysClock) -> i32;
+    pub fn sceKernelDelaySysClockThreadCB(
+        delay: *mut SceKernelSysClock,
+    ) -> i32;
+    pub fn sceKernelChangeCurrentThreadAttr(unknown: i32, attr: i32) -> i32;
+    pub fn sceKernelChangeThreadPriority(thid: SceUid, priority: i32) -> i32;
+    pub fn sceKernelRotateThreadReadyQueue(priority: i32) -> i32;
+    pub fn sceKernelReleaseWaitThread(thid: SceUid) -> i32;
+    pub fn sceKernelGetThreadId() -> i32;
+    pub fn sceKernelGetThreadCurrentPriority() -> i32;
+    pub fn sceKernelGetThreadExitStatus(thid: SceUid) -> i32;
+    pub fn sceKernelCheckThreadStack() -> i32;
+    pub fn sceKernelGetThreadStackFreeSize(thid: SceUid) -> i32;
+    pub fn sceKernelReferThreadStatus(
+        thid: SceUid,
+        info: *mut SceKernelThreadInfo,
+    ) -> i32;
+    pub fn sceKernelReferThreadRunStatus(
+        thid: SceUid,
+        status: *mut SceKernelThreadRunStatus,
+    ) -> i32;
+    pub fn sceKernelCreateSema(
+        name: *const u8,
+        attr: u32,
+        init_val: i32,
+        max_val: i32,
+        option: *mut SceKernelSemaOptParam,
+    ) -> SceUid;
+    pub fn sceKernelDeleteSema(sema_id: SceUid) -> i32;
+    pub fn sceKernelSignalSema(sema_id: SceUid, signal: i32) -> i32;
+    pub fn sceKernelWaitSema(
+        sema_id: SceUid,
+        signal: i32,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelWaitSemaCB(
+        sema_id: SceUid,
+        signal: i32,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelPollSema(sema_id: SceUid, signal: i32) -> i32;
+    pub fn sceKernelReferSemaStatus(
+        sema_id: SceUid,
+        info: *mut SceKernelSemaInfo,
+    ) -> i32;
+    pub fn sceKernelCreateEventFlag(
+        name: *const u8,
+        attr: i32,
+        bits: i32,
+        opt: *mut SceKernelEventFlagOptParam,
+    ) -> SceUid;
+    pub fn sceKernelSetEventFlag(ev_id: SceUid, bits: u32) -> i32;
+    pub fn sceKernelClearEventFlag(ev_id: SceUid, bits: u32) -> i32;
+    pub fn sceKernelPollEventFlag(
+        ev_id: SceUid,
+        bits: u32,
+        wait: i32,
+        out_bits: *mut u32,
+    ) -> i32;
+    pub fn sceKernelWaitEventFlag(
+        ev_id: SceUid,
+        bits: u32,
+        wait: i32,
+        out_bits: *mut u32,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelWaitEventFlagCB(
+        ev_id: SceUid,
+        bits: u32,
+        wait: i32,
+        out_bits: *mut u32,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelDeleteEventFlag(ev_id: SceUid) -> i32;
+    pub fn sceKernelReferEventFlagStatus(
+        event: SceUid,
+        status: *mut SceKernelEventFlagInfo,
+    ) -> i32;
+    pub fn sceKernelCreateMbx(
+        name: *const u8,
+        attr: u32,
+        option: *mut SceKernelMbxOptParam,
+    ) -> SceUid;
+    pub fn sceKernelDeleteMbx(mbx_id: SceUid) -> i32;
+    pub fn sceKernelSendMbx(mbx_id: SceUid, message: *mut c_void) -> i32;
+    pub fn sceKernelReceiveMbx(
+        mbx_id: SceUid,
+        message: *mut *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelReceiveMbxCB(
+        mbx_id: SceUid,
+        message: *mut *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelPollMbx(mbx_id: SceUid, pmessage: *mut *mut c_void)
+        -> i32;
+    pub fn sceKernelCancelReceiveMbx(mbx_id: SceUid, num: *mut i32) -> i32;
+    pub fn sceKernelReferMbxStatus(
+        mbx_id: SceUid,
+        info: *mut SceKernelMbxInfo,
+    ) -> i32;
+    pub fn sceKernelSetAlarm(
+        clock: u32,
+        handler: SceKernelAlarmHandler,
+        common: *mut c_void,
+    ) -> SceUid;
+    pub fn sceKernelSetSysClockAlarm(
+        clock: *mut SceKernelSysClock,
+        handler: *mut SceKernelAlarmHandler,
+        common: *mut c_void,
+    ) -> SceUid;
+    pub fn sceKernelCancelAlarm(alarm_id: SceUid) -> i32;
+    pub fn sceKernelReferAlarmStatus(
+        alarm_id: SceUid,
+        info: *mut SceKernelAlarmInfo,
+    ) -> i32;
+    pub fn sceKernelCreateCallback(
+        name: *const u8,
+        func: SceKernelCallbackFunction,
+        arg: *mut c_void,
+    ) -> SceUid;
+    pub fn sceKernelReferCallbackStatus(
+        cb: SceUid,
+        status: *mut SceKernelCallbackInfo,
+    ) -> i32;
+    pub fn sceKernelDeleteCallback(cb: SceUid) -> i32;
+    pub fn sceKernelNotifyCallback(cb: SceUid, arg2: i32) -> i32;
+    pub fn sceKernelCancelCallback(cb: SceUid) -> i32;
+    pub fn sceKernelGetCallbackCount(cb: SceUid) -> i32;
+    pub fn sceKernelCheckCallback() -> i32;
+    pub fn sceKernelGetThreadmanIdList(
+        type_: SceKernelIdListType,
+        read_buf: *mut SceUid,
+        read_buf_size: i32,
+        id_count: *mut i32,
+    ) -> i32;
+    pub fn sceKernelReferSystemStatus(
+        status: *mut SceKernelSystemStatus,
+    ) -> i32;
+    pub fn sceKernelCreateMsgPipe(
+        name: *const u8,
+        part: i32,
+        attr: i32,
+        unk1: *mut c_void,
+        opt: *mut c_void,
+    ) -> SceUid;
+    pub fn sceKernelDeleteMsgPipe(uid: SceUid) -> i32;
+    pub fn sceKernelSendMsgPipe(
+        uid: SceUid,
+        message: *mut c_void,
+        size: u32,
+        unk1: i32,
+        unk2: *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelSendMsgPipeCB(
+        uid: SceUid,
+        message: *mut c_void,
+        size: u32,
+        unk1: i32,
+        unk2: *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelTrySendMsgPipe(
+        uid: SceUid,
+        message: *mut c_void,
+        size: u32,
+        unk1: i32,
+        unk2: *mut c_void,
+    ) -> i32;
+    pub fn sceKernelReceiveMsgPipe(
+        uid: SceUid,
+        message: *mut c_void,
+        size: u32,
+        unk1: i32,
+        unk2: *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelReceiveMsgPipeCB(
+        uid: SceUid,
+        message: *mut c_void,
+        size: u32,
+        unk1: i32,
+        unk2: *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelTryReceiveMsgPipe(
+        uid: SceUid,
+        message: *mut c_void,
+        size: u32,
+        unk1: i32,
+        unk2: *mut c_void,
+    ) -> i32;
+    pub fn sceKernelCancelMsgPipe(
+        uid: SceUid,
+        send: *mut i32,
+        recv: *mut i32,
+    ) -> i32;
+    pub fn sceKernelReferMsgPipeStatus(
+        uid: SceUid,
+        info: *mut SceKernelMppInfo,
+    ) -> i32;
+    pub fn sceKernelCreateVpl(
+        name: *const u8,
+        part: i32,
+        attr: i32,
+        size: u32,
+        opt: *mut SceKernelVplOptParam,
+    ) -> SceUid;
+    pub fn sceKernelDeleteVpl(uid: SceUid) -> i32;
+    pub fn sceKernelAllocateVpl(
+        uid: SceUid,
+        size: u32,
+        data: *mut *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelAllocateVplCB(
+        uid: SceUid,
+        size: u32,
+        data: *mut *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelTryAllocateVpl(
+        uid: SceUid,
+        size: u32,
+        data: *mut *mut c_void,
+    ) -> i32;
+    pub fn sceKernelFreeVpl(uid: SceUid, data: *mut c_void) -> i32;
+    pub fn sceKernelCancelVpl(uid: SceUid, num: *mut i32) -> i32;
+    pub fn sceKernelReferVplStatus(
+        uid: SceUid,
+        info: *mut SceKernelVplInfo,
+    ) -> i32;
+    pub fn sceKernelCreateFpl(
+        name: *const u8,
+        part: i32,
+        attr: i32,
+        size: u32,
+        blocks: u32,
+        opt: *mut SceKernelFplOptParam,
+    ) -> i32;
+    pub fn sceKernelDeleteFpl(uid: SceUid) -> i32;
+    pub fn sceKernelAllocateFpl(
+        uid: SceUid,
+        data: *mut *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelAllocateFplCB(
+        uid: SceUid,
+        data: *mut *mut c_void,
+        timeout: *mut u32,
+    ) -> i32;
+    pub fn sceKernelTryAllocateFpl(uid: SceUid, data: *mut *mut c_void)
+        -> i32;
+    pub fn sceKernelFreeFpl(uid: SceUid, data: *mut c_void) -> i32;
+    pub fn sceKernelCancelFpl(uid: SceUid, pnum: *mut i32) -> i32;
+    pub fn sceKernelReferFplStatus(
+        uid: SceUid,
+        info: *mut SceKernelFplInfo,
+    ) -> i32;
+    pub fn sceKernelUSec2SysClock(
+        usec: u32,
+        clock: *mut SceKernelSysClock,
+    ) -> i32;
+    pub fn sceKernelUSec2SysClockWide(usec: u32) -> i64;
+    pub fn sceKernelSysClock2USec(
+        clock: *mut SceKernelSysClock,
+        low: *mut u32,
+        high: *mut u32,
+    ) -> i32;
+    pub fn sceKernelSysClock2USecWide(
+        clock: i64,
+        low: *mut u32,
+        high: *mut u32,
+    ) -> i32;
+    pub fn sceKernelGetSystemTime(time: *mut SceKernelSysClock) -> i32;
+    pub fn sceKernelGetSystemTimeWide() -> i64;
+    pub fn sceKernelGetSystemTimeLow() -> u32;
+    pub fn sceKernelCreateVTimer(
+        name: *const u8,
+        opt: *mut SceKernelVTimerOptParam,
+    ) -> SceUid;
+    pub fn sceKernelDeleteVTimer(uid: SceUid) -> i32;
+    pub fn sceKernelGetVTimerBase(
+        uid: SceUid,
+        base: *mut SceKernelSysClock,
+    ) -> i32;
+    pub fn sceKernelGetVTimerBaseWide(uid: SceUid) -> i64;
+    pub fn sceKernelGetVTimerTime(
+        uid: SceUid,
+        time: *mut SceKernelSysClock,
+    ) -> i32;
+    pub fn sceKernelGetVTimerTimeWide(uid: SceUid) -> i64;
+    pub fn sceKernelSetVTimerTime(
+        uid: SceUid,
+        time: *mut SceKernelSysClock,
+    ) -> i32;
+    pub fn sceKernelSetVTimerTimeWide(uid: SceUid, time: i64) -> i64;
+    pub fn sceKernelStartVTimer(uid: SceUid) -> i32;
+    pub fn sceKernelStopVTimer(uid: SceUid) -> i32;
+    pub fn sceKernelSetVTimerHandler(
+        uid: SceUid,
+        time: *mut SceKernelSysClock,
+        handler: SceKernelVTimerHandler,
+        common: *mut c_void,
+    ) -> i32;
+    pub fn sceKernelSetVTimerHandlerWide(
+        uid: SceUid,
+        time: i64,
+        handler: SceKernelVTimerHandlerWide,
+        common: *mut c_void,
+    ) -> i32;
+    pub fn sceKernelCancelVTimerHandler(uid: SceUid) -> i32;
+    pub fn sceKernelReferVTimerStatus(
+        uid: SceUid,
+        info: *mut SceKernelVTimerInfo,
+    ) -> i32;
+    pub fn sceKernelRegisterThreadEventHandler(
+        name: *const u8,
+        thread_id: SceUid,
+        mask: i32,
+        handler: SceKernelThreadEventHandler,
+        common: *mut c_void,
+    ) -> SceUid;
+    pub fn sceKernelReleaseThreadEventHandler(uid: SceUid) -> i32;
+    pub fn sceKernelReferThreadEventHandlerStatus(
+        uid: SceUid,
+        info: *mut SceKernelThreadEventHandlerInfo,
+    ) -> i32;
+    pub fn sceKernelReferThreadProfiler() -> *mut DebugProfilerRegs;
+    pub fn sceKernelReferGlobalProfiler() -> *mut DebugProfilerRegs;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UtilitySavedataFocus {
-    Unknown1,
-    FirstList,
-    LastList,
-    Latest,
-    Oldest,
-    Unknown2,
-    Unknown3,
-    FirstEmpty,
-    LastEmpty,
+    pub fn sceUsbStart(
+        driver_name: *const u8,
+        size: i32,
+        args: *mut c_void,
+    ) -> i32;
+    pub fn sceUsbStop(
+        driver_name: *const u8,
+        size: i32,
+        args: *mut c_void,
+    ) -> i32;
+    pub fn sceUsbActivate(pid: u32) -> i32;
+    pub fn sceUsbDeactivate(pid: u32) -> i32;
+    pub fn sceUsbGetState() -> i32;
+    pub fn sceUsbGetDrvState(driver_name: *const u8) -> i32;
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct UtilitySavedataSFOParam {
-    pub title: [u8; 128usize],
-    pub savedata_title: [u8; 128usize],
-    pub detail: [u8; 1024usize],
-    pub parental_level: u8,
-    pub unknown: [u8; 3usize],
-}
+extern "C" {
+    pub fn sceUsbCamSetupStill(param: *mut UsbCamSetupStillParam) -> i32;
+    pub fn sceUsbCamSetupStillEx(param: *mut UsbCamSetupStillExParam) -> i32;
+    pub fn sceUsbCamStillInputBlocking(buf: *mut u8, size: usize) -> i32;
+    pub fn sceUsbCamStillInput(buf: *mut u8, size: usize) -> i32;
+    pub fn sceUsbCamStillWaitInputEnd() -> i32;
+    pub fn sceUsbCamStillPollInputEnd() -> i32;
+    pub fn sceUsbCamStillCancelInput() -> i32;
+    pub fn sceUsbCamStillGetInputLength() -> i32;
+    pub fn sceUsbCamSetupVideo(
+        param: *mut UsbCamSetupVideoParam,
+        work_area: *mut c_void,
+        work_area_size: i32,
+    ) -> i32;
+    pub fn sceUsbCamSetupVideoEx(
+        param: *mut UsbCamSetupVideoExParam,
+        work_area: *mut c_void,
+        work_area_size: i32,
+    ) -> i32;
+    pub fn sceUsbCamStartVideo() -> i32;
+    pub fn sceUsbCamStopVideo() -> i32;
+    pub fn sceUsbCamReadVideoFrameBlocking(buf: *mut u8, size: usize) -> i32;
+    pub fn sceUsbCamReadVideoFrame(buf: *mut u8, size: usize) -> i32;
+    pub fn sceUsbCamWaitReadVideoFrameEnd() -> i32;
+    pub fn sceUsbCamPollReadVideoFrameEnd() -> i32;
+    pub fn sceUsbCamGetReadVideoFrameSize() -> i32;
+    pub fn sceUsbCamSetSaturation(saturation: i32) -> i32;
+    pub fn sceUsbCamSetBrightness(brightness: i32) -> i32;
+    pub fn sceUsbCamSetContrast(contrast: i32) -> i32;
+    pub fn sceUsbCamSetSharpness(sharpness: i32) -> i32;
+    pub fn sceUsbCamSetImageEffectMode(effect_mode: UsbCamEffectMode) -> i32;
+    pub fn sceUsbCamSetEvLevel(exposure_level: UsbCamEvLevel) -> i32;
+    pub fn sceUsbCamSetReverseMode(reverse_flags: i32) -> i32;
+    pub fn sceUsbCamSetZoom(zoom: i32) -> i32;
+    pub fn sceUsbCamGetSaturation(saturation: *mut i32) -> i32;
+    pub fn sceUsbCamGetBrightness(brightness: *mut i32) -> i32;
+    pub fn sceUsbCamGetContrast(contrast: *mut i32) -> i32;
+    pub fn sceUsbCamGetSharpness(sharpness: *mut i32) -> i32;
+    pub fn sceUsbCamGetImageEffectMode(
+        effect_mode: *mut UsbCamEffectMode,
+    ) -> i32;
+    pub fn sceUsbCamGetEvLevel(exposure_level: *mut UsbCamEvLevel) -> i32;
+    pub fn sceUsbCamGetReverseMode(reverse_flags: *mut i32) -> i32;
+    pub fn sceUsbCamGetZoom(zoom: *mut i32) -> i32;
+    pub fn sceUsbCamAutoImageReverseSW(on: i32) -> i32;
+    pub fn sceUsbCamGetAutoImageReverseState() -> i32;
+    pub fn sceUsbCamGetLensDirection() -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UtilitySavedataFileData {
-    pub buf: *mut c_void,
-    pub buf_size: usize,
-    pub size: usize,
-    pub unknown: i32,
-}
+    pub fn sceUsbstorBootRegisterNotify(event_flag: SceUid) -> i32;
+    pub fn sceUsbstorBootUnregisterNotify(event_flag: u32) -> i32;
+    pub fn sceUsbstorBootSetCapacity(size: u32) -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UtilitySavedataListSaveNewData {
-    pub icon0: UtilitySavedataFileData,
-    pub title: *mut u8,
-}
+    pub fn scePowerRegisterCallback(slot: i32, cbid: SceUid) -> i32;
+    pub fn scePowerUnregisterCallback(slot: i32) -> i32;
+    pub fn scePowerIsPowerOnline() -> i32;
+    pub fn scePowerIsBatteryExist() -> i32;
+    pub fn scePowerIsBatteryCharging() -> i32;
+    pub fn scePowerGetBatteryChargingStatus() -> i32;
+    pub fn scePowerIsLowBattery() -> i32;
+    pub fn scePowerGetBatteryLifePercent() -> i32;
+    pub fn scePowerGetBatteryLifeTime() -> i32;
+    pub fn scePowerGetBatteryTemp() -> i32;
+    pub fn scePowerGetBatteryElec() -> i32;
+    pub fn scePowerGetBatteryVolt() -> i32;
+    pub fn scePowerSetCpuClockFrequency(cpufreq: i32) -> i32;
+    pub fn scePowerSetBusClockFrequency(busfreq: i32) -> i32;
+    pub fn scePowerGetCpuClockFrequency() -> i32;
+    pub fn scePowerGetCpuClockFrequencyInt() -> i32;
+    pub fn scePowerGetCpuClockFrequencyFloat() -> f32;
+    pub fn scePowerGetBusClockFrequency() -> i32;
+    pub fn scePowerGetBusClockFrequencyInt() -> i32;
+    pub fn scePowerGetBusClockFrequencyFloat() -> f32;
+    pub fn scePowerSetClockFrequency(
+        pllfreq: i32,
+        cpufreq: i32,
+        busfreq: i32,
+    ) -> i32;
+    pub fn scePowerLock(unknown: i32) -> i32;
+    pub fn scePowerUnlock(unknown: i32) -> i32;
+    pub fn scePowerTick(t: PowerTick) -> i32;
+    pub fn scePowerGetIdleTimer() -> i32;
+    pub fn scePowerIdleTimerEnable(unknown: i32) -> i32;
+    pub fn scePowerIdleTimerDisable(unknown: i32) -> i32;
+    pub fn scePowerRequestStandby() -> i32;
+    pub fn scePowerRequestSuspend() -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct SceUtilitySavedataParam {
-    pub base: UtilityDialogCommon,
-    pub mode: UtilitySavedataMode,
-    pub unknown1: i32,
-    pub overwrite: i32,
-    pub game_name: [u8; 13usize],
-    pub reserved: [u8; 3usize],
-    pub save_name: [u8; 20usize],
-    pub save_name_list: *mut [u8; 20usize],
-    pub file_name: [u8; 13usize],
-    pub reserved1: [u8; 3usize],
-    pub data_buf: *mut c_void,
-    pub data_buf_size: usize,
-    pub data_size: usize,
-    pub sfo_param: UtilitySavedataSFOParam,
-    pub icon0_file_data: UtilitySavedataFileData,
-    pub icon1_file_data: UtilitySavedataFileData,
-    pub pic1_file_data: UtilitySavedataFileData,
-    pub snd0_file_data: UtilitySavedataFileData,
-    pub new_data: *mut UtilitySavedataListSaveNewData,
-    pub focus: UtilitySavedataFocus,
-    pub unknown2: [i32; 4usize],
-    pub key: [u8; 16],
-    pub unknown3: [u8; 20],
-}
+    pub fn sceWlanDevIsPowerOn() -> i32;
+    pub fn sceWlanGetSwitchState() -> i32;
+    pub fn sceWlanGetEtherAddr(ether_addr: *mut u8) -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UtilityGameSharingMode {
-    Single = 1,
-    Multiple,
-}
+    pub fn sceWlanDevAttach() -> i32;
+    pub fn sceWlanDevDetach() -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum UtilityGameSharingDataType {
-    File = 1,
-    Memory,
-}
+    pub fn sceRtcGetTickResolution() -> u32;
+    pub fn sceRtcGetCurrentTick(tick: *mut u64) -> i32;
+    pub fn sceRtcGetCurrentClock(tm: *mut ScePspDateTime, tz: i32) -> i32;
+    pub fn sceRtcGetCurrentClockLocalTime(tm: *mut ScePspDateTime) -> i32;
+    pub fn sceRtcConvertUtcToLocalTime(
+        tick_utc: *const u64,
+        tick_local: *mut u64,
+    ) -> i32;
+    pub fn sceRtcConvertLocalTimeToUTC(
+        tick_local: *const u64,
+        tick_utc: *mut u64,
+    ) -> i32;
+    pub fn sceRtcIsLeapYear(year: i32) -> i32;
+    pub fn sceRtcGetDaysInMonth(year: i32, month: i32) -> i32;
+    pub fn sceRtcGetDayOfWeek(year: i32, month: i32, day: i32) -> i32;
+    pub fn sceRtcCheckValid(date: *const ScePspDateTime) -> i32;
+    pub fn sceRtcSetTick(date: *mut ScePspDateTime, tick: *const u64) -> i32;
+    pub fn sceRtcGetTick(date: *const ScePspDateTime, tick: *mut u64) -> i32;
+    pub fn sceRtcCompareTick(tick1: *const u64, tick2: *const u64) -> i32;
+    pub fn sceRtcTickAddTicks(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_ticks: u64,
+    ) -> i32;
+    pub fn sceRtcTickAddMicroseconds(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_ms: u64,
+    ) -> i32;
+    pub fn sceRtcTickAddSeconds(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_seconds: u64,
+    ) -> i32;
+    pub fn sceRtcTickAddMinutes(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_minutes: u64,
+    ) -> i32;
+    pub fn sceRtcTickAddHours(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_hours: u64,
+    ) -> i32;
+    pub fn sceRtcTickAddDays(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_days: u64,
+    ) -> i32;
+    pub fn sceRtcTickAddWeeks(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_weeks: u64,
+    ) -> i32;
+    pub fn sceRtcTickAddMonths(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_months: u64,
+    ) -> i32;
+    pub fn sceRtcTickAddYears(
+        dest_tick: *mut u64,
+        src_tick: *const u64,
+        num_years: u64,
+    ) -> i32;
+    pub fn sceRtcSetTime_t(date: *mut ScePspDateTime, time: i64) -> i32;
+    pub fn sceRtcGetTime_t(date: *const ScePspDateTime, time: *mut i64)
+        -> i32;
+    pub fn sceRtcSetDosTime(date: *mut ScePspDateTime, dos_time: u32) -> i32;
+    pub fn sceRtcGetDosTime(date: *mut ScePspDateTime, dos_time: u32) -> i32;
+    pub fn sceRtcSetWin32FileTime(
+        date: *mut ScePspDateTime,
+        time: *mut u64,
+    ) -> i32;
+    pub fn sceRtcGetWin32FileTime(
+        date: *mut ScePspDateTime,
+        time: *mut u64,
+    ) -> i32;
+    pub fn sceRtcParseDateTime(
+        dest_tick: *mut u64,
+        date_string: *const u8,
+    ) -> i32;
+    pub fn sceRtcFormatRFC3339(
+        psz_date_time: *mut char,
+        p_utc: *const u64,
+        time_zone_minutes: i32,
+    ) -> i32;
+    pub fn sceRtcFormatRFC3339LocalTime(
+        psz_date_time: *mut char,
+        p_utc: *const u64,
+    ) -> i32;
+    pub fn sceRtcParseRFC3339(
+        p_utc: *mut u64,
+        psz_date_time: *const u8,
+    ) -> i32;
+    pub fn sceRtcFormatRFC2822(
+        psz_date_time: *mut char,
+        p_utc: *const u64,
+        time_zone_minutes: i32,
+    ) -> i32;
+    pub fn sceRtcFormatRFC2822LocalTime(
+        psz_date_time: *mut char,
+        p_utc: *const u64,
+    ) -> i32;
+
+    pub fn sceIoOpen(
+        file: *const u8,
+        flags: i32,
+        permissions: IoPermissions,
+    ) -> SceUid;
+    pub fn sceIoOpenAsync(
+        file: *const u8,
+        flags: i32,
+        permissions: IoPermissions,
+    ) -> SceUid;
+    pub fn sceIoClose(fd: SceUid) -> i32;
+    pub fn sceIoCloseAsync(fd: SceUid) -> i32;
+    pub fn sceIoRead(fd: SceUid, data: *mut c_void, size: u32) -> i32;
+    pub fn sceIoReadAsync(fd: SceUid, data: *mut c_void, size: u32) -> i32;
+    pub fn sceIoWrite(fd: SceUid, data: *const c_void, size: usize) -> i32;
+    pub fn sceIoWriteAsync(fd: SceUid, data: *const c_void, size: u32) -> i32;
+    pub fn sceIoLseek(fd: SceUid, offset: i64, whence: IoWhence) -> i64;
+    pub fn sceIoLseekAsync(fd: SceUid, offset: i64, whence: IoWhence) -> i32;
+    pub fn sceIoLseek32(fd: SceUid, offset: i32, whence: IoWhence) -> i32;
+    pub fn sceIoLseek32Async(fd: SceUid, offset: i32, whence: IoWhence)
+        -> i32;
+    pub fn sceIoRemove(file: *const u8) -> i32;
+    pub fn sceIoMkdir(dir: *const u8, mode: IoPermissions) -> i32;
+    pub fn sceIoRmdir(path: *const u8) -> i32;
+    pub fn sceIoChdir(path: *const u8) -> i32;
+    pub fn sceIoRename(oldname: *const u8, newname: *const u8) -> i32;
+    pub fn sceIoDopen(dirname: *const u8) -> SceUid;
+    pub fn sceIoDread(fd: SceUid, dir: *mut SceIoDirent) -> i32;
+    pub fn sceIoDclose(fd: SceUid) -> i32;
+    pub fn sceIoDevctl(
+        dev: *const u8,
+        cmd: u32,
+        indata: *mut c_void,
+        inlen: i32,
+        outdata: *mut c_void,
+        outlen: i32,
+    ) -> i32;
+    pub fn sceIoAssign(
+        dev1: *const u8,
+        dev2: *const u8,
+        dev3: *const u8,
+        mode: IoAssignPerms,
+        unk1: *mut c_void,
+        unk2: i32,
+    ) -> i32;
+    pub fn sceIoUnassign(dev: *const u8) -> i32;
+    pub fn sceIoGetstat(file: *const u8, stat: *mut SceIoStat) -> i32;
+    pub fn sceIoChstat(
+        file: *const u8,
+        stat: *mut SceIoStat,
+        bits: i32,
+    ) -> i32;
+    pub fn sceIoIoctl(
+        fd: SceUid,
+        cmd: u32,
+        indata: *mut c_void,
+        inlen: i32,
+        outdata: *mut c_void,
+        outlen: i32,
+    ) -> i32;
+    pub fn sceIoIoctlAsync(
+        fd: SceUid,
+        cmd: u32,
+        indata: *mut c_void,
+        inlen: i32,
+        outdata: *mut c_void,
+        outlen: i32,
+    ) -> i32;
+    pub fn sceIoSync(device: *const u8, unk: u32) -> i32;
+    pub fn sceIoWaitAsync(fd: SceUid, res: *mut i64) -> i32;
+    pub fn sceIoWaitAsyncCB(fd: SceUid, res: *mut i64) -> i32;
+    pub fn sceIoPollAsync(fd: SceUid, res: *mut i64) -> i32;
+    pub fn sceIoGetAsyncStat(fd: SceUid, poll: i32, res: *mut i64) -> i32;
+    pub fn sceIoCancel(fd: SceUid) -> i32;
+    pub fn sceIoGetDevType(fd: SceUid) -> i32;
+    pub fn sceIoChangeAsyncPriority(fd: SceUid, pri: i32) -> i32;
+    pub fn sceIoSetAsyncCallback(
+        fd: SceUid,
+        cb: SceUid,
+        argp: *mut c_void,
+    ) -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UtilityGameSharingParams {
-    pub base: UtilityDialogCommon,
-    pub unknown1: i32,
-    pub unknown2: i32,
-    pub name: [u8; 8usize],
-    pub unknown3: i32,
-    pub unknown4: i32,
-    pub unknown5: i32,
-    pub result: i32,
-    pub filepath: *mut u8,
-    pub mode: UtilityGameSharingMode,
-    pub datatype: UtilityGameSharingDataType,
-    pub data: *mut c_void,
-    pub datasize: u32,
-}
+    pub fn sceJpegInitMJpeg() -> i32;
+    pub fn sceJpegFinishMJpeg() -> i32;
+    pub fn sceJpegCreateMJpeg(width: i32, height: i32) -> i32;
+    pub fn sceJpegDeleteMJpeg() -> i32;
+    pub fn sceJpegDecodeMJpeg(
+        jpeg_buf: *mut u8,
+        size: usize,
+        rgba: *mut c_void,
+        unk: u32,
+    ) -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct UtilityHtmlViewerParam {
-    pub base: UtilityDialogCommon,
-    pub memaddr: *mut c_void,
-    pub memsize: u32,
-    pub unknown1: i32,
-    pub unknown2: i32,
-    pub initialurl: *mut u8,
-    pub numtabs: u32,
-    pub interfacemode: UtilityHtmlViewerInterfaceMode,
-    pub options: i32,
-    pub dldirname: *mut u8,
-    pub dlfilename: *mut u8,
-    pub uldirname: *mut u8,
-    pub ulfilename: *mut u8,
-    pub cookiemode: UtilityHtmlViewerCookieMode,
-    pub unknown3: u32,
-    pub homeurl: *mut u8,
-    pub textsize: UtilityHtmlViewerTextSize,
-    pub displaymode: UtilityHtmlViewerDisplayMode,
-    pub connectmode: UtilityHtmlViewerConnectMode,
-    pub disconnectmode: UtilityHtmlViewerDisconnectMode,
-    pub memused: u32,
-    pub unknown4: [i32; 10usize],
-}
+    pub fn sceUmdCheckMedium() -> i32;
+    pub fn sceUmdGetDiscInfo(info: *mut UmdInfo) -> i32;
+    pub fn sceUmdActivate(unit: i32, drive: *const u8) -> i32;
+    pub fn sceUmdDeactivate(unit: i32, drive: *const u8) -> i32;
+    pub fn sceUmdWaitDriveStat(state: i32) -> i32;
+    pub fn sceUmdWaitDriveStatWithTimer(state: i32, timeout: u32) -> i32;
+    pub fn sceUmdWaitDriveStatCB(state: i32, timeout: u32) -> i32;
+    pub fn sceUmdCancelWaitDriveStat() -> i32;
+    pub fn sceUmdGetDriveStat() -> i32;
+    pub fn sceUmdGetErrorStat() -> i32;
+    pub fn sceUmdRegisterUMDCallBack(cbid: i32) -> i32;
+    pub fn sceUmdUnRegisterUMDCallBack(cbid: i32) -> i32;
+    pub fn sceUmdReplacePermit() -> i32;
+    pub fn sceUmdReplaceProhibit() -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityHtmlViewerInterfaceMode {
-    Full,
-    Limited,
-    None,
-}
+    pub fn sceMpegInit() -> i32;
+    pub fn sceMpegFinish();
+    pub fn sceMpegRingbufferQueryMemSize(packets: i32) -> i32;
+    pub fn sceMpegRingbufferConstruct(
+        ringbuffer: *mut SceMpegRingbuffer,
+        packets: i32,
+        data: *mut c_void,
+        size: i32,
+        callback: SceMpegRingbufferCb,
+        cb_param: *mut c_void,
+    ) -> i32;
+    pub fn sceMpegRingbufferDestruct(ringbuffer: *mut SceMpegRingbuffer);
+    pub fn sceMpegRingbufferAvailableSize(
+        ringbuffer: *mut SceMpegRingbuffer,
+    ) -> i32;
+    pub fn sceMpegRingbufferPut(
+        ringbuffer: *mut SceMpegRingbuffer,
+        num_packets: i32,
+        available: i32,
+    ) -> i32;
+    pub fn sceMpegQueryMemSize(unk: i32) -> i32;
+    pub fn sceMpegCreate(
+        handle: SceMpeg,
+        data: *mut c_void,
+        size: i32,
+        ringbuffer: *mut SceMpegRingbuffer,
+        frame_width: i32,
+        unk1: i32,
+        unk2: i32,
+    ) -> i32;
+    pub fn sceMpegDelete(handle: SceMpeg);
+    pub fn sceMpegQueryStreamOffset(
+        handle: SceMpeg,
+        buffer: *mut c_void,
+        offset: *mut i32,
+    ) -> i32;
+    pub fn sceMpegQueryStreamSize(buffer: *mut c_void, size: *mut i32) -> i32;
+    pub fn sceMpegRegistStream(
+        handle: SceMpeg,
+        stream_id: i32,
+        unk: i32,
+    ) -> SceMpegStream;
+    pub fn sceMpegUnRegistStream(handle: SceMpeg, stream: SceMpegStream);
+    pub fn sceMpegFlushAllStream(handle: SceMpeg) -> i32;
+    pub fn sceMpegMallocAvcEsBuf(handle: SceMpeg) -> *mut c_void;
+    pub fn sceMpegFreeAvcEsBuf(handle: SceMpeg, buf: *mut c_void);
+    pub fn sceMpegQueryAtracEsSize(
+        handle: SceMpeg,
+        es_size: *mut i32,
+        out_size: *mut i32,
+    ) -> i32;
+    pub fn sceMpegInitAu(
+        handle: SceMpeg,
+        es_buffer: *mut c_void,
+        au: *mut SceMpegAu,
+    ) -> i32;
+    pub fn sceMpegGetAvcAu(
+        handle: SceMpeg,
+        stream: SceMpegStream,
+        au: *mut SceMpegAu,
+        unk: *mut i32,
+    ) -> i32;
+    pub fn sceMpegAvcDecodeMode(
+        handle: SceMpeg,
+        mode: *mut SceMpegAvcMode,
+    ) -> i32;
+    pub fn sceMpegAvcDecode(
+        handle: SceMpeg,
+        au: *mut SceMpegAu,
+        iframe_width: i32,
+        buffer: *mut c_void,
+        init: *mut i32,
+    ) -> i32;
+    pub fn sceMpegAvcDecodeStop(
+        handle: SceMpeg,
+        frame_width: i32,
+        buffer: *mut c_void,
+        status: *mut i32,
+    ) -> i32;
+    pub fn sceMpegGetAtracAu(
+        handle: SceMpeg,
+        stream: SceMpegStream,
+        au: *mut SceMpegAu,
+        unk: *mut c_void,
+    ) -> i32;
+    pub fn sceMpegAtracDecode(
+        handle: SceMpeg,
+        au: *mut SceMpegAu,
+        buffer: *mut c_void,
+        init: i32,
+    ) -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityHtmlViewerCookieMode {
-    Disabled = 0,
-    Enabled,
-    Confirm,
-    Default,
-}
+    pub fn sceMpegBaseYCrCbCopyVme(
+        yuv_buffer: *mut c_void,
+        buffer: *mut i32,
+        type_: i32,
+    ) -> i32;
+    pub fn sceMpegBaseCscInit(width: i32) -> i32;
+    pub fn sceMpegBaseCscVme(
+        rgb_buffer: *mut c_void,
+        rgb_buffer2: *mut c_void,
+        width: i32,
+        y_cr_cb_buffer: *mut SceMpegYCrCbBuffer,
+    ) -> i32;
+    pub fn sceMpegbase_BEA18F91(lli: *mut SceMpegLLI) -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityHtmlViewerTextSize {
-    Large,
-    Normal,
-    Small,
-}
+    pub fn sceHprmPeekCurrentKey(key: *mut i32) -> i32;
+    pub fn sceHprmPeekLatch(latch: *mut [u32; 4]) -> i32;
+    pub fn sceHprmReadLatch(latch: *mut [u32; 4]) -> i32;
+    pub fn sceHprmIsHeadphoneExist() -> i32;
+    pub fn sceHprmIsRemoteExist() -> i32;
+    pub fn sceHprmIsMicrophoneExist() -> i32;
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityHtmlViewerDisplayMode {
-    Normal,
-    Fit,
-    SmartFit,
-}
+    pub fn sceGuDepthBuffer(zbp: *mut c_void, zbw: i32);
+    pub fn sceGuDispBuffer(
+        width: i32,
+        height: i32,
+        dispbp: *mut c_void,
+        dispbw: i32,
+    );
+    pub fn sceGuDrawBuffer(
+        psm: DisplayPixelFormat,
+        fbp: *mut c_void,
+        fbw: i32,
+    );
+    pub fn sceGuDrawBufferList(
+        psm: DisplayPixelFormat,
+        fbp: *mut c_void,
+        fbw: i32,
+    );
+    pub fn sceGuDisplay(state: bool) -> bool;
+    pub fn sceGuDepthFunc(function: DepthFunc);
+    pub fn sceGuDepthMask(mask: i32);
+    pub fn sceGuDepthOffset(offset: i32);
+    pub fn sceGuDepthRange(near: i32, far: i32);
+    pub fn sceGuFog(near: f32, far: f32, color: u32);
+    pub fn sceGuInit();
+    pub fn sceGuTerm();
+    pub fn sceGuBreak(mode: i32);
+    pub fn sceGuContinue();
+    pub fn sceGuSetCallback(
+        signal: GuCallbackId,
+        callback: GuCallback,
+    ) -> GuCallback;
+    pub fn sceGuSignal(behavior: SignalBehavior, signal: i32);
+    pub fn sceGuSendCommandf(cmd: GeCommand, argument: f32);
+    pub fn sceGuSendCommandi(cmd: GeCommand, argument: i32);
+    pub fn sceGuGetMemory(size: i32) -> *mut c_void;
+    pub fn sceGuStart(context_type: GuContextType, list: *mut c_void);
+    pub fn sceGuFinish() -> i32;
+    pub fn sceGuFinishId(id: u32) -> i32;
+    pub fn sceGuCallList(list: *const c_void);
+    pub fn sceGuCallMode(mode: i32);
+    pub fn sceGuCheckList() -> i32;
+    pub fn sceGuSendList(
+        mode: GuQueueMode,
+        list: *const c_void,
+        context: *mut GeContext,
+    );
+    pub fn sceGuSwapBuffers() -> *mut c_void;
+    pub fn sceGuSync(
+        mode: GuSyncMode,
+        behavior: GuSyncBehavior,
+    ) -> GeListState;
+    pub fn sceGuDrawArray(
+        prim: GuPrimitive,
+        vtype: i32,
+        count: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
+    pub fn sceGuBeginObject(
+        vtype: i32,
+        count: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
+    pub fn sceGuEndObject();
+    pub fn sceGuSetStatus(state: GuState, status: i32);
+    pub fn sceGuGetStatus(state: GuState) -> bool;
+    pub fn sceGuSetAllStatus(status: i32);
+    pub fn sceGuGetAllStatus() -> i32;
+    pub fn sceGuEnable(state: GuState);
+    pub fn sceGuDisable(state: GuState);
+    pub fn sceGuLight(
+        light: i32,
+        type_: LightType,
+        components: i32,
+        position: &ScePspFVector3,
+    );
+    pub fn sceGuLightAtt(light: i32, atten0: f32, atten1: f32, atten2: f32);
+    pub fn sceGuLightColor(light: i32, component: i32, color: u32);
+    pub fn sceGuLightMode(mode: LightMode);
+    pub fn sceGuLightSpot(
+        light: i32,
+        direction: &ScePspFVector3,
+        exponent: f32,
+        cutoff: f32,
+    );
+    pub fn sceGuClear(flags: i32);
+    pub fn sceGuClearColor(color: u32);
+    pub fn sceGuClearDepth(depth: u32);
+    pub fn sceGuClearStencil(stencil: u32);
+    pub fn sceGuPixelMask(mask: u32);
+    pub fn sceGuColor(color: u32);
+    pub fn sceGuColorFunc(func: ColorFunc, color: u32, mask: u32);
+    pub fn sceGuColorMaterial(components: i32);
+    pub fn sceGuAlphaFunc(func: AlphaFunc, value: i32, mask: i32);
+    pub fn sceGuAmbient(color: u32);
+    pub fn sceGuAmbientColor(color: u32);
+    pub fn sceGuBlendFunc(
+        op: BlendOp,
+        src: BlendSrc,
+        dest: BlendDst,
+        src_fix: u32,
+        dest_fix: u32,
+    );
+    pub fn sceGuMaterial(components: i32, color: u32);
+    pub fn sceGuModelColor(
+        emissive: u32,
+        ambient: u32,
+        diffuse: u32,
+        specular: u32,
+    );
+    pub fn sceGuStencilFunc(func: StencilFunc, ref_: i32, mask: i32);
+    pub fn sceGuStencilOp(
+        fail: StencilOperation,
+        zfail: StencilOperation,
+        zpass: StencilOperation,
+    );
+    pub fn sceGuSpecular(power: f32);
+    pub fn sceGuFrontFace(order: FrontFaceDirection);
+    pub fn sceGuLogicalOp(op: LogicalOperation);
+    pub fn sceGuSetDither(matrix: &ScePspIMatrix4);
+    pub fn sceGuShadeModel(mode: ShadingModel);
+    pub fn sceGuCopyImage(
+        psm: DisplayPixelFormat,
+        sx: i32,
+        sy: i32,
+        width: i32,
+        height: i32,
+        srcw: i32,
+        src: *mut c_void,
+        dx: i32,
+        dy: i32,
+        destw: i32,
+        dest: *mut c_void,
+    );
+    pub fn sceGuTexEnvColor(color: u32);
+    pub fn sceGuTexFilter(min: TextureFilter, mag: TextureFilter);
+    pub fn sceGuTexFlush();
+    pub fn sceGuTexFunc(tfx: TextureEffect, tcc: TextureColorComponent);
+    pub fn sceGuTexImage(
+        mipmap: MipmapLevel,
+        width: i32,
+        height: i32,
+        tbw: i32,
+        tbp: *const c_void,
+    );
+    pub fn sceGuTexLevelMode(mode: TextureLevelMode, bias: f32);
+    pub fn sceGuTexMapMode(mode: TextureMapMode, a1: u32, a2: u32);
+    pub fn sceGuTexMode(
+        tpsm: TexturePixelFormat,
+        maxmips: i32,
+        a2: i32,
+        swizzle: i32,
+    );
+    pub fn sceGuTexOffset(u: f32, v: f32);
+    pub fn sceGuTexProjMapMode(mode: TextureProjectionMapMode);
+    pub fn sceGuTexScale(u: f32, v: f32);
+    pub fn sceGuTexSlope(slope: f32);
+    pub fn sceGuTexSync();
+    pub fn sceGuTexWrap(u: GuTexWrapMode, v: GuTexWrapMode);
+    pub fn sceGuClutLoad(num_blocks: i32, cbp: *const c_void);
+    pub fn sceGuClutMode(
+        cpsm: ClutPixelFormat,
+        shift: u32,
+        mask: u32,
+        a3: u32,
+    );
+    pub fn sceGuOffset(x: u32, y: u32);
+    pub fn sceGuScissor(x: i32, y: i32, w: i32, h: i32);
+    pub fn sceGuViewport(cx: i32, cy: i32, width: i32, height: i32);
+    pub fn sceGuDrawBezier(
+        v_type: i32,
+        u_count: i32,
+        v_count: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
+    pub fn sceGuPatchDivide(ulevel: u32, vlevel: u32);
+    pub fn sceGuPatchFrontFace(a0: u32);
+    pub fn sceGuPatchPrim(prim: PatchPrimitive);
+    pub fn sceGuDrawSpline(
+        v_type: i32,
+        u_count: i32,
+        v_count: i32,
+        u_edge: i32,
+        v_edge: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
+    pub fn sceGuSetMatrix(type_: MatrixMode, matrix: &ScePspFMatrix4);
+    pub fn sceGuBoneMatrix(index: u32, matrix: &ScePspFMatrix4);
+    pub fn sceGuMorphWeight(index: i32, weight: f32);
+    pub fn sceGuDrawArrayN(
+        primitive_type: GuPrimitive,
+        v_type: i32,
+        count: i32,
+        a3: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityHtmlViewerConnectMode {
-    Last,
-    ManualOnce,
-    ManualAll,
-}
+    pub fn sceGumDrawArray(
+        prim: GuPrimitive,
+        v_type: i32,
+        count: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
+    pub fn sceGumDrawArrayN(
+        prim: GuPrimitive,
+        v_type: i32,
+        count: i32,
+        a3: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
+    pub fn sceGumDrawBezier(
+        v_type: i32,
+        u_count: i32,
+        v_count: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
+    pub fn sceGumDrawSpline(
+        v_type: i32,
+        u_count: i32,
+        v_count: i32,
+        u_edge: i32,
+        v_edge: i32,
+        indices: *const c_void,
+        vertices: *const c_void,
+    );
+    pub fn sceGumFastInverse();
+    pub fn sceGumFullInverse();
+    pub fn sceGumLoadIdentity();
+    pub fn sceGumLoadMatrix(m: &ScePspFMatrix4);
+    pub fn sceGumLookAt(
+        eye: &ScePspFVector3,
+        center: &ScePspFVector3,
+        up: &ScePspFVector3,
+    );
+    pub fn sceGumMatrixMode(mode: MatrixMode);
+    pub fn sceGumMultMatrix(m: &ScePspFMatrix4);
+    pub fn sceGumOrtho(
+        left: f32,
+        right: f32,
+        bottom: f32,
+        top: f32,
+        near: f32,
+        far: f32,
+    );
+    pub fn sceGumPerspective(fovy: f32, aspect: f32, near: f32, far: f32);
+    pub fn sceGumPopMatrix();
+    pub fn sceGumPushMatrix();
+    pub fn sceGumRotateX(angle: f32);
+    pub fn sceGumRotateY(angle: f32);
+    pub fn sceGumRotateZ(angle: f32);
+    pub fn sceGumRotateXYZ(v: &ScePspFVector3);
+    pub fn sceGumRotateZYX(v: &ScePspFVector3);
+    pub fn sceGumScale(v: &ScePspFVector3);
+    pub fn sceGumStoreMatrix(m: &mut ScePspFMatrix4);
+    pub fn sceGumTranslate(v: &ScePspFVector3);
+    pub fn sceGumUpdateMatrix();
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum UtilityHtmlViewerDisconnectMode {
-    Enable,
-    Disable,
-    Confirm,
-}
+    pub fn sceMp3ReserveMp3Handle(args: *mut SceMp3InitArg) -> i32;
+    pub fn sceMp3ReleaseMp3Handle(handle: Mp3Handle) -> i32;
+    pub fn sceMp3InitResource() -> i32;
+    pub fn sceMp3TermResource() -> i32;
+    pub fn sceMp3Init(handle: Mp3Handle) -> i32;
+    pub fn sceMp3Decode(handle: Mp3Handle, dst: *mut *mut i16) -> i32;
+    pub fn sceMp3GetInfoToAddStreamData(
+        handle: Mp3Handle,
+        dst: *mut *mut u8,
+        to_write: *mut i32,
+        src_pos: *mut i32,
+    ) -> i32;
+    pub fn sceMp3NotifyAddStreamData(handle: Mp3Handle, size: i32) -> i32;
+    pub fn sceMp3CheckStreamDataNeeded(handle: Mp3Handle) -> i32;
+    pub fn sceMp3SetLoopNum(handle: Mp3Handle, loop_: i32) -> i32;
+    pub fn sceMp3GetLoopNum(handle: Mp3Handle) -> i32;
+    pub fn sceMp3GetSumDecodedSample(handle: Mp3Handle) -> i32;
+    pub fn sceMp3GetMaxOutputSample(handle: Mp3Handle) -> i32;
+    pub fn sceMp3GetSamplingRate(handle: Mp3Handle) -> i32;
+    pub fn sceMp3GetBitRate(handle: Mp3Handle) -> i32;
+    pub fn sceMp3GetMp3ChannelNum(handle: Mp3Handle) -> i32;
+    pub fn sceMp3ResetPlayPosition(handle: Mp3Handle) -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceUtilityOskData {
-    pub unk_00: i32,
-    pub unk_04: i32,
-    pub language: SceUtilityOskInputLanguage,
-    pub unk_12: i32,
-    pub inputtype: SceUtilityOskInputType,
-    pub lines: i32,
-    pub unk_24: i32,
-    pub desc: *mut u16,
-    pub intext: *mut u16,
-    pub outtextlength: i32,
-    pub outtext: *mut u16,
-    pub result: SceUtilityOskResult,
-    pub outtextlimit: i32,
-}
+    pub fn sceRegOpenRegistry(
+        reg: *mut Key,
+        mode: i32,
+        handle: *mut RegHandle,
+    ) -> i32;
+    pub fn sceRegFlushRegistry(handle: RegHandle) -> i32;
+    pub fn sceRegCloseRegistry(handle: RegHandle) -> i32;
+    pub fn sceRegOpenCategory(
+        handle: RegHandle,
+        name: *const u8,
+        mode: i32,
+        dir_handle: *mut RegHandle,
+    ) -> i32;
+    pub fn sceRegRemoveCategory(handle: RegHandle, name: *const u8) -> i32;
+    pub fn sceRegCloseCategory(dir_handle: RegHandle) -> i32;
+    pub fn sceRegFlushCategory(dir_handle: RegHandle) -> i32;
+    pub fn sceRegGetKeyInfo(
+        dir_handle: RegHandle,
+        name: *const u8,
+        key_handle: *mut RegHandle,
+        type_: *mut KeyType,
+        size: *mut usize,
+    ) -> i32;
+    pub fn sceRegGetKeyInfoByName(
+        dir_handle: RegHandle,
+        name: *const u8,
+        type_: *mut KeyType,
+        size: *mut usize,
+    ) -> i32;
+    pub fn sceRegGetKeyValue(
+        dir_handle: RegHandle,
+        key_handle: RegHandle,
+        buf: *mut c_void,
+        size: usize,
+    ) -> i32;
+    pub fn sceRegGetKeyValueByName(
+        dir_handle: RegHandle,
+        name: *const u8,
+        buf: *mut c_void,
+        size: usize,
+    ) -> i32;
+    pub fn sceRegSetKeyValue(
+        dir_handle: RegHandle,
+        name: *const u8,
+        buf: *const c_void,
+        size: usize,
+    ) -> i32;
+    pub fn sceRegGetKeysNum(dir_handle: RegHandle, num: *mut i32) -> i32;
+    pub fn sceRegGetKeys(dir_handle: RegHandle, buf: *mut u8, num: i32)
+        -> i32;
+    pub fn sceRegCreateKey(
+        dir_handle: RegHandle,
+        name: *const u8,
+        type_: i32,
+        size: usize,
+    ) -> i32;
+    pub fn sceRegRemoveRegistry(key: *mut Key) -> i32;
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceUtilityOskParams {
-    pub base: UtilityDialogCommon,
-    pub datacount: i32,
-    pub data: *mut SceUtilityOskData,
-    pub state: SceUtilityOskState,
-    pub unk_60: i32,
-}
+    pub fn sceOpenPSIDGetOpenPSID(openpsid: *mut OpenPSID) -> i32;
 
-extern "C" {
     pub fn sceUtilityMsgDialogInitStart(
         params: *mut UtilityMsgDialogParams,
     ) -> i32;
@@ -4594,25 +4444,11 @@ extern "C" {
     pub fn sceUtilityUnloadUsbModule(module: UsbModule) -> i32;
     pub fn sceUtilityLoadModule(module: Module) -> i32;
     pub fn sceUtilityUnloadModule(module: Module) -> i32;
-}
-
-extern "C" {
     pub fn sceUtilityCreateNetParam(conf: i32) -> i32;
     pub fn sceUtilitySetNetParam(param: NetParam, val: *const c_void) -> i32;
     pub fn sceUtilityCopyNetParam(src: i32, dest: i32) -> i32;
     pub fn sceUtilityDeleteNetParam(conf: i32) -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceNetMallocStat {
-    pub pool: i32,
-    pub maximum: i32,
-    pub free: i32,
-}
 
-extern "C" {
     pub fn sceNetInit(
         poolsize: i32,
         calloutprio: i32,
@@ -4627,59 +4463,7 @@ extern "C" {
     pub fn sceNetEtherNtostr(mac: *mut u8, name: *mut u8);
     pub fn sceNetGetLocalEtherAddr(mac: *mut u8) -> i32;
     pub fn sceNetGetMallocStat(stat: *mut SceNetMallocStat) -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceNetAdhocctlAdhocId {
-    pub unknown: i32,
-    pub adhoc_id: [u8; 9usize],
-    pub unk: [u8; 3usize],
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct SceNetAdhocctlPeerInfo {
-    pub next: *mut SceNetAdhocctlPeerInfo,
-    pub nickname: [u8; 128usize],
-    pub mac: [u8; 6usize],
-    pub unknown: [u8; 6usize],
-    pub timestamp: u32,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceNetAdhocctlScanInfo {
-    pub next: *mut SceNetAdhocctlScanInfo,
-    pub channel: i32,
-    pub name: [u8; 8usize],
-    pub bssid: [u8; 6usize],
-    pub unknown: [u8; 2usize],
-    pub unknown2: i32,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceNetAdhocctlGameModeInfo {
-    pub count: i32,
-    pub macs: [[u8; 6usize]; 16usize],
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub struct SceNetAdhocctlParams {
-    pub channel: i32,
-    pub name: [u8; 8usize],
-    pub bssid: [u8; 6usize],
-    pub nickname: [u8; 128usize],
-}
 
-extern "C" {
     pub fn sceNetAdhocctlInit(
         stacksize: i32,
         priority: i32,
@@ -4739,46 +4523,7 @@ extern "C" {
     pub fn sceNetAdhocctlGetParameter(
         params: *mut SceNetAdhocctlParams,
     ) -> i32;
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceNetAdhocPtpStat {
-    pub next: *mut SceNetAdhocPtpStat,
-    pub ptp_id: i32,
-    pub mac: [u8; 6usize],
-    pub peermac: [u8; 6usize],
-    pub port: u16,
-    pub peerport: u16,
-    pub sent_data: u32,
-    pub rcvd_data: u32,
-    pub state: ScePspnetAdhocPtpState,
-}
-
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum ScePspnetAdhocPtpState {
-    Closed,
-    Listen,
-    SynSent,
-    SynReceived,
-    Established,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct SceNetAdhocPdpStat {
-    pub next: *mut SceNetAdhocPdpStat,
-    pub pdp_id: i32,
-    pub mac: [u8; 6usize],
-    pub port: u16,
-    pub rcvd_data: u32,
-}
 
-extern "C" {
     pub fn sceNetAdhocInit() -> i32;
     pub fn sceNetAdhocTerm() -> i32;
     pub fn sceNetAdhocPdpCreate(
@@ -4872,24 +4617,6 @@ extern "C" {
     ) -> i32;
 }
 
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub struct AdhocPoolStat {
-    pub size: i32,
-    pub maxsize: i32,
-    pub freesize: i32,
-}
-
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum AdhocMatchingMode {
-    Host = 1,
-    Client,
-    Ptp,
-}
-
 extern "C" {
     pub fn sceNetAdhocMatchingInit(memsize: i32) -> i32;
     pub fn sceNetAdhocMatchingTerm() -> i32;
@@ -4961,95 +4688,6 @@ extern "C" {
         -> i32;
 }
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum ApctlState {
-    Disconnected,
-    Scanning,
-    Joining,
-    GettingIp,
-    GotIp,
-    EapAuth,
-    KeyExchange,
-}
-
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum ApctlEvent {
-    ConnectRequest,
-    ScanRequest,
-    ScanComplete,
-    Established,
-    GetIp,
-    DisconnectRequest,
-    Error,
-    Info,
-    EapAuth,
-    KeyExchange,
-    Reconnect,
-}
-
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum ApctlInfo {
-    ProfileName,
-    Bssid,
-    Ssid,
-    SsidLength,
-    SecurityType,
-    Strength,
-    Channel,
-    PowerSave,
-    Ip,
-    SubnetMask,
-    Gateway,
-    PrimaryDns,
-    SecondaryDns,
-    UseProxy,
-    ProxyUrl,
-    ProxyPort,
-    EapType,
-    StartBrowser,
-    Wifisp,
-}
-
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Clone, Copy)]
-pub enum ApctlInfoSecurityType {
-    None,
-    Wep,
-    Wpa,
-}
-
-#[repr(C)]
-#[cfg_attr(feature = "extra_traits", allow(missing_debug_implementations))]
-#[derive(Copy, Clone)]
-pub union SceNetApctlInfo {
-    pub name: [u8; 64usize],
-    pub bssid: [u8; 6usize],
-    pub ssid: [u8; 32usize],
-    pub ssid_length: u32,
-    pub security_type: u32,
-    pub strength: u8,
-    pub channel: u8,
-    pub power_save: u8,
-    pub ip: [u8; 16usize],
-    pub sub_net_mask: [u8; 16usize],
-    pub gateway: [u8; 16usize],
-    pub primary_dns: [u8; 16usize],
-    pub secondary_dns: [u8; 16usize],
-    pub use_proxy: u32,
-    pub proxy_url: [u8; 128usize],
-    pub proxy_port: u16,
-    pub eap_type: u32,
-    pub start_browser: u32,
-    pub wifisp: u32,
-}
-
 extern "C" {
     pub fn sceNetApctlInit(stack_size: i32, init_priority: i32) -> i32;
     pub fn sceNetApctlTerm() -> i32;
@@ -5065,14 +4703,7 @@ extern "C" {
     pub fn sceNetApctlConnect(conn_index: i32) -> i32;
     pub fn sceNetApctlDisconnect() -> i32;
     pub fn sceNetApctlGetState(pstate: *mut ApctlState) -> i32;
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct sockaddr(pub u32);
 
-extern "C" {
     pub fn sceNetInetInit() -> i32;
     pub fn sceNetInetTerm() -> i32;
     pub fn sceNetInetAccept(
@@ -5137,33 +4768,12 @@ extern "C" {
     pub fn sceNetInetSocket(domain: i32, type_: i32, protocol: i32) -> i32;
     pub fn sceNetInetClose(s: i32) -> i32;
     pub fn sceNetInetGetErrno() -> i32;
-}
 
-extern "C" {
     pub fn sceSslInit(unknown1: i32) -> i32;
     pub fn sceSslEnd() -> i32;
     pub fn sceSslGetUsedMemoryMax(memory: *mut u32) -> i32;
     pub fn sceSslGetUsedMemoryCurrent(memory: *mut u32) -> i32;
-}
-
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum HttpMethod {
-    Get,
-    Post,
-    Head,
-}
 
-#[repr(u32)]
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-pub enum HttpAuthType {
-    Basic,
-    Digest,
-}
-
-extern "C" {
     pub fn sceHttpInit(unknown1: u32) -> i32;
     pub fn sceHttpEnd() -> i32;
     pub fn sceHttpCreateTemplate(
@@ -5277,14 +4887,7 @@ extern "C" {
         free_func: HttpFreeFunction,
         realloc_func: HttpReallocFunction,
     ) -> i32;
-}
-
-#[cfg_attr(feature = "extra_traits", derive(Debug))]
-#[derive(Copy, Clone)]
-#[repr(C)]
-pub struct in_addr(pub u32);
 
-extern "C" {
     pub fn sceNetResolverInit() -> i32;
     pub fn sceNetResolverCreate(
         rid: *mut i32,