Merge pull request #312 from abnormalhare/main

Match m446dll/camera.c
This commit is contained in:
Liam Coleman 2024-05-24 10:16:33 -05:00 committed by GitHub
commit f584344dd7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 186 additions and 31 deletions

View file

@ -203,23 +203,23 @@ lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:
lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float
lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float
lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float
lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float
lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float
lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float
lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float
lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float
lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float
lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float
lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double
lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double
lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float
lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double
@ -271,9 +271,9 @@ lbl_1_data_30F = .data:0x0000030F; // type:object size:0x1F scope:local data:str
lbl_1_data_32E = .data:0x0000032E; // type:object size:0x22 scope:local data:string
jumptable_1_data_350 = .data:0x00000350; // type:object size:0x1C scope:local
lbl_1_data_370 = .data:0x00000370; // type:object size:0xC data:float
lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1E data:string
lbl_1_data_39A = .data:0x0000039A; // type:object size:0x1E data:string
lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x10
lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1E scope:local data:string
lbl_1_data_39A = .data:0x0000039A; // type:object size:0x1E scope:local data:string
lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x10 scope:local data:string
lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24
lbl_1_data_3EC = .data:0x000003EC; // type:object size:0x24
lbl_1_data_410 = .data:0x00000410; // type:object size:0x14

View file

@ -1193,7 +1193,7 @@ config.libs = [
Object(Matching, "REL/m446Dll/deck.c"),
Object(Matching, "REL/m446Dll/table.c"),
Object(Matching, "REL/m446Dll/player.c"),
Object(NonMatching, "REL/m446Dll/camera.c"),
Object(Matching, "REL/m446Dll/camera.c"),
Object(NonMatching, "REL/m446Dll/cursor.c"),
Object(NonMatching, "REL/m446Dll/stage.c"),
},

View file

@ -146,6 +146,19 @@ typedef void (*m446Func4)(unkStruct4*);
typedef void (*m446Func8)(unkStruct8*);
////// BSS //////
// cursor.c
extern Vec lbl_1_bss_8C;
extern Vec lbl_1_bss_80;
extern f32 lbl_1_bss_7C;
extern Vec lbl_1_bss_70;
extern Vec lbl_1_bss_64;
extern f32 lbl_1_bss_60;
extern Vec lbl_1_bss_54;
extern Vec lbl_1_bss_48;
extern f32 lbl_1_bss_44;
extern f32 lbl_1_bss_40;
extern f32 lbl_1_bss_3C;
extern s32 lbl_1_bss_38;
// player.c
extern unkStruct3* lbl_1_bss_30;
// table.c
@ -281,4 +294,14 @@ extern void fn_1_62F0(unkStruct8*, Vec*, s32);
extern void fn_1_637C(unkStruct8*, s32);
extern void fn_1_64BC(unkStruct8*, s32, s32);
extern void fn_1_6578(unkStruct8*);
extern void fn_1_6620(unkStruct8*);
extern void fn_1_6620(unkStruct8*);
// camera.c
extern s32 fn_1_6778(void);
extern void fn_1_68D8(void);
extern void fn_1_68DC(void);
extern void fn_1_6EA0(Vec*);
extern void fn_1_6EC4(Vec*);
extern void fn_1_6EE8(f32);
extern void fn_1_6EF8(Vec*, Vec*, f32*, s32);
extern s32 fn_1_708C(void);
extern void fn_1_709C(void);

140
src/REL/m446Dll/camera.c Normal file
View file

@ -0,0 +1,140 @@
#include "REL/m446Dll.h"
#include "math.h"
#include "game/hsfman.h"
#include "game/printfunc.h"
#include "game/pad.h"
// bss
Vec lbl_1_bss_8C;
Vec lbl_1_bss_80;
f32 lbl_1_bss_7C;
Vec lbl_1_bss_70;
Vec lbl_1_bss_64;
f32 lbl_1_bss_60;
Vec lbl_1_bss_54;
Vec lbl_1_bss_48;
f32 lbl_1_bss_44;
f32 lbl_1_bss_40;
f32 lbl_1_bss_3C;
s32 lbl_1_bss_38;
// data
Vec lbl_1_data_370 = {0, 1, 0};
s32 fn_1_6778(void) {
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraPerspectiveSet(1, 30.0f, 10.0f, 8000.0f, 1.2f);
lbl_1_bss_8C.x = 0.0f;
lbl_1_bss_8C.y = 0.0f;
lbl_1_bss_8C.z = 0.0f;
lbl_1_bss_80.x = 0.0f;
lbl_1_bss_80.y = 0.0f;
lbl_1_bss_80.z = 0.0f;
lbl_1_bss_7C = 2000.0f;
lbl_1_bss_38 = 0;
return 1;
}
void fn_1_68D8(void) {
return;
}
void fn_1_68DC(void) {
Vec sp2C;
Vec sp20;
Vec sp14;
f32 sp10;
f32 temp_f29;
f32 temp_f30;
f32 temp_f31;
if (lbl_1_bss_38 != 0) {
temp_f31 = sin((M_PI * (90.0f * lbl_1_bss_40)) / 180.0);
temp_f31 *= temp_f31;
lbl_1_bss_8C.x = lbl_1_bss_54.x + (temp_f31 * (lbl_1_bss_70.x - lbl_1_bss_54.x));
lbl_1_bss_8C.y = lbl_1_bss_54.y + (temp_f31 * (lbl_1_bss_70.y - lbl_1_bss_54.y));
lbl_1_bss_8C.z = lbl_1_bss_54.z + (temp_f31 * (lbl_1_bss_70.z - lbl_1_bss_54.z));
lbl_1_bss_80.x = lbl_1_bss_48.x + (temp_f31 * (lbl_1_bss_64.x - lbl_1_bss_48.x));
lbl_1_bss_80.y = lbl_1_bss_48.y + (temp_f31 * (lbl_1_bss_64.y - lbl_1_bss_48.y));
lbl_1_bss_80.z = lbl_1_bss_48.z + (temp_f31 * (lbl_1_bss_64.z - lbl_1_bss_48.z));
lbl_1_bss_7C = lbl_1_bss_44 + (temp_f31 * (lbl_1_bss_60 - lbl_1_bss_44));
lbl_1_bss_40 += lbl_1_bss_3C;
if (lbl_1_bss_40 >= 1.0f) {
lbl_1_bss_8C = lbl_1_bss_70;
lbl_1_bss_80 = lbl_1_bss_64;
lbl_1_bss_7C = lbl_1_bss_60;
lbl_1_bss_38 = 0;
}
}
temp_f30 = lbl_1_bss_80.x;
temp_f29 = lbl_1_bss_80.y;
sp10 = lbl_1_bss_80.z;
sp2C.x = (lbl_1_bss_8C.x + (lbl_1_bss_7C * (sin((M_PI * temp_f29) / 180.0) * cos((M_PI * temp_f30) / 180.0))));
sp2C.y = (lbl_1_bss_8C.y + (lbl_1_bss_7C * -sin((M_PI * temp_f30) / 180.0)));
sp2C.z = (lbl_1_bss_8C.z + (lbl_1_bss_7C * (cos((M_PI * temp_f29) / 180.0) * cos((M_PI * temp_f30) / 180.0))));
sp20.x = lbl_1_bss_8C.x;
sp20.y = lbl_1_bss_8C.y;
sp20.z = lbl_1_bss_8C.z;
sp14.x = (sin((M_PI * temp_f29) / 180.0) * sin((M_PI * temp_f30) / 180.0));
sp14.y = cos((M_PI * temp_f30) / 180.0);
sp14.z = (cos((M_PI * temp_f29) / 180.0) * sin((M_PI * temp_f30) / 180.0));
Hu3DCameraPosSet(1, sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z);
}
void fn_1_6EA0(Vec* arg0) {
lbl_1_bss_8C = *arg0;
}
void fn_1_6EC4(Vec* arg0) {
lbl_1_bss_80 = *arg0;
}
void fn_1_6EE8(f32 arg0) {
lbl_1_bss_7C = arg0;
}
void fn_1_6EF8(Vec* arg0, Vec* arg1, f32* arg2, s32 arg3) {
Vec* var_r31;
Vec* var_r30;
f32 var_f31;
if (arg0) {
var_r31 = arg0;
} else {
var_r31 = &lbl_1_bss_8C;
}
lbl_1_bss_70 = *var_r31;
if (arg1) {
var_r30 = arg1;
} else {
var_r30 = &lbl_1_bss_80;
}
lbl_1_bss_64 = *var_r30;
if (arg2) {
var_f31 = *arg2;
} else {
var_f31 = lbl_1_bss_7C;
}
lbl_1_bss_60 = var_f31;
lbl_1_bss_54 = lbl_1_bss_8C;
lbl_1_bss_48 = lbl_1_bss_80;
lbl_1_bss_44 = lbl_1_bss_7C;
lbl_1_bss_40 = 0.0f;
lbl_1_bss_3C = 1.0f / arg3;
lbl_1_bss_38 = 1;
}
s32 fn_1_708C(void) {
return lbl_1_bss_38;
}
void fn_1_709C(void) {
lbl_1_bss_80.x += 0.01f * *HuPadSubStkX;
lbl_1_bss_80.z += 0.01f * *HuPadSubStkY;
lbl_1_bss_7C += 0.05f * *HuPadTrigL;
lbl_1_bss_7C -= 0.05f * *HuPadTrigR;
print8(0x20, 0x84, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_8C.x, lbl_1_bss_8C.y, lbl_1_bss_8C.z);
print8(0x20, 0x94, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_80.x, lbl_1_bss_80.y, lbl_1_bss_80.z);
print8(0x20, 0xA4, 1.5f, "ZOOM : %.2f", lbl_1_bss_7C);
}

View file

@ -10,14 +10,6 @@
#include "game/frand.h"
#include "game/minigame_seq.h"
// camera.c
extern void fn_1_6778(void);
extern void fn_1_68D8(void);
extern void fn_1_68DC(void);
extern void fn_1_6EA0(Vec*);
extern void fn_1_6EC4(Vec*);
extern void fn_1_6EE8(f32);
extern void fn_1_6EF8(Vec*, Vec*, f32*, s32);
// cursor.c
extern s32 fn_1_72E0(void);
extern void fn_1_72F8(void);

View file

@ -1,4 +1,4 @@
#include "REL/m446dll.h"
#include "REL/m446Dll.h"
#include "math.h"
#include "game/gamework_data.h"