#pragma once enum CellCrossControllerError : u32 { CELL_CROSS_CONTROLLER_ERROR_CANCEL = 0x8002cd80, CELL_CROSS_CONTROLLER_ERROR_NETWORK = 0x8002cd81, CELL_CROSS_CONTROLLER_ERROR_OUT_OF_MEMORY = 0x8002cd90, CELL_CROSS_CONTROLLER_ERROR_FATAL = 0x8002cd91, CELL_CROSS_CONTROLLER_ERROR_INVALID_PKG_FILENAME = 0x8002cd92, CELL_CROSS_CONTROLLER_ERROR_INVALID_SIG_FILENAME = 0x8002cd93, CELL_CROSS_CONTROLLER_ERROR_INVALID_ICON_FILENAME = 0x8002cd94, CELL_CROSS_CONTROLLER_ERROR_INVALID_VALUE = 0x8002cd95, CELL_CROSS_CONTROLLER_ERROR_PKG_FILE_OPEN = 0x8002cd96, CELL_CROSS_CONTROLLER_ERROR_SIG_FILE_OPEN = 0x8002cd97, CELL_CROSS_CONTROLLER_ERROR_ICON_FILE_OPEN = 0x8002cd98, CELL_CROSS_CONTROLLER_ERROR_INVALID_STATE = 0x8002cd99, CELL_CROSS_CONTROLLER_ERROR_INVALID_PKG_FILE = 0x8002cd9a, CELL_CROSS_CONTROLLER_ERROR_INTERNAL = 0x8002cda0, }; enum { CELL_CROSS_CONTROLLER_STATUS_INITIALIZED = 1, CELL_CROSS_CONTROLLER_STATUS_FINALIZED = 2 }; enum { CELL_CROSS_CONTROLLER_PKG_APP_VER_LEN = 6, // e.g. 01.00 CELL_CROSS_CONTROLLER_PKG_TITLE_ID_LEN = 10, // e.g. NEKO12345 CELL_CROSS_CONTROLLER_PKG_TITLE_LEN = 52, // e.g. Cat Simulator 5 // Undefined helper value CELL_CROSS_CONTROLLER_PARAM_FILE_NAME_LEN = 255, }; struct CellCrossControllerParam { vm::bcptr pPackageFileName; vm::bcptr pSignatureFileName; vm::bcptr pIconFileName; vm::bptr option; }; struct CellCrossControllerPackageInfo { vm::bcptr pTitle; vm::bcptr pTitleId; vm::bcptr pAppVer; }; using CellCrossControllerCallback = void(s32 status, s32 errorCode, vm::ptr option, vm::ptr userdata);