mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-06-02 09:06:54 +02:00
110 lines
3.1 KiB
C
110 lines
3.1 KiB
C
#pragma once
|
|
|
|
/// @brief The Pico Loader API version supported by this header file.
|
|
#define PICO_LOADER_API_VERSION 3
|
|
|
|
/// @brief Enum to specify the drive to boot from.
|
|
typedef enum
|
|
{
|
|
/// @brief Flashcard through DLDI.
|
|
PLOAD_BOOT_DRIVE_DLDI = 0,
|
|
|
|
/// @brief DSi SD card.
|
|
PLOAD_BOOT_DRIVE_DSI_SD = 1,
|
|
|
|
/// @brief AGB semihosting on the IS-NITRO-EMULATOR.
|
|
PLOAD_BOOT_DRIVE_AGB_SEMIHOSTING = 2,
|
|
|
|
/// @brief Flag to indicate that a multiboot rom needs to be loaded that is already in memory.
|
|
PLOAD_BOOT_DRIVE_MULTIBOOT_FLAG = 1u << 15
|
|
} PicoLoaderBootDrive;
|
|
|
|
/// @brief Struct containing the load params.
|
|
typedef struct
|
|
{
|
|
/// @brief The path of the rom to load.
|
|
char romPath[256];
|
|
|
|
/// @brief The path to the save file to use.
|
|
char savePath[256];
|
|
|
|
/// @brief The actual length of the argv arguments buffer.
|
|
u32 argumentsLength;
|
|
|
|
/// @brief Argv arguments buffer.
|
|
char arguments[256];
|
|
} pload_params_t;
|
|
|
|
/// @brief Struct representing the API version 2 part of the header of picoLoader7.bin.
|
|
typedef struct
|
|
{
|
|
/// @brief The path of the rom to return to when exiting an application.
|
|
/// When this path is not set, no bootstub will be patched into homebrew applications.
|
|
char launcherPath[256];
|
|
} pload_header7_v2_t;
|
|
|
|
/// @brief Struct representing a single Action Replay cheat opcode.
|
|
typedef struct
|
|
{
|
|
/// @brief The first part of the opcode.
|
|
u32 a;
|
|
|
|
/// @brief The second part of the opcode.
|
|
u32 b;
|
|
} pload_cheat_opcode_t;
|
|
|
|
/// @brief Struct representing a single Action Replay cheat.
|
|
typedef struct
|
|
{
|
|
/// @brief Length of \see opcodes in bytes.
|
|
u32 length;
|
|
|
|
/// @brief The cheat opcodes.
|
|
pload_cheat_opcode_t opcodes[1];
|
|
} pload_cheat_t;
|
|
|
|
/// @brief Struct representing one or more cheats. Cheats are adjacent starting from the firstCheat field.
|
|
typedef struct
|
|
{
|
|
/// @brief Length of this stucture (length field + numberOfCheats field + all cheats).
|
|
u32 length;
|
|
|
|
/// @brief The number of cheats.
|
|
u32 numberOfCheats;
|
|
|
|
/// @brief The first cheat.
|
|
pload_cheat_t firstCheat;
|
|
} pload_cheats_t;
|
|
|
|
/// @brief Struct representing the API version 3 part of the header of picoLoader7.bin.
|
|
typedef struct
|
|
{
|
|
/// @brief Pointer to the cheats, or \c nullptr when there are no cheats.
|
|
const pload_cheats_t* cheats;
|
|
} pload_header7_v3_t;
|
|
|
|
/// @brief Struct representing the header of picoLoader7.bin.
|
|
typedef struct
|
|
{
|
|
/// @brief Pointer to the Pico Loader arm7 entry point (read-only).
|
|
void* const entryPoint;
|
|
|
|
/// @brief Sets the DLDI driver to use.
|
|
void* dldiDriver;
|
|
|
|
/// @brief Sets the boot drive. See \see PicoLoaderBootDrive.
|
|
u16 bootDrive;
|
|
|
|
/// @brief The supported Pico Loader API version (read-only).
|
|
const u16 apiVersion;
|
|
|
|
/// @brief The load params, see \see pload_params_t.
|
|
pload_params_t loadParams;
|
|
|
|
/// @brief The API version 2 part of the header. Only access this when \see apiVersion >= 2.
|
|
pload_header7_v2_t v2;
|
|
|
|
/// @brief The API version 3 part of the header. Only access this when \see apiVersion >= 3.
|
|
pload_header7_v3_t v3;
|
|
} pload_header7_t;
|