68 lines
1.3 KiB
C
68 lines
1.3 KiB
C
/**
|
|
* Copyright (c) 2025 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#pragma once
|
|
#include "error/error.h"
|
|
#include "assettype.h"
|
|
|
|
#if ASSET_TYPE == wad
|
|
#if PSP
|
|
typedef struct {
|
|
uint8_t signature[4];
|
|
uint16_t version[2];
|
|
unsigned int offset[8];
|
|
} 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;
|
|
} asset_t;
|
|
|
|
static asset_t ASSET;
|
|
|
|
/**
|
|
* Initializes the asset system.
|
|
*/
|
|
errorret_t assetInit(void);
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
errorret_t assetLoad(const char_t *filename, void *output);
|
|
|
|
/**
|
|
* Disposes/cleans up the asset system.
|
|
*/
|
|
void assetDispose(void); |