From 17a0530ff8d1f0d48205697a02006fcd6b02ba48 Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Thu, 5 Sep 2024 00:43:07 -0500 Subject: [PATCH] PAL: up to core1/rumblemanager.c --- decompressed.pal.yaml | 50 +++++++++++++-------------- manual_syms.pal.txt | 72 +++++++++++++++++++++++++++++++-------- src/core1/code_10A00.c | 11 ++++-- src/core1/code_11AC0.c | 18 ++++++---- src/core1/rumblemanager.c | 3 +- 5 files changed, 105 insertions(+), 49 deletions(-) diff --git a/decompressed.pal.yaml b/decompressed.pal.yaml index ceaf6dce..d7f93fc3 100644 --- a/decompressed.pal.yaml +++ b/decompressed.pal.yaml @@ -132,12 +132,12 @@ segments: # type: bin # start: 0xD954B0 -# - name: soundfont2ctl -# type: bin -# start: 0xEA3EB0 -# - name: soundfont2tbl -# type: bin -# start: 0xEADE60 +- name: soundfont2ctl + type: bin + start: 0xEC85E0 +- name: soundfont2tbl + type: bin + start: 0xED2590 - name: core1 dir: core1 @@ -164,11 +164,11 @@ segments: - [0xF475C0, c, code_ABB0] - [0xF49870, c, code_CE60] - [0xF4AD70, c, code_E360] - - [0xF4B4C0, bin, untouched] -# # - [0xF27D40, c, code_EAF0] #DONE -# # - [0xF29C50, c,code_10A00] -# # - [0xF2AD10, c, code_11AC0] #DONE -# # - [0xF2C160, c, rumblemanager] #DONE + - [0xF4B4C0, c, code_EAF0] + - [0xF4D3D0, c, code_10A00] + - [0xF4E490, c, code_11AC0] + - [0xF4F890, c, rumblemanager] + - [0xF50010, bin, untouched] # # - [0xF2C890, c, code_13640] #DONE # # - [0xF2C8D0, c, code_13680] #DONE # # - [0xF2C920, c, overlaymanager] #DONE @@ -376,11 +376,10 @@ segments: - [0xF74C60, .data, code_ABB0] - [0xF74C70, .data, code_CE60] - [0xF74CE0, .data, code_E360] - - [0xF74DD0, bin, remain_core1_data] - -# # - [0xF51550, .data, code_EAF0] -# # - [0xF51560, .data, code_10A00] -# # - [0xF51570, .data, code_11AC0] + - [0xF74DD0, .data, code_EAF0] + - [0xF74DE0, .data, code_10A00] + - [0xF74DF0, .data, code_11AC0] + - [0xF75380, bin, remain_core1_data] # # - [0xF51B00, .data, overlaymanager] # # - [0xF51DA0, .data, code_13990] # # - [0xF51DB0, .data, code_15B30] @@ -417,13 +416,12 @@ segments: - [0xF76710, .rodata, code_5650] - [0xF76770, .rodata, code_72B0] - [0xF76790, .rodata, code_7F60] - # - [0xF767B0, .rodata, code_9D30] - [0xF767B0, .rodata, code_CE60] - - [0xF76A80, bin, remain_core1_rodata] -# # - [0xF53220, .rodata, code_EAF0] -# # - [0xF532A0, .rodata, code_10A00] -# # - [0xF539B0, .rodata, code_11AC0] -# # - [0xF539C0, .rodata, rumblemanager] + - [0xF76A80, .rodata, code_EAF0] + - [0xF76B00, .rodata, code_10A00] + - [0xF77210, .rodata, code_11AC0] + - [0xF77220, .rodata, rumblemanager] + - [0xF77230, bin, remain_core1_rodata] # # - [0xF539D0, .rodata, overlaymanager] # # - [0xF53A50, .rodata, code_13990] # # - [0xF53A70, .rodata, code_18350] @@ -469,10 +467,10 @@ segments: - [0xF791D0, .bss, code_ABB0] - [0xF791D0, .bss, code_CE60] - [0xF791D0, .bss, code_E360] -# # - [0xF791D0, .bss, code_EAF0] -# # - [0xF791D0, .bss, code_10A00] -# # - [0xF791D0, .bss, code_11AC0] -# # - [0xF791D0, .bss, rumblemanager] + - [0xF791D0, .bss, code_EAF0] + - [0xF791D0, .bss, code_10A00] + - [0xF791D0, .bss, code_11AC0] + - [0xF791D0, .bss, rumblemanager] # # - [0xF791D0, .bss, code_13640] # # - [0xF791D0, .bss, overlaymanager] # # - [0xF791D0, .bss, code_13990] diff --git a/manual_syms.pal.txt b/manual_syms.pal.txt index 3d82986a..6accc255 100644 --- a/manual_syms.pal.txt +++ b/manual_syms.pal.txt @@ -33,27 +33,19 @@ boot_gOverlayTable = gOverlayTable; boot_func_8023DA20 = func_8023DA20; /* Temporary Correct*/ -viewport_get_position_vec3f = 0x8024c21c; -veiwport_get_position_vec3w = 0x8024c240; -viewport_get_rotation_vec3f = 0x8024c3b4; -func_8024E71C = 0x8024e36c; -pfsManager_update = 0x8024e418; -pfsManager_init = 0x8024ecac; -pfsManager_getStartReadData = 0x8024ee00; -musicInstruments_init = 0x8024f130; -func_80250034 = 0x8024fc84; -func_80250530 = 0x80250180; -func_80250650 = 0x802502a0; -rumbleManager_80250C08 = 0x80250858; -rumbleManager_init = 0x802508d4; -rumbleManager_80250FC0 = 0x80250c10; spriteGetFramePtr = 0x80250d18; overlayManagerloadCore2 = 0x80250f58; +mlMtxGet = 0x80251000; +mlMtxIdent = 0x8025175c; +mlMtxRotPitch = 0x802518c8; +mlMtxRotYaw = 0x802519d4; +func_8025235C = 0x80251fac; func_80253034 = 0x80252c84; func_802535A8 = 0x802531f8; func_80254008 = 0x80253c58; func_80254028 = 0x80253c78; func_8025425C = 0x80253eac; +memcpy = 0x80254258; heap_init = 0x80254360; malloc = 0x802548f8; free = 0x80254d40; @@ -70,12 +62,15 @@ ml_distance_vec3f = 0x80255cb4; ml_vec3f_normalize_copy = 0x80256008; ml_vec3f_normalize = 0x802560a0; ml_vec3f_set_length_copy = 0x80256230; +ml_vec3f_pitch_rotate_copy = 0x802564bc; ml_vec3f_yaw_rotate_copy = 0x80256550; +func_80256E24 = 0x80256a74; ml_init = 0x80257074; ml_map_f = 0x80257768; func_802585E0 = 0x80258230; ml_sin_deg = 0x8025840c; ml_cos_deg = 0x8025843c; +mlNormalizeAngle = 0x8025846c; ml_vec3f_copy = 0x802587f4; ml_vec3f_diff_copy = 0x80258810; ml_vec3f_diff = 0x80258844; @@ -109,6 +104,21 @@ n_alSynSetPitch = 0x8025d1f0; n_alSynSetFXMix = 0x8025d270; n_alSynStopVoice = 0x8025d300; n_alSynFreeVoice = 0x8025d370; +n_alCSPNew = 0x8025e70c; +alCSPSetBank = 0x8025e880; +alCSPStop = 0x8025e8c0; +n_alCSeqNew = 0x8025ed0c; +alCSPSetSeq = 0x8025ef90; +alCSPPlay = 0x8025efd0; +alCSPSetVol = 0x8025f000; +func_8025F3F0 = 0x8025f040; +alCSPSetTempo = 0x8025f080; +func_8025F4A0 = 0x8025f0f0; +alCSPGetTempo = 0x8025f120; +func_8025F510 = 0x8025f160; +func_8025F570 = 0x8025f1c0; +func_8025F5C0 = 0x8025f210; + bzero = 0x80263790; osWriteBackDCacheAll = 0x80263830; __osInitialize_common = 0x80263860; @@ -158,6 +168,22 @@ osViSwapBuffer = 0x80265f90; osViSetEvent = 0x80265fe0; osViGetNextFramebuffer = 0x80266050; osViBlack = 0x80266090; +guOrtho = 0x80266254; +guTranslate = 0x80266308; +guRotate = 0x802664f4; +osContStartReadData = 0x80266550; +osContGetReadData = 0x80266614; +osContInit = 0x802667b0; +osContSetCh = 0x80266b70; +alBnkfNew = 0x80266ce4; +osGetTime = 0x80266e30; +alCSeqGetTicks = 0x8026769c; +osMotorStop = 0x80267980; +osMotorStart = 0x80267ae8; +osMotorInit = 0x80267dd0; +osPfsInit = 0x80267fa0; + +D_80276574 = 0x802762c4; framebuffer_width = 0x802762d8; framebuffer_height = 0x802762dc; n_syn = 0x80276bd4; @@ -168,6 +194,7 @@ core2_TEXT_START = 0x80286db0; player_getPosition = 0x8028e7c4; player_getPosition_s32 = 0x8028e95c; func_8028EE84 = 0x8028eca4; +player_is_present = 0x8028eff4; func_8028F22C = 0x8028f04c; spawnQueue_func_802C3A18 = 0x802C3898; spawnQueue_flush = 0x802c38b8; @@ -176,21 +203,26 @@ mapSpecificFlags_get = 0x802caeb8; mapSpecificFlags_validateCRC1 = 0x802cb1cc; func_802D686C = 0x802d6a4c; chmole_learnedAllSpiralMountainAbilities = 0x802da678; +chOverlayNoController_spawn = 0x802dd1e8; +chOverlayNoController_func_802DD040 = 0x802dd220; func_802E3580 = 0x802E3770; func_802E35D0 = 0x802E37C0; func_802E35D8 = 0x802E37c8; func_802E3F8C = 0x802E417c; func_802E4170 = 0x802E4360; func_802E4214 = 0x802E4404; +func_802E4384 = 0x802e4574; func_802E4424 = 0x802E4614; game_defrag = 0x802e4ac8; getGameMode = 0x802e4bec; +func_802E4A08 = 0x802e4bf8; func_802F9AA8 = 0x802f9c88; func_802F9F80 = 0x802fa160; func_802F9FD0 = 0x802fa1b0; func_802FA060 = 0x802fa240; func_80309B48 = 0x80309ce8; func_80309D58 = 0x80309ef8; +gctransition_done = 0x8030bf38; gctransition_8030BDC0 = 0x8030bf60; gctransition_reset = 0x8030c07c; func_8030D90C = 0x8030daac; @@ -209,6 +241,7 @@ func_8031C618 = 0x8031c9f8; func_8031C638 = 0x8031ca18; func_80320240 = 0x80320630; func_803203FC = 0x803207ec; +func_803204E4 = 0x803208d4; func_8032056C = 0x8032095C; func_80320B98 = 0x80320f88; func_80320C94 = 0x80321084; @@ -219,16 +252,27 @@ levelSpecificFlags_validateCRC1 = 0x8032243c; func_8032274C = 0x80322b4c; func_80322758 = 0x80322b58; func_80323240 = 0x80323690; +timedFunc_set_3 = 0x803253b4; marker_getActor = 0x80329db0; map_get = 0x80334d10; sfxInstruments_init = 0x80335670; +assetcache_release = 0x8033b828; +func_8033B788 = 0x8033bbd8; +assetcache_get = 0x8033bbe8; assetCache_init = 0x8033bfd4; func_8033BD6C = 0x8033C1BC; +func_8033DD04 = 0x8033e154; +func_8033DD90 = 0x8033e1e0; time_getDelta = 0x8033e1ec; func_8033EF58 = 0x8033f3a8; func_8033EFB0 = 0x8033f400; +demo_readInput = 0x8034a334; +randf = 0x8034a7e0; func_8034C630 = 0x8034ca90; func_8034E698 = 0x8034eaf8; +D_803727F4 = 0x80372d74; +D_80379B90 = 0x8037A560; /* Temporary */ + diff --git a/src/core1/code_10A00.c b/src/core1/code_10A00.c index 858af440..01692e67 100644 --- a/src/core1/code_10A00.c +++ b/src/core1/code_10A00.c @@ -2,6 +2,8 @@ #include "functions.h" #include "variables.h" +#include "version.h" + extern s32 D_803727F4; extern struct { @@ -30,8 +32,13 @@ typedef struct { extern s32 D_80276574; /* .data */ -s32 D_80275D30 = 0xC3A68832; //WHAT IS THIS? -s32 D_80275D34 = 0xDDC3A724; //WHAT IS THIS? +#if VERSION == VERSION_USA_1_0 + s32 D_80275D30 = 0xC3A68832; //WHAT IS THIS? + s32 D_80275D34 = 0xDDC3A724; //WHAT IS THIS? +#elif VERSION == VERSION_PAL + s32 D_80275D30 = 0xED7BCDB7; //WHAT IS THIS? + s32 D_80275D34 = 0xF82DC7AC; //WHAT IS THIS? +#endif s32 D_80275D38 = 0; /* .bss */ diff --git a/src/core1/code_11AC0.c b/src/core1/code_11AC0.c index cfa70c3d..280d51b0 100644 --- a/src/core1/code_11AC0.c +++ b/src/core1/code_11AC0.c @@ -5,6 +5,8 @@ #include "music.h" #include "n_libaudio.h" +#include "version.h" + extern void func_8025F570(ALCSPlayer *, u8); extern void func_8025F510(ALCSPlayer *, u8, u8); extern void func_8025F5C0(ALCSPlayer *, u8); @@ -266,7 +268,11 @@ ALBank *music_get_sound_bank(void){ void func_8024F764(s32 arg0){//music track load if(D_802820E0[arg0] == NULL){ func_8033B788(); +#if VERSION == VERSION_USA_1_0 D_802820E0[arg0] = assetcache_get(arg0 + 0x1516); +#elif VERSION == VERSION_PAL + D_802820E0[arg0] = assetcache_get(arg0 + 0xd74); +#endif } } @@ -532,8 +538,8 @@ void func_80250200(s32 arg0, s16 chan, s16 arg2, f32 arg3){ mask = osSetIntMask(OS_IM_NONE); tmpf = (!func_80250074(arg0))? func_8025F4A0(sp28, chan) :127.0f; - if(arg3 < 0.0333333351f){ - arg3 = 0.0333333351f; + if(arg3 < (2.0f/FRAMERATE)){ + arg3 = (2.0f/FRAMERATE); } for(i = 0; i< 0x20; i++){ @@ -543,7 +549,7 @@ void func_80250200(s32 arg0, s16 chan, s16 arg2, f32 arg3){ D_80282110[i].unk0 = arg0; D_80282110[i].chan = chan; D_80282110[i].unk8 = tmpf; - D_80282110[i].unkC = (arg2 - tmpf)/((arg3 * 60.0f)/2); + D_80282110[i].unkC = (arg2 - tmpf)/((arg3 * (float)FRAMERATE)/2); D_80282110[i].unk10 = arg2; osSetIntMask(mask); return; @@ -561,8 +567,8 @@ void func_80250360(s32 arg0, s32 arg1, f32 arg2){ sp24 = func_802500CC(arg0); sp1C = osSetIntMask(1); tempo = alCSPGetTempo(sp24); - if( arg2 < 0.0333333351f){ - arg2 = 0.0333333351f; + if( arg2 < (2.0f/FRAMERATE)){ + arg2 = (2.0f/FRAMERATE); } for(i = 0; i < 0x20; i++){ if(D_80282110[i].unk8 == D_80282110[i].unk10 @@ -571,7 +577,7 @@ void func_80250360(s32 arg0, s32 arg1, f32 arg2){ D_80282110[i].unk0 = arg0; D_80282110[i].chan = -1; D_80282110[i].unk8 = tempo; - D_80282110[i].unkC = (arg1 - tempo)/((arg2 * 60.0f)/2); + D_80282110[i].unkC = (arg1 - tempo)/((arg2 * (float)FRAMERATE)/2); D_80282110[i].unk10 = arg1; osSetIntMask(sp1C); return; diff --git a/src/core1/rumblemanager.c b/src/core1/rumblemanager.c index dd6af1e6..c9d9533f 100644 --- a/src/core1/rumblemanager.c +++ b/src/core1/rumblemanager.c @@ -2,6 +2,7 @@ #include "functions.h" #include "variables.h" +#include "version.h" void func_8024F35C(s32); @@ -68,7 +69,7 @@ void __rumbleUpdate(void *arg0) { do{ osRecvMesg(&D_80282390, NULL, 1); D_802827E0++; - if (!D_802823B0 && ((D_802827E0 % 60) == 0)) { + if (!D_802823B0 && ((D_802827E0 % FRAMERATE) == 0)) { func_80250930(); } prev_state = rumble_state;