usbloadergx/source/libs/libwbfs/wiidisc.h
dimok321 de2fbe11fa *Added NAND Emulation for d2x v4+ cIOS ONLY. You can emulate partial (mainly titles path (including gamesaves and does not include Miis)) or full nand emulation. The Nand path can be chosen (should not be the same drive as game drive and must be a FAT/FAT32 partition (e.g. sd:/nand/). Just put your NAND FS in that path.
IF YOU USE RETURN TO OPTION THEN THE UNEO TITLE MUST BE ON EMU NAND AS WELL FOR PARTIAL AND FULL EMULATION.

*Added back our old font as fallback font in case the wii system font can't be loaded. Also the use of the Wii System Font can be disabled in the settings (don't forget to set font scale back to 1.0 for old font)
2011-07-24 16:32:09 +00:00

68 lines
2.1 KiB
C

#ifndef WIIDISC_H
#define WIIDISC_H
#include <stdio.h>
#include "libwbfs_os.h" // this file is provided by the project wanting to compile libwbfs and wiidisc
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
#if 0 //removes extra automatic indentation by editors
}
#endif
// callback definition. Return 1 on fatal error (callback is supposed to make retries until no hopes..)
// offset points 32bit words, count counts bytes
typedef int (*read_wiidisc_callback_t)(void*fp, u32 offset, u32 count, void*iobuf);
typedef enum
{
UPDATE_PARTITION_TYPE = 0, GAME_PARTITION_TYPE, OTHER_PARTITION_TYPE,
// value in between selects partition types of that value
ALL_PARTITIONS = 0xffffffff - 3,
REMOVE_UPDATE_PARTITION, // keeps game + channel installers
ONLY_GAME_PARTITION,
} partition_selector_t;
typedef struct wiidisc_s
{
read_wiidisc_callback_t read;
void *fp;
u8 *sector_usage_table;
// everything points 32bit words.
u32 disc_raw_offset;
u32 partition_raw_offset;
u32 partition_data_offset;
u32 partition_data_size;
u32 partition_block;
u8 *tmp_buffer;
u8 *tmp_buffer2;
u8 disc_key[16];
int dont_decrypt;
partition_selector_t part_sel;
char *extract_pathname;
u8 *extracted_buffer;
int extracted_size;
} wiidisc_t;
wiidisc_t *wd_open_disc(read_wiidisc_callback_t read, void*fp);
void wd_close_disc(wiidisc_t *);
// returns a buffer allocated with wbfs_ioalloc() or NULL if not found of alloc error
u8 * wd_extract_file(wiidisc_t *d, partition_selector_t partition_type, char *pathname);
void wd_build_disc_usage(wiidisc_t *d, partition_selector_t selector, u8* usage_table);
// effectively remove not copied partition from the partition table.
void wd_fix_partition_table(wiidisc_t *d, partition_selector_t selector, u8* partition_table);
#if 0
{
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif