Files
banjo-kazooie/src/core2/code_C2F30.c
2022-08-04 15:34:05 -05:00

104 lines
2.2 KiB
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
typedef struct struct_23_s{
u16 unk0;
s8 unk2;
s8 unk3;
}struct23s;
typedef struct demo_input{
u8 unk0;
u8 unk1;
u16 unk2;
u8 unk4;
u8 unk5;
}DemoInput;
typedef struct demo_file_header{
u8 pad0[0x4];
DemoInput inputs[];
} DemoFileHeader;
void demo_free(void);
extern DemoInput D_80371EF0;
/* .bss */
DemoInput *D_803860D0; //demo_input_ptr
DemoFileHeader * D_803860D4; //demo_file_ptr
s32 D_803860D8;//current_input
s32 D_803860DC;//total_inputs
/* .code */
s32 func_80349EC0(s32 arg0){
s32 sp1C[3];
return func_80304DD0(arg0 + 0x1CC, &sp1C);
}
int demo_readInput(OSContPad* arg0, s32* arg1){
DemoInput *input_ptr = &D_803860D0[D_803860D8++];
int not_eof = D_803860D8 < D_803860DC;
if(!not_eof)
input_ptr = &D_80371EF0;
arg0->stick_x = input_ptr->unk0;
arg0->stick_y = input_ptr->unk1;
arg0->button = input_ptr->unk2;
*arg1 = input_ptr->unk4;
return not_eof;
}
int demo_writeInput(OSContPad* arg0, s32* arg1){
DemoInput *input_ptr = D_803860D0 + D_803860D8;
input_ptr->unk0 = arg0->stick_x;
input_ptr->unk1 = arg0->stick_y;
input_ptr->unk2 = arg0->button;
input_ptr->unk4 = *arg1;
D_803860D8++;
return D_803860D8 < D_803860DC;
}
void func_80349FB0(DemoInput *input_ptr, u32 size, int arg2){
D_803860D0 = input_ptr;
D_803860DC = size/sizeof(DemoInput);
D_803860D8 = 0;
if(input_ptr);
func_8030AFD8(0);
func_80321854();
func_8031FBF8();
func_8031FBA0();
func_803216D0(map_get());
func_8030AFA0(map_get());
func_803204E4(0xc4, 1);
func_8024F224();
func_8034A6B4();
func_8023DB68();
}//*/
/* returns offset of current input */
u32 func_8034A054(void){
return D_803860D8*sizeof(DemoInput);
}
void demo_load(enum map_e map, s32 demo_id){
if(D_803860D4)
demo_free();
D_803860D4 = assetcache_get(0x504 + map_getLevel(map) + demo_id*0xD);
func_80349FB0(D_803860D4->inputs, func_8033B678() - sizeof(DemoFileHeader), 0);
}
void demo_free(void){
if(D_803860D4){
assetcache_release(D_803860D4);
D_803860D4 = NULL;
}
}