SSBM Decomp
Loading...
Searching...
No Matches
hsd_3A94.c File Reference
#include "hsd_3A94.h"
#include "hsd_3B2B.h"
#include "hsd_3B2E.h"
#include <string.h>
#include <dolphin/card.h>
#include <dolphin/os.h>

Data Structures

struct  __baselib_UnkType002
struct  __baselib_UnkType003
struct  CardBufEntry
struct  CardBlock
struct  CardCmd
union  CardCmdBuf
 Stack staging slot for one queued command. More...
struct  HsdCmdEntry
struct  CardContext
struct  CardQueueEntry

Macros

#define CMD_S32(off)
#define CMD_STATE   ((CardState*) CMD_S32(0x14))
#define CMD_PTR(off)
#define CMD_TYPE   (op[hsd_804D7980].x10)
#define CARD_QUEUE_CMD(cmd)
#define CARD_WRITE_BLOCK(state, block_idx, file_id, seq_num, payload, payload_len, file_idx)
#define CMD_QUEUE(base)
#define CMD_TYPE   cmd[0]
#define CMD_STATE   ((CardState*) cmd[1])
#define CMD_X8   cmd[2]
#define CMD_XC   cmd[3]
#define CMD_X10   cmd[4]
#define CMD_X14   cmd[5]
#define CMD_X18   ((void*) cmd[6])
#define CMD_X1C   cmd[7]
#define CMD_X20   cmd[8]

Typedefs

typedef u8CardSectorPtr

Functions

static void hsd_803A949C (s32 chan, s32 arg1)
static s32 fn_803ACB74 (s32 seq_a, s32 seq_b)
static s32 hsd_803A949C_Close (CardState *state)
s32 fn_803AA790 (void)
static s32 retryCardFastOpen (s32 chan, s32 file_no, CARDFileInfo *file_info)
static s32 retryCardReadAsync (CARDFileInfo *file_info, void *buffer, s32 length, s32 offset, CARDCallback callback)
static s32 retryCardWriteAsync (CARDFileInfo *file_info, void *buffer, s32 length, s32 offset, CARDCallback callback)
static s32 retryCardClose (CARDFileInfo *file_info)
static s32 retryCardCreateAsync (s32 chan, char *filename, s32 size, CARDFileInfo *file_info, CARDCallback callback)
static s32 retryCardGetStatus (s32 chan, s32 file_no, CARDStat *stat)
static s32 retryCardSetStatusAsync (s32 chan, s32 file_no, CARDStat *stat, CARDCallback callback)
static int setupCardIcons (const s32 *cmd)
static void unpackCardStat (const s32 *cmd, CARDStat *stat)
static void rollbackCardCommands (CardContext *context, s32 snap)
static void initHeaderBlockCommand (CardCmd *buf, CardState *state, u32 block, s32 file_id, s32 seq_num, s32 version)
static s32 queueHeaderBlock (CardState *state, u32 block, s32 file_id, s32 seq_num, s32 version)
static s32 queueHeaderBlocks (CardState *state, s32 file_id, s32 seq_num, s32 version)
void hsd_803AAA48 (void)
s32 fn_803AC168 (s32 *cmd_buf)
s32 fn_803AC258 (CardState *card_state, s32 block_idx)
s32 fn_803AC2A4 (CardState *card_state)
void fn_803AC2D4 (void)
void fn_803AC2E0 (void)
void fn_803AC334 (void)
int hsd_803AC340 (void *header)
void hsd_803AC3E0 (struct CardState *file_desc, int file_idx, int file_size, int file_flags, u8 *data)
void fn_803AC3F8 (void *arg0, u8 *data, s32 file_idx)
void hsd_803AC558 (struct CardState *file_desc, u8 *data)
u32 fn_803AC634 (struct CardState *file_desc, s32 file_idx)
static u32 fn_803AC6B8_first_block_count (struct CardState *file_desc)
s32 fn_803AC6B8 (struct CardState *file_desc, s32 file_count)
static s32 fn_803AC6B8_blocks_before (struct CardState *file_desc, s32 file_count)
static s32 fn_803AC7DC_block_count (struct CardState *file_state, s32 file_idx)
s32 fn_803AC7DC (CardState *state)
s32 fn_803ACBE8 (CardState *state, s32 block_idx)
s32 fn_803ACC0C (CardState *state, s32 block_idx, s32 file_id, s32 seq_num, void *expected_data, s32 data_size)
s32 fn_803ACD58 (CardState *state, void *icon_data, void *file_data)
s32 fn_803ACF30 (CardState *state, s32 file_id, s32 seq_num, s32 version)
static u8fn_803ACFC0_header (CardState *state, s32 hdr_offset)
static u8fn_803ACFC0_checksum_start (s32 hdr_offset, CardState *state)
s32 fn_803ACFC0 (CardState *state, s32 block_idx, s32 file_id, s32 seq_num, void *payload, s32 payload_size, s32 version)
static int fn_803AD16C_file_type_nonzero (CardState *state, s32 file_id)
static s32 fn_803AD16C_total_blocks (CardState *state)
static s32 fn_803AD16C_logical_index (s32 blocks_before, s32 i)
static s32 fn_803AD16C_file_size (CardState *state, s32 file_id)
static s32 fn_803AD16C_seq_at (s32 *seq, s32 phys)
static int fn_803AD16C_nonnegative (s32 logical)
static s32 fn_803AD16C_queue_cmd (s32 *cmd)
static int fn_803AD16C_same (s32 lhs, s32 rhs)
static void fn_803AD16C_own (void *value)
static s32 fn_803AD16C_queue_clear (CardState *state, s32 block, s32 pad, s32 file_id)
static s32 fn_803AD16C_queue_read (CardState *state, s32 block)
static s32 fn_803AD16C_queue_write (CardState *state, s32 block, s32 logical, s32 target_seq)
static s32 fn_803AD16C_queue_write_last (CardState *state, s32 block, s32 logical, s32 target_seq)
s32 fn_803AD16C (CardState *state)
s32 fn_803ADE4C (s32 card_state, s32 channel, s32 callback)
static s32 queueCardCommand2First (CardState *state, s32 block, void *data, s32 length, s32 offset)
static s32 queueCardCommand2Final (CardState *state, s32 block, void *data, s32 length, s32 offset)
static s32 calculateDataBlockSize (CardState *state, s32 file_idx, s32 block_idx)
static s32 calculateFileBlockCount (CardState *state, s32 file_idx)
static s32 retryCardRead (CARDFileInfo *info, s32 retries, void *buffer, s32 length, s32 offset)
static void cancelQueuedCardCommands (CardBufEntry *entries)
static s32 queueClearDataBlock (CardState *state, const u8 *dst, s32 size)
static s32 queueDataBlockFirst (CardState *state, s32 block_idx, u8 *dst, s32 size)
static s32 queueDataBlockFinal (CardState *state, s32 block_idx, u8 *dst, s32 size)
static s32 cardDataBlockOffset (CardState *state, u32 sector_size, s32 data_block)
static s32 readCardDataBlockFirst (CardState *state, u32 sector_size, s32 data_block, u8 *dst, s32 length)
static s32 readCardDataBlockFinal (CardState *state, u32 sector_size, s32 data_block, u8 *dst, s32 length)
static s32 loadCardDataBlock (s32 data_block)
s32 fn_803ADF90 (struct CardState *arg0, s32 arg1, u8 *arg2, s32 arg3, void(*arg4)(s32, s32))
static void fn_803AE7F8_rewind (CardBufEntry *entries)
static void fn_803AE7F8_close (CardState *state)
s32 fn_803AE7F8 (struct CardState *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
static s32 fn_803AF3F0_chunk_size (CardState *state)
static s32 fn_803AF3F0_queue_verify_first (CardState *state, s32 block, s32 logical, s32 seq, void *data, s32 size)
static s32 fn_803AF3F0_queue_verify_final (CardState *state, s32 block, s32 logical, s32 seq, void *data, s32 size)
static s32 fn_803AF3F0_queue_write_first (CardState *state, s32 block, s32 logical, s32 seq, void *data, s32 size, s32 file_id)
static s32 fn_803AF3F0_queue_write_final (CardState *state, s32 block, s32 logical, s32 seq, void *data, s32 size, s32 file_id)
static void fn_803AF3F0_rewind (CardBufEntry *entries)
static void fn_803AF3F0_close (CardState *state)
static s32 fn_803AF3F0_open (s32 fd, s32 ofs, CARDFileInfo *info)
static void fn_803AF3F0_check_seq (CardState *state, const s32 *primary, s32 count, s32 current_seq, s32 *seq_match)
static void fn_803AF3F0_calc_file_blocks (s32 file_idx, CardState *state, s32 *file_blocks, s32 *total_blocks)
s32 fn_803AF3F0 (CardState *state, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
static s32 fn_803B0120_first_chunk (CardState *state)
static void fn_803B0120_rewind (CardBufEntry *entries)
static void fn_803B0120_close (CardState *state)
static s32 fn_803B0120_close_result (CardState *state)
static s32 fn_803B0120_block_offset (CardState *state, s32 block_idx)
static s32 fn_803B0120_queue_verify (CardState *state, s32 block, s32 logical, s32 seq, void *data, s32 size)
static s32 fn_803B0120_queue_write (CardState *state, s32 block, s32 logical, s32 seq, void *data, s32 size, s32 file_id)
s32 fn_803B0120 (CardState *state, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
static s32 fn_803B0E9C_read_icons (struct CardState *arg0, CardCmd *cmd, s32 file_id, s32 seq)
static s32 fn_803B0E9C_write_block (struct CardState *arg0, s32 block_idx)
static s32 fn_803B0E9C_write_block_final (struct CardState *arg0, s32 block_idx)
static s32 fn_803B0E9C_read_first (struct CardState *arg0, u32 sector_size)
s32 fn_803B0E9C (struct CardState *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
static s32 fn_803B1338_queue_write (CardState *state, s32 logical, s32 phys, void *data, s32 size, s32 file_id, CardCmdBuf *init_buf, CardCmdBuf *buf)
static u8fn_803B1338_data_at (u8 *file_payload, s32 offset)
static s32 fn_803B1338_data_size (CardState *state)
static s32 fn_803B1338_queue_write_data (CardState *state, s32 logical, s32 phys, u8 *fdata, s32 offset, s32 file_id, CardCmdBuf *init_buf, CardCmdBuf *buf)
s32 fn_803B1338 (CardState *state, s32 arg1)
s32 fn_803B1F78 (CardState *state, s32 channel, s32 file_id, s32 seq_num, s32 callback)
s32 fn_803B21E8 (s32 card_state, s32 file_id, s32 seq_num, s32 callback)
void hsd_803B2374 (void)
void hsd_803B24E4 (s32 *ctx, int channel, int file_no, void *work_buf)
static HsdCmdEntryhsd_803B2550_inline (u8 *arg0, s32 arg1)
int hsd_803B2550 (s32 *arg0, const char *arg1, void(*arg2)(int, int))
s32 hsd_803B2674 (CardState *state)
s32 fn_803B26CC (CardState *state, s32 file_id, s32 seq_num, s32 version, void(*callback)(s32, s32))

Variables

u32 hsd_804D1148 [0x80][0x9]
__baselib_UnkType003 hsd_804D2348
 Card work area .bss/.sbss used by the card functions in hsd_3A94.c (and the JPEG decoder in hsd_3B34.c).
volatile s32 hsd_804D7980
volatile s32 hsd_804D7984
s32 hsd_804D7988
s32 hsd_804D798C
s32 hsd_804D7998
s32 hsd_804D799C
u8 hsd_804D79C8
 .sbss globals emit in reverse declaration order.
s32 hsd_804D79C4
s32 hsd_804D79C0
u8hsd_804D79BC
u8hsd_804D79B8
u8 hsd_804D79B0 [8]
s32 hsd_804D79AC
s32 hsd_804D79A8
u8hsd_804D79A4
u8hsd_804D79A0

Macro Definition Documentation

◆ CMD_S32

#define CMD_S32 ( off)
Value:
(((CardBufEntry*) ((unsigned char*) op + (off)))[hsd_804D7980].x0)
u8 x0
Definition dbbonus.c:23
volatile s32 hsd_804D7980
Definition hsd_4D11.c:21
Definition hsd_3A94.c:22

◆ CMD_STATE [1/2]

#define CMD_STATE   ((CardState*) CMD_S32(0x14))

◆ CMD_PTR

#define CMD_PTR ( off)
Value:
((void*) CMD_S32(off))
#define CMD_S32(off)
Definition hsd_3A94.c:92

◆ CMD_TYPE [1/2]

#define CMD_TYPE   (op[hsd_804D7980].x10)
Todo
Fix (ideally delete) macros

◆ CARD_QUEUE_CMD

#define CARD_QUEUE_CMD ( cmd)
Value:
s32 fn_803AC168(s32 *cmd_buf)
Definition hsd_3A94.c:1432

◆ CARD_WRITE_BLOCK

#define CARD_WRITE_BLOCK ( state,
block_idx,
file_id,
seq_num,
payload,
payload_len,
file_idx )
Value:
fn_803ACFC0((state), (block_idx), (file_id), (seq_num), (payload), \
(payload_len), (file_idx))
s32 fn_803ACFC0(CardState *state, s32 block_idx, s32 file_id, s32 seq_num, void *payload, s32 payload_size, s32 version)
Definition hsd_3A94.c:2045

◆ CMD_QUEUE

#define CMD_QUEUE ( base)
Value:
((HsdCmdEntry*) ((base) + 0x1210))
Definition hsd_3A94.c:65

◆ CMD_TYPE [2/2]

#define CMD_TYPE   cmd[0]
Todo
Fix (ideally delete) macros

◆ CMD_STATE [2/2]

#define CMD_STATE   ((CardState*) cmd[1])

◆ CMD_X8

#define CMD_X8   cmd[2]

◆ CMD_XC

#define CMD_XC   cmd[3]

◆ CMD_X10

#define CMD_X10   cmd[4]

◆ CMD_X14

#define CMD_X14   cmd[5]

◆ CMD_X18

#define CMD_X18   ((void*) cmd[6])

◆ CMD_X1C

#define CMD_X1C   cmd[7]

◆ CMD_X20

#define CMD_X20   cmd[8]

Typedef Documentation

◆ CardSectorPtr

typedef u8* CardSectorPtr

Function Documentation

◆ hsd_803A949C()

void hsd_803A949C ( s32 chan,
s32 arg1 )
static

◆ fn_803ACB74()

s32 fn_803ACB74 ( s32 seq_a,
s32 seq_b )
inlinestatic

◆ hsd_803A949C_Close()

s32 hsd_803A949C_Close ( CardState * state)
inlinestatic

◆ fn_803AA790()

s32 fn_803AA790 ( void )

◆ retryCardFastOpen()

s32 retryCardFastOpen ( s32 chan,
s32 file_no,
CARDFileInfo * file_info )
inlinestatic

◆ retryCardReadAsync()

s32 retryCardReadAsync ( CARDFileInfo * file_info,
void * buffer,
s32 length,
s32 offset,
CARDCallback callback )
inlinestatic

◆ retryCardWriteAsync()

s32 retryCardWriteAsync ( CARDFileInfo * file_info,
void * buffer,
s32 length,
s32 offset,
CARDCallback callback )
inlinestatic

◆ retryCardClose()

s32 retryCardClose ( CARDFileInfo * file_info)
inlinestatic

◆ retryCardCreateAsync()

s32 retryCardCreateAsync ( s32 chan,
char * filename,
s32 size,
CARDFileInfo * file_info,
CARDCallback callback )
inlinestatic

◆ retryCardGetStatus()

s32 retryCardGetStatus ( s32 chan,
s32 file_no,
CARDStat * stat )
inlinestatic

◆ retryCardSetStatusAsync()

s32 retryCardSetStatusAsync ( s32 chan,
s32 file_no,
CARDStat * stat,
CARDCallback callback )
inlinestatic

◆ setupCardIcons()

int setupCardIcons ( const s32 * cmd)
inlinestatic

◆ unpackCardStat()

void unpackCardStat ( const s32 * cmd,
CARDStat * stat )
inlinestatic

◆ rollbackCardCommands()

void rollbackCardCommands ( CardContext * context,
s32 snap )
inlinestatic

◆ initHeaderBlockCommand()

void initHeaderBlockCommand ( CardCmd * buf,
CardState * state,
u32 block,
s32 file_id,
s32 seq_num,
s32 version )
inlinestatic

◆ queueHeaderBlock()

s32 queueHeaderBlock ( CardState * state,
u32 block,
s32 file_id,
s32 seq_num,
s32 version )
inlinestatic

◆ queueHeaderBlocks()

s32 queueHeaderBlocks ( CardState * state,
s32 file_id,
s32 seq_num,
s32 version )
inlinestatic

◆ hsd_803AAA48()

void hsd_803AAA48 ( void )

◆ fn_803AC168()

s32 fn_803AC168 ( s32 * cmd_buf)

◆ fn_803AC258()

s32 fn_803AC258 ( CardState * card_state,
s32 block_idx )

◆ fn_803AC2A4()

s32 fn_803AC2A4 ( CardState * card_state)

◆ fn_803AC2D4()

void fn_803AC2D4 ( void )

◆ fn_803AC2E0()

void fn_803AC2E0 ( void )

◆ fn_803AC334()

void fn_803AC334 ( void )

◆ hsd_803AC340()

int hsd_803AC340 ( void * header)

◆ hsd_803AC3E0()

void hsd_803AC3E0 ( struct CardState * file_desc,
int file_idx,
int file_size,
int file_flags,
u8 * data )

◆ fn_803AC3F8()

void fn_803AC3F8 ( void * arg0,
u8 * data,
s32 file_idx )

◆ hsd_803AC558()

void hsd_803AC558 ( struct CardState * file_desc,
u8 * data )

◆ fn_803AC634()

u32 fn_803AC634 ( struct CardState * file_desc,
s32 file_idx )

◆ fn_803AC6B8_first_block_count()

u32 fn_803AC6B8_first_block_count ( struct CardState * file_desc)
inlinestatic

◆ fn_803AC6B8()

s32 fn_803AC6B8 ( struct CardState * file_desc,
s32 file_count )

◆ fn_803AC6B8_blocks_before()

s32 fn_803AC6B8_blocks_before ( struct CardState * file_desc,
s32 file_count )
inlinestatic

◆ fn_803AC7DC_block_count()

s32 fn_803AC7DC_block_count ( struct CardState * file_state,
s32 file_idx )
inlinestatic

◆ fn_803AC7DC()

s32 fn_803AC7DC ( CardState * state)

◆ fn_803ACBE8()

s32 fn_803ACBE8 ( CardState * state,
s32 block_idx )

◆ fn_803ACC0C()

s32 fn_803ACC0C ( CardState * state,
s32 block_idx,
s32 file_id,
s32 seq_num,
void * expected_data,
s32 data_size )

◆ fn_803ACD58()

s32 fn_803ACD58 ( CardState * state,
void * icon_data,
void * file_data )

◆ fn_803ACF30()

s32 fn_803ACF30 ( CardState * state,
s32 file_id,
s32 seq_num,
s32 version )

◆ fn_803ACFC0_header()

u8 * fn_803ACFC0_header ( CardState * state,
s32 hdr_offset )
inlinestatic

◆ fn_803ACFC0_checksum_start()

u8 * fn_803ACFC0_checksum_start ( s32 hdr_offset,
CardState * state )
inlinestatic

◆ fn_803ACFC0()

s32 fn_803ACFC0 ( CardState * state,
s32 block_idx,
s32 file_id,
s32 seq_num,
void * payload,
s32 payload_size,
s32 version )

◆ fn_803AD16C_file_type_nonzero()

int fn_803AD16C_file_type_nonzero ( CardState * state,
s32 file_id )
inlinestatic

◆ fn_803AD16C_total_blocks()

s32 fn_803AD16C_total_blocks ( CardState * state)
inlinestatic

◆ fn_803AD16C_logical_index()

s32 fn_803AD16C_logical_index ( s32 blocks_before,
s32 i )
inlinestatic

◆ fn_803AD16C_file_size()

s32 fn_803AD16C_file_size ( CardState * state,
s32 file_id )
inlinestatic

◆ fn_803AD16C_seq_at()

s32 fn_803AD16C_seq_at ( s32 * seq,
s32 phys )
inlinestatic

◆ fn_803AD16C_nonnegative()

int fn_803AD16C_nonnegative ( s32 logical)
inlinestatic

◆ fn_803AD16C_queue_cmd()

s32 fn_803AD16C_queue_cmd ( s32 * cmd)
inlinestatic

◆ fn_803AD16C_same()

int fn_803AD16C_same ( s32 lhs,
s32 rhs )
inlinestatic

◆ fn_803AD16C_own()

void fn_803AD16C_own ( void * value)
inlinestatic

◆ fn_803AD16C_queue_clear()

s32 fn_803AD16C_queue_clear ( CardState * state,
s32 block,
s32 pad,
s32 file_id )
inlinestatic

◆ fn_803AD16C_queue_read()

s32 fn_803AD16C_queue_read ( CardState * state,
s32 block )
inlinestatic

◆ fn_803AD16C_queue_write()

s32 fn_803AD16C_queue_write ( CardState * state,
s32 block,
s32 logical,
s32 target_seq )
inlinestatic

◆ fn_803AD16C_queue_write_last()

s32 fn_803AD16C_queue_write_last ( CardState * state,
s32 block,
s32 logical,
s32 target_seq )
inlinestatic

◆ fn_803AD16C()

s32 fn_803AD16C ( CardState * state)

◆ fn_803ADE4C()

s32 fn_803ADE4C ( s32 card_state,
s32 channel,
s32 callback )

◆ queueCardCommand2First()

s32 queueCardCommand2First ( CardState * state,
s32 block,
void * data,
s32 length,
s32 offset )
inlinestatic

◆ queueCardCommand2Final()

s32 queueCardCommand2Final ( CardState * state,
s32 block,
void * data,
s32 length,
s32 offset )
inlinestatic

◆ calculateDataBlockSize()

s32 calculateDataBlockSize ( CardState * state,
s32 file_idx,
s32 block_idx )
inlinestatic

◆ calculateFileBlockCount()

s32 calculateFileBlockCount ( CardState * state,
s32 file_idx )
inlinestatic

◆ retryCardRead()

s32 retryCardRead ( CARDFileInfo * info,
s32 retries,
void * buffer,
s32 length,
s32 offset )
inlinestatic

◆ cancelQueuedCardCommands()

void cancelQueuedCardCommands ( CardBufEntry * entries)
inlinestatic

◆ queueClearDataBlock()

s32 queueClearDataBlock ( CardState * state,
const u8 * dst,
s32 size )
inlinestatic

◆ queueDataBlockFirst()

s32 queueDataBlockFirst ( CardState * state,
s32 block_idx,
u8 * dst,
s32 size )
inlinestatic

◆ queueDataBlockFinal()

s32 queueDataBlockFinal ( CardState * state,
s32 block_idx,
u8 * dst,
s32 size )
inlinestatic

◆ cardDataBlockOffset()

s32 cardDataBlockOffset ( CardState * state,
u32 sector_size,
s32 data_block )
inlinestatic

◆ readCardDataBlockFirst()

s32 readCardDataBlockFirst ( CardState * state,
u32 sector_size,
s32 data_block,
u8 * dst,
s32 length )
inlinestatic

◆ readCardDataBlockFinal()

s32 readCardDataBlockFinal ( CardState * state,
u32 sector_size,
s32 data_block,
u8 * dst,
s32 length )
inlinestatic

◆ loadCardDataBlock()

s32 loadCardDataBlock ( s32 data_block)
inlinestatic

◆ fn_803ADF90()

s32 fn_803ADF90 ( struct CardState * arg0,
s32 arg1,
u8 * arg2,
s32 arg3,
void(* arg4 )(s32, s32) )

◆ fn_803AE7F8_rewind()

void fn_803AE7F8_rewind ( CardBufEntry * entries)
inlinestatic

◆ fn_803AE7F8_close()

void fn_803AE7F8_close ( CardState * state)
inlinestatic

◆ fn_803AE7F8()

s32 fn_803AE7F8 ( struct CardState * arg0,
s32 arg1,
s32 arg2,
s32 arg3,
s32 arg4 )

◆ fn_803AF3F0_chunk_size()

s32 fn_803AF3F0_chunk_size ( CardState * state)
inlinestatic

◆ fn_803AF3F0_queue_verify_first()

s32 fn_803AF3F0_queue_verify_first ( CardState * state,
s32 block,
s32 logical,
s32 seq,
void * data,
s32 size )
inlinestatic

◆ fn_803AF3F0_queue_verify_final()

s32 fn_803AF3F0_queue_verify_final ( CardState * state,
s32 block,
s32 logical,
s32 seq,
void * data,
s32 size )
inlinestatic

◆ fn_803AF3F0_queue_write_first()

s32 fn_803AF3F0_queue_write_first ( CardState * state,
s32 block,
s32 logical,
s32 seq,
void * data,
s32 size,
s32 file_id )
inlinestatic

◆ fn_803AF3F0_queue_write_final()

s32 fn_803AF3F0_queue_write_final ( CardState * state,
s32 block,
s32 logical,
s32 seq,
void * data,
s32 size,
s32 file_id )
inlinestatic

◆ fn_803AF3F0_rewind()

void fn_803AF3F0_rewind ( CardBufEntry * entries)
inlinestatic

◆ fn_803AF3F0_close()

void fn_803AF3F0_close ( CardState * state)
inlinestatic

◆ fn_803AF3F0_open()

s32 fn_803AF3F0_open ( s32 fd,
s32 ofs,
CARDFileInfo * info )
inlinestatic

◆ fn_803AF3F0_check_seq()

void fn_803AF3F0_check_seq ( CardState * state,
const s32 * primary,
s32 count,
s32 current_seq,
s32 * seq_match )
inlinestatic

◆ fn_803AF3F0_calc_file_blocks()

void fn_803AF3F0_calc_file_blocks ( s32 file_idx,
CardState * state,
s32 * file_blocks,
s32 * total_blocks )
inlinestatic

◆ fn_803AF3F0()

s32 fn_803AF3F0 ( CardState * state,
s32 arg1,
s32 arg2,
s32 arg3,
s32 arg4 )

◆ fn_803B0120_first_chunk()

s32 fn_803B0120_first_chunk ( CardState * state)
inlinestatic

◆ fn_803B0120_rewind()

void fn_803B0120_rewind ( CardBufEntry * entries)
inlinestatic

◆ fn_803B0120_close()

void fn_803B0120_close ( CardState * state)
inlinestatic

◆ fn_803B0120_close_result()

s32 fn_803B0120_close_result ( CardState * state)
inlinestatic

◆ fn_803B0120_block_offset()

s32 fn_803B0120_block_offset ( CardState * state,
s32 block_idx )
inlinestatic

◆ fn_803B0120_queue_verify()

s32 fn_803B0120_queue_verify ( CardState * state,
s32 block,
s32 logical,
s32 seq,
void * data,
s32 size )
inlinestatic

◆ fn_803B0120_queue_write()

s32 fn_803B0120_queue_write ( CardState * state,
s32 block,
s32 logical,
s32 seq,
void * data,
s32 size,
s32 file_id )
inlinestatic

◆ fn_803B0120()

s32 fn_803B0120 ( CardState * state,
s32 arg1,
s32 arg2,
s32 arg3,
s32 arg4 )

◆ fn_803B0E9C_read_icons()

s32 fn_803B0E9C_read_icons ( struct CardState * arg0,
CardCmd * cmd,
s32 file_id,
s32 seq )
inlinestatic

◆ fn_803B0E9C_write_block()

s32 fn_803B0E9C_write_block ( struct CardState * arg0,
s32 block_idx )
inlinestatic

◆ fn_803B0E9C_write_block_final()

s32 fn_803B0E9C_write_block_final ( struct CardState * arg0,
s32 block_idx )
inlinestatic

◆ fn_803B0E9C_read_first()

s32 fn_803B0E9C_read_first ( struct CardState * arg0,
u32 sector_size )
inlinestatic

◆ fn_803B0E9C()

s32 fn_803B0E9C ( struct CardState * arg0,
s32 arg1,
s32 arg2,
s32 arg3,
s32 arg4 )

◆ fn_803B1338_queue_write()

s32 fn_803B1338_queue_write ( CardState * state,
s32 logical,
s32 phys,
void * data,
s32 size,
s32 file_id,
CardCmdBuf * init_buf,
CardCmdBuf * buf )
inlinestatic

◆ fn_803B1338_data_at()

u8 * fn_803B1338_data_at ( u8 * file_payload,
s32 offset )
inlinestatic

◆ fn_803B1338_data_size()

s32 fn_803B1338_data_size ( CardState * state)
inlinestatic

◆ fn_803B1338_queue_write_data()

s32 fn_803B1338_queue_write_data ( CardState * state,
s32 logical,
s32 phys,
u8 * fdata,
s32 offset,
s32 file_id,
CardCmdBuf * init_buf,
CardCmdBuf * buf )
inlinestatic

◆ fn_803B1338()

s32 fn_803B1338 ( CardState * state,
s32 arg1 )

◆ fn_803B1F78()

s32 fn_803B1F78 ( CardState * state,
s32 channel,
s32 file_id,
s32 seq_num,
s32 callback )

◆ fn_803B21E8()

s32 fn_803B21E8 ( s32 card_state,
s32 file_id,
s32 seq_num,
s32 callback )

◆ hsd_803B2374()

void hsd_803B2374 ( void )

◆ hsd_803B24E4()

void hsd_803B24E4 ( s32 * ctx,
int channel,
int file_no,
void * work_buf )

◆ hsd_803B2550_inline()

HsdCmdEntry * hsd_803B2550_inline ( u8 * arg0,
s32 arg1 )
inlinestatic

◆ hsd_803B2550()

int hsd_803B2550 ( s32 * arg0,
const char * arg1,
void(* arg2 )(int, int) )

◆ hsd_803B2674()

s32 hsd_803B2674 ( CardState * state)

◆ fn_803B26CC()

s32 fn_803B26CC ( CardState * state,
s32 file_id,
s32 seq_num,
s32 version,
void(* callback )(s32, s32) )

Variable Documentation

◆ hsd_804D1148

u32 hsd_804D1148[0x80][0x9]
extern

◆ hsd_804D2348

__baselib_UnkType003 hsd_804D2348
extern

Card work area .bss/.sbss used by the card functions in hsd_3A94.c (and the JPEG decoder in hsd_3B34.c).

Kept in its own TU: the card functions only match when this data is referenced as extern, so it cannot be defined alongside them.

◆ hsd_804D7980

volatile s32 hsd_804D7980
extern

◆ hsd_804D7984

volatile s32 hsd_804D7984
extern

◆ hsd_804D7988

s32 hsd_804D7988
extern

◆ hsd_804D798C

s32 hsd_804D798C
extern

◆ hsd_804D7998

s32 hsd_804D7998
extern

◆ hsd_804D799C

s32 hsd_804D799C
extern

◆ hsd_804D79C8

u8 hsd_804D79C8

.sbss globals emit in reverse declaration order.

◆ hsd_804D79C4

s32 hsd_804D79C4

◆ hsd_804D79C0

s32 hsd_804D79C0

◆ hsd_804D79BC

u8* hsd_804D79BC

◆ hsd_804D79B8

u8* hsd_804D79B8

◆ hsd_804D79B0

u8 hsd_804D79B0[8]

◆ hsd_804D79AC

s32 hsd_804D79AC

◆ hsd_804D79A8

s32 hsd_804D79A8

◆ hsd_804D79A4

u8* hsd_804D79A4

◆ hsd_804D79A0

u8* hsd_804D79A0