AudioOcarina (1 NonMatching) (#911)

* AudioOcarina OK

* rm some comments

* PR Suggestions

* Add define

* cleanup
This commit is contained in:
engineer124
2022-08-04 05:21:50 +01:00
committed by GitHub
parent 26c8cdd221
commit e75d7020a9
29 changed files with 1767 additions and 421 deletions
+21 -48
View File
@@ -3195,51 +3195,24 @@ void AudioSeq_InitSequencePlayerChannels(s32 playerIndex);
void AudioSeq_InitSequencePlayers(void);
void func_8019AE40(s32 param_1, s32 param_2, u32 param_3, s32 param_4);
void func_8019AEC0(UNK_PTR param_1, UNK_PTR param_2);
// void func_8019AF00(void);
// void func_8019AF58(void);
// void func_8019AFE8(void);
// void func_8019B02C(void);
// void AudioOcarina_MapSongFromNotesToButtons(void);
// void func_8019B144(void);
// void func_8019B378(void);
// void func_8019B38C(void);
// void func_8019B3D0(void);
// void func_8019B4B8(void);
void AudioOcarina_StartDefault(u32 arg0);
// void func_8019B568(void);
// void func_8019B5AC(void);
// void func_8019B5EC(void);
// void func_8019B618(void);
// void func_8019B654(void);
// void func_8019B6B4(void);
// void func_8019BC44(void);
// void func_8019BE98(void);
// void func_8019C1D0(void);
// void func_8019C268(void);
// void func_8019C2E4(void);
u32 AudioOcarina_SetInstrumentId(u8 arg0);
// void func_8019C398(void);
// void func_8019C5A0(void);
// void func_8019C8D8(void);
// void func_8019CD08(void);
// void func_8019CE34(void);
// void func_8019CE6C(void);
// void func_8019CEBC(void);
// void func_8019CF6C(void);
// void func_8019CF78(void);
void AudioOcarina_SetSongStartingPos(void);
void AudioOcarina_StartAtSongStartingPos(u32 ocarinaFlags);
void AudioOcarina_StartForSongCheck(u32 ocarinaFlags, u8 ocarinaStaffPlayingPosStart);
void AudioOcarina_StartWithSongNoteLengths(u32 ocarinaFlags);
void AudioOcarina_StartDefault(u32 ocarinaFlags);
u8 func_8019B5AC(void);
void AudioOcarina_ResetAndReadInput(void);
void AudioOcarina_SetOcarinaDisableTimer(u8 resetUnused, u8 resetDelay);
u32 AudioOcarina_SetInstrument(u8 ocarinaInstrumentId);
void AudioOcarina_SetPlaybackSong(s8 songIndexPlusOne, u8 playbackState);
void AudioOcarina_SetRecordingState(u8 recordingState);
OcarinaStaff* AudioOcarina_GetRecordingStaff(void);
OcarinaStaff* AudioOcarina_GetPlayingStaff(void);
OcarinaStaff* AudioOcarina_GetPlaybackStaff(void);
// void func_8019CFA8(void);
// void AudioOcarina_TerminaWallValidateNotes(void);
void AudioOcarina_TerminaWallGenerateNotes(void);
// void AudioOcarina_MemoryGameSetNumNotes(void);
// void AudioOcarina_MemoryGameGenerateNotes(void);
// void func_8019D600(void);
void func_8019D758(void);
// void func_8019D864(void);
// void func_8019D8B4(void);
// void func_8019D8E4(void);
// void func_8019DF28(void);
// void func_8019DF64(void);
void AudioOcarina_PlayLongScarecrowAfterCredits(void);
void func_8019E014(void);
// void func_8019E110(void);
// void func_8019E14C(void);
@@ -3365,7 +3338,7 @@ void func_801A4058(UNK_TYPE arg0);
// void func_801A42C8(void);
// void func_801A4324(void);
// void func_801A4348(void);
// void func_801A4380(void);
void Audio_SetSfxVolumeExceptSystemAndOcarinaBanks(u8 arg0);
void func_801A4428(u8 reverbIndex);
void Audio_PreNMI(void);
// void func_801A44C4(void);
@@ -3402,9 +3375,9 @@ UNK_TYPE func_801A51F0(UNK_TYPE arg0);
// void func_801A5808(void);
// void func_801A5A10(void);
// void func_801A5A1C(void);
void func_801A5BD0(s32 param_1);
// void func_801A5C28(void);
// void func_801A5C8C(void);
void Audio_SetSfxBanksMute(u16 muteMask);
void Audio_SetFlagForBgmVolumeLow(u8 channelIndex);
void Audio_ClearFlagForBgmVolumeLow(u8 channelIndex);
void Audio_PlaySfxGeneral(u16 sfxId, Vec3f* param_2, u8 param_3, f32* param_4, f32* param_5, s8* param_6);
// void func_801A5DDC(void);
// void func_801A5F7C(void);
@@ -3417,7 +3390,7 @@ void func_801A7084(u8 bankId);
void Audio_StopSfxByPos(Vec3f* pos);
void func_801A7328(Vec3f* pos, u16 sfxId);
// void func_801A7484(void);
void func_801A75E8(u16 sfxId);
void Audio_StopSfxById(u16 sfxId);
// void func_801A7720(void);
void func_801A7794(u32 param_1, u32 param_2, u32 param_3);
// void func_801A7828(void);
+6 -6
View File
@@ -1553,7 +1553,7 @@ extern s16 gHighPassFilterData[];
extern s16 gBandStopFilterData[];
extern s16 gBandPassFilterData[];
extern s16* gWaveSamples[9];
extern f32 gBendPitchOneOctaveFrequencies[256];
extern f32 gBendPitchOneOctaveFrequencies[];
extern f32 gBendPitchTwoSemitonesFrequencies[];
extern f32 gPitchFrequencies[];
extern u8 gDefaultShortNoteVelocityTable[];
@@ -1649,8 +1649,8 @@ extern f32 gSfxVolume;
// extern UNK_TYPE1 D_801D6FD8;
// extern UNK_TYPE1 D_801D6FDC;
// extern UNK_TYPE1 D_801D6FE0;
// extern UNK_TYPE1 D_801D6FE4;
// extern UNK_TYPE1 D_801D6FE8;
// extern UNK_TYPE1 sPlaybackStaffStopPos;
// extern UNK_TYPE1 sPlaybackStaffStartPos;
// extern UNK_TYPE4 D_801D6FEC;
// extern UNK_TYPE4 D_801D6FF0;
// extern UNK_TYPE2 D_801D6FF4;
@@ -1731,14 +1731,14 @@ extern UNK_PTR D_801DB478[7];
// extern UNK_TYPE1 D_801DB494;
// extern UNK_TYPE1 D_801DB49C;
// extern UNK_TYPE2 D_801DB4A0;
extern Vec3f D_801DB4A4;
extern Vec3f gSfxDefaultPos;
extern f32 D_801DB4B0;
extern s8 D_801DB4B8;
extern s8 gSfxDefaultReverb;
// extern UNK_TYPE1 D_801DB4C0;
// extern UNK_TYPE1 D_801DB4C4;
// extern UNK_TYPE1 D_801DB4C8;
// extern UNK_TYPE1 D_801DB4CC;
// extern UNK_TYPE1 D_801DB4D4;
extern u8 gAudioSpecId;
// extern UNK_TYPE1 D_801DB4D8;
// extern UNK_TYPE4 D_801DB4DC;
// extern UNK_TYPE1 D_801DB4E0;
+10 -5
View File
@@ -26,10 +26,10 @@ typedef enum {
/* 19 */ OCARINA_SONG_EVAN_PART1,
/* 20 */ OCARINA_SONG_EVAN_PART2,
/* 21 */ OCARINA_SONG_ZELDAS_LULLABY,
/* 22 */ OCARINA_SONG_SCARECROW,
/* 22 */ OCARINA_SONG_SCARECROW_SPAWN,
/* 23 */ OCARINA_SONG_TERMINA_WALL,
/* 24 */ OCARINA_SONG_MAX,
/* 24 */ OCARINA_SONG_SCARECROW_LONG = OCARINA_SONG_MAX
/* 24 */ OCARINA_SONG_SCARECROW_LONG = OCARINA_SONG_MAX // anything larger than 24 is considered the long scarecrow's song
} OcarinaSongId;
typedef enum {
@@ -38,6 +38,7 @@ typedef enum {
/* 2 */ OCARINA_BTN_C_RIGHT,
/* 3 */ OCARINA_BTN_C_LEFT,
/* 4 */ OCARINA_BTN_C_UP,
/* 5 */ OCARINA_BTN_C_RIGHT_OR_C_LEFT,
/* -1 */ OCARINA_BTN_INVALID = 0xFF
} OcarinaButtonIndex;
@@ -92,15 +93,19 @@ typedef enum {
} OcarinaRecordingState;
/**
* BFlat4Flag Note:
* bFlat4Flag Note:
* Flag for resolving whether (pitch = OCARINA_PITCH_BFLAT4)
* gets mapped to either C_RIGHT and C_LEFT
*
* This is required as C_RIGHT and C_LEFT are the only notes
* that map to two semitones apart (NOTE_A4 and NOTE_B4)
* that map to two semitones apart (OCARINA_PITCH_A4 and OCARINA_PITCH_B4)
* 0x40 - BTN_Z is pressed to lower note by a semitone
* 0x80 - BTN_R is pressed to raise note by a semitone
*/
#define OCARINA_BUTTON_MASK_PITCH 0x3F
#define OCARINA_BUTTON_MASK_FLAG 0xC0
#define OCARINA_BUTTON_FLAG_BFLAT_LOWER 0x40
#define OCARINA_BUTTON_FLAG_BFLAT_RAISE 0x80
typedef struct {
/* 0x0 */ u8 pitch; // number of semitones above middle C
@@ -108,7 +113,7 @@ typedef struct {
/* 0x4 */ u8 volume;
/* 0x5 */ u8 vibrato;
/* 0x6 */ s8 bend; // frequency multiplicative offset from the pitch defined by pitch
/* 0x7 */ u8 BFlat4Flag; // See note above
/* 0x7 */ u8 bFlat4Flag; // See note above
} OcarinaNote; // size = 0x8
typedef struct {
+1 -1
View File
@@ -167,7 +167,7 @@ typedef struct Save {
/* 0x0F60 */ u32 mapsVisible; // "cloud_clear"
/* 0x0F64 */ u8 unk_F64; // "oca_rec_flag" has scarecrows song
/* 0x0F65 */ u8 unk_F65; // "oca_rec_flag8" scarecrows song set?
/* 0x0F66 */ u8 scarecrowsSong[128];
/* 0x0F66 */ u8 scarecrowSpawnSong[128];
/* 0x0FE6 */ s8 bombersCaughtNum; // "aikotoba_index"
/* 0x0FE7 */ s8 bombersCaughtOrder[5]; // "aikotoba_table"
/* 0x0FEC */ s8 lotteryCodes[3][3]; // "numbers_table", Preset lottery codes
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -1,10 +1,10 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/func_801A5BD0.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/Audio_SetSfxBanksMute.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/func_801A5C28.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/Audio_SetFlagForBgmVolumeLow.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/func_801A5C8C.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/Audio_ClearFlagForBgmVolumeLow.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/Audio_PlaySfxGeneral.s")
@@ -30,7 +30,7 @@
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/func_801A7484.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/func_801A75E8.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/Audio_StopSfxById.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A5BD0/func_801A7720.s")
+3 -3
View File
@@ -2128,7 +2128,7 @@ void func_800B8E58(Player* player, u16 sfxId) {
if (player->currentMask == PLAYER_MASK_GIANT) {
func_8019F170(&player->actor.projectedPos, sfxId);
} else {
Audio_PlaySfxGeneral(sfxId, &player->actor.projectedPos, 4, &D_801DB4B0, &D_801DB4B0, &D_801DB4B8);
Audio_PlaySfxGeneral(sfxId, &player->actor.projectedPos, 4, &D_801DB4B0, &D_801DB4B0, &gSfxDefaultReverb);
}
}
@@ -2568,13 +2568,13 @@ void func_800B9D1C(Actor* actor) {
if (sfxId != 0) {
if (actor->audioFlags & 2) {
Audio_PlaySfxGeneral(sfxId, &actor->projectedPos, 4, &D_801DB4B0, &D_801DB4B0, &D_801DB4B8);
Audio_PlaySfxGeneral(sfxId, &actor->projectedPos, 4, &D_801DB4B0, &D_801DB4B0, &gSfxDefaultReverb);
} else if (actor->audioFlags & 4) {
play_sound(sfxId);
} else if (actor->audioFlags & 8) {
func_8019F128(sfxId);
} else if (actor->audioFlags & 0x10) {
func_801A0810(&D_801DB4A4, NA_SE_SY_TIMER - SFX_FLAG, (sfxId - 1));
func_801A0810(&gSfxDefaultPos, NA_SE_SY_TIMER - SFX_FLAG, (sfxId - 1));
} else if (actor->audioFlags & 1) {
Audio_PlaySfxAtPos(&actor->projectedPos, sfxId);
}
+1 -2
View File
@@ -256,8 +256,7 @@ void Cutscene_Command_Misc(PlayState* play2, CutsceneContext* csCtx, CsCmdBase*
}
break;
case 0x13:
// AudioOcarina_PlayLongScarecrowAfterCredits
func_8019D758();
AudioOcarina_PlayLongScarecrowAfterCredits();
csCtx->frames = cmd->startFrame - 1;
break;
case 0x14:
+3 -3
View File
@@ -1000,10 +1000,10 @@ void Sram_OpenSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) {
}
if (gSaveContext.save.unk_F65) {
Lib_MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.scarecrowsSong,
sizeof(gSaveContext.save.scarecrowsSong));
Lib_MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.scarecrowSpawnSong,
sizeof(gSaveContext.save.scarecrowSpawnSong));
for (i = 0; i != ARRAY_COUNT(gSaveContext.save.scarecrowsSong); i++) {}
for (i = 0; i != ARRAY_COUNT(gSaveContext.save.scarecrowSpawnSong); i++) {}
}
fileNum = gSaveContext.fileNum;
@@ -338,7 +338,7 @@ void func_809CE4C8(BgSpdweb* this, PlayState* play) {
if (this->unk_164 > 3.0f) {
Actor_PlaySfxAtPos(&this->dyna.actor, NA_SE_EV_WEB_VIBRATION);
} else {
func_801A75E8(NA_SE_EV_WEB_VIBRATION);
Audio_StopSfxById(NA_SE_EV_WEB_VIBRATION);
}
}
+1 -1
View File
@@ -808,7 +808,7 @@ void Boss03_CatchPlayer(Boss03* this, PlayState* play) {
if ((&this->actor != player->actor.parent) && (play->grabPlayer(play, player) != 0)) {
player->actor.parent = &this->actor;
Audio_PlaySfxGeneral(NA_SE_VO_LI_DAMAGE_S, &player->actor.projectedPos, 4, &D_801DB4B0, &D_801DB4B0,
&D_801DB4B8);
&gSfxDefaultReverb);
Boss03_SetupChewPlayer(this, play);
}
} else {
+1 -1
View File
@@ -730,7 +730,7 @@ void DmStk_PlaySfxForEndingCutsceneSecondPart(DmStk* this, PlayState* play) {
break;
case 2000:
func_801A5BD0(0x7F);
Audio_SetSfxBanksMute(0x7F);
break;
}
@@ -446,7 +446,8 @@ void func_808B977C(DoorWarp1* this, PlayState* play) {
if (func_808B866C(this, play) && !Play_InCsMode(play)) {
Player* player = GET_PLAYER(play);
Audio_PlaySfxGeneral(NA_SE_EV_LINK_WARP, &player->actor.projectedPos, 4, &D_801DB4B0, &D_801DB4B0, &D_801DB4B8);
Audio_PlaySfxGeneral(NA_SE_EV_LINK_WARP, &player->actor.projectedPos, 4, &D_801DB4B0, &D_801DB4B0,
&gSfxDefaultReverb);
func_800B7298(play, &this->dyna.actor, 9);
player->unk_3A0.x = this->dyna.actor.world.pos.x;
player->unk_3A0.z = this->dyna.actor.world.pos.z;
@@ -619,7 +620,8 @@ void func_808B9FD0(DoorWarp1* this, PlayState* play) {
ActorCutscene_SetIntentToPlay(play->playerActorCsIds[9]);
} else {
ActorCutscene_Start(play->playerActorCsIds[9], NULL);
Audio_PlaySfxGeneral(NA_SE_EV_LINK_WARP, &player->actor.projectedPos, 4, &D_801DB4B0, &D_801DB4B0, &D_801DB4B8);
Audio_PlaySfxGeneral(NA_SE_EV_LINK_WARP, &player->actor.projectedPos, 4, &D_801DB4B0, &D_801DB4B0,
&gSfxDefaultReverb);
Animation_ChangeImpl(&this->skelAnime, &object_warp1_Anim_001374, 1.0f,
Animation_GetLastFrame(&object_warp1_Anim_001374.common),
Animation_GetLastFrame(&object_warp1_Anim_001374.common), 2, 40.0f, 1);
@@ -293,7 +293,7 @@ void EnBji01_DialogueHandler(EnBji01* this, PlayState* play) {
}
void func_809CD634(EnBji01* this, PlayState* play) {
func_801A5BD0(0x6F);
Audio_SetSfxBanksMute(0x6F);
Audio_QueueSeqCmd(0xE0000101);
play->nextEntranceIndex = 0x54A0; /* Termina Field from telescope */
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = play->nextEntranceIndex;
@@ -350,7 +350,7 @@ void EnBji01_Init(Actor* thisx, PlayState* play) {
break;
case 0x4C20: /* Observatory from Termina Field telescope */
this->actor.flags |= ACTOR_FLAG_10000;
func_801A5BD0(0);
Audio_SetSfxBanksMute(0);
Audio_QueueSeqCmd(0xE0000100);
this->actor.params = SHIKASHI_TYPE_LOOKED_THROUGH_TELESCOPE;
func_809CCE98(this, play);
@@ -570,7 +570,7 @@ void EnClearTag_UpdateCamera(EnClearTag* this, PlayState* play) {
this->subCamAt.z = mainCam->at.z;
Message_StartTextbox(play, 0xF, NULL);
this->cameraState = 2;
func_8019FDC8(&D_801DB4A4, NA_SE_VO_NA_LISTEN, 0x20);
func_8019FDC8(&gSfxDefaultPos, NA_SE_VO_NA_LISTEN, 0x20);
case 2:
if (player->actor.world.pos.z > 0.0f) {
player->actor.world.pos.z = 290.0f;
+1 -1
View File
@@ -1468,7 +1468,7 @@ void func_8089010C(Actor* thisx, PlayState* play) {
}
if (Actor_ProcessTalkRequest(thisx, &play->state)) {
func_8019FDC8(&D_801DB4A4, NA_SE_VO_NA_LISTEN, 0x20);
func_8019FDC8(&gSfxDefaultPos, NA_SE_VO_NA_LISTEN, 0x20);
thisx->focus.pos = thisx->world.pos;
if (thisx->textId == ElfMessage_GetFirstCycleHint(play)) {
@@ -106,12 +106,12 @@ void EnGakufu_ProcessNotes(EnGakufu* this) {
s32 songIndex;
AudioOcarina_TerminaWallGenerateNotes();
AudioOcarina_SetInstrumentId(OCARINA_INSTRUMENT_DEFAULT);
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
AudioOcarina_StartDefault((1 << this->songIndex) | 0x80000000);
playbackStaff = AudioOcarina_GetPlaybackStaff();
playbackStaff->pos = 0;
playbackStaff->state = 0xFF;
AudioOcarina_SetInstrumentId(OCARINA_INSTRUMENT_OFF);
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
songIndex = this->songIndex;
ocarinaSongButtons = &gOcarinaSongButtons[songIndex];
@@ -774,10 +774,10 @@ void EnKakasi_PostSongLearnDialogue(EnKakasi* this, PlayState* play) {
} else {
this->talkState = TEXT_STATE_5;
if (play->msgCtx.choiceIndex == 1) {
func_8019F208(); // play 0x4808 sfx (decide) and calls func_801A75E8
func_8019F208(); // play 0x4808 sfx (decide) and calls Audio_StopSfxById
this->actor.textId = 0x164A;
} else {
func_8019F230(); // play 0x480A sfx (cancel) and calls func_801A75E8
func_8019F230(); // play 0x480A sfx (cancel) and calls Audio_StopSfxById
this->actor.textId = 0x1661;
}
}
+2 -2
View File
@@ -366,7 +366,7 @@ void func_80A6F9DC(EnMm3* this, PlayState* play) {
}
void func_80A6FBA0(EnMm3* this) {
func_801A5BD0(0x6F);
Audio_SetSfxBanksMute(0x6F);
func_801A0238(0, 5);
gSaveContext.save.weekEventReg[63] |= 1;
gSaveContext.save.weekEventReg[63] &= (u8)~2;
@@ -391,7 +391,7 @@ void func_80A6FBFC(EnMm3* this, PlayState* play) {
}
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
func_801A5BD0(0);
Audio_SetSfxBanksMute(0);
func_801A0238(0x7F, 5);
Message_StartTextbox(play, 0x2791, &this->actor);
this->unk_2B4 = 0x2791;
+1 -1
View File
@@ -236,7 +236,7 @@ void EnNwc_CheckFound(EnNwc* this, PlayState* play) {
}
EnNwc_ChangeState(this, NWC_STATE_FOLLOWING);
func_801A0868(&D_801DB4A4, NA_SE_SY_CHICK_JOIN_CHIME, currentChickCount);
func_801A0868(&gSfxDefaultPos, NA_SE_SY_CHICK_JOIN_CHIME, currentChickCount);
}
}

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