/** * Copyright (c) 2025 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "assettype.h" #if ASSET_TYPE == wad #if PSP #define ASSET_PBP_READ_PBP_FROM_HOST 0 #define ASSET_PBP_SIGNATURE_SIZE 4 #define ASSET_PBP_SIGNATURE "\0PBP" typedef struct { char_t signature[ASSET_PBP_SIGNATURE_SIZE]; uint32_t version; uint32_t sfoOffset; uint32_t icon0Offset; uint32_t icon1Offset; uint32_t pic0Offset; uint32_t pic1Offset; uint32_t snd0Offset; uint32_t pspOffset; uint32_t psarOffset; } assetpbp_t; #endif #else #error "Unsupported ASSET_TYPE" #endif #define ASSET_FILE "dusk.dsk" #define ASSET_HEADER_SIZE 3 static const char_t *ASSET_SEARCH_PATHS[] = { "%s/%s", "%s", "../%s", "../../%s", "data/%s", "../data/%s", NULL }; #pragma pack(push, 1) typedef struct { char_t header[ASSET_HEADER_SIZE]; } assetheader_t; #pragma pack(pop) typedef struct { zip_t *zip; char_t systemPath[FILENAME_MAX]; uint8_t assetCount; #if PSP FILE *pbpFile; assetpbp_t pbpHeader; #endif } asset_t; static asset_t ASSET; /** * Initializes the asset system. */ void assetInit(void); /** * Checks if an asset file exists. * * @param filename The filename of the asset to check. * @return true if the asset file exists, false otherwise. */ bool_t assetFileExists(const char_t *filename); /** * Loads an asset by its filename, the output type depends on the asset type. * * @param filename The filename of the asset to retrieve. * @param output The output pointer to store the loaded asset data. * @return An error code if the asset could not be loaded. */ void assetLoad(const char_t *filename, void *output); /** * Disposes/cleans up the asset system. */ void assetDispose(void);