SSBM Decomp
Loading...
Searching...
No Matches
lbcardnew.c File Reference
#include "lbcardnew.h"
#include <Runtime/platform.h>
#include <ctype.h>
#include <placeholder.h>
#include <stdlib.h>
#include <string.h>
#include "types.h"
#include <dolphin/card.h>
#include <sysdolphin/baselib/card.h>
#include <sysdolphin/baselib/debug.h>
#include <sysdolphin/baselib/memory.h>

Data Structures

struct  CardTask
struct  lbcardnew_state_t
struct  SnapshotNode

Macros

#define SECTOR_SIZE   0x2000
#define _p(x)

Enumerations

enum  resultMask {
  resultMask_Ready = 1 << LbCardResult_Ready ,
  resultMask_2 = 1 << LbCardResult_2 ,
  resultMask_NoFile = 1 << LbCardResult_NoFile ,
  resultMask_NullFilename = 1 << LbCardResult_NullFilename ,
  resultMask_Malformed = 1 << LbCardResult_Malformed ,
  resultMask_Busy = 1 << LbCardResult_Busy ,
  resultMask_BadSectorSize = 1 << LbCardResult_BadSectorSize ,
  resultMask_Invalid = 1 << LbCardResult_Invalid ,
  resultMask_FatalError = 1 << LbCardResult_FatalError ,
  resultMask_DeviceError = 1 << LbCardResult_DeviceError ,
  resultMask_16 = 1 << LbCardResult_16
}
enum  CardTaskType {
  LbCardNewTask_Mount ,
  LbCardNewTask_Check ,
  LbCardNewTask_Open ,
  LbCardNewTask_Unk3 ,
  LbCardNewTask_Format ,
  LbCardNewTask_Delete ,
  LbCardNewTask_Rename ,
  LbCardNewTask_Create ,
  LbCardNewTask_Read ,
  LbCardNewTask_Write ,
  LbCardNewTask_SetStatus ,
  LbCardNewTask_ReadHeader ,
  LbCardNewTask_ListSnapshots ,
  LbCardNewTask_FindFile ,
  LbCardNewTask_None
}
 Operations dispatched by lb_80019CB0. More...

Functions

 ASSERT_SIZE (CardTask, 0x54)
 ASSERT_OFFSET (CardTask, filename, 0x10)
 ASSERT_OFFSET (CardTask, new_filename, 0x31)
static CardTask * getNewTask (void)
static int executeNextTask (lbCardResult result)
static void fn_8001A0B0 (int file_idx, int hsd_error)
static int taskMount (void)
static int taskCheck (void)
static int taskOpen (const char *filename, LbCardEntry *file_entries)
static int taskUnk3 (void)
static int taskFormat (void)
static int taskDelete (char *filename)
static int taskRename (const char *old_name, const char *new_name)
static int taskCreate (const char *filename)
static int taskRead (LbCardEntry *file_entries)
static int taskWrite (LbCardEntry *file_entries)
static int taskSetStatus (void)
static int taskReadHeader (void)
static int taskListSnapshots (void)
static int taskFindFile (const char *filename)
static lbCardResult convertSdkResult (int sdk_result)
static CardTask * lb_80019C38_noinline (void)
static void resetTaskArray (void)
static void resetState (int chan, void *save_data, int *status_out, LbCardOnFinishedCallback callback)
static void onCardComplete (UNUSED s32 chan, s32 result)
static int convertHsdResult (int hsd_result)
static void setTaskFilename (const char *filename, void *file_entries)
static void setupCardEntries (CardState *ctx, void *icon, LbCardEntry *entry)
static int readCardFileSize (const volatile int *file_size)
 Preserve the volatile file-size reads in the request builders.
s32 lb_8001B6E0 (s32 file_idx)
int lbCardNew_CompleteNextTask (void)
int lbCardNew_CompleteAllTasks (int result)
static CardTask * setupTask (CardTaskType type, int result_mask)
static void addTaskEntries (CardTaskType type, int result_mask, void *file_entries)
static void addTask (CardTaskType type, int result_mask)
static void lb_8001A4CC_dontinline (const char *filename, void *file_entries)
u32 lb_8001B7E0 (int chan, char *filename, void *file_entries, void *save_data, int *status_out)
int lb_8001B8C8 (int chan)
int lbCardNew_DeleteSnap (int chan, const char *filename, UNK_T status_out)
int lb_8001BA44 (int chan, const char *filename, UNK_T status_out)
int lb_8001BB48 (int chan, char *filename, void *file_entries, void *save_data, char *comment, void *banner, void *icons, UNK_T status_out)
int lb_8001BC18 (int chan, char *filename, void **file_entries, void *save_data, char *comment, void *banner, void *icons, bool *status_out)
int lb_8001BD34 (int chan, const char *filename, UNK_T file_entries, UNK_T status_out)
int lb_8001BE30 (int chan, const char *filename, UNK_T file_entries, char *comment, void *banner, void *icons, UNK_T status_out, UNK_T callback)
int lb_8001BF04 (int chan, char *filename, void *file_entries, char *comment, void *banner, void *icons, UNK_T status_out)
int lb_8001BFD8 (int chan, lbCardNew_SnapshotEntry *snapshot_entries, int *free_blocks, int *free_files)
int lb_8001C0F4 (int chan, const char *name_a, const char *name_b, const char *name_c, UNK_T status_out)
int lb_8001C2D8 (int chan, const char *company, const char *game_name, const char *filename)
int lbCardNew_ProbeEx (int chan)
int lb_8001C4A8 (void *file_entries, void *icon_data)
void lbCardNew_AllocWorkArea (void)
void lbCardNew_ForgetMemory (void)
void lbCardNew_Init (void)

Variables

static struct lbcardnew_state_t state

Macro Definition Documentation

◆ SECTOR_SIZE

#define SECTOR_SIZE   0x2000

◆ _p

#define _p ( x)
Value:
(state.x)
state
Definition gm_1BFA.c:18

Enumeration Type Documentation

◆ resultMask

enum resultMask
Enumerator
resultMask_Ready 
resultMask_2 
resultMask_NoFile 
resultMask_NullFilename 
resultMask_Malformed 
resultMask_Busy 
resultMask_BadSectorSize 
resultMask_Invalid 
resultMask_FatalError 
resultMask_DeviceError 
resultMask_16 

◆ CardTaskType

Operations dispatched by lb_80019CB0.

Values describe observed behavior; they are separate from task result codes and the HSD request/command tags.

Enumerator
LbCardNewTask_Mount 
LbCardNewTask_Check 
LbCardNewTask_Open 

Checks free space and initializes the HSD state; opens/scans the named file when it exists.

LbCardNewTask_Unk3 

lb_8001A860 maps stored results 0 and 2 to 1.

The intended meaning of this result-normalization step is not established.

LbCardNewTask_Format 
LbCardNewTask_Delete 
LbCardNewTask_Rename 
LbCardNewTask_Create 
LbCardNewTask_Read 

Reads/writes the configured logical files using the entry buffers.

LbCardNewTask_Write 
LbCardNewTask_SetStatus 

Updates the comment/banner/icons header and CARD status.

LbCardNewTask_ReadHeader 
LbCardNewTask_ListSnapshots 
LbCardNewTask_FindFile 
LbCardNewTask_None 

Unused task slot; zero is the mount task.

Function Documentation

◆ ASSERT_SIZE()

ASSERT_SIZE ( CardTask ,
0x54  )

◆ ASSERT_OFFSET() [1/2]

ASSERT_OFFSET ( CardTask ,
filename ,
0x10  )

◆ ASSERT_OFFSET() [2/2]

ASSERT_OFFSET ( CardTask ,
new_filename ,
0x31  )

◆ getNewTask()

CardTask * getNewTask ( void )
static

◆ executeNextTask()

int executeNextTask ( lbCardResult result)
static

◆ fn_8001A0B0()

void fn_8001A0B0 ( int file_idx,
int hsd_error )
static

◆ taskMount()

int taskMount ( void )
static

◆ taskCheck()

int taskCheck ( void )
static

◆ taskOpen()

int taskOpen ( const char * filename,
LbCardEntry * file_entries )
static

◆ taskUnk3()

int taskUnk3 ( void )
static

◆ taskFormat()

int taskFormat ( void )
static

◆ taskDelete()

int taskDelete ( char * filename)
static

◆ taskRename()

int taskRename ( const char * old_name,
const char * new_name )
static

◆ taskCreate()

int taskCreate ( const char * filename)
static

◆ taskRead()

int taskRead ( LbCardEntry * file_entries)
static

◆ taskWrite()

int taskWrite ( LbCardEntry * file_entries)
static

◆ taskSetStatus()

int taskSetStatus ( void )
static

◆ taskReadHeader()

int taskReadHeader ( void )
static

◆ taskListSnapshots()

int taskListSnapshots ( void )
static

◆ taskFindFile()

int taskFindFile ( const char * filename)
static

◆ convertSdkResult()

lbCardResult convertSdkResult ( int sdk_result)
static

◆ lb_80019C38_noinline()

CardTask * lb_80019C38_noinline ( void )
static

◆ resetTaskArray()

void resetTaskArray ( void )
static

◆ resetState()

void resetState ( int chan,
void * save_data,
int * status_out,
LbCardOnFinishedCallback callback )
static

◆ onCardComplete()

void onCardComplete ( UNUSED s32 chan,
s32 result )
static

◆ convertHsdResult()

int convertHsdResult ( int hsd_result)
static

◆ setTaskFilename()

void setTaskFilename ( const char * filename,
void * file_entries )
static

◆ setupCardEntries()

void setupCardEntries ( CardState * ctx,
void * icon,
LbCardEntry * entry )
inlinestatic

◆ readCardFileSize()

int readCardFileSize ( const volatile int * file_size)
inlinestatic

Preserve the volatile file-size reads in the request builders.

◆ lb_8001B6E0()

s32 lb_8001B6E0 ( s32 file_idx)

◆ lbCardNew_CompleteNextTask()

int lbCardNew_CompleteNextTask ( void )

◆ lbCardNew_CompleteAllTasks()

int lbCardNew_CompleteAllTasks ( int result)

◆ setupTask()

CardTask * setupTask ( CardTaskType type,
int result_mask )
inlinestatic

◆ addTaskEntries()

void addTaskEntries ( CardTaskType type,
int result_mask,
void * file_entries )
inlinestatic

◆ addTask()

void addTask ( CardTaskType type,
int result_mask )
inlinestatic

◆ lb_8001A4CC_dontinline()

void lb_8001A4CC_dontinline ( const char * filename,
void * file_entries )
inlinestatic

◆ lb_8001B7E0()

u32 lb_8001B7E0 ( int chan,
char * filename,
void * file_entries,
void * save_data,
int * status_out )

◆ lb_8001B8C8()

int lb_8001B8C8 ( int chan)

◆ lbCardNew_DeleteSnap()

int lbCardNew_DeleteSnap ( int chan,
const char * filename,
UNK_T status_out )

◆ lb_8001BA44()

int lb_8001BA44 ( int chan,
const char * filename,
UNK_T status_out )

◆ lb_8001BB48()

int lb_8001BB48 ( int chan,
char * filename,
void * file_entries,
void * save_data,
char * comment,
void * banner,
void * icons,
UNK_T status_out )

◆ lb_8001BC18()

int lb_8001BC18 ( int chan,
char * filename,
void ** file_entries,
void * save_data,
char * comment,
void * banner,
void * icons,
bool * status_out )

◆ lb_8001BD34()

int lb_8001BD34 ( int chan,
const char * filename,
UNK_T file_entries,
UNK_T status_out )

◆ lb_8001BE30()

int lb_8001BE30 ( int chan,
const char * filename,
UNK_T file_entries,
char * comment,
void * banner,
void * icons,
UNK_T status_out,
UNK_T callback )

◆ lb_8001BF04()

int lb_8001BF04 ( int chan,
char * filename,
void * file_entries,
char * comment,
void * banner,
void * icons,
UNK_T status_out )

◆ lb_8001BFD8()

int lb_8001BFD8 ( int chan,
lbCardNew_SnapshotEntry * snapshot_entries,
int * free_blocks,
int * free_files )

◆ lb_8001C0F4()

int lb_8001C0F4 ( int chan,
const char * name_a,
const char * name_b,
const char * name_c,
UNK_T status_out )

◆ lb_8001C2D8()

int lb_8001C2D8 ( int chan,
const char * company,
const char * game_name,
const char * filename )

◆ lbCardNew_ProbeEx()

int lbCardNew_ProbeEx ( int chan)

◆ lb_8001C4A8()

int lb_8001C4A8 ( void * file_entries,
void * icon_data )

◆ lbCardNew_AllocWorkArea()

void lbCardNew_AllocWorkArea ( void )

◆ lbCardNew_ForgetMemory()

void lbCardNew_ForgetMemory ( void )

◆ lbCardNew_Init()

void lbCardNew_Init ( void )

Variable Documentation

◆ state

struct lbcardnew_state_t state
static