Merge remote-tracking branch 'upstream/master' into Mine

This commit is contained in:
petrie911
2022-10-14 13:29:36 -05:00
52 changed files with 8149 additions and 2120 deletions
+1 -1
View File
@@ -23,7 +23,7 @@ please be aware that the codebase could drastically change at any time. Also not
parts of the ROM may not be 'shiftable' yet, so modifying them could currently be difficult.
```
This is a WIP **decompilation** of ***The Legend of Zelda: Majora's Mask***. The purpose of the project is to recreate a source code base for the game from scratch, using information found inside the game along with static and/or dynamic analysis. **It is not, and will not, produce a PC port.** For frequently asked questions, you can visit [our website](https://zelda64.dev/mm), and for more information you can get in touch with the team on our [Discord server](https://discord.zelda64.dev).
This is a WIP **decompilation** of ***The Legend of Zelda: Majora's Mask***. The purpose of the project is to recreate a source code base for the game from scratch, using information found inside the game along with static and/or dynamic analysis. **It is not, and will not, produce a PC port.** For frequently asked questions, you can visit [our website](https://zelda64.dev/games/mm), and for more information you can get in touch with the team on our [Discord server](https://discord.zelda64.dev).
The only version currently supported is N64 US, but we intend to eventually support every retail version of the original game (i.e. not versions of MM3D, which is a totally different game).
+4 -4
View File
@@ -7,13 +7,13 @@
<Texture Name="object_kaizoku_obj_Tex_0019E0" OutName="tex_0019E0" Format="rgba16" Width="64" Height="32" Offset="0x19E0" />
<Texture Name="object_kaizoku_obj_Tex_0029E0" OutName="tex_0029E0" Format="rgba16" Width="16" Height="32" Offset="0x29E0" />
<Texture Name="object_kaizoku_obj_Tex_002DE0" OutName="tex_002DE0" Format="rgba16" Width="16" Height="16" Offset="0x2DE0" />
<DList Name="object_kaizoku_obj_DL_0032A0" Offset="0x32A0" />
<Collision Name="object_kaizoku_obj_Colheader_0035B0" Offset="0x35B0" />
<DList Name="gPirateBarredShutterDL" Offset="0x32A0" />
<Collision Name="gPirateBarredShutterCol" Offset="0x35B0" />
<Texture Name="object_kaizoku_obj_Tex_0035E0" OutName="tex_0035E0" Format="rgba16" Width="32" Height="64" Offset="0x35E0" />
<Texture Name="object_kaizoku_obj_Tex_0045E0" OutName="tex_0045E0" Format="rgba16" Width="32" Height="32" Offset="0x45E0" />
<Texture Name="object_kaizoku_obj_Tex_004DE0" OutName="tex_004DE0" Format="rgba16" Width="32" Height="16" Offset="0x4DE0" />
<DList Name="object_kaizoku_obj_DL_005720" Offset="0x5720" />
<Collision Name="object_kaizoku_obj_Colheader_005EC8" Offset="0x5EC8" />
<DList Name="gPirateGratedShutterDL" Offset="0x5720" />
<Collision Name="gPirateGratedShutterCol" Offset="0x5EC8" />
<Texture Name="object_kaizoku_obj_TLUT_005F00" OutName="tlut_005F00" Format="rgba16" Width="4" Height="4" Offset="0x5F00" />
<Texture Name="object_kaizoku_obj_Tex_005F20" OutName="tex_005F20" Format="ci4" Width="64" Height="64" Offset="0x5F20" />
<DList Name="object_kaizoku_obj_DL_007630" Offset="0x7630" />
+28 -10
View File
@@ -1,33 +1,51 @@
<Root>
<!--
Assets for Ocean Spider House's bombable wall, Skullkid's painting, fireplace grate on the path to the Heart
Piece, bookshelves and chests of drawers.
-->
<File Name="object_kin2_obj" Segment="6">
<DList Name="object_kin2_obj_DL_000120" Offset="0x120" />
<DList Name="gOceanSpiderHouseEmpty1DL" Offset="0x120" />
<DList Name="gOceanSpiderHouseBombableWallDebrisDL" Offset="0x128" />
<DList Name="gOceanSpiderHouseBombableWallCrackDL" Offset="0x2C0" />
<DList Name="gOceanSpiderHouseBombableWallDL" Offset="0x360" />
<Collision Name="gOceanSpiderHouseBombableWallCol" Offset="0x490" />
<DList Name="object_kin2_obj_DL_000650" Offset="0x650" />
<DList Name="object_kin2_obj_DL_000658" Offset="0x658" />
<Collision Name="object_kin2_obj_Colheader_000798" Offset="0x798" />
<DList Name="object_kin2_obj_DL_000820" Offset="0x820" />
<DList Name="gOceanSpiderHouseEmpty2DL" Offset="0x650" />
<DList Name="gOceanSpiderHouseSkullkidPaintingDL" Offset="0x658" />
<Collision Name="gOceanSpiderHouseSkullkidPaintingCol" Offset="0x798" />
<DList Name="gOceanSpiderHouseEmpty3DL" Offset="0x820" />
<DList Name="gOceanSpiderHouseFireplaceGrateDL" Offset="0x828" />
<Collision Name="object_kin2_obj_Colheader_000908" Offset="0x908" />
<DList Name="object_kin2_obj_DL_000CA0" Offset="0xCA0" />
<Collision Name="gOceanSpiderHouseFireplaceGrateCol" Offset="0x908" />
<DList Name="gOceanSpiderHouseEmpty4DL" Offset="0xCA0" />
<DList Name="gOceanSpiderHouseBookshelfDL" Offset="0xCA8" />
<Collision Name="gOceanSpiderHouseBookshelfCol" Offset="0xF80" />
<DList Name="object_kin2_obj_DL_0010F0" Offset="0x10F0" />
<DList Name="gOceanSpiderHouseEmpty5DL" Offset="0x10F0" />
<DList Name="gOceanSpiderHouseChestOfDrawersDL" Offset="0x10F8" />
<Collision Name="gOceanSpiderHouseChestOfDrawersCol" Offset="0x1328" />
<!-- <Blob Name="object_kin2_obj_Blob_001354" Size="0x2C" Offset="0x1354" /> -->
<Texture Name="gOceanSpiderHouseUnused1TLUT" OutName="ocean_spider_house_unused_tlut_1" Format="rgba16" Width="4" Height="4" Offset="0x1360" />
<Texture Name="gOceanSpiderHouseTLUT" OutName="ocean_spider_house_tlut" Format="rgba16" Width="4" Height="4" Offset="0x1380" />
<!-- <Blob Name="object_kin2_obj_Blob_0013A0" Size="0x20" Offset="0x13A0" /> -->
<Texture Name="gOceanSpiderHouseUnused2TLUT" OutName="ocean_spider_house_unused_tlut_2" Format="rgba16" Width="4" Height="4" Offset="0x13A0" />
<Texture Name="gOceanSpiderHouseBombableWallCrackTex" OutName="ocean_spider_house_bombable_wall_crack" Format="ia8" Width="64" Height="64" Offset="0x13C0" />
<Texture Name="gOceanSpiderHouseBookshelfWoodTex" OutName="ocean_spider_house_bookshelf_wood" Format="rgba16" Width="32" Height="32" Offset="0x23C0" />
<Texture Name="gOceanSpiderHouseFireplaceGrateTex" OutName="ocean_spider_house_fireplace_grate" Format="rgba16" Width="32" Height="32" Offset="0x2BC0" />
<Texture Name="gOceanSpiderHouseSkullkidPaintingTex" OutName="ocean_spider_house_skullkid_painting" Format="ci4" Width="64" Height="64" Offset="0x33C0" />
<Texture Name="gOceanSpiderHouseChestOfDrawersFrontTex" OutName="ocean_spider_house_chest_of_drawers_front" Format="rgba16" Width="32" Height="64" Offset="0x3BC0" />
<Texture Name="gOceanSpiderHouseChestOfDrawersBackTex" OutName="ocean_spider_house_chest_of_drawers_back" Format="rgba16" Width="32" Height="64" Offset="0x4BC0" />
<Texture Name="gOceanSpiderHouseChestOfDrawersTopTex" OutName="ocean_spider_house_chest_of_drawers_top" Format="rgba16" Width="32" Height="32" Offset="0x5BC0" />
<Texture Name="gOceanSpiderHouseBookshelfBooksTex" OutName="ocean_spider_house_bookshelf_books" Format="rgba16" Width="32" Height="64" Offset="0x63C0" />
<Texture Name="gOceanSpiderHouseBombableWallDebrisTex1" OutName="ocean_spider_house_debris_1" Format="rgba16" Width="32" Height="32" Offset="0x73C0" />
<Texture Name="gOceanSpiderHouseBombableWallDebrisTex2" OutName="ocean_spider_house_debris_2" Format="i4" Width="64" Height="64" Offset="0x7BC0" />
</File>
+3 -111
View File
@@ -960,115 +960,6 @@ s32 DynaPolyActor_IsInSwitchPressedState(DynaPolyActor* dynaActor);
s32 DynaPolyActor_IsInHeavySwitchPressedState(DynaPolyActor* dynaActor);
s32 DynaPolyActor_ValidateMove(PlayState* play, DynaPolyActor* dynaActor, s16 startRadius, s16 endRadius, s16 startHeight);
// void func_800CBC84(void);
// void func_800CBFA4(void);
// void func_800CC000(void);
// void func_800CC128(void);
// void func_800CC1C4(void);
// void func_800CC260(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE2 param_6);
// void func_800CC488(void);
// void func_800CC56C(void);
// void func_800CC5C8(void);
// void Camera_GetBgCamOrActorCsCamSetting(void);
// void Camera_GetBgCamOrActorCsCamFuncData(void);
// void Camera_GetBgCamIndex(void);
// void Camera_GetWaterBoxBgCamSetting(void);
// void func_800CC938(void);
// void func_800CC958(void);
// void func_800CC9C0(void);
// void func_800CCCEC(void);
// void func_800CD04C(void);
// void func_800CD288(void);
// void func_800CD2E0(void);
// void func_800CD2F0(void);
// void func_800CD3E4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_800CD44C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5);
// void func_800CD634(void);
// void func_800CD6CC(void);
// void func_800CD6F8(void);
// void func_800CD834(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_800CDA14(void);
// void func_800CDB6C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE2 param_6);
// void func_800CDE6C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE2 param_8);
// void func_800CE2B8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE2 param_9);
// void func_800CE5E0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5);
// void func_800CE79C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5);
// void func_800CE930(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5);
// void func_800CEAD8(void);
// void func_800CEC38(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_800CED90(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
s32 Camera_ModeNop(Camera* camera);
s32 Camera_ModeNORM1(Camera* camera);
s32 Camera_ModeNORM2(Camera* camera);
s32 Camera_ModeNORM3(Camera* camera);
s32 Camera_ModeNORM4(Camera* camera);
s32 Camera_ModeNORM0(Camera* camera);
s32 Camera_ModePARA1(Camera* camera);
s32 Camera_ModePARA2(Camera* camera);
s32 Camera_ModePARA3(Camera* camera);
s32 Camera_ModePARA4(Camera* camera);
s32 Camera_ModePARA0(Camera* camera);
s32 Camera_ModeJUMP1(Camera* camera);
s32 Camera_ModeJUMP2(Camera* camera);
s32 Camera_ModeJUMP3(Camera* camera);
s32 Camera_ModeJUMP4(Camera* camera);
s32 Camera_ModeJUMP0(Camera* camera);
s32 Camera_ModeBATT1(Camera* camera);
s32 Camera_ModeBATT2(Camera* camera);
s32 Camera_ModeBATT3(Camera* camera);
s32 Camera_ModeBATT4(Camera* camera);
s32 Camera_ModeBATT0(Camera* camera);
s32 Camera_ModeKEEP1(Camera* camera);
s32 Camera_ModeKEEP2(Camera* camera);
s32 Camera_ModeKEEP3(Camera* camera);
s32 Camera_ModeKEEP4(Camera* camera);
// void func_800D7C44(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6, UNK_TYPE1 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12);
s32 Camera_ModeKEEP0(Camera* camera);
s32 Camera_ModeFIXD1(Camera* camera);
s32 Camera_ModeFIXD2(Camera* camera);
s32 Camera_ModeFIXD3(Camera* camera);
s32 Camera_ModeFIXD4(Camera* camera);
s32 Camera_ModeFIXD0(Camera* camera);
s32 Camera_ModeSUBJ1(Camera* camera);
s32 Camera_ModeSUBJ2(Camera* camera);
s32 Camera_ModeSUBJ3(Camera* camera);
s32 Camera_ModeSUBJ4(Camera* camera);
s32 Camera_ModeSUBJ0(Camera* camera);
s32 Camera_ModeDATA0(Camera* camera);
s32 Camera_ModeDATA1(Camera* camera);
s32 Camera_ModeDATA2(Camera* camera);
s32 Camera_ModeDATA3(Camera* camera);
s32 Camera_ModeDATA4(Camera* camera);
s32 Camera_ModeUNIQ1(Camera* camera);
s32 Camera_ModeUNIQ2(Camera* camera);
s32 Camera_ModeUNIQ3(Camera* camera);
s32 Camera_ModeUNIQ4(Camera* camera);
s32 Camera_ModeUNIQ5(Camera* camera);
s32 Camera_ModeUNIQ0(Camera* camera);
s32 Camera_ModeUNIQ6(Camera* camera);
s32 Camera_ModeUNIQ7(Camera* camera);
s32 Camera_ModeUNIQ8(Camera* camera);
s32 Camera_ModeUNIQ9(Camera* camera);
s32 Camera_ModeDEMO1(Camera* camera);
s32 Camera_ModeDEMO2(Camera* camera);
s32 Camera_ModeDEMO3(Camera* camera);
s32 Camera_ModeDEMO4(Camera* camera);
s32 Camera_ModeDEMO5(Camera* camera);
s32 Camera_ModeDEMO6(Camera* camera);
s32 Camera_ModeDEMO7(Camera* camera);
s32 Camera_ModeDEMO8(Camera* camera);
s32 Camera_ModeDEMO9(Camera* camera);
s32 Camera_ModeDEMO0(Camera* camera);
s32 Camera_ModeSPEC0(Camera* camera);
s32 Camera_ModeSPEC1(Camera* camera);
s32 Camera_ModeSPEC2(Camera* camera);
s32 Camera_ModeSPEC3(Camera* camera);
s32 Camera_ModeSPEC4(Camera* camera);
s32 Camera_ModeSPEC5(Camera* camera);
s32 Camera_ModeSPEC6(Camera* camera);
s32 Camera_ModeSPEC7(Camera* camera);
s32 Camera_ModeSPEC8(Camera* camera);
s32 Camera_ModeSPEC9(Camera* camera);
Camera* Camera_Alloc(View* view, CollisionContext* bg, PlayState* play);
void Camera_Free(Camera* camera);
void Camera_Init(Camera* camera, View* view, CollisionContext* bg, PlayState* play);
@@ -1102,7 +993,7 @@ s32 Camera_SetViewParam(Camera* camera, s32 viewFlag, void* param);
// UNK_TYPE4 func_800DFF44(void);
s16 Camera_SetFlags(Camera* iParm1, s16 flags);
s16 Camera_ClearFlags(Camera* camera, s16 flags);
s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 bgCamDataId, f32 arg3, s16 timer1, s16 timer2, s16 timer3);
s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 bgCamIndex, f32 arg3, s16 timer1, s16 timer2, s16 timer3);
s32 Camera_Copy(Camera* dstCamera, Camera* srcCamera);
// UNK_TYPE4 func_800E01AC(void);
Vec3f* Camera_GetQuakeOffset(Vec3f* dst, Camera* camera);
@@ -1113,6 +1004,7 @@ void Camera_SetToTrackActor(Camera* camera, Actor* actor);
void Camera_SetTargetActor(Camera* camera, Actor* actor);
f32 Camera_GetWaterYPos(Camera* camera);
void func_800E0348(Camera* camera);
DamageTable* DamageTable_Get(s32 index);
void DamageTable_Clear(DamageTable* damageTable);
f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, u32* effect);
@@ -3037,7 +2929,7 @@ void AudioOcarina_StartDefault(u32 ocarinaFlags);
u8 func_8019B5AC(void);
void AudioOcarina_ResetAndReadInput(void);
void AudioOcarina_SetOcarinaDisableTimer(u8 unused, u8 timer);
u32 AudioOcarina_SetInstrument(u8 ocarinaInstrumentId);
void AudioOcarina_SetInstrument(u8 ocarinaInstrumentId);
void AudioOcarina_SetPlaybackSong(s8 songIndexPlusOne, u8 playbackState);
void AudioOcarina_SetRecordingState(u8 recordingState);
OcarinaStaff* AudioOcarina_GetRecordingStaff(void);
+3
View File
@@ -50,6 +50,9 @@
#define R_PAUSE_WORLD_MAP_YAW YREG(24)
#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25)
#define R_PAUSE_WORLD_MAP_DEPTH YREG(26)
#define R_PAUSE_DBG_QUEST_CURSOR_ON YREG(69)
#define R_PAUSE_DBG_QUEST_CURSOR_X YREG(70)
#define R_PAUSE_DBG_QUEST_CURSOR_Y YREG(71)
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
#define R_C_BTN_COLOR(i) ZREG(39 + i)
#define R_B_BTN_COLOR(i) ZREG(43 + i)
+7 -392
View File
@@ -433,392 +433,7 @@ extern s32 gMaxActorId;
extern BgCheckSceneSubdivisionEntry sSceneSubdivisionList[];
extern BgSpecialSceneMaxObjects sCustomDynapolyMem[];
// extern UNK_TYPE1 D_801B4708;
// extern UNK_TYPE1 D_801B4710;
// extern UNK_TYPE1 D_801B4738;
// extern UNK_TYPE1 D_801B4768;
// extern UNK_TYPE1 D_801B4798;
// extern UNK_TYPE1 D_801B47CC;
// extern UNK_TYPE1 D_801B47F0;
// extern UNK_TYPE1 D_801B4824;
// extern UNK_TYPE1 D_801B4848;
// extern UNK_TYPE1 D_801B486C;
// extern UNK_TYPE1 D_801B4890;
// extern UNK_TYPE1 D_801B48B0;
// extern UNK_TYPE1 D_801B48D4;
// extern UNK_TYPE1 D_801B48F8;
// extern UNK_TYPE1 D_801B491C;
// extern UNK_TYPE1 D_801B4944;
// extern UNK_TYPE1 D_801B4974;
// extern UNK_TYPE1 D_801B49A4;
// extern UNK_TYPE1 D_801B49D4;
// extern UNK_TYPE1 D_801B4A04;
// extern UNK_TYPE1 D_801B4A34;
// extern UNK_TYPE1 D_801B4A5C;
// extern UNK_TYPE1 D_801B4A8C;
// extern UNK_TYPE1 D_801B4ABC;
// extern UNK_TYPE1 D_801B4AE0;
// extern UNK_TYPE1 D_801B4B08;
// extern UNK_TYPE1 D_801B4B38;
// extern UNK_TYPE1 D_801B4B60;
// extern UNK_TYPE1 D_801B4B90;
// extern UNK_TYPE1 D_801B4BB8;
// extern UNK_TYPE1 D_801B4BDC;
// extern UNK_TYPE1 D_801B4C04;
// extern UNK_TYPE1 D_801B4C34;
// extern UNK_TYPE1 D_801B4C5C;
// extern UNK_TYPE1 D_801B4C84;
// extern UNK_TYPE1 D_801B4CAC;
// extern UNK_TYPE1 D_801B4CD4;
// extern UNK_TYPE1 D_801B4CFC;
// extern UNK_TYPE1 D_801B4D24;
// extern UNK_TYPE1 D_801B4D34;
// extern UNK_TYPE1 D_801B4D44;
// extern UNK_TYPE1 D_801B4D68;
// extern UNK_TYPE1 D_801B4D8C;
// extern UNK_TYPE1 D_801B4DB0;
// extern UNK_TYPE1 D_801B4DD4;
// extern UNK_TYPE1 D_801B4DF8;
// extern UNK_TYPE1 D_801B4E2C;
// extern UNK_TYPE1 D_801B4E5C;
// extern UNK_TYPE1 D_801B4E90;
// extern UNK_TYPE1 D_801B4EB4;
// extern UNK_TYPE1 D_801B4ED8;
// extern UNK_TYPE1 D_801B4EDC;
// extern UNK_TYPE1 D_801B4EE4;
// extern UNK_TYPE1 D_801B4EF0;
// extern UNK_TYPE1 D_801B4EF4;
// extern UNK_TYPE1 D_801B4EF8;
// extern UNK_TYPE1 D_801B4F20;
// extern UNK_TYPE1 D_801B4F50;
// extern UNK_TYPE1 D_801B4F78;
// extern UNK_TYPE1 D_801B4FA0;
// extern UNK_TYPE1 D_801B4FC8;
// extern UNK_TYPE1 D_801B4FF0;
// extern UNK_TYPE1 D_801B5018;
// extern UNK_TYPE1 D_801B5034;
// extern UNK_TYPE1 D_801B5050;
// extern UNK_TYPE1 D_801B506C;
// extern UNK_TYPE1 D_801B507C;
// extern UNK_TYPE1 D_801B5094;
// extern UNK_TYPE1 D_801B50BC;
// extern UNK_TYPE1 D_801B50EC;
// extern UNK_TYPE1 D_801B511C;
// extern UNK_TYPE1 D_801B5150;
// extern UNK_TYPE1 D_801B5180;
// extern UNK_TYPE1 D_801B51A8;
// extern UNK_TYPE1 D_801B51D8;
// extern UNK_TYPE1 D_801B51FC;
// extern UNK_TYPE1 D_801B5220;
// extern UNK_TYPE1 D_801B5250;
// extern UNK_TYPE1 D_801B5280;
// extern UNK_TYPE1 D_801B52B0;
// extern UNK_TYPE1 D_801B52E0;
// extern UNK_TYPE1 D_801B5308;
// extern UNK_TYPE1 D_801B5338;
// extern UNK_TYPE1 D_801B535C;
// extern UNK_TYPE1 D_801B5380;
// extern UNK_TYPE1 D_801B53A4;
// extern UNK_TYPE1 D_801B53C8;
// extern UNK_TYPE1 D_801B53EC;
// extern UNK_TYPE1 D_801B5410;
// extern UNK_TYPE1 D_801B5434;
// extern UNK_TYPE1 D_801B5458;
// extern UNK_TYPE1 D_801B547C;
// extern UNK_TYPE1 D_801B54A0;
// extern UNK_TYPE1 D_801B54C4;
// extern UNK_TYPE1 D_801B54E8;
// extern UNK_TYPE1 D_801B550C;
// extern UNK_TYPE1 D_801B5530;
// extern UNK_TYPE1 D_801B5554;
// extern UNK_TYPE1 D_801B5578;
// extern UNK_TYPE1 D_801B559C;
// extern UNK_TYPE1 D_801B55C0;
// extern UNK_TYPE1 D_801B55E4;
// extern UNK_TYPE1 D_801B5608;
// extern UNK_TYPE1 D_801B562C;
// extern UNK_TYPE1 D_801B5650;
// extern UNK_TYPE1 D_801B5674;
// extern UNK_TYPE1 D_801B5698;
// extern UNK_TYPE1 D_801B56BC;
// extern UNK_TYPE1 D_801B56E0;
// extern UNK_TYPE1 D_801B5704;
// extern UNK_TYPE1 D_801B5728;
// extern UNK_TYPE1 D_801B574C;
// extern UNK_TYPE1 D_801B5770;
// extern UNK_TYPE1 D_801B577C;
// extern UNK_TYPE1 D_801B57A4;
// extern UNK_TYPE1 D_801B57CC;
// extern UNK_TYPE1 D_801B57F4;
// extern UNK_TYPE1 D_801B5824;
// extern UNK_TYPE1 D_801B5834;
// extern UNK_TYPE1 D_801B5844;
// extern UNK_TYPE1 D_801B5864;
// extern UNK_TYPE1 D_801B5884;
// extern UNK_TYPE1 D_801B58A0;
// extern UNK_TYPE1 D_801B58BC;
// extern UNK_TYPE1 D_801B58D8;
// extern UNK_TYPE1 D_801B58F4;
// extern UNK_TYPE1 D_801B5904;
// extern UNK_TYPE1 D_801B5928;
// extern UNK_TYPE1 D_801B5950;
// extern UNK_TYPE1 D_801B5978;
// extern UNK_TYPE1 D_801B59A8;
// extern UNK_TYPE1 D_801B59D0;
// extern UNK_TYPE1 D_801B59F4;
// extern UNK_TYPE1 D_801B5A00;
// extern UNK_TYPE1 D_801B5A0C;
// extern UNK_TYPE1 D_801B5A30;
// extern UNK_TYPE1 D_801B5A64;
// extern UNK_TYPE1 D_801B5A94;
// extern UNK_TYPE1 D_801B5ABC;
// extern UNK_TYPE1 D_801B5AF0;
// extern UNK_TYPE1 D_801B5B18;
// extern UNK_TYPE1 D_801B5B40;
// extern UNK_TYPE1 D_801B5B70;
// extern UNK_TYPE1 D_801B5B98;
// extern UNK_TYPE1 D_801B5BC8;
// extern UNK_TYPE1 D_801B5BFC;
// extern UNK_TYPE1 D_801B5C30;
// extern UNK_TYPE1 D_801B5C58;
// extern UNK_TYPE1 D_801B5C80;
// extern UNK_TYPE1 D_801B5CB0;
// extern UNK_TYPE1 D_801B5CCC;
// extern UNK_TYPE1 D_801B5CE8;
// extern UNK_TYPE1 D_801B5D10;
// extern UNK_TYPE1 D_801B5D40;
// extern UNK_TYPE1 D_801B5D74;
// extern UNK_TYPE1 D_801B5D9C;
// extern UNK_TYPE1 D_801B5DC4;
// extern UNK_TYPE1 D_801B5DD4;
// extern UNK_TYPE1 D_801B5DFC;
// extern UNK_TYPE1 D_801B5E2C;
// extern UNK_TYPE1 D_801B5E48;
// extern UNK_TYPE1 D_801B5E64;
// extern UNK_TYPE1 D_801B5E8C;
// extern UNK_TYPE1 D_801B5EB4;
// extern UNK_TYPE1 D_801B5EDC;
// extern UNK_TYPE1 D_801B5F0C;
// extern UNK_TYPE1 D_801B5F34;
// extern UNK_TYPE1 D_801B5F5C;
// extern UNK_TYPE1 D_801B5F8C;
// extern UNK_TYPE1 D_801B5FB0;
// extern UNK_TYPE1 D_801B5FD4;
// extern UNK_TYPE1 D_801B5FF8;
// extern UNK_TYPE1 D_801B601C;
// extern UNK_TYPE1 D_801B6044;
// extern UNK_TYPE1 D_801B6074;
// extern UNK_TYPE1 D_801B60A4;
// extern UNK_TYPE1 D_801B60D8;
// extern UNK_TYPE1 D_801B610C;
// extern UNK_TYPE1 D_801B6130;
// extern UNK_TYPE1 D_801B6154;
// extern UNK_TYPE1 D_801B617C;
// extern UNK_TYPE1 D_801B61AC;
// extern UNK_TYPE1 D_801B61DC;
// extern UNK_TYPE1 D_801B620C;
// extern UNK_TYPE1 D_801B623C;
// extern UNK_TYPE1 D_801B626C;
// extern UNK_TYPE1 D_801B6294;
// extern UNK_TYPE1 D_801B62C4;
// extern UNK_TYPE1 D_801B62F4;
// extern UNK_TYPE1 D_801B631C;
// extern UNK_TYPE1 D_801B634C;
// extern UNK_TYPE1 D_801B6374;
// extern UNK_TYPE1 D_801B63A4;
// extern UNK_TYPE1 D_801B63CC;
// extern UNK_TYPE1 D_801B63FC;
// extern UNK_TYPE1 D_801B6418;
// extern UNK_TYPE1 D_801B6434;
// extern UNK_TYPE1 D_801B645C;
// extern UNK_TYPE1 D_801B648C;
// extern UNK_TYPE1 D_801B64B4;
// extern UNK_TYPE1 D_801B64D8;
// extern UNK_TYPE1 D_801B64FC;
// extern UNK_TYPE1 D_801B652C;
// extern UNK_TYPE1 D_801B655C;
// extern UNK_TYPE1 D_801B6584;
// extern UNK_TYPE1 D_801B65AC;
// extern UNK_TYPE1 D_801B65DC;
// extern UNK_TYPE1 D_801B660C;
// extern UNK_TYPE1 D_801B6640;
// extern UNK_TYPE1 D_801B6674;
// extern UNK_TYPE1 D_801B6698;
// extern UNK_TYPE1 D_801B66C0;
// extern UNK_TYPE1 D_801B66E8;
// extern UNK_TYPE1 D_801B6710;
// extern UNK_TYPE1 D_801B6740;
// extern UNK_TYPE1 D_801B6774;
// extern UNK_TYPE1 D_801B679C;
// extern UNK_TYPE1 D_801B67C4;
// extern UNK_TYPE1 D_801B67EC;
// extern UNK_TYPE1 D_801B681C;
// extern UNK_TYPE1 D_801B684C;
// extern UNK_TYPE1 D_801B6880;
// extern UNK_TYPE1 D_801B68A8;
// extern UNK_TYPE1 D_801B68D0;
// extern UNK_TYPE1 D_801B68F8;
// extern UNK_TYPE1 D_801B692C;
// extern UNK_TYPE1 D_801B6954;
// extern UNK_TYPE1 D_801B697C;
// extern UNK_TYPE1 D_801B69A4;
// extern UNK_TYPE1 D_801B69CC;
// extern UNK_TYPE1 D_801B69FC;
// extern UNK_TYPE1 D_801B6A30;
// extern UNK_TYPE1 D_801B6A58;
// extern UNK_TYPE1 D_801B6A80;
// extern UNK_TYPE1 D_801B6AA8;
// extern UNK_TYPE1 D_801B6AD0;
// extern UNK_TYPE1 D_801B6AF8;
// extern UNK_TYPE1 D_801B6B28;
// extern UNK_TYPE1 D_801B6B50;
// extern UNK_TYPE1 D_801B6B78;
// extern UNK_TYPE1 D_801B6BA0;
// extern UNK_TYPE1 D_801B6BC8;
// extern UNK_TYPE1 D_801B6BF0;
// extern UNK_TYPE1 D_801B6C18;
// extern UNK_TYPE1 D_801B6C48;
// extern UNK_TYPE1 D_801B6C70;
// extern UNK_TYPE1 D_801B6C98;
// extern UNK_TYPE1 D_801B6CC0;
// extern UNK_TYPE1 D_801B6CF0;
// extern UNK_TYPE1 D_801B6D24;
// extern UNK_TYPE1 D_801B6D4C;
// extern UNK_TYPE1 D_801B6D74;
// extern UNK_TYPE1 D_801B6D90;
// extern UNK_TYPE1 D_801B6DB8;
// extern UNK_TYPE1 D_801B6DE0;
// extern UNK_TYPE1 D_801B6E08;
// extern UNK_TYPE1 D_801B6E30;
// extern UNK_TYPE1 D_801B6E58;
// extern UNK_TYPE1 D_801B6E80;
// extern UNK_TYPE1 D_801B6EA8;
// extern UNK_TYPE1 D_801B6ED0;
// extern UNK_TYPE1 D_801B6EF8;
// extern UNK_TYPE1 D_801B6F20;
// extern UNK_TYPE1 D_801B6F50;
// extern UNK_TYPE1 D_801B6F78;
// extern UNK_TYPE1 D_801B6FA0;
// extern UNK_TYPE1 D_801B6FB0;
// extern UNK_TYPE1 D_801B6FD8;
// extern UNK_TYPE1 D_801B7008;
// extern UNK_TYPE1 D_801B703C;
// extern UNK_TYPE1 D_801B7064;
// extern UNK_TYPE1 D_801B708C;
// extern UNK_TYPE1 D_801B70BC;
// extern UNK_TYPE1 D_801B70E4;
// extern UNK_TYPE1 D_801B7114;
// extern UNK_TYPE1 D_801B7148;
// extern UNK_TYPE1 D_801B7170;
// extern UNK_TYPE1 D_801B71A0;
// extern UNK_TYPE1 D_801B71D4;
// extern UNK_TYPE1 D_801B7204;
// extern UNK_TYPE1 D_801B7210;
// extern UNK_TYPE1 D_801B7244;
// extern UNK_TYPE1 D_801B7278;
// extern UNK_TYPE1 D_801B729C;
// extern UNK_TYPE1 D_801B72C0;
// extern UNK_TYPE1 D_801B72E4;
// extern UNK_TYPE1 D_801B7308;
// extern UNK_TYPE1 D_801B732C;
// extern UNK_TYPE1 D_801B7354;
// extern UNK_TYPE1 D_801B7384;
// extern UNK_TYPE1 D_801B73AC;
// extern UNK_TYPE1 D_801B73D4;
// extern UNK_TYPE1 D_801B74C4;
// extern UNK_TYPE1 D_801B759C;
// extern UNK_TYPE1 D_801B75F4;
// extern UNK_TYPE1 D_801B767C;
// extern UNK_TYPE1 D_801B7684;
// extern UNK_TYPE1 D_801B768C;
// extern UNK_TYPE1 D_801B7694;
// extern UNK_TYPE1 D_801B769C;
// extern UNK_TYPE1 D_801B76A4;
// extern UNK_TYPE1 D_801B76AC;
// extern UNK_TYPE1 D_801B777C;
// extern UNK_TYPE1 D_801B784C;
// extern UNK_TYPE1 D_801B791C;
// extern UNK_TYPE1 D_801B7984;
// extern UNK_TYPE1 D_801B79EC;
// extern UNK_TYPE1 D_801B79F4;
// extern UNK_TYPE1 D_801B7AE4;
// extern UNK_TYPE1 D_801B7B14;
// extern UNK_TYPE1 D_801B7B44;
// extern UNK_TYPE1 D_801B7B74;
// extern UNK_TYPE1 D_801B7BA4;
// extern UNK_TYPE1 D_801B7BAC;
// extern UNK_TYPE1 D_801B7BDC;
// extern UNK_TYPE1 D_801B7C0C;
// extern UNK_TYPE1 D_801B7C3C;
// extern UNK_TYPE1 D_801B7C44;
// extern UNK_TYPE1 D_801B7C54;
// extern UNK_TYPE1 D_801B7C5C;
// extern UNK_TYPE1 D_801B7C64;
// extern UNK_TYPE1 D_801B7D34;
// extern UNK_TYPE1 D_801B7D3C;
// extern UNK_TYPE1 D_801B7D44;
// extern UNK_TYPE1 D_801B7D4C;
// extern UNK_TYPE1 D_801B7D54;
// extern UNK_TYPE1 D_801B7D5C;
// extern UNK_TYPE1 D_801B7D64;
// extern UNK_TYPE1 D_801B7DCC;
// extern UNK_TYPE1 D_801B7DD4;
// extern UNK_TYPE1 D_801B7E3C;
// extern UNK_TYPE1 D_801B7F0C;
// extern UNK_TYPE1 D_801B7F14;
// extern UNK_TYPE1 D_801B7F1C;
// extern UNK_TYPE1 D_801B7F24;
// extern UNK_TYPE1 D_801B7F2C;
// extern UNK_TYPE1 D_801B7F34;
// extern UNK_TYPE1 D_801B7F3C;
// extern UNK_TYPE1 D_801B7FAC;
// extern UNK_TYPE1 D_801B807C;
// extern UNK_TYPE1 D_801B8084;
// extern UNK_TYPE1 D_801B8154;
// extern UNK_TYPE1 D_801B8224;
// extern UNK_TYPE1 D_801B82F4;
// extern UNK_TYPE1 D_801B82FC;
// extern UNK_TYPE1 D_801B8304;
// extern UNK_TYPE1 D_801B83D4;
// extern UNK_TYPE1 D_801B83DC;
// extern UNK_TYPE1 D_801B8434;
// extern UNK_TYPE1 D_801B843C;
// extern UNK_TYPE1 D_801B8444;
// extern UNK_TYPE1 D_801B8514;
// extern UNK_TYPE1 D_801B85E4;
// extern UNK_TYPE1 D_801B8664;
// extern UNK_TYPE1 D_801B8754;
// extern UNK_TYPE1 D_801B875C;
// extern UNK_TYPE1 D_801B87C4;
// extern UNK_TYPE1 D_801B8894;
// extern UNK_TYPE1 D_801B8964;
// extern UNK_TYPE1 D_801B8A34;
// extern UNK_TYPE1 D_801B8B04;
// extern UNK_TYPE1 D_801B8BD4;
// extern UNK_TYPE1 D_801B8CAC;
// extern UNK_TYPE1 D_801B8CB4;
// extern UNK_TYPE1 D_801B8D8C;
// extern UNK_TYPE1 D_801B8E5C;
// extern UNK_TYPE1 D_801B8F2C;
// extern UNK_TYPE1 D_801B8F34;
// extern UNK_TYPE1 D_801B900C;
// extern UNK_TYPE1 D_801B90D4;
// extern UNK_TYPE1 D_801B91A4;
// extern UNK_TYPE1 D_801B91AC;
// extern UNK_TYPE1 D_801B927C;
// extern UNK_TYPE1 D_801B9354;
// extern UNK_TYPE1 D_801B9424;
// extern UNK_TYPE1 D_801B94F4;
// extern UNK_TYPE1 D_801B95C4;
// extern UNK_TYPE1 D_801B95CC;
// extern UNK_TYPE1 D_801B969C;
// extern UNK_TYPE1 D_801B976C;
// extern UNK_TYPE1 D_801B979C;
// extern CameraStateParams cameraStates[91];
// extern UNK_TYPE1 D_801B9CE2;
// extern UNK_PTR D_801B9CE4;
// extern camera_update_func cameraUpdateFuncs[71];
// extern UNK_TYPE2 D_801B9E04;
// extern UNK_TYPE4 D_801B9E08;
// extern UNK_TYPE4 D_801B9E0C;
// extern UNK_TYPE4 D_801B9E10;
// extern UNK_TYPE4 D_801B9E14;
@@ -833,8 +448,8 @@ extern BgSpecialSceneMaxObjects sCustomDynapolyMem[];
// extern UNK_TYPE1 D_801B9E84;
// extern UNK_TYPE4 D_801B9EB4;
// extern UNK_TYPE4 D_801B9ED4;
// extern UNK_TYPE4 D_801B9F04;
// extern UNK_TYPE2 D_801B9F0C;
// extern UNK_TYPE4 sEarthquakeFreq;
// extern UNK_TYPE2 sEarthquakeTimer;
extern UNK_TYPE4 D_801B9F10;
extern DamageTable sDamageTablePresets[23];
extern f32 damageMultipliers[16];
@@ -1309,7 +924,7 @@ extern u8 gUpgradeShifts[8];
extern u16 gUpgradeCapacities[][4];
extern u32 gGsFlagsMask[];
extern u32 gGsFlagsShift[];
extern void* gItemIcons[];
extern TexturePtr gItemIcons[];
extern u8 gItemSlots[];
extern s16 gItemPrices[];
extern u16 gSceneIdsPerRegion[11][27];
@@ -1358,7 +973,7 @@ extern struct_801C5F44 D_801C5F44[]; // D_801C5F44
extern u8 D_801CFC98;
extern s16 D_801CFCA4[9];
// extern UNK_TYPE2 D_801CFCAC;
// extern UNK_TYPE1 D_801CFCB8;
extern s16 gOcarinaSongItemMap[];
// extern UNK_TYPE2 D_801CFCD8;
// extern UNK_TYPE2 D_801CFCE4;
// extern UNK_TYPE2 D_801CFCF0;
@@ -1571,7 +1186,7 @@ extern f32 gDefaultPanVolume[];
// extern UNK_TYPE1 D_801D5FD4;
extern UNK_PTR D_801D5FE0;
// extern UNK_TYPE1 D_801D5FE4;
extern s32 gAudioContextInitalized;
extern s32 gAudioCtxInitalized;
// extern UNK_TYPE4 D_801D5FEC;
// extern UNK_TYPE4 D_801D5FF0;
// extern UNK_TYPE4 D_801D5FF4;
@@ -3466,7 +3081,7 @@ extern ActiveSequence gActiveSeqs[];
// extern UNK_TYPE1 D_80200BCC;
// extern UNK_TYPE1 D_80200BCE;
// extern UNK_TYPE1 D_80200BD0;
extern AudioContext gAudioContext; // at 0x80200C70
extern AudioContext gAudioCtx; // at 0x80200C70
extern void (*gCustomAudioUpdateFunction)(void);
extern u32 (*gCustomAudioSeqFunction)(s8 value, SequenceChannel* channel);
extern s32 (*gCustomAudioReverbFunction)(Sample*, s32, s8, s32);
+4 -15
View File
@@ -111,17 +111,6 @@ typedef struct {
/* 0x8 */ void* end;
} PolygonType2; // size = 0xC
typedef struct {
/* 0x0 */ s16 func;
/* 0x2 */ UNK_TYPE1 pad2[0x6];
} CameraModeParams; // size = 0x8
typedef struct {
/* 0x0 */ u32 validModes;
/* 0x4 */ UNK_TYPE1 pad4[0x4];
/* 0x8 */ CameraModeParams* modes;
} CameraStateParams; // size = 0xC
typedef struct {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
@@ -418,7 +407,7 @@ typedef struct {
/* 0x1E8 */ OSMesg loadMsg;
/* 0x1EC */ u16 state;
/* 0x1EE */ u16 debugEditor;
/* 0x1F0 */ u8 unk_1F0;
/* 0x1F0 */ u8 bombersNotebookOpen;
/* 0x1F4 */ Vec3f eye;
/* 0x200 */ u16 unk_200;
/* 0x202 */ u16 mode;
@@ -463,7 +452,7 @@ typedef struct {
/* 0x298 */ f32 unk_298;
/* 0x29C */ s16 promptChoice; // save/continue choice: 0 = yes; 4 = no
/* 0x29E */ s16 promptAlpha;
/* 0x2A0 */ s16 unk_2A0;
/* 0x2A0 */ s16 ocarinaSongIndex;
/* 0x2A2 */ u8 worldMapPoints[20];
/* 0x2B6 */ u8 unk_2B6;
/* 0x2B7 */ u8 unk_2B7;
@@ -471,9 +460,9 @@ typedef struct {
/* 0x2B9 */ u8 itemDescriptionOn; // helpful description of item given through a message box
/* 0x2BA */ s16 equipAnimScale; // scale of item icon while moving being equipped to c-button
/* 0x2BC */ s16 equipAnimShrinkRate; // rate the scale is shrinking for the item icon while moving being equipped to c-button
/* 0x2BE */ s16 unk_2BE[5];
/* 0x2BE */ s16 ocarinaButtonsY[5];
/* 0x2C8 */ u16 unk_2C8; // Uses PauseMenuPage enum for Owl Warp. Never set.
/* 0x2CA */ s16 unk_2CA; // Uses OwlStatueId enum for Owl Warp. Never set.
/* 0x2CA */ s16 unk_2CA; // Uses OwlWarpId enum for Owl Warp. Never set.
} PauseContext; // size = 0x2D0
typedef struct {
+1 -1
View File
@@ -7,7 +7,7 @@
#define TATUMS_PER_BEAT 48
#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t)(ptr) != (uintptr_t)&gAudioContext.sequenceChannelNone)
#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t)(ptr) != (uintptr_t)&gAudioCtx.sequenceChannelNone)
#define SEQ_NUM_CHANNELS 16
#define SEQ_IO_VAL_NONE -1
+2 -2
View File
@@ -108,7 +108,7 @@ typedef struct {
// 0x0008_0000 = ?
// 0x0007_E000 = room index, 0x3F = all rooms
// 0x0000_1F00 = lighting setting index
// 0x0000_00FF = CamData index
// 0x0000_00FF = bgCam index
} WaterBox; // size = 0x10
typedef struct {
@@ -122,7 +122,7 @@ typedef struct {
// 0x001C_0000 = ?
// 0x0003_E000 = ?
// 0x0000_1F00 = scene exit index
// 0x0000_00FF = CamData index
// 0x0000_00FF = bgCam index
// Word 1
// 0x0800_0000 = wall damage
// 0x07E0_0000 = conveyor direction
+1247 -23
View File
File diff suppressed because it is too large Load Diff
+7 -3
View File
@@ -40,7 +40,7 @@ typedef enum {
} UpgradeType;
typedef enum {
/* 0x00 */ QUEST_REMAINS_ODOWLA,
/* 0x00 */ QUEST_REMAINS_ODOLWA,
/* 0x01 */ QUEST_REMAINS_GOHT,
/* 0x02 */ QUEST_REMAINS_GYORG,
/* 0x03 */ QUEST_REMAINS_TWINMOLD,
@@ -59,8 +59,12 @@ typedef enum {
/* 0x10 */ QUEST_SONG_STORMS,
/* 0x11 */ QUEST_SONG_SUN,
/* 0x12 */ QUEST_BOMBERS_NOTEBOOK, // Obtained Bombers Notebook
/* 0x13 */ QUEST_SKULL_TOKEN,
/* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18,
/* 0x13 */ QUEST_QUIVER,
/* 0x14 */ QUEST_BOMB_BAG,
/* 0x15 */ QUEST_SKULL_TOKEN,
/* 0x16 */ QUEST_HEART_PIECE, // for `pauseCtx->cursorPoint[PAUSE_QUEST]`
/* 0x17 */ QUEST_17, // Used in a conditional for quest cursors
/* 0x18 */ QUEST_SONG_LULLABY_INTRO,
/* 0x19 */ QUEST_PICTOGRAPH, // A photo from the pictograph box is saved
/* 0x1C */ QUEST_HEART_PIECE_COUNT = 0x1C
} QuestItem;
+1 -1
View File
@@ -289,7 +289,7 @@ typedef struct {
typedef struct {
struct {
s8 room; // Room to switch to
s8 bgCamDataId; // How the camera reacts during the transition. -2 for spiral staircase. -1 for generic door. 0+ will index scene CamData
s8 bgCamIndex; // How the camera reacts during the transition. -2 for spiral staircase. -1 for generic door. 0+ will index scene CamData
} /* 0x0 */ sides[2]; // 0 = front, 1 = back
/* 0x4 */ s16 id;
/* 0x6 */ Vec3s pos;
+2 -6
View File
@@ -451,8 +451,6 @@ beginseg
include "build/src/code/z_bg_collect.o"
include "build/src/code/z_bg_item.o"
include "build/src/code/z_camera.o"
include "build/data/code/z_camera.data.o"
include "build/data/code/z_camera.bss.o"
include "build/src/code/z_collision_btltbls.o"
pad_text
include "build/src/code/z_collision_check.o"
@@ -3947,8 +3945,7 @@ beginseg
name "ovl_Bg_Kin2_Picture"
compress
include "build/src/overlays/actors/ovl_Bg_Kin2_Picture/z_bg_kin2_picture.o"
include "build/data/ovl_Bg_Kin2_Picture/ovl_Bg_Kin2_Picture.data.o"
include "build/data/ovl_Bg_Kin2_Picture/ovl_Bg_Kin2_Picture.reloc.o"
include "build/src/overlays/actors/ovl_Bg_Kin2_Picture/ovl_Bg_Kin2_Picture_reloc.o"
endseg
beginseg
@@ -4140,8 +4137,7 @@ beginseg
name "ovl_Obj_Y2shutter"
compress
include "build/src/overlays/actors/ovl_Obj_Y2shutter/z_obj_y2shutter.o"
include "build/data/ovl_Obj_Y2shutter/ovl_Obj_Y2shutter.data.o"
include "build/data/ovl_Obj_Y2shutter/ovl_Obj_Y2shutter.reloc.o"
include "build/src/overlays/actors/ovl_Obj_Y2shutter/ovl_Obj_Y2shutter_reloc.o"
endseg
beginseg
+1
View File
@@ -1,3 +1,4 @@
#include "prevent_bss_reordering.h"
#include "global.h"
u8 D_80096B20 = 1;
+1 -1
View File
@@ -268,7 +268,7 @@ f32 AudioEffects_AdsrUpdate(AdsrState* adsr) {
break;
default:
adsr->delay *= gAudioContext.audioBufferParameters.updatesPerFrameScaled;
adsr->delay *= gAudioCtx.audioBufferParameters.updatesPerFrameScaled;
if (adsr->delay == 0) {
adsr->delay = 1;
}
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -14,7 +14,7 @@ const s16 gAudioTatumInit[] = {
#define SOUNDFONT_2_SIZE 0xCE0
// Sizes of everything on the init pool
#define AI_BUFFERS_SIZE (AIBUF_SIZE * ARRAY_COUNT(gAudioContext.aiBuffers))
#define AI_BUFFERS_SIZE (AIBUF_SIZE * ARRAY_COUNT(gAudioCtx.aiBuffers))
#define SOUNDFONT_LIST_SIZE (NUM_SOUNDFONTS * sizeof(SoundFont))
// 0x19BD0
File diff suppressed because it is too large Load Diff
+59 -59
View File
@@ -35,7 +35,7 @@ void AudioPlayback_InitSampleState(Note* note, NoteSampleState* sampleState, Not
sampleState->bitField0.strongLeft = false;
sampleState->bitField0.strongReverbRight = stereoData.strongReverbRight;
sampleState->bitField0.strongReverbLeft = stereoData.strongReverbLeft;
if (stereoHeadsetEffects && (gAudioContext.soundMode == SOUNDMODE_HEADSET)) {
if (stereoHeadsetEffects && (gAudioCtx.soundMode == SOUNDMODE_HEADSET)) {
halfPanIndex = pan >> 1;
if (halfPanIndex > 0x3F) {
halfPanIndex = 0x3F;
@@ -47,7 +47,7 @@ void AudioPlayback_InitSampleState(Note* note, NoteSampleState* sampleState, Not
volLeft = gHeadsetPanVolume[pan];
volRight = gHeadsetPanVolume[0x7F - pan];
} else if (stereoHeadsetEffects && (gAudioContext.soundMode == SOUNDMODE_STEREO)) {
} else if (stereoHeadsetEffects && (gAudioCtx.soundMode == SOUNDMODE_STEREO)) {
strongLeft = strongRight = false;
sampleState->haasEffectLeftDelaySize = 0;
sampleState->haasEffectRightDelaySize = 0;
@@ -85,7 +85,7 @@ void AudioPlayback_InitSampleState(Note* note, NoteSampleState* sampleState, Not
break;
}
} else if (gAudioContext.soundMode == SOUNDMODE_MONO) {
} else if (gAudioCtx.soundMode == SOUNDMODE_MONO) {
sampleState->bitField0.strongReverbRight = false;
sampleState->bitField0.strongReverbLeft = false;
volLeft = 0.707f; // approx 1/sqrt(2)
@@ -170,9 +170,9 @@ void AudioPlayback_ProcessNotes(void) {
f32 scale;
s32 i;
for (i = 0; i < gAudioContext.numNotes; i++) {
note = &gAudioContext.notes[i];
sampleState = &gAudioContext.sampleStateList[gAudioContext.sampleStateOffset + i];
for (i = 0; i < gAudioCtx.numNotes; i++) {
note = &gAudioCtx.notes[i];
sampleState = &gAudioCtx.sampleStateList[gAudioCtx.sampleStateOffset + i];
playbackState = &note->playbackState;
if (playbackState->parentLayer != NO_LAYER) {
if ((u32)playbackState->parentLayer < 0x7FFFFFFF) {
@@ -181,7 +181,7 @@ void AudioPlayback_ProcessNotes(void) {
if ((note != playbackState->parentLayer->note) && (playbackState->status == PLAYBACK_STATUS_0)) {
playbackState->adsr.action.s.release = true;
playbackState->adsr.fadeOutVel = gAudioContext.audioBufferParameters.updatesPerFrameInv;
playbackState->adsr.fadeOutVel = gAudioCtx.audioBufferParameters.updatesPerFrameInv;
playbackState->priority = 1;
playbackState->status = PLAYBACK_STATUS_2;
goto out;
@@ -316,7 +316,7 @@ void AudioPlayback_ProcessNotes(void) {
}
subAttrs.frequency *= playbackState->vibratoFreqScale * playbackState->portamentoFreqScale;
subAttrs.frequency *= gAudioContext.audioBufferParameters.resampleRate;
subAttrs.frequency *= gAudioCtx.audioBufferParameters.resampleRate;
subAttrs.velocity *= scale;
AudioPlayback_InitSampleState(note, sampleState, &subAttrs);
noteSampleState->bitField1.bookOffset = bookOffset;
@@ -347,18 +347,18 @@ Instrument* AudioPlayback_GetInstrumentInner(s32 fontId, s32 instId) {
}
if (!AudioLoad_IsFontLoadComplete(fontId)) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(0, fontId, AUDIO_ERROR_FONT_NOT_LOADED);
gAudioCtx.audioErrorFlags = AUDIO_ERROR(0, fontId, AUDIO_ERROR_FONT_NOT_LOADED);
return NULL;
}
if (instId >= gAudioContext.soundFontList[fontId].numInstruments) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(fontId, instId, AUDIO_ERROR_INVALID_INST_ID);
if (instId >= gAudioCtx.soundFontList[fontId].numInstruments) {
gAudioCtx.audioErrorFlags = AUDIO_ERROR(fontId, instId, AUDIO_ERROR_INVALID_INST_ID);
return NULL;
}
inst = gAudioContext.soundFontList[fontId].instruments[instId];
inst = gAudioCtx.soundFontList[fontId].instruments[instId];
if (inst == NULL) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(fontId, instId, AUDIO_ERROR_NO_INST);
gAudioCtx.audioErrorFlags = AUDIO_ERROR(fontId, instId, AUDIO_ERROR_NO_INST);
return inst;
}
@@ -373,21 +373,21 @@ Drum* AudioPlayback_GetDrum(s32 fontId, s32 drumId) {
}
if (!AudioLoad_IsFontLoadComplete(fontId)) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(0, fontId, AUDIO_ERROR_FONT_NOT_LOADED);
gAudioCtx.audioErrorFlags = AUDIO_ERROR(0, fontId, AUDIO_ERROR_FONT_NOT_LOADED);
return NULL;
}
if (drumId >= gAudioContext.soundFontList[fontId].numDrums) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(fontId, drumId, AUDIO_ERROR_INVALID_DRUM_SFX_ID);
if (drumId >= gAudioCtx.soundFontList[fontId].numDrums) {
gAudioCtx.audioErrorFlags = AUDIO_ERROR(fontId, drumId, AUDIO_ERROR_INVALID_DRUM_SFX_ID);
return NULL;
}
if ((u32)gAudioContext.soundFontList[fontId].drums < AUDIO_RELOCATED_ADDRESS_START) {
if ((u32)gAudioCtx.soundFontList[fontId].drums < AUDIO_RELOCATED_ADDRESS_START) {
return NULL;
}
drum = gAudioContext.soundFontList[fontId].drums[drumId];
drum = gAudioCtx.soundFontList[fontId].drums[drumId];
if (drum == NULL) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(fontId, drumId, AUDIO_ERROR_NO_DRUM_SFX);
gAudioCtx.audioErrorFlags = AUDIO_ERROR(fontId, drumId, AUDIO_ERROR_NO_DRUM_SFX);
}
return drum;
@@ -401,23 +401,23 @@ SoundEffect* AudioPlayback_GetSoundEffect(s32 fontId, s32 sfxId) {
}
if (!AudioLoad_IsFontLoadComplete(fontId)) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(0, fontId, AUDIO_ERROR_FONT_NOT_LOADED);
gAudioCtx.audioErrorFlags = AUDIO_ERROR(0, fontId, AUDIO_ERROR_FONT_NOT_LOADED);
return NULL;
}
if (sfxId >= gAudioContext.soundFontList[fontId].numSfx) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(fontId, sfxId, AUDIO_ERROR_INVALID_DRUM_SFX_ID);
if (sfxId >= gAudioCtx.soundFontList[fontId].numSfx) {
gAudioCtx.audioErrorFlags = AUDIO_ERROR(fontId, sfxId, AUDIO_ERROR_INVALID_DRUM_SFX_ID);
return NULL;
}
if ((u32)gAudioContext.soundFontList[fontId].soundEffects < AUDIO_RELOCATED_ADDRESS_START) {
if ((u32)gAudioCtx.soundFontList[fontId].soundEffects < AUDIO_RELOCATED_ADDRESS_START) {
return NULL;
}
soundEffect = &gAudioContext.soundFontList[fontId].soundEffects[sfxId];
soundEffect = &gAudioCtx.soundFontList[fontId].soundEffects[sfxId];
if (soundEffect == NULL) {
gAudioContext.audioErrorFlags = AUDIO_ERROR(fontId, sfxId, AUDIO_ERROR_NO_DRUM_SFX);
gAudioCtx.audioErrorFlags = AUDIO_ERROR(fontId, sfxId, AUDIO_ERROR_NO_DRUM_SFX);
}
if (soundEffect->tunedSample.sample == NULL) {
@@ -438,24 +438,24 @@ s32 AudioPlayback_SetFontInstrument(s32 instrumentType, s32 fontId, s32 index, v
switch (instrumentType) {
case 0:
if (index >= gAudioContext.soundFontList[fontId].numDrums) {
if (index >= gAudioCtx.soundFontList[fontId].numDrums) {
return -3;
}
gAudioContext.soundFontList[fontId].drums[index] = value;
gAudioCtx.soundFontList[fontId].drums[index] = value;
break;
case 1:
if (index >= gAudioContext.soundFontList[fontId].numSfx) {
if (index >= gAudioCtx.soundFontList[fontId].numSfx) {
return -3;
}
gAudioContext.soundFontList[fontId].soundEffects[index] = *(SoundEffect*)value;
gAudioCtx.soundFontList[fontId].soundEffects[index] = *(SoundEffect*)value;
break;
default:
if (index >= gAudioContext.soundFontList[fontId].numInstruments) {
if (index >= gAudioCtx.soundFontList[fontId].numInstruments) {
return -3;
}
gAudioContext.soundFontList[fontId].instruments[index] = value;
gAudioCtx.soundFontList[fontId].instruments[index] = value;
break;
}
@@ -488,7 +488,7 @@ void AudioPlayback_SeqLayerDecayRelease(SequenceLayer* layer, s32 target) {
if (note->playbackState.parentLayer != layer) {
if (note->playbackState.parentLayer == NO_LAYER && note->playbackState.wantedParentLayer == NO_LAYER &&
note->playbackState.prevParentLayer == layer && target != ADSR_STATE_DECAY) {
note->playbackState.adsr.fadeOutVel = gAudioContext.audioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.fadeOutVel = gAudioCtx.audioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.action.s.release = true;
}
return;
@@ -549,16 +549,16 @@ void AudioPlayback_SeqLayerDecayRelease(SequenceLayer* layer, s32 target) {
note->playbackState.prevParentLayer = note->playbackState.parentLayer;
note->playbackState.parentLayer = NO_LAYER;
if (target == ADSR_STATE_RELEASE) {
note->playbackState.adsr.fadeOutVel = gAudioContext.audioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.fadeOutVel = gAudioCtx.audioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.action.s.release = true;
note->playbackState.status = PLAYBACK_STATUS_2;
} else {
note->playbackState.status = PLAYBACK_STATUS_1;
note->playbackState.adsr.action.s.decay = true;
if (layer->adsr.decayIndex == 0) {
note->playbackState.adsr.fadeOutVel = gAudioContext.adsrDecayTable[layer->channel->adsr.decayIndex];
note->playbackState.adsr.fadeOutVel = gAudioCtx.adsrDecayTable[layer->channel->adsr.decayIndex];
} else {
note->playbackState.adsr.fadeOutVel = gAudioContext.adsrDecayTable[layer->adsr.decayIndex];
note->playbackState.adsr.fadeOutVel = gAudioCtx.adsrDecayTable[layer->adsr.decayIndex];
}
note->playbackState.adsr.sustain =
((f32)(s32)(layer->channel->adsr.sustain) * note->playbackState.adsr.current) / 256.0f;
@@ -665,11 +665,11 @@ void AudioPlayback_InitNoteLists(NotePool* pool) {
void AudioPlayback_InitNoteFreeList(void) {
s32 i;
AudioPlayback_InitNoteLists(&gAudioContext.noteFreeLists);
for (i = 0; i < gAudioContext.numNotes; i++) {
gAudioContext.notes[i].listItem.u.value = &gAudioContext.notes[i];
gAudioContext.notes[i].listItem.prev = NULL;
AudioSeq_AudioListPushBack(&gAudioContext.noteFreeLists.disabled, &gAudioContext.notes[i].listItem);
AudioPlayback_InitNoteLists(&gAudioCtx.noteFreeLists);
for (i = 0; i < gAudioCtx.numNotes; i++) {
gAudioCtx.notes[i].listItem.u.value = &gAudioCtx.notes[i];
gAudioCtx.notes[i].listItem.prev = NULL;
AudioSeq_AudioListPushBack(&gAudioCtx.noteFreeLists.disabled, &gAudioCtx.notes[i].listItem);
}
}
@@ -683,22 +683,22 @@ void AudioPlayback_NotePoolClear(NotePool* pool) {
switch (i) {
case 0:
source = &pool->disabled;
dest = &gAudioContext.noteFreeLists.disabled;
dest = &gAudioCtx.noteFreeLists.disabled;
break;
case 1:
source = &pool->decaying;
dest = &gAudioContext.noteFreeLists.decaying;
dest = &gAudioCtx.noteFreeLists.decaying;
break;
case 2:
source = &pool->releasing;
dest = &gAudioContext.noteFreeLists.releasing;
dest = &gAudioCtx.noteFreeLists.releasing;
break;
case 3:
source = &pool->active;
dest = &gAudioContext.noteFreeLists.active;
dest = &gAudioCtx.noteFreeLists.active;
break;
}
@@ -729,22 +729,22 @@ void AudioPlayback_NotePoolFill(NotePool* pool, s32 count) {
switch (i) {
case 0:
source = &gAudioContext.noteFreeLists.disabled;
source = &gAudioCtx.noteFreeLists.disabled;
dest = &pool->disabled;
break;
case 1:
source = &gAudioContext.noteFreeLists.decaying;
source = &gAudioCtx.noteFreeLists.decaying;
dest = &pool->decaying;
break;
case 2:
source = &gAudioContext.noteFreeLists.releasing;
source = &gAudioCtx.noteFreeLists.releasing;
dest = &pool->releasing;
break;
case 3:
source = &gAudioContext.noteFreeLists.active;
source = &gAudioCtx.noteFreeLists.active;
dest = &pool->active;
break;
}
@@ -862,7 +862,7 @@ void AudioPlayback_NoteReleaseAndTakeOwnership(Note* note, SequenceLayer* layer)
note->playbackState.wantedParentLayer = layer;
note->playbackState.priority = layer->channel->notePriority;
note->playbackState.adsr.fadeOutVel = gAudioContext.audioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.fadeOutVel = gAudioCtx.audioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.action.s.release = true;
}
@@ -958,9 +958,9 @@ Note* AudioPlayback_AllocNote(SequenceLayer* layer) {
}
if (policy & 8) {
if (!(note = AudioPlayback_AllocNoteFromDisabled(&gAudioContext.noteFreeLists, layer)) &&
!(note = AudioPlayback_AllocNoteFromDecaying(&gAudioContext.noteFreeLists, layer)) &&
!(note = AudioPlayback_AllocNoteFromActive(&gAudioContext.noteFreeLists, layer))) {
if (!(note = AudioPlayback_AllocNoteFromDisabled(&gAudioCtx.noteFreeLists, layer)) &&
!(note = AudioPlayback_AllocNoteFromDecaying(&gAudioCtx.noteFreeLists, layer)) &&
!(note = AudioPlayback_AllocNoteFromActive(&gAudioCtx.noteFreeLists, layer))) {
goto null_return;
}
return note;
@@ -968,13 +968,13 @@ Note* AudioPlayback_AllocNote(SequenceLayer* layer) {
if (!(note = AudioPlayback_AllocNoteFromDisabled(&layer->channel->notePool, layer)) &&
!(note = AudioPlayback_AllocNoteFromDisabled(&layer->channel->seqPlayer->notePool, layer)) &&
!(note = AudioPlayback_AllocNoteFromDisabled(&gAudioContext.noteFreeLists, layer)) &&
!(note = AudioPlayback_AllocNoteFromDisabled(&gAudioCtx.noteFreeLists, layer)) &&
!(note = AudioPlayback_AllocNoteFromDecaying(&layer->channel->notePool, layer)) &&
!(note = AudioPlayback_AllocNoteFromDecaying(&layer->channel->seqPlayer->notePool, layer)) &&
!(note = AudioPlayback_AllocNoteFromDecaying(&gAudioContext.noteFreeLists, layer)) &&
!(note = AudioPlayback_AllocNoteFromDecaying(&gAudioCtx.noteFreeLists, layer)) &&
!(note = AudioPlayback_AllocNoteFromActive(&layer->channel->notePool, layer)) &&
!(note = AudioPlayback_AllocNoteFromActive(&layer->channel->seqPlayer->notePool, layer)) &&
!(note = AudioPlayback_AllocNoteFromActive(&gAudioContext.noteFreeLists, layer))) {
!(note = AudioPlayback_AllocNoteFromActive(&gAudioCtx.noteFreeLists, layer))) {
goto null_return;
}
return note;
@@ -988,8 +988,8 @@ void AudioPlayback_NoteInitAll(void) {
Note* note;
s32 i;
for (i = 0; i < gAudioContext.numNotes; i++) {
note = &gAudioContext.notes[i];
for (i = 0; i < gAudioCtx.numNotes; i++) {
note = &gAudioCtx.notes[i];
note->sampleState = gZeroedSampleState;
note->playbackState.priority = 0;
note->playbackState.status = PLAYBACK_STATUS_0;
@@ -1006,7 +1006,7 @@ void AudioPlayback_NoteInitAll(void) {
note->playbackState.stereoHeadsetEffects = false;
note->playbackState.startSamplePos = 0;
note->synthesisState.synthesisBuffers =
AudioHeap_AllocDmaMemory(&gAudioContext.miscPool, sizeof(NoteSynthesisBuffers));
note->playbackState.attributes.filterBuf = AudioHeap_AllocDmaMemory(&gAudioContext.miscPool, FILTER_SIZE);
AudioHeap_AllocDmaMemory(&gAudioCtx.miscPool, sizeof(NoteSynthesisBuffers));
note->playbackState.attributes.filterBuf = AudioHeap_AllocDmaMemory(&gAudioCtx.miscPool, FILTER_SIZE);
}
}
+58 -59
View File
@@ -269,7 +269,7 @@ s32 AudioSeq_HandleScriptFlowControl(SequencePlayer* seqPlayer, SeqScriptState*
void AudioSeq_InitSequenceChannel(SequenceChannel* channel) {
s32 i;
if (channel == &gAudioContext.sequenceChannelNone) {
if (channel == &gAudioCtx.sequenceChannelNone) {
return;
}
@@ -330,7 +330,7 @@ s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) {
s32 pad;
if (channel->layers[layerIndex] == NULL) {
layer = AudioSeq_AudioListPopBack(&gAudioContext.layerFreeList);
layer = AudioSeq_AudioListPopBack(&gAudioCtx.layerFreeList);
channel->layers[layerIndex] = layer;
if (layer == NULL) {
channel->layers[layerIndex] = NULL;
@@ -384,7 +384,7 @@ s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) {
void AudioSeq_SeqLayerDisable(SequenceLayer* layer) {
if (layer != NULL) {
if ((layer->channel != &gAudioContext.sequenceChannelNone) && (layer->channel->seqPlayer->finished == true)) {
if ((layer->channel != &gAudioCtx.sequenceChannelNone) && (layer->channel->seqPlayer->finished == true)) {
AudioPlayback_SeqLayerNoteRelease(layer);
} else {
AudioPlayback_SeqLayerNoteDecay(layer);
@@ -398,7 +398,7 @@ void AudioSeq_SeqLayerFree(SequenceChannel* channel, s32 layerIndex) {
SequenceLayer* layer = channel->layers[layerIndex];
if (layer != NULL) {
AudioSeq_AudioListPushBack(&gAudioContext.layerFreeList, &layer->listItem);
AudioSeq_AudioListPushBack(&gAudioCtx.layerFreeList, &layer->listItem);
AudioSeq_SeqLayerDisable(layer);
channel->layers[layerIndex] = NULL;
}
@@ -484,10 +484,10 @@ void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer) {
AudioLoad_SetFontLoadStatus(seqPlayer->defaultFont, LOAD_STATUS_MAYBE_DISCARDABLE);
}
if (seqPlayer->defaultFont == gAudioContext.fontCache.temporary.entries[0].id) {
gAudioContext.fontCache.temporary.nextSide = 1;
} else if (seqPlayer->defaultFont == gAudioContext.fontCache.temporary.entries[1].id) {
gAudioContext.fontCache.temporary.nextSide = 0;
if (seqPlayer->defaultFont == gAudioCtx.fontCache.temporary.entries[0].id) {
gAudioCtx.fontCache.temporary.nextSide = 1;
} else if (seqPlayer->defaultFont == gAudioCtx.fontCache.temporary.entries[1].id) {
gAudioCtx.fontCache.temporary.nextSide = 0;
}
}
@@ -520,15 +520,15 @@ void* AudioSeq_AudioListPopBack(AudioListItem* list) {
void AudioSeq_InitLayerFreelist(void) {
s32 i;
gAudioContext.layerFreeList.prev = &gAudioContext.layerFreeList;
gAudioContext.layerFreeList.next = &gAudioContext.layerFreeList;
gAudioContext.layerFreeList.u.count = 0;
gAudioContext.layerFreeList.pool = NULL;
gAudioCtx.layerFreeList.prev = &gAudioCtx.layerFreeList;
gAudioCtx.layerFreeList.next = &gAudioCtx.layerFreeList;
gAudioCtx.layerFreeList.u.count = 0;
gAudioCtx.layerFreeList.pool = NULL;
for (i = 0; i < ARRAY_COUNT(gAudioContext.sequenceLayers); i++) {
gAudioContext.sequenceLayers[i].listItem.u.value = &gAudioContext.sequenceLayers[i];
gAudioContext.sequenceLayers[i].listItem.prev = NULL;
AudioSeq_AudioListPushBack(&gAudioContext.layerFreeList, &gAudioContext.sequenceLayers[i].listItem);
for (i = 0; i < ARRAY_COUNT(gAudioCtx.sequenceLayers); i++) {
gAudioCtx.sequenceLayers[i].listItem.u.value = &gAudioCtx.sequenceLayers[i];
gAudioCtx.sequenceLayers[i].listItem.prev = NULL;
AudioSeq_AudioListPushBack(&gAudioCtx.layerFreeList, &gAudioCtx.sequenceLayers[i].listItem);
}
}
@@ -918,7 +918,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
layer->tunedSample = NULL;
tuning = 1.0f;
if (instOrWave >= 0xC0) {
layer->tunedSample = &gAudioContext.synthesisReverbs[instOrWave - 0xC0].tunedSample;
layer->tunedSample = &gAudioCtx.synthesisReverbs[instOrWave - 0xC0].tunedSample;
}
}
@@ -948,12 +948,12 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
portamento->extent = (freqScale2 / freqScale) - 1.0f;
if (PORTAMENTO_IS_SPECIAL(*portamento)) {
speed = seqPlayer->tempo * 0x8000 / gAudioContext.tempoInternalToExternal;
speed = seqPlayer->tempo * 0x8000 / gAudioCtx.tempoInternalToExternal;
if (layer->delay != 0) {
speed = speed * 0x100 / (layer->delay * layer->portamentoTime);
}
} else {
speed = 0x20000 / (layer->portamentoTime * gAudioContext.audioBufferParameters.updatesPerFrame);
speed = 0x20000 / (layer->portamentoTime * gAudioCtx.audioBufferParameters.updatesPerFrame);
}
if (speed >= 0x7FFF) {
@@ -980,7 +980,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
layer->tunedSample = NULL;
layer->freqScale = gPitchFrequencies[semitone2];
if (instOrWave >= 0xC0) {
layer->tunedSample = &gAudioContext.synthesisReverbs[instOrWave - 0xC0].tunedSample;
layer->tunedSample = &gAudioCtx.synthesisReverbs[instOrWave - 0xC0].tunedSample;
}
}
break;
@@ -996,7 +996,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
time = 0.0f;
}
time *= seqPlayer->tempo;
time *= gAudioContext.unk_2870;
time *= gAudioCtx.unk_2870;
time /= layer->freqScale;
//! FAKE:
if (1) {}
@@ -1011,7 +1011,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
// (It's a bit unclear if 'portamento' has actually always been
// set when this is reached...)
if (PORTAMENTO_IS_SPECIAL(*portamento)) {
speed2 = seqPlayer->tempo * 0x8000 / gAudioContext.tempoInternalToExternal;
speed2 = seqPlayer->tempo * 0x8000 / gAudioCtx.tempoInternalToExternal;
speed2 = speed2 * 0x100 / (layer->delay * layer->portamentoTime);
if (speed2 >= 0x7FFF) {
speed2 = 0x7FFF;
@@ -1090,8 +1090,8 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) {
}
if (channel->velocityRandomVariance != 0) {
floatDelta = layer->velocitySquare * (gAudioContext.audioRandom % channel->velocityRandomVariance) / 100.0f;
if ((gAudioContext.audioRandom & 0x8000) != 0) {
floatDelta = layer->velocitySquare * (gAudioCtx.audioRandom % channel->velocityRandomVariance) / 100.0f;
if ((gAudioCtx.audioRandom & 0x8000) != 0) {
floatDelta = -floatDelta;
}
@@ -1111,8 +1111,8 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) {
if (channel->gateTimeRandomVariance != 0) {
//! @bug should probably be gateTimeRandomVariance
intDelta = (layer->gateDelay * (gAudioContext.audioRandom % channel->velocityRandomVariance)) / 100;
if ((gAudioContext.audioRandom & 0x4000) != 0) {
intDelta = (layer->gateDelay * (gAudioCtx.audioRandom % channel->velocityRandomVariance)) / 100;
if ((gAudioCtx.audioRandom & 0x4000) != 0) {
intDelta = -intDelta;
}
@@ -1297,9 +1297,9 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
cmd = (u8)cmdArgs[0];
if (seqPlayer->defaultFont != 0xFF) {
cmdArgU16 = ((u16*)gAudioContext.sequenceFontTable)[seqPlayer->seqId];
lowBits = gAudioContext.sequenceFontTable[cmdArgU16];
cmd = gAudioContext.sequenceFontTable[cmdArgU16 + lowBits - cmd];
cmdArgU16 = ((u16*)gAudioCtx.sequenceFontTable)[seqPlayer->seqId];
lowBits = gAudioCtx.sequenceFontTable[cmdArgU16];
cmd = gAudioCtx.sequenceFontTable[cmdArgU16 + lowBits - cmd];
}
if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, cmd)) {
@@ -1426,9 +1426,9 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
cmd = (u8)cmdArgs[0];
if (seqPlayer->defaultFont != 0xFF) {
cmdArgU16 = ((u16*)gAudioContext.sequenceFontTable)[seqPlayer->seqId];
lowBits = gAudioContext.sequenceFontTable[cmdArgU16];
cmd = gAudioContext.sequenceFontTable[cmdArgU16 + lowBits - cmd];
cmdArgU16 = ((u16*)gAudioCtx.sequenceFontTable)[seqPlayer->seqId];
lowBits = gAudioCtx.sequenceFontTable[cmdArgU16];
cmd = gAudioCtx.sequenceFontTable[cmdArgU16 + lowBits - cmd];
}
if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, cmd)) {
@@ -1625,13 +1625,13 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
break;
case 0xB7: // channel: random large
channel->unk_22 = (cmdArgs[0] == 0) ? (gAudioContext.audioRandom & 0xFFFF)
: (gAudioContext.audioRandom % cmdArgs[0]);
channel->unk_22 =
(cmdArgs[0] == 0) ? (gAudioCtx.audioRandom & 0xFFFF) : (gAudioCtx.audioRandom % cmdArgs[0]);
break;
case 0xB8: // channel: random value
scriptState->value = (cmdArgs[0] == 0) ? (gAudioContext.audioRandom & 0xFFFF)
: (gAudioContext.audioRandom % cmdArgs[0]);
scriptState->value =
(cmdArgs[0] == 0) ? (gAudioCtx.audioRandom & 0xFFFF) : (gAudioCtx.audioRandom % cmdArgs[0]);
break;
case 0xA8: // channel: random range large (only cmd that differs from OoT)
@@ -1667,8 +1667,8 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
case 0xBE: // channel:
if (cmdArgs[0] < 5) {
if (1) {}
if (gAudioContext.unk_29A8[cmdArgs[0]] != NULL) {
gCustomAudioSeqFunction = gAudioContext.unk_29A8[cmdArgs[0]];
if (gAudioCtx.unk_29A8[cmdArgs[0]] != NULL) {
gCustomAudioSeqFunction = gAudioCtx.unk_29A8[cmdArgs[0]];
scriptState->value = gCustomAudioSeqFunction(scriptState->value, channel);
}
}
@@ -1880,17 +1880,17 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
seqPlayer->scriptCounter++;
tempoChange = seqPlayer->tempo + seqPlayer->unk_0C;
if (tempoChange > gAudioContext.tempoInternalToExternal) {
tempoChange = gAudioContext.tempoInternalToExternal;
if (tempoChange > gAudioCtx.tempoInternalToExternal) {
tempoChange = gAudioCtx.tempoInternalToExternal;
}
seqPlayer->tempoAcc += tempoChange;
if (seqPlayer->tempoAcc < gAudioContext.tempoInternalToExternal) {
if (seqPlayer->tempoAcc < gAudioCtx.tempoInternalToExternal) {
return;
}
seqPlayer->tempoAcc -= (u16)gAudioContext.tempoInternalToExternal;
seqPlayer->tempoAcc -= (u16)gAudioCtx.tempoInternalToExternal;
seqPlayer->unk_16++;
if (seqPlayer->stopScript == true) {
@@ -1943,8 +1943,8 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
case 0xDD: // seqPlayer: set tempo
seqPlayer->tempo = AudioSeq_ScriptReadU8(seqScript) * TATUMS_PER_BEAT;
if (seqPlayer->tempo > gAudioContext.tempoInternalToExternal) {
seqPlayer->tempo = gAudioContext.tempoInternalToExternal;
if (seqPlayer->tempo > gAudioCtx.tempoInternalToExternal) {
seqPlayer->tempo = gAudioCtx.tempoInternalToExternal;
}
if ((s16)seqPlayer->tempo <= 0) {
@@ -2041,9 +2041,9 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
case 0xCE: // seqPlayer: random value
cmd = AudioSeq_ScriptReadU8(seqScript);
if (cmd == 0) {
seqScript->value = (gAudioContext.audioRandom >> 2) & 0xFF;
seqScript->value = (gAudioCtx.audioRandom >> 2) & 0xFF;
} else {
seqScript->value = (gAudioContext.audioRandom >> 2) % cmd;
seqScript->value = (gAudioCtx.audioRandom >> 2) % cmd;
}
break;
@@ -2198,11 +2198,10 @@ void AudioSeq_ProcessSequences(s32 arg0) {
SequencePlayer* seqPlayer;
u32 i;
gAudioContext.sampleStateOffset =
(gAudioContext.audioBufferParameters.updatesPerFrame - arg0 - 1) * gAudioContext.numNotes;
gAudioCtx.sampleStateOffset = (gAudioCtx.audioBufferParameters.updatesPerFrame - arg0 - 1) * gAudioCtx.numNotes;
for (i = 0; i < (u32)gAudioContext.audioBufferParameters.numSequencePlayers; i++) {
seqPlayer = &gAudioContext.seqPlayers[i];
for (i = 0; i < (u32)gAudioCtx.audioBufferParameters.numSequencePlayers; i++) {
seqPlayer = &gAudioCtx.seqPlayers[i];
if (seqPlayer->enabled == true) {
AudioSeq_SequencePlayerProcessSequence(seqPlayer);
AudioEffects_SequencePlayerProcessSound(seqPlayer);
@@ -2250,14 +2249,14 @@ void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer) {
void AudioSeq_InitSequencePlayerChannels(s32 playerIndex) {
SequenceChannel* channel;
SequencePlayer* seqPlayer = &gAudioContext.seqPlayers[playerIndex];
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[playerIndex];
s32 i;
s32 j;
for (i = 0; i < SEQ_NUM_CHANNELS; i++) {
seqPlayer->channels[i] = AudioHeap_AllocZeroed(&gAudioContext.miscPool, sizeof(SequenceChannel));
seqPlayer->channels[i] = AudioHeap_AllocZeroed(&gAudioCtx.miscPool, sizeof(SequenceChannel));
if (seqPlayer->channels[i] == NULL) {
seqPlayer->channels[i] = &gAudioContext.sequenceChannelNone;
seqPlayer->channels[i] = &gAudioCtx.sequenceChannelNone;
} else {
channel = seqPlayer->channels[i];
channel->seqPlayer = seqPlayer;
@@ -2277,7 +2276,7 @@ void AudioSeq_InitSequencePlayer(SequencePlayer* seqPlayer) {
s32 j;
for (i = 0; i < SEQ_NUM_CHANNELS; i++) {
seqPlayer->channels[i] = &gAudioContext.sequenceChannelNone;
seqPlayer->channels[i] = &gAudioCtx.sequenceChannelNone;
}
seqPlayer->enabled = false;
@@ -2303,12 +2302,12 @@ void AudioSeq_InitSequencePlayers(void) {
AudioSeq_InitLayerFreelist();
for (i = 0; i < ARRAY_COUNT(gAudioContext.sequenceLayers); i++) {
gAudioContext.sequenceLayers[i].channel = NULL;
gAudioContext.sequenceLayers[i].enabled = false;
for (i = 0; i < ARRAY_COUNT(gAudioCtx.sequenceLayers); i++) {
gAudioCtx.sequenceLayers[i].channel = NULL;
gAudioCtx.sequenceLayers[i].enabled = false;
}
for (i = 0; i < ARRAY_COUNT(gAudioContext.seqPlayers); i++) {
AudioSeq_InitSequencePlayer(&gAudioContext.seqPlayers[i]);
for (i = 0; i < ARRAY_COUNT(gAudioCtx.seqPlayers); i++) {
AudioSeq_InitSequencePlayer(&gAudioCtx.seqPlayers[i]);
}
}

Some files were not shown because too many files have changed in this diff Show More