diff --git a/include/functions.h b/include/functions.h index 41deb1c3..e9ae1323 100644 --- a/include/functions.h +++ b/include/functions.h @@ -9,7 +9,7 @@ // fox_360 void AllRange_FortunaIntro(Player*); void AllRange_GetStarWolfHits(Actor*); -void AllRange_UpdateCountdown(void); +void AllRange_DrawCountdown(void); void Boss309_Update(Boss*); void Boss309_Draw(Boss*); void Boss310_Update(Boss*); @@ -395,7 +395,7 @@ void func_hud_8008B5B0(f32 x, f32 y); s32 func_hud_8008B774(void); void func_hud_8008BD00(u8*, s32, s32, u8); void func_hud_8008C104(u16*, u16*); -void func_hud_8008C390(f32, f32, f32, s32); +void HUD_DisplaySmallNumber(f32, f32, f32, s32); void func_hud_8008C5C8(f32, f32, f32, s32); void func_hud_8008C6F4(s32, s32); s32 func_hud_8008BCBC(s32); @@ -403,7 +403,7 @@ void HUD_DrawEdgeArrows(void); s32 HUD_dummy_8008CB8C(void); void func_hud_8008D0DC(f32, f32, f32, f32, f32); void HUD_DrawBossHealth(void); -void func_hud_8008E51C(s32* , f32); +void HUD_DrawCountdown(s32* , f32); void func_hud_8008E9EC(f32, f32); void func_hud_8008EA14(f32, f32); void HUD_Draw(void); diff --git a/include/macros.h b/include/macros.h index 30a1ae1e..6c04ee09 100644 --- a/include/macros.h +++ b/include/macros.h @@ -44,6 +44,8 @@ #define CYCLES_TO_USEC(c) (((u64)(c)*(1000000LL/15625LL))/(osClockRate/15625LL)) #define CYCLES_TO_MSEC(c) ((s32)CYCLES_TO_USEC(c)/1000) +#define UNPACK_BYTE(data, bytenum) (((data) & (0xFF << ((bytenum) * 8))) >> ((bytenum) * 8)) + /* * Macros for libultra */ diff --git a/include/mods.h b/include/mods.h index 9419d8e4..de7e03da 100644 --- a/include/mods.h +++ b/include/mods.h @@ -17,6 +17,12 @@ */ #define MODS_SFX_JUKEBOX 0 +/** + * Auto debugger: + * Crash debugger appears without needing to enter code. +*/ +#define MODS_AUTO_DEBUGGER 0 + /** * FPS Counter: * Press L to toggle FPS Display diff --git a/include/sf64audio_external.h b/include/sf64audio_external.h index 9d9bd265..a3be1105 100644 --- a/include/sf64audio_external.h +++ b/include/sf64audio_external.h @@ -3,6 +3,7 @@ #include "sys.h" #include "audioseq_cmd.h" +#include "sfx.h" #define AUDIO_PLAY_SFX(sfxId, srcPos, token) (Audio_PlaySfx((sfxId),(srcPos),(token),&gDefaultMod,&gDefaultMod,&gDefaultReverb)) #define AUDIO_PLAY_BGM(seqId) Audio_PlaySequence(SEQ_PLAYER_BGM, (seqId), 0, -1) diff --git a/include/sf64audio_provisional.h b/include/sf64audio_provisional.h index 9abfc390..512c07c0 100644 --- a/include/sf64audio_provisional.h +++ b/include/sf64audio_provisional.h @@ -123,9 +123,9 @@ typedef enum { } AudioLoadStatus; typedef enum AudioResetStatus { - AUDIORESET_READY, - AUDIORESET_WAIT, - AUDIORESET_BLOCK, + /* 0 */ AUDIORESET_READY, + /* 1 */ AUDIORESET_WAIT, + /* 2 */ AUDIORESET_BLOCK, } AudioResetStatus; typedef s32 (*DmaHandler)(OSPiHandle* handle, OSIoMesg* mb, s32 direction); @@ -990,36 +990,6 @@ typedef struct { #define SEQ_BYTE3(seqId) (((seqId) & (0xFF << 8)) >>8 & 0xFF) #define SEQ_BYTE2(seqId) (((seqId) & (0xFF << 16)) >>13 & 0xFFFF) -#define SFX_BANK_MASK(sfxId) ((sfxId) & (0xF << 28)) -#define SFX_STATE_MASK(sfxId) ((sfxId) & (1 << 24)) -#define SFX_RANGE_MASK(sfxId) ((sfxId) & (3 << 16)) -#define SFX_IMPORTANCE_MASK(sfxId) ((sfxId) & (0xFF << 8)) - -#define SFX_BANK_SHIFT(sfxId) (((sfxId) >> 28) & 0xFF) -#define SFX_STATE_SHIFT(sfxId) (((sfxId) >> 24)) -#define SFX_RANGE_SHIFT(sfxId) (((sfxId) >> 16) & 0xFF) -#define SFX_IMPORTANCE_SHIFT(sfxId) (((sfxId) >> 8) & 0xFF) - -#define SFX_BANK(sfxId) SFX_BANK_SHIFT(SFX_BANK_MASK(sfxId)) -#define SFX_STATE(sfxId) SFX_STATE_SHIFT(SFX_STATE_MASK(sfxId)) -#define SFX_BIT04(sfxId) ((sfxId) & (1 << 27)) -#define SFX_BIT05(sfxId) ((sfxId) & (1 << 26)) -#define SFX_BIT06(sfxId) ((sfxId) & (1 << 25)) -#define SFX_BIT08(sfxId) ((sfxId) & (1 << 23)) // adds random variance to freqMod -#define SFX_BIT09(sfxId) ((sfxId) & (1 << 22)) // turns off distance-dependent frequency increase -#define SFX_BIT10(sfxId) ((sfxId) & (1 << 21)) // makes reverb increase with distance -#define SFX_BIT11(sfxId) ((sfxId) & (1 << 20)) // makes priority independent of distance -#define SFX_BIT12(sfxId) ((sfxId) & (1 << 19)) -#define SFX_BIT13(sfxId) ((sfxId) & (1 << 18)) // makes distance ignore z position? probably more -#define SFX_RANGE(sfxId) SFX_RANGE_SHIFT(SFX_RANGE_MASK(sfxId)) -#define SFX_IMPORTANCE(sfxId) SFX_IMPORTANCE_SHIFT(SFX_IMPORTANCE_MASK(sfxId)) -#define SFX_INDEX(sfxId) ((sfxId) & 0xFF) - -#define SFX_PACK(bank, range, importance, index, state, bit4, bit5, bit6, bit8, bit9, bit10, bit11, bit12, bit13) \ - (((bank)<<28)|((range)<<16)|((importance)<<8)|(index)|((state)<<24)|\ - ((bit4)<<27)|((bit5)<<23)|((bit6)<<23)|((bit8)<<23)|((bit9)<<22)|\ - ((bit10)<<21)|((bit11)<<20)|((bit12)<<19)|((bit13)<<18)) - // audio_synthesis void func_80008780(f32 *, s32, f32 *); Acmd* func_80009B64(Acmd* aList, s32* cmdCount, s16* aiBufStart, s32 aiBufLen); diff --git a/include/sfx.h b/include/sfx.h new file mode 100644 index 00000000..1fdee05e --- /dev/null +++ b/include/sfx.h @@ -0,0 +1,165 @@ +#ifndef SFX_H +#define SFX_H + +#define SFX_FLAG_18 (1 << 18) // makes distance ignore z position? probably more +#define SFX_FLAG_19 (1 << 19) +#define SFX_FLAG_20 (1 << 20) // make priority ignore distance +#define SFX_FLAG_21 (1 << 21) // make reverb ignore distance +#define SFX_FLAG_22 (1 << 22) // make volume ignore distance +#define SFX_FLAG_23 (1 << 23) // make noisy + +#define SFX_FLAG_27 (1 << 27) // allow duplicate requests + +#define SFX_BANK_SHIFT 28 +#define SFX_STATE_SHIFT 24 +#define SFX_RANGE_SHIFT 16 +#define SFX_IMPORT_SHIFT 8 + +#define SFX_BANK_MASK (0xF << SFX_BANK_SHIFT) +#define SFX_STATE_FLAG (1 << SFX_STATE_SHIFT) +#define SFX_RANGE_MASK (3 << SFX_RANGE_SHIFT) +#define SFX_IMPORT_MASK (0xFF << SFX_IMPORT_SHIFT) + +#define SFX_BANK(sfxId) ((((sfxId) & SFX_BANK_MASK) >> SFX_BANK_SHIFT) & 0xFF) +#define SFX_BANK_ALT(sfxId) (((sfxId) >> SFX_BANK_SHIFT) & 0xFF) +#define SFX_STATE(sfxId) (((sfxId) & SFX_STATE_FLAG) >> SFX_STATE_SHIFT) +#define SFX_RANGE(sfxId) ((((sfxId) & SFX_RANGE_MASK) >> SFX_RANGE_SHIFT) & 0xFF) +#define SFX_IMPORT(sfxId) ((((sfxId) & SFX_IMPORT_MASK) >> SFX_IMPORT_SHIFT) & 0xFF) +#define SFX_INDEX(sfxId) ((sfxId) & 0xFF) + +#define SFX_PACK(bank, index, range, importance, flags) \ + ((((bank)< call alert +#define NA_SE_MAP_WINDOW_OPEN 0x49000019 // Also crosshairs on +#define NA_SE_MAP_WINDOW_CLOSE 0x4900101A // Also crosshairs off +#define NA_SE_MAR_LOCKON 0x4900001B +#define NA_SE_MISSILE_ALARM 0x4900001C +#define NA_SE_CANCEL 0x4900101D +#define NA_SE_COMPUTER_NOISE 0x4100001E // Used in mission briefing +#define NA_SE_MAP_MOVE_STOP 0x4900001F +#define NA_SE_ARWING_DECIDE 0x49000020 // Used in main menu +#define NA_SE_ARWING_CANCEL 0x49000021 // Used in main menu +#define NA_SE_ARWING_CURSOR 0x49000022 // Used in main menu +#define NA_SE_OVERHEAT_ALARM 0x4100C023 +#define NA_SE_ONE_UP 0x4900C024 +#define NA_SE_RING_PASS 0x49008025 // Also used for Corneria mech boss secret 1UP +#define NA_SE_SHIELD_BUZZER 0x49001026 +#define NA_SE_LOCK_ON 0x49008027 +#define NA_SE_BOSS_GAUGE_OPEN 0x4900C028 +#define NA_SE_UNK_1 0x40000029 // Unreferenced. Sounds like an item collect jingle +#define NA_SE_COUNTDOWN 0x4900C02A +#define NA_SE_VIEW_SITCHW_ON 0x4000002B // Unreferenced. Related to D_ctx_80177C70? +#define NA_SE_VIEW_MOVE_IN 0x4900002C +#define NA_SE_VIEW_MOVE_OUT 0x4900002D +#define NA_SE_SEARCHLIGHT_MISS 0x4900402E +#define NA_SE_RING_MISS 0x4900402F +#define NA_SE_GET_EMBLEM 0x49008030 +#define NA_SE_MISSION_ACCOMPLISHED 0x49008031 +#define NA_SE_VO_PEPPER_CONSENT 0x49000032 // This is ONE steep bill, but it's worth it. +#define NA_SE_VO_PEPPER_SURPRISE 0x49000033 // WHAT?! +#define NA_SE_MISSION_COMPLETE 0x49008034 +#define NA_SE_UNK_2 0x40000035 // Unreferenced. Hard to make out what it is +#define NA_SE_TIME_OVER 0x4900D036 + +#endif + + diff --git a/sfxIds.txt b/sfxIds.txt index 72e06a68..cedc0b77 100644 --- a/sfxIds.txt +++ b/sfxIds.txt @@ -6,7 +6,7 @@ 0x09000003 brake 0x09000004 sector X boss hitting slippy 0x0903F004 player death -0x0100F005 arwing engine noise +0x0100F005 arwing planet engine noise 0x0100F006 landmaster engine noise 0x09000007 wings changing position 0x01008008 iniial bomb flight. only plays for 1 frame @@ -27,43 +27,49 @@ 0x09008015 landmaster falls on ground 0x01008016 landmaster hover 0x09000017 blue marine barrel roll -0x0140001C -0x0100001D -0x0100001E -0x0100001F -0x0100F020 -0x09400021 +0x0?????18 footstep. comparisons are relative to this +0x0?????19 heavier footstep +0x0?????1A lighter footstep +0x0?????1B lightest footstep +0x0140001C running footsteps in title +0x0100001D something mechanical starting to move, used in title +0x0100001E engines powering up +0x0100001F Beam sounds from sound test +0x0100F020 arwing space engine noise +0x09400021 blue marine single laser 0x0100F022 blue marine engine noise -0x09008023 -0x01004024 -0x01000025 -0x01038026 -0x09400027 -0x09404028 -0x09007029 -0x0900802A -0x0940802A -0x0940802B hyper laser -0x0900A02C -0x0900302D -0x0903502E -0x0900402F -0x09004030 -0x09004031 -0x09000032 +0x09008023 wings repaired +0x01004024 landmaster single jet +0x01000025 torpedo shot +0x01038026 blue marine launch +0x09400027 blue marine twin laser (and hyper?) +0x09404028 blue marine hit ground +0x09007029 charge shot fire +0x0900802A warp zone map path +0x0940802A warp zone enter +0x0940802B arwing hyper laser +0x0900A02C wing break +0x0900302D charge shot charge +0x0903502E charge shot explode +0x0900402F landmaster boost +0x09004030 blue marine boost +0x09004031 blue marine brake +0x09000032 normal map path -0x11000000 -0x19000001 -0x19030003 -0x19031003 -0x19130003 -0x19030004 -0x19122005 -0x19020006 -0x19030006 -0x19400007 -0x19020008 -0x19033008 +0x11000000 CO waterfall noise +0x19000001 whoosh +0x1?????02 clang sound, ligher than 3 +0x19030003 various falling pillars hitting ground +0x19031003 various falling pillars hitting ground +0x19130003 various falling pillars hitting ground +0x19030004 corneria mech boss hitting ground +0x19122005 EVSFX_5. venom event actors. spawning pillars/fingers? +0x19020006 titania rocks +0x19030006 macbeth rocks +0x19400007 aquas rocks +0x19020008 titania hopping bombs +0x19033008 macbeth switches +0x1?????09 0x1100000A 0x1100000B 0x1100000C @@ -81,6 +87,7 @@ 0x11030016 0x11404016 0x19800017 +0x1?????18 0x19832019 0x1983201A 0x1900001B @@ -132,9 +139,11 @@ 0x19401048 0x11032049 0x1913204A +0x1?????4B 0x1100004C 0x1100204C 0x1900404D +0x1?????4E 0x1900404F 0x11002050 0x19004051 @@ -193,18 +202,32 @@ 0x11020084 0x29000000 +0x5?????01 0x29002002 0x29024003 0x29034003 +0x5?????04 +0x31004005 +0x31004006 0x29121007 0x2903A008 0x2903B009 0x2940C00A 0x2903700B +0x3100000C 0x2900000D 0x2903300E 0x2900300F 0x2943500F +0x5?????10 +0x31000011 +0x31000012 +0x31000013 +0x31000014 +0x31000015 +0x31000016 +0x31000017 +0x31038018 0x29022019 0x2940201A 0x2903101B @@ -212,6 +235,7 @@ 0x2902401C 0x2903401C 0x2900201D +0x3100001E 0x2902201F 0x29023020 0x29034021 @@ -220,6 +244,8 @@ 0x29400023 0x29034024 0x29402024 +0x31000025 +0x31034025 0x2902F026 0x2940F026 0x2940C027 @@ -229,172 +255,174 @@ 0x2940702B 0x2940802C 0x2940902D +0x3140402E +0x3143402E +0x3143102F +0x39435830 0x29003031 0x29403031 0x29503032 0x29038033 +0x5?????34 +0x5?????35 0x29018036 0x29033037 +0x5?????38 +0x31012039 +0x3100203A 0x2903203B 0x2940983C 0x2900403D +0x3100503E 0x2900803F +0x31000040 0x29034041 +0x5?????42 +0x31030043 +0x5?????44 0x29034045 0x2902A046 +0x31000047 0x29022048 0x29018049 +0x5?????4A 0x2903404B 0x2903604C 0x2940604C +0x3140904D 0x2940804E 0x2940A04F 0x29036050 0x29409051 0x29400052 +0x5?????53 0x29408054 0x29408055 +0x31016056 +0x31037057 0x29038058 +0x31024059 +0x3102505A +0x3103605B +0x3102705C +0x3102405D 0x2902405E 0x2903305F 0x2903A060 +0x31032061 +0x3103A061 0x29001062 +0x31009063 0x29033064 +0x31034064 0x29034065 +0x31404066 +0x31404067 +0x39404068 +0x31008069 0x2900306A 0x2900306B 0x2902306C 0x2902306D 0x2901306E 0x2903A06F +0x5?????70 0x29000071 0x29000072 0x29432073 0x29433074 0x29434075 +0x39439076 0x29432077 +0x31033078 +0x39033079 +0x5?????7A +0x5?????7B +0x5?????7C 0x2902107D +0x3140807E +0x5?????7F 0x29032080 0x29033081 0x29034082 +0x31030083 0x29405084 +0x31078085 0x29022086 +0x31022087 0x29022088 0x29022089 -0x2900308C -0x2900208D -0x2903408F -0x29038090 -0x2940B096 -0x29030098 -0x29036099 -0x2940D09A - -0x31004005 -0x31004006 -0x3100000C -0x31000011 -0x31000012 -0x31000013 -0x31000014 -0x31000015 -0x31000016 -0x31000017 -0x31038018 -0x3100001E -0x31000025 -0x31034025 -0x3140402E -0x3143402E -0x3143102F -0x39435830 -0x31012039 -0x3100203A -0x3100503E -0x31000040 -0x31030043 -0x31000047 -0x3140904D -0x31016056 -0x31037057 -0x31024059 -0x3102505A -0x3103605B -0x3102705C -0x3102405D -0x31032061 -0x3103A061 -0x31009063 -0x31034064 -0x31404066 -0x31404067 -0x39404068 -0x31008069 -0x39439076 -0x31033078 -0x39033079 -0x3140807E -0x31030083 -0x31078085 -0x31022087 0x3140208A 0x3103108B +0x2900308C +0x2900208D 0x3100208E +0x2903408F +0x29038090 0x39408091 0x39408092 0x39033093 0x31405094 0x31408095 +0x2940B096 0x31408097 +0x29030098 +0x29036099 +0x2940D09A 0x3103109B -0x4900F000 -0x49000002 -0x49000003 -0x49002004 -0x49002005 -0x49002006 -0x49004007 -0x49000008 -0x49000009 -0x4900100A -0x4900000C -0x4900200D -0x4900200E -0x4900400F -0x49008010 -0x49008011 -0x41007012 -0x49003013 -0x49000014 -0x49008015 -0x49002016 -0x49000017 -0x49002018 -0x49000019 -0x4900101A -0x4900001B -0x4900001C -0x4900101D -0x4100001E -0x4900001F -0x49000020 -0x49000021 -0x49000022 -0x4100C023 -0x4900C024 -0x49008025 -0x49001026 -0x49008027 -0x4900C028 -0x4900C02A -0x4900002C -0x4900002D -0x4900402E -0x4900402F -0x49008030 -0x49008031 -0x49000032 -0x49000033 -0x49008034 -0x4900D036 +0x4900F000 pause menu +0x4?????01 identical to above? +0x49000002 change menu selection +0x49000003 select menu item +0x49002004 collect lasers +0x49002005 collect bomb +0x49002006 collect bomb. identical to above, played at same time +0x49004007 scroll number +0x49000008 vs countodwn +0x49000009 vs go +0x4900100A bad selection +0x4?????0B warning sound? +0x4900000C item appears +0x4900200D big heal +0x4900200E small heal +0x4900400F collect checkpoint +0x49008010 low health hit alarm +0x49008011 critical health hit alarm +0x41007012 teammate health increase +0x49003013 collect gold ring +0x49000014 great fox warning siren +0x49008015 health bar increase +0x49002016 good luck +0x49000017 trainer text display +0x49002018 call alert +0x49000019 map pause menu up, also crosshairs on +0x4900101A map pause menu down, also crosshairs off +0x4900001B torpedo lock on +0x4900001C missile great fox proximity alert +0x4900101D exit menu +0x4100001E briefing sounds +0x4900001F world map appears ? +0x49000020 main menu select +0x49000021 main menu back +0x49000022 main menu change selection +0x4100C023 solar heat alarm +0x4900C024 1UP +0x49008025 ring passed +0x49001026 low health nag +0x49008027 charge lock on +0x4900C028 boss health appears +0x4?????29 sound like an item collect jingle +0x4900C02A timer countdown alert +0x4?????2B some sort of option change? +0x4900002C cockpit view on +0x4900002D cockpit view off +0x4900402E EVSFX_16, missed zoness searchlight +0x4900402F ring failed +0x49008030 medal award +0x49008031 mission accomplished text +0x49000032 one steep bill +0x49000033 whaaat +0x49008034 mission complete text +0x4?????35 quiet noise, hard to place +0x4900D036 vs mode time up. doesn't play? diff --git a/sfxStrings.txt b/sfxStrings.txt new file mode 100644 index 00000000..1a36867e --- /dev/null +++ b/sfxStrings.txt @@ -0,0 +1,351 @@ + +NA_SE_FALL +NA_SE_PASS +NA_SE_ARWIN_GO_OUT +NA_SE_OB_METAL_BOUND_S +NA_SE_OB_METAL_BOUND_M +NA_SE_EN_METAL_BOUND_M +NA_SE_EN_MS_LAND +NA_SE_OB_METAL_BOUND_L +NA_SE_OB_BOUND_S +NA_SE_OB_BLOCK_APPEAR +NA_SE_OB_BOUND_M +NA_SE_OB_ROCK_BOUND +NA_SE_OB_BOUND_L +NA_SE_OB_AC_ROCK_BOUND +NA_SE_OB_AC_PILLAR_BOUND +NA_SE_METALBOMB_REFLECT +NA_SE_OB_MC_SWITCH_UP +NA_SE_METALBOMB_BOUND +NA_SE_SAND_SLIDE +NA_SE_TANK_SLIDE +NA_SE_SPLASH_LEVEL_S +NA_SE_SPLASH_LEVEL_L +NA_SE_OB_GATE_OPEN +NA_SE_OB_SLIDE_OPEN +NA_SE_OB_GATE_CLOSE +NA_SE_OB_SLIDE_CLOSE +NA_SE_OB_EXPLOSION_S +NA_SE_GREATFOX_ENGINE +NA_SE_EARTHQUAKE +NA_SE_MAP_ZOOM_START +NA_SE_MAP_ZOOM_END +NA_SE_OB_WATER_BOUND_M +NA_SE_EN_WATER_BOUND_M +NA_SE_OB_STEELFRAME +NA_SE_EXPLOSION_DEMO2 +NA_SE_KT_UFO_FALLING +NA_SE_IN_SPLASH_S +NA_SE_OUT_SPLASH_S +NA_SE_IN_SPLASH_L +NA_SE_OUT_SPLASH_L +NA_SE_OB_CRAME_MOTOR +NA_SE_OB_BROKEN_BOX +NA_SE_OB_MINI_BOMB +NA_SE_OB_WT_WHEEL_ROLL +NA_SE_OB_WALL_UP +NA_SE_OB_WALL_BOMB +NA_SE_ON_SPLASH_S +NA_SE_EN_PULL_CHAIN0 +NA_SE_EN_GATHER_PARTS +NA_SE_EN_HEARTBEAT +NA_SE_OB_SAND_BOUND_S +NA_SE_EN_SAND_BOUND_S +NA_SE_KT_UFO_ENGINE +NA_SE_MAP_ZOOM_OUT +NA_SE_EN_BROKEN_SPARK +NA_SE_OB_BROKEN_SPARK +NA_SE_OB_SPARK_BEAM +NA_SE_OB_BOMB_ALARM +NA_SE_WARP_HOLE +NA_SE_OB_WING +NA_SE_SUBMARINE_ATM +NA_SE_WATER_PRESSURE +NA_SE_BUBBLE_UP +NA_SE_EN_WT_BROKEN +NA_SE_EN_WT_DISAPPEAR_S +NA_SE_EN_WT_BOUND_M +NA_SE_OB_BOMB_ALARM_LAST +NA_SE_EN_WT_DISAPPEAR_L +NA_SE_EN_RNG_BEAM_CHARGE +NA_SE_EN_RNG_BEAM_SHOT +NA_SE_EN_MCBOSS_PLATEBEAM +NA_SE_EN_SHIELD_ROLL +NA_SE_GREATFOX_SHOT_DEMO +NA_SE_WARP_RING_1 +NA_SE_WARP_RING_2 +NA_SE_WARP_RING_3 +NA_SE_WARP_RING_4 +NA_SE_WARP_RING_5 +NA_SE_WARP_RING_6 +NA_SE_WARP_RING_7 +NA_SE_KT_UFO_HATCH_OPEN +NA_SE_KT_UFO_HATCH_CLOSE +NA_SE_KT_UFO_CORE_OPEN +NA_SE_BO_CORE_APPEAR +NA_SE_KT_UFO_HATCH_STOP +NA_SE_KT_UFO_CORE_STOP +NA_SE_KT_UFO_LONG_CHARGE +NA_SE_KT_UFO_LAST_CHARGE +NA_SE_KT_UFO_BEAM +NA_SE_EXPLOSION_DEMO3 +NA_SE_KT_UFO_BOUND +NA_SE_OB_BARRIER_RELEASE +NA_SE_EN_SPACE_SNAKE +NA_SE_OB_ROCKWALL_UP +NA_SE_COLONY_LEVEL +NA_SE_MAP_MOVE +NA_SE_MAP_ROLL +NA_SE_MAP_LINE_DRAW +NA_SE_SHIP_ENGINE_SPC +NA_SE_OB_BROKEN_SPARK_L +NA_SE_EN_SHIELD_ROLL_LEVEL +NA_SE_EN_SHIELD_ROLL_STOP +NA_SE_OB_MAGMA_WAVE +NA_SE_EN_OUT_PROMINENCE +NA_SE_EN_OUT_MAGMA +NA_SE_EN_IN_PROMINENCE +NA_SE_EN_IN_MAGMA +NA_SE_OB_SMOKE +NA_SE_OB_ROCK_CRASH +NA_SE_OB_ROCK_EYE_OPEN +NA_SE_OB_SHIP_FALLDOWN +NA_SE_EN_BMBOSS_BROKEN +NA_SE_OB_ARM_SWING +NA_SE_OB_POLE_MOVE +NA_SE_OB_POLE_BOUND +NA_SE_OB_HEAVY_SWITCH +NA_SE_OB_CONNECT_CUT +NA_SE_OB_MC_SWITCH_ON +NA_SE_OB_MC_SWITCH_GRN +NA_SE_OB_MC_SWITCH_RED +NA_SE_OB_POST_UP +NA_SE_OB_SIDE_GATE_CLOSE +NA_SE_OB_SPEAR_STICK +NA_SE_RAILWAY_BOUND +NA_SE_EN_MCBOSS_HATCH +NA_SE_EN_MCBOSS_CHARGE0 +NA_SE_EN_MCBOSS_SHOT0 +NA_SE_EN_MCBOSS_PLATECHARGE +NA_SE_VO_ANDORF_PUNCH +NA_SE_VO_ANDORF_UPSLAP +NA_SE_VO_ANDORF_SLAP +NA_SE_VO_ANDORF_WHAND +NA_SE_VO_ANDORF_CHOKE +NA_SE_VO_ANDORF_LAUGH +NA_SE_VO_ANDORF_GROAN +NA_SE_VO_ANDORF_DEATH +NA_SE_OB_ROOT_EXPLOSION0 +NA_SE_OB_ROOT_GATE_OPEN +NA_SE_OB_ROUTEGATE_OPEN_Q +NA_SE_EN_ANDORF_ROBOT +NA_SE_EN_ANDORF_BRAIN +NA_SE_EN_ANDORF_EYE +NA_SE_OB_ROOT_EXPLOSION1 +NA_SE_OB_FISH_AWAY +NA_SE_OB_AC_PILLAR_BROKE +NA_SE_WARP_OUT +NA_SE_ARWING_HATCH +NA_SE_OB_POINT_SWITCH +NA_SE_VO_ANDORF_EXCITE +NA_SE_OB_PILLER_ROLL +NA_SE_OB_ROUTEGATE_CLOSE_Q +NA_SE_OB_ROUTEGATE_OPEN_S +NA_SE_OB_ROUTEGATE_CLOSE_S +NA_SE_OB_LIFT +NA_SE_OB_PLATE_ROLL +NA_SE_STARFOX_SEAL +NA_SE_EXPLOSION_DEMO6 + + +NA_SE_EXPLOSION_S +NA_SE_BIG_EXPLOSION +NA_SE_EN_SHOT_0 +NA_SE_EN_DAMAGE_M +NA_SE_OB_DAMAGE_M +NA_SE_EN_BREATH +NA_SE_EN_WOLF_ENGINE +NA_SE_EN_WOLF_ENGINE2 +NA_SE_EN_REFLECT +NA_SE_OB_REFLECT +NA_SE_EN_EXPLOSION_S +NA_SE_EN_EXPLOSION_M +NA_SE_OB_EXPLOSION_M +NA_SE_EN_EXPLOSION_L +NA_SE_EN_CRASH_DOWN +NA_SE_ARWING_ENGINE_F +NA_SE_ARWING_ENGINE_FG +NA_SE_ARWING_SHOT_F +NA_SE_EN_DAMAGE_S +NA_SE_OB_DAMAGE_S +NA_SE_EN_DAMAGE_L +NA_SE_EN_KNOCK_DOWN +NA_SE_EN_ENGINE_00 +NA_SE_EN_S_FIGHTER_ENGINE +NA_SE_EN_ENGINE_01 +NA_SE_EN_ENGINE_02 +NA_SE_EN_MISSILE_ENGINE +NA_SE_EN_ENGINE_03 +NA_SE_EN_LONG_BEAM +NA_SE_EN_ENGINE_04 +NA_SE_EN_ALIEN_FLY +NA_SE_EN_ENGINE_05 +NA_SE_EN_SPACE_SHIP +NA_SE_EN_ENGINE_06 +NA_SE_EN_TANK_RB_ENGINE +NA_SE_EN_ENGINE_07 +NA_SE_EN_TANK_ENGINE +NA_SE_A_CARRIER_ENGINE +NA_SE_A_CARRIER_ENGINE2 +NA_SE_EN_HEAVY_WALK +NA_SE_EN_HEAVY_WALK0 +NA_SE_EN_HATCH +NA_SE_EN_MISSILE_SHOT +NA_SE_EN_BARREL_SHOT +NA_SE_EN_THROW +NA_SE_EN_MS_PUNCH +NA_SE_EN_FALLING_DOWN +NA_SE_EN_LASER_BEAM +NA_SE_EN_HEAVY_WALK1 +NA_SE_EN_HEAVY_JUMP +NA_SE_EN_HEAVY_BOUND +NA_SE_OB_HEAVY_BOUND +NA_SE_EN_COMBINE +NA_SE_EN_MOTOR_ROLL +NA_SE_EN_MOTOR_STOP +NA_SE_EN_UNIT_COMBINE +NA_SE_EN_ENERGY_BEAM +NA_SE_EN_CIRCLE_BEAM +NA_SE_EN_ZOBOSS_BEAM +NA_SE_EN_BOSS_EXPLOSION +NA_SE_EN_STAR_EXPLOSION +NA_SE_EN_PARTS_BROKEN +NA_SE_EN_THROW_S +NA_SE_EN_HEAVY_WALK2 +NA_SE_EN_APPEAR_SAND +NA_SE_EN_TIBOSS_AT_CRY +NA_SE_EN_TIBOSS_DM_CRY +NA_SE_EN_TIBOSS_DW_CRY +NA_SE_EXPLOSION_DEMO +NA_SE_EXPLOSION_DEMO5 +NA_SE_EN_BOSS_BEAM0 +NA_SE_EN_BOSS_CHARGE +NA_SE_EN_BOSS_ATTACK +NA_SE_EN_SAND_BOUND_M +NA_SE_OB_SPEAR_PILLAR +NA_SE_EN_WT_EXPLOSION_S +NA_SE_EN_WT_EXPLOSION_M +NA_SE_EN_WT_EXPLOSION_L +NA_SE_EN_BIRD_DOWN +NA_SE_EN_SN_BIRD_DOWN +NA_SE_EN_BIRD_DAMAGE +NA_SE_EN_SN_BIRD_DAMAGE +NA_SE_EN_SPIDER_MOVE +NA_SE_EN_SHIP_ENGINE_S +NA_SE_EN_SHIP_ENGINE_L +NA_SE_EN_S_BALL_SHOT +NA_SE_EN_SINK_PARTS +NA_SE_EN_M_BALL_SHOT +NA_SE_EN_PULL_CHAIN1 +NA_SE_EN_HEART_OPEN +NA_SE_ARWING_ENGINE_FS +NA_SE_EN_SNAKE_DAMAGE +NA_SE_EN_KANI_DAMAGE +NA_SE_EN_KANI_DOWN +NA_SE_EN_KANI_MOTOR +NA_SE_EN_DISAPPEAR_SAND +NA_SE_EN_SANADA_DAMAGE +NA_SE_EN_SANADA_DOWN +NA_SE_EN_SANADA_SWIM +NA_SE_EN_SANADA_APPEAR +NA_SE_EN_SEA_EXPLOSION_S +NA_SE_EN_SEA_EXPLOSION_L +NA_SE_EN_P_BALL_SHOT +NA_SE_EN_WT_DAMAGE_S +NA_SE_EN_EYEFILM_DAMAGE +NA_SE_EN_SHELL_BEAT +NA_SE_EN_SHELL_DAMAGE +NA_SE_EN_SHELL_DOWN +NA_SE_EN_KAIBASHIRA_DAMEGE +NA_SE_EN_EYEFILM_REVIVAL +NA_SE_EN_P_GUN_APPEAR +NA_SE_EN_P_GUN_DISAPPEAR +NA_SE_EN_SHELL_CLOSE +NA_SE_EN_SHELL_FILLOPEN +NA_SE_EN_S_BEAM_CHARGE +NA_SE_EN_S_BEAM_SHOT +NA_SE_EN_S_BEAM_END +NA_SE_GREATFOX_BURNER +NA_SE_EN_BURNER_S +NA_SE_EN_BURNER_L +NA_SE_EN_MS_BURNER +NA_SE_EN_GRN_BEAM_CHARGE +NA_SE_EN_GRN_BEAM_SHOT +NA_SE_EN_ASBOSS_SHIELD +NA_SE_EN_CATCH +NA_SE_EN_PASS +NA_SE_EN_SZMIS_EXPLOSION +NA_SE_EN_MS_EXPLOSION_S +NA_SE_EN_SZMIS_ENGINE +NA_SE_EN_PUNCH_ENGINE +NA_SE_EN_BARRIER_REFLECT +NA_SE_EXPLOSION_DEMO4 +NA_SE_EN_ANDORF_EXPLOSION +NA_SE_EN_SPARK_DAMAGE_M +NA_SE_EN_BMBOSS_DAMAGE +NA_SE_EN_ARM_SWING +NA_SE_EN_COVER_OPEN +NA_SE_EN_COVER_CLOSE +NA_SE_EN_COVER_MOVE_STOP +NA_SE_EN_ENERGY_BALL +NA_SE_EN_UNIT_GATHERING +NA_SE_EN_MS_SHOT_S +NA_SE_EN_DASH +NA_SE_EN_MS_DASH +NA_SE_EN_KICK +NA_SE_EN_MS_KICK +NA_SE_EN_MS_SHOT_L +NA_SE_EN_MS_SHIELD_BROKEN +NA_SE_EN_MS_EXPLOSION_L +NA_SE_OB_SNROCK_APPEAR +NA_SE_OB_SNROCK_DISAPPEAR +NA_SE_EN_SNBOSS_CRY +NA_SE_EN_SNBOSS_DAMAGE +NA_SE_EN_SNBOSS_BROKEN +NA_SE_EN_SNBOSS_DOWN +NA_SE_EN_SNBOSS_SWING +NA_SE_EN_SNBOSS_BREATH +NA_SE_EN_SNBOSS_ROLL +NA_SE_EN_ANGLER_DAMAGE +NA_SE_EN_ANGLER_DOWN +NA_SE_ROCK_REFLECT +NA_SE_OB_ROCK_REFLECT +NA_SE_OB_MAGMA_BUBBLE +NA_SE_OB_BMBOSS_WALK +NA_SE_OB_BMBOSS_JUMP +NA_SE_OB_BMBOSS_LAND +NA_SE_OB_BMBOSS_ATTACK +NA_SE_OB_BMBOSS_BOUND +NA_SE_EN_FREIGHT_TRAIN +NA_SE_EN_MCBOSS_REFLECT +NA_SE_EN_ANDORF_BREATH +NA_SE_EN_ANDORF_BITE0 +NA_SE_EN_ANDORF_BITE1 +NA_SE_EN_ANDORF_VOMIT +NA_SE_EN_ANDORF_SPARK +NA_SE_EN_WT_THROW +NA_SE_EN_WT_SPARK_CHARGE +NA_SE_EN_WT_SPARK_BEAM +NA_SE_EN_AC_ZAKO_DAMAGE +NA_SE_EN_AC_ZAKO_DOWN +NA_SE_EN_WARP_IN +NA_SE_EN_WARP_OUT +NA_SE_EN_CLBOSS_CHARGE +NA_SE_EN_CLBOSS_BEAM +NA_SE_EN_TRAIN_BREAK +NA_SE_EN_ANDORF_WARP +NA_SE_EN_ANDORF_CATCH +NA_SE_EN_KANI_STOP +NA_SE_EN_MCBOSS_RAGE +NA_SE_EN_DOWN_IMPACT +NA_SE_EN_MARBLE_BEAM diff --git a/src/audio/audio_general.c b/src/audio/audio_general.c index d702861e..cf0eb02b 100644 --- a/src/audio/audio_general.c +++ b/src/audio/audio_general.c @@ -527,25 +527,25 @@ f32 Audio_GetSfxFalloff(u8 bankId, u8 entryIndex) { f32 midrange; f32 range; - if (SFX_BIT09(sSfxBanks[bankId][entryIndex].sfxId)) { + if (sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_22) { return 1.0f; } distance = sSfxBanks[bankId][entryIndex].distance; if (distance > 33000.0f) { falloff = 0.0f; } else { - switch (SFX_RANGE_MASK(sSfxBanks[bankId][entryIndex].sfxId)) { + switch ((sSfxBanks[bankId][entryIndex].sfxId & SFX_RANGE_MASK)) { default: - range = 1650.0f; + range = 33000.0f / 20.0f; break; - case 1 << 16: - range = 2200.0f; + case 1 << SFX_RANGE_SHIFT: + range = 33000.0f / 15.0f; break; - case 2 << 16: - range = 3142.8572f; + case 2 << SFX_RANGE_SHIFT: + range = 33000.0f / 10.5f; break; - case 3 << 16: - range = 6346.1543f; + case 3 << SFX_RANGE_SHIFT: + range = 33000.0f / 5.2f; break; } cutoff = range / 5.0f; @@ -568,9 +568,9 @@ s8 Audio_GetSfxReverb(u8 bankId, u8 entryIndex, u8 channelId) { s8 distReverb = 0; s8 scriptReverb = 0; - if (!SFX_BIT10(sSfxBanks[bankId][entryIndex].sfxId)) { - if (sSfxBanks[bankId][entryIndex].distance < 8250.0f) { - distReverb = (sSfxBanks[bankId][entryIndex].distance / 8250.0f) * 40.0f; + if (!(sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_21)) { + if (sSfxBanks[bankId][entryIndex].distance < (33000.0f / 4.0f)) { + distReverb = (sSfxBanks[bankId][entryIndex].distance / (33000.0f / 4.0f)) * 40.0f; } else { distReverb = 40; } @@ -618,11 +618,11 @@ f32 Audio_GetSfxFreqMod(u8 bankId, u8 entryIndex) { f32 distance; f32 freqMod = 1.0f; - if (SFX_BIT08(sSfxBanks[bankId][entryIndex].sfxId)) { + if (sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_23) { freqMod -= ((gAudioRandom % 16) / 192.0f); } distance = sSfxBanks[bankId][entryIndex].distance; - if (!SFX_BIT09(sSfxBanks[bankId][entryIndex].sfxId)) { + if (!(sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_22)) { if (distance >= 33000.0f) { freqMod += 0.2f; } else { @@ -643,27 +643,28 @@ void Audio_SetSfxProperties(u8 bankId, u8 entryIndex, u8 channelId) { SfxBankEntry* entry = &sSfxBanks[bankId][entryIndex]; switch (bankId) { - case 0: - case 1: - case 2: - case 3: + case SFX_BANK_PLAYER: + case SFX_BANK_1: + case SFX_BANK_2: + case SFX_BANK_3: if (entry->state == 2) { AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, channelId, 1, gLevelType); } - if (SFX_BIT13(entry->sfxId) && (*entry->zPos > 0.0f)) { + if ((entry->sfxId & SFX_FLAG_18) && (*entry->zPos > 0.0f)) { f32 yScaled = *entry->yPos / 2.5f; entry->distance = SQ(*entry->xPos) + SQ(yScaled); } entry->distance = sqrtf(entry->distance); - volumeMod = (Audio_GetSfxFalloff(bankId, entryIndex) * *entry->volMod) * sSfxVolumeMods[bankId].value; + volumeMod = Audio_GetSfxFalloff(bankId, entryIndex) * *entry->volMod * sSfxVolumeMods[bankId].value; reverb = Audio_GetSfxReverb(bankId, entryIndex, channelId); freqMod = Audio_GetSfxFreqMod(bankId, entryIndex) * *entry->freqMod; - if ((bankId != 0) || !(*entry->zPos > -200.0f) || !(*entry->zPos < 200.0f) || (sSfxChannelLayout == 3)) { + if (!((bankId == SFX_BANK_PLAYER) && ((-200.0f < *entry->zPos) && (*entry->zPos < 200.0f)) && + (sSfxChannelLayout != 3))) { pan = Audio_GetSfxPan(*entry->xPos, *entry->zPos, entry->token); } break; - case 4: + case SFX_BANK_SYSTEM: if (sSfxChannelLayout == 3) { if (entry->token != 4) { pan = (entry->token & 1) * 127; @@ -1393,7 +1394,7 @@ void Audio_ClearBGMMute(u8 channelIndex) { } void Audio_PlaySfx(u32 sfxId, f32* sfxSource, u8 token, f32* freqMod, f32* volMod, s8* reverbAdd) { - if (sSfxBankMuted[SFX_BANK_SHIFT(sfxId)] == 0) { + if (sSfxBankMuted[SFX_BANK_ALT(sfxId)] == 0) { SfxRequest* request = &sSfxRequests[sSfxRequestWriteIndex]; request->sfxId = sfxId; @@ -1415,12 +1416,13 @@ void Audio_RemoveMatchingSfxRequests(u8 aspect, SfxBankEntry* data) { switch (aspect) { case 0: - if (SFX_BANK_MASK(request->sfxId) == SFX_BANK_MASK(data->sfxId)) { + if ((request->sfxId & SFX_BANK_MASK) == (data->sfxId & SFX_BANK_MASK)) { found = true; } break; case 1: - if ((SFX_BANK_MASK(request->sfxId) == SFX_BANK_MASK(data->sfxId)) && (&request->pos[0] == data->xPos)) { + if (((request->sfxId & SFX_BANK_MASK) == (data->sfxId & SFX_BANK_MASK)) && + (&request->pos[0] == data->xPos)) { found = true; } break; @@ -1446,7 +1448,7 @@ void Audio_RemoveMatchingSfxRequests(u8 aspect, SfxBankEntry* data) { break; } if (found) { - request->sfxId = 0; + request->sfxId = NA_SE_NONE; } } } @@ -1460,7 +1462,7 @@ void Audio_ProcessSfxRequest(void) { u8 count; SfxBankEntry* entry; - if (request->sfxId == 0) { + if (request->sfxId == NA_SE_NONE) { return; } bankId = SFX_BANK(request->sfxId); @@ -1474,13 +1476,13 @@ void Audio_ProcessSfxRequest(void) { if (count == 0) { evict = next; sfxId = sSfxBanks[bankId][next].sfxId; - } else if (SFX_IMPORTANCE_MASK(sSfxBanks[bankId][next].sfxId) < SFX_IMPORTANCE_MASK(sfxId)) { + } else if ((sSfxBanks[bankId][next].sfxId & SFX_IMPORT_MASK) < (sfxId & SFX_IMPORT_MASK)) { evict = next; sfxId = sSfxBanks[bankId][next].sfxId; } count++; if (count == sUsedChannelsPerBank[sSfxChannelLayout][bankId]) { - if (SFX_IMPORTANCE_MASK(request->sfxId) >= SFX_IMPORTANCE_MASK(sfxId)) { + if ((request->sfxId & SFX_IMPORT_MASK) >= (sfxId & SFX_IMPORT_MASK)) { next = evict; } else { next = 0; @@ -1488,8 +1490,8 @@ void Audio_ProcessSfxRequest(void) { } } if (count == sUsedChannelsPerBank[sSfxChannelLayout][bankId]) { - if (SFX_BIT04(request->sfxId) || SFX_BIT13(request->sfxId) || (next == evict)) { - if (SFX_BIT12(sSfxBanks[bankId][next].sfxId) && (sSfxBanks[bankId][next].state != 1)) { + if ((request->sfxId & SFX_FLAG_27) || (request->sfxId & SFX_FLAG_18) || (next == evict)) { + if ((sSfxBanks[bankId][next].sfxId & SFX_FLAG_19) && (sSfxBanks[bankId][next].state != 1)) { Audio_ClearBGMMute(sSfxBanks[bankId][next].channelIndex); } sSfxBanks[bankId][next].token = request->token; @@ -1536,7 +1538,7 @@ void Audio_RemoveSfxBankEntry(u8 bankId, u8 entryIndex) { SfxBankEntry* sfxBank = sSfxBanks[bankId]; s32 pad; - if (SFX_BIT12(sfxBank[entryIndex].sfxId)) { + if (sfxBank[entryIndex].sfxId & SFX_FLAG_19) { Audio_ClearBGMMute(sfxBank[entryIndex].channelIndex); } if (entryIndex == sSfxBankListEnd[bankId]) { @@ -1573,11 +1575,11 @@ void Audio_ChooseActiveSfx(u8 bankId) { chosenSfx[i].priority = INT32_MAX; chosenSfx[i].entryIndex = 0xFF; } - entryIndex = sSfxBanks[bankId]->next; + entryIndex = sSfxBanks[bankId][0].next; k = 0; while (entryIndex != 0xFF) { if ((sSfxBanks[bankId][entryIndex].state == 1) && - (SFX_BIT04(sSfxBanks[bankId][entryIndex].sfxId) == SFX_BIT04(-1))) { + ((sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_27) == SFX_FLAG_27)) { sSfxBanks[bankId][entryIndex].freshness--; } if (sSfxBanks[bankId][entryIndex].freshness == 0) { @@ -1591,8 +1593,8 @@ void Audio_ChooseActiveSfx(u8 bankId) { yScaled = *entry->yPos / 2.5f; entry->distance = SQ(*entry->xPos) + SQ(yScaled) + SQ(*entry->zPos); } - importance = SFX_IMPORTANCE(entry->sfxId); - if (SFX_BIT11(entry->sfxId)) { + importance = SFX_IMPORT(entry->sfxId); + if (entry->sfxId & SFX_FLAG_20) { entry->priority = SQ(0xFF - importance) * SQ(76); } else { entry->priority = (u32) entry->distance + SQ(0xFF - importance) * SQ(76); @@ -1608,7 +1610,7 @@ void Audio_ChooseActiveSfx(u8 bankId) { if (entry->distance > maxRangeSq) { if (entry->state == 4) { AUDIOCMD_CHANNEL_SET_IO(2, entry->channelIndex, 0, 0); - if (SFX_BIT04(entry->sfxId)) { + if (entry->sfxId & SFX_FLAG_27) { Audio_RemoveSfxBankEntry(bankId, entryIndex); entryIndex = k; } @@ -1649,7 +1651,7 @@ void Audio_ChooseActiveSfx(u8 bankId) { if (activeSfx->entryIndex == 0xFF) { needNewSfx = 1; } else if (sSfxBanks[bankId][activeSfx->entryIndex].state == 4) { - if (SFX_BIT04(sSfxBanks[bankId][activeSfx->entryIndex].sfxId)) { + if (sSfxBanks[bankId][activeSfx->entryIndex].sfxId & SFX_FLAG_27) { Audio_RemoveSfxBankEntry(bankId, activeSfx->entryIndex); } else { sSfxBanks[bankId][activeSfx->entryIndex].state = 1; @@ -1706,7 +1708,7 @@ void Audio_PlayActiveSfx(u8 bankId) { if (entry->state == 2) { entry->channelIndex = sCurSfxPlayerChannelIndex; - if (SFX_BIT12(entry->sfxId)) { + if (entry->sfxId & SFX_FLAG_19) { sChannelMuteFlags |= 1 << sCurSfxPlayerChannelIndex; Audio_SetSequenceFade(SEQ_PLAYER_BGM, 2, 64, 15); } @@ -1742,7 +1744,7 @@ void Audio_KillSfxByBank(u8 bankId) { } next = sSfxBanks[bankId][0].next; } - cmp.sfxId = bankId << 28; + cmp.sfxId = bankId << SFX_BANK_SHIFT; Audio_RemoveMatchingSfxRequests(0, &cmp); } @@ -1768,23 +1770,23 @@ void Audio_StopSfxByBankAndSource(u8 bankId, f32* sfxSource) { } void Audio_KillSfxByBankAndSource(u8 bankId, f32* sfxSource) { - SfxBankEntry sp18; + SfxBankEntry cmp; Audio_StopSfxByBankAndSource(bankId, sfxSource); - sp18.sfxId = bankId << 0x1C; - sp18.xPos = sfxSource; - Audio_RemoveMatchingSfxRequests(1, &sp18); + cmp.sfxId = bankId << SFX_BANK_SHIFT; + cmp.xPos = sfxSource; + Audio_RemoveMatchingSfxRequests(1, &cmp); } void Audio_KillSfxBySource(f32* sfxSource) { u8 i; - SfxBankEntry sp24; + SfxBankEntry cmp; for (i = 0; i < 5; i++) { Audio_StopSfxByBankAndSource(i, sfxSource); } - sp24.xPos = sfxSource; - Audio_RemoveMatchingSfxRequests(2, &sp24); + cmp.xPos = sfxSource; + Audio_RemoveMatchingSfxRequests(2, &cmp); } void Audio_KillSfxBySourceAndId(f32* sfxSource, u32 sfxId) { @@ -1900,7 +1902,7 @@ void Audio_PlayAllSfx(void) { if (IS_SEQUENCE_CHANNEL_VALID(gSeqPlayers[SEQ_PLAYER_SFX].channels[0])) { sCurSfxPlayerChannelIndex = 0; - for (bankId = 0; bankId < 5; bankId++) { + for (bankId = 0; bankId < ARRAY_COUNT(sSfxBanks); bankId++) { Audio_ChooseActiveSfx(bankId); Audio_PlayActiveSfx(bankId); Audio_UpdateSfxVolumeMod(bankId); @@ -2346,8 +2348,8 @@ void Audio_AnalyzeFrequencies(f32* buffer0, f32* buffer1, s32 length, f32* buffe var_fs0 = 0.0f; temp_ft0 = D_PI / (2 * size); for (i = 0; i < half; i++) { - *buf2half2++ = (__cosf(var_fs0) - __sinf(var_fs0)) * 0.707107f; - *buf2half3++ = (__cosf(var_fs0) + __sinf(var_fs0)) * 0.707107f; + *buf2half2++ = (__cosf(var_fs0) - __sinf(var_fs0)) * 0.707107f; // approx 1/sqrt(2) + *buf2half3++ = (__cosf(var_fs0) + __sinf(var_fs0)) * 0.707107f; // approx 1/sqrt(2) var_fs0 += temp_ft0; } } @@ -2454,7 +2456,7 @@ u8* Audio_UpdateFrequencyAnalysis(void) { } void Audio_StartPlayerNoise(u8 playerId) { - u32 sfxId = 0x00000000; + u32 sfxId = NA_SE_NONE; sPlayerNoise[playerId].form = gPlayer[playerId].sfx.form; Audio_ResetPlayerFreqMods(); @@ -2475,14 +2477,14 @@ void Audio_StartPlayerNoise(u8 playerId) { &sPlayerNoise[playerId].reverbAdd); break; } - if (sfxId != 0) { + if (sfxId != NA_SE_NONE) { Audio_PlaySfx(sfxId, gPlayer[playerId].sfx.srcPos, playerId, &sPlayerNoise[playerId].totalMod, &gDefaultMod, &sPlayerNoise[playerId].reverbAdd); } } void Audio_StopPlayerNoise(u8 playerId) { - u32 sfxId = 0x00000000; + u32 sfxId = NA_SE_NONE; switch (sPlayerNoise[playerId].form) { case FORM_ARWING: @@ -2502,7 +2504,7 @@ void Audio_StopPlayerNoise(u8 playerId) { break; } sPlayerNoise[playerId].form = FORM_NONE; - if (sfxId != 0) { + if (sfxId != NA_SE_NONE) { Audio_KillSfxBySourceAndId(gPlayer[playerId].sfx.srcPos, sfxId); } } @@ -2652,7 +2654,7 @@ void Audio_SetHeatAlarmParams(u8 shields, u8 heightParam) { } void Audio_PlayEventSfx(f32* sfxSource, u16 eventSfxId) { - if ((sEventSfx[eventSfxId] & 0xF0000000) != 0x40000000) { + if ((sEventSfx[eventSfxId] & SFX_BANK_MASK) != (SFX_BANK_SYSTEM << SFX_BANK_SHIFT)) { AUDIO_PLAY_SFX(sEventSfx[eventSfxId], sfxSource, 0); } else { AUDIO_PLAY_SFX(sEventSfx[eventSfxId], gDefaultSfxSource, 0); @@ -2660,7 +2662,7 @@ void Audio_PlayEventSfx(f32* sfxSource, u16 eventSfxId) { } void Audio_StopEventSfx(f32* sfxSource, u16 eventSfxId) { - if ((sEventSfx[eventSfxId] & 0xF0000000) != 0x40000000) { + if ((sEventSfx[eventSfxId] & SFX_BANK_MASK) != (SFX_BANK_SYSTEM << SFX_BANK_SHIFT)) { Audio_KillSfxBySourceAndId(sfxSource, sEventSfx[eventSfxId]); } else { Audio_KillSfxBySourceAndId(gDefaultSfxSource, sEventSfx[eventSfxId]); @@ -2778,7 +2780,7 @@ void Audio_PlaySoundTest(u8 enable) { void Audio_PlaySequenceDistorted(u8 seqPlayId, u16 seqId, u16 distortion, u8 fadeinTime, u8 unused) { u8 tempoDistortion = (distortion / 10); - Audio_PlaySequence(seqPlayId, seqId & ~0x8000, 0, -1); + Audio_PlaySequence(seqPlayId, seqId & ~SEQ_FLAG, 0, -1); SEQCMD_SET_SEQPLAYER_FREQ(seqPlayId, fadeinTime, distortion); SEQCMD_SCALE_TEMPO(seqPlayId, fadeinTime, tempoDistortion); } diff --git a/src/audio/audio_heap.c b/src/audio/audio_heap.c index 6ae13ba7..ebbcccdb 100644 --- a/src/audio/audio_heap.c +++ b/src/audio/audio_heap.c @@ -660,7 +660,7 @@ void AudioHeap_Init(void) { gAudioBufferParams.samplesPerTickMax = gAudioBufferParams.samplesPerTick + 8; gAudioBufferParams.samplesPerTickMin = gAudioBufferParams.samplesPerTick - 8; gAudioBufferParams.resampleRate = 32000.0f / (s32) gAudioBufferParams.samplingFrequency; - gAudioBufferParams.ticksPerUpdateInvScaled = 0.001171875f / gAudioBufferParams.ticksPerUpdate; + gAudioBufferParams.ticksPerUpdateInvScaled = (3.0f / 2560.0f) / gAudioBufferParams.ticksPerUpdate; gAudioBufferParams.ticksPerUpdateInv = 1.0f / gAudioBufferParams.ticksPerUpdate; gNumNotes = spec->numNotes; D_8014C1B0 = spec->unk_14; diff --git a/src/audio/audio_playback.c b/src/audio/audio_playback.c index 21639354..f6f90dad 100644 --- a/src/audio/audio_playback.c +++ b/src/audio/audio_playback.c @@ -411,7 +411,7 @@ void func_80012438(SequenceLayer* layer, s32 arg1) { layer->adsr.decayIndex * gAudioBufferParams.ticksPerUpdateInvScaled; } temp_v0->playbackState.adsr.sustain = - (s32) layer->channel->adsr.sustain * temp_v0->playbackState.adsr.current * 0.00390625f; + (s32) layer->channel->adsr.sustain * temp_v0->playbackState.adsr.current / 256.0f; } } if (arg1 == 6) { diff --git a/src/audio/audio_seqplayer.c b/src/audio/audio_seqplayer.c index c936fbe9..54614852 100644 --- a/src/audio/audio_seqplayer.c +++ b/src/audio/audio_seqplayer.c @@ -845,7 +845,7 @@ void func_800153E8(SequenceChannel* channel) { channel->changes.s.volume = 1; break; case 0xE0: - channel->volumeMod = (s32) func_800146C0(state) * 0.0078125f; + channel->volumeMod = (s32) func_800146C0(state) / 128.0f; channel->changes.s.volume = 1; break; case 0xDE: diff --git a/src/engine/fox_360.c b/src/engine/fox_360.c index cbace701..173c0fa5 100644 --- a/src/engine/fox_360.c +++ b/src/engine/fox_360.c @@ -120,11 +120,11 @@ bool AllRange_PlayMessage(u16* msg, RadioCharacterId rcid) { } } -void AllRange_UpdateCountdown(void) { +void AllRange_DrawCountdown(void) { if (gShowAllRangeCountdown != 0) { s32 seconds = gAllRangeCountdown[1]; - func_hud_8008E51C(gAllRangeCountdown, gAllRangeCountdownScale); + HUD_DrawCountdown(gAllRangeCountdown, gAllRangeCountdownScale); if ((gAllRangeCountdown[0] == 0) && (seconds != gAllRangeCountdown[1]) && (gAllRangeCountdown[1] < 15)) { AUDIO_PLAY_SFX(0x4900C02A, gDefaultSfxSource, 4); } diff --git a/src/engine/fox_beam.c b/src/engine/fox_beam.c index 0a2bd790..4f9f3bc3 100644 --- a/src/engine/fox_beam.c +++ b/src/engine/fox_beam.c @@ -850,7 +850,7 @@ void func_beam_80038140(PlayerShot* shot) { Matrix_RotateY(gCalcMatrix, shot->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, shot->obj.rot.x * M_DTOR, MTXF_APPLY); sp88.x = sp88.y = 0.0f; - sp88.z = -133.33333f; + sp88.z = -400.0f / 3.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp88, &sp7C); shot->vel.x = sp7C.x; shot->vel.y = sp7C.y; diff --git a/src/engine/fox_context.c b/src/engine/fox_context.c index d36ff39a..25238849 100644 --- a/src/engine/fox_context.c +++ b/src/engine/fox_context.c @@ -39,7 +39,7 @@ bool gExpertMode; s32 D_ctx_80177A10[10]; f32 D_ctx_80177A48[10]; s32 gCsFrameCount; -u8 D_ctx_80177A98; +u8 D_ctx_80177A98; // some sort of flag. Used in background u8 D_ctx_80177AB0; u8 gAqDrawMode; s32 gTitleState; diff --git a/src/engine/fox_display.c b/src/engine/fox_display.c index 911bea25..b96f13bf 100644 --- a/src/engine/fox_display.c +++ b/src/engine/fox_display.c @@ -722,7 +722,7 @@ void func_display_80054300(Player* player) { switch (player->form) { case FORM_ARWING: fake_label: - Matrix_Scale(gGfxMatrix, 2.5049999f, 1.5f, 2.5049999f, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, 1.5f * 1.67f, 1.5f, 1.5f * 1.67f, MTXF_APPLY); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 30.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1032780); @@ -795,7 +795,7 @@ void func_display_8005478C(Player* player) { if ((gGameFrameCount % 2) != 0) { Matrix_Scale(gGfxMatrix, 0.9f, 0.63f, 1.0f, MTXF_APPLY); } else { - Matrix_Scale(gGfxMatrix, 0.80999994f, 0.567f, 1.0f, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, 0.9f * 0.9f, 0.9f * 0.63f, 1.0f, MTXF_APPLY); } Matrix_SetGfxMtx(&gMasterDisp); Play_DrawEngineGlow(gLevelType); diff --git a/src/engine/fox_enmy2.c b/src/engine/fox_enmy2.c index 6b8b44c8..bc0401e3 100644 --- a/src/engine/fox_enmy2.c +++ b/src/engine/fox_enmy2.c @@ -3745,7 +3745,7 @@ bool ActorEvent_OverrideLimbDraw2(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* s32 var_s1; if (limbIndex == 5) { - var_s1 = (s32) (this->health * 0.6375f); + var_s1 = (s32) (this->health * (255.0f / 400.0f)); if (var_s1 > 255) { var_s1 = 255; } diff --git a/src/engine/fox_game.c b/src/engine/fox_game.c index 0475088f..a945e06f 100644 --- a/src/engine/fox_game.c +++ b/src/engine/fox_game.c @@ -543,7 +543,7 @@ void Game_Update(void) { } Background_dummy_80040CDC(); HUD_DrawStatusScreens(); - AllRange_UpdateCountdown(); + AllRange_DrawCountdown(); if ((gGameState == GSTATE_PLAY) && gVersusMode) { Versus_Draw(); } diff --git a/src/engine/fox_hud.c b/src/engine/fox_hud.c index 417b1146..c1a56913 100644 --- a/src/engine/fox_hud.c +++ b/src/engine/fox_hud.c @@ -2695,8 +2695,8 @@ void func_hud_8008C104(u16* srcTexture, u16* dstTexture) { Texture_Mottle(dst, buffer, 2); } -void func_hud_8008C390(f32 xPos, f32 yPos, f32 scale, s32 number) { - void* D_800D1EC0[] = { +void HUD_DisplaySmallNumber(f32 xPos, f32 yPos, f32 scale, s32 number) { + void* sSmallNumberTex[] = { aSmallText_0, aSmallText_1, aSmallText_2, aSmallText_3, aSmallText_4, aSmallText_5, aSmallText_6, aSmallText_7, aSmallText_8, aSmallText_9, }; @@ -2704,14 +2704,14 @@ void func_hud_8008C390(f32 xPos, f32 yPos, f32 scale, s32 number) { for (i = 10; i != 1; i /= 10) { if ((xPos > 0.0f) && (yPos > 0.0f)) { - TextureRect_8bIA(&gMasterDisp, D_800D1EC0[number / i], 16, 8, xPos, yPos, scale, scale); + TextureRect_8bIA(&gMasterDisp, sSmallNumberTex[number / i], 16, 8, xPos, yPos, scale, scale); } xPos += 9.0f * scale; number %= i; } if ((xPos > 0.0f) && (yPos > 0.0f)) { - TextureRect_8bIA(&gMasterDisp, D_800D1EC0[number / i], 16, 8, xPos, yPos, scale, scale); + TextureRect_8bIA(&gMasterDisp, sSmallNumberTex[number / i], 16, 8, xPos, yPos, scale, scale); } } @@ -3122,7 +3122,7 @@ void HUD_DrawBossHealth(void) { if (D_801616C4 >= 0.88f) { temp6 = sp3C + 8.0f; - temp7 = 101.0f - (31.884058f * D_801616C8) + temp1; + temp7 = 101.0f - ((2200.0f / 69.0f) * D_801616C8) + temp1; if (D_801616C8 > 0.0f) { TextureRect_16bRGBA(&gMasterDisp, D_Tex_800D99F8, 32, 32, temp6, temp7, 0.2f, D_801616C8); } @@ -3135,7 +3135,7 @@ void HUD_DrawBossHealth(void) { } } -void func_hud_8008E2C8(f32 xPos, f32 yPos, s32* countdown, f32 scale) { +void HUD_DisplayCountdown(f32 xPos, f32 yPos, s32* countdown, f32 scale) { f32 var_fs0 = 0.0f; s32 var_s2 = 0; s32 i; @@ -3159,14 +3159,14 @@ void func_hud_8008E2C8(f32 xPos, f32 yPos, s32* countdown, f32 scale) { } else { RCP_SetupDL_76(); gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255); - func_hud_8008C390((var_fs0 * scale) + xPos, yPos, scale, var_s2); + HUD_DisplaySmallNumber((var_fs0 * scale) + xPos, yPos, scale, var_s2); var_fs0 += 9.0f; } var_fs0 += 9.0f; } } -void func_hud_8008E51C(s32* countdown, f32 scale) { +void HUD_DrawCountdown(s32* countdown, f32 scale) { //! FAKE: if (1) {} @@ -3191,7 +3191,7 @@ void func_hud_8008E51C(s32* countdown, f32 scale) { } if (gPlayState != PLAY_PAUSE) { - func_hud_8008E2C8(176.0f, 22.0f, countdown, scale); + HUD_DisplayCountdown(176.0f, 22.0f, countdown, scale); } } diff --git a/src/engine/fox_play.c b/src/engine/fox_play.c index eb6545c7..18d3d8c7 100644 --- a/src/engine/fox_play.c +++ b/src/engine/fox_play.c @@ -3606,7 +3606,7 @@ void func_play_800AF07C(Player* player) { } if (player->barrelRoll != 0) { sp84 = 0.2f; - gPlayerTurnRate = 6.8999996f; + gPlayerTurnRate = 6.8999996f; // 690.0f * 0.01f } Math_SmoothStepToF(&player->rot.y, stickX * gPlayerTurnStickMod, sp84, gPlayerTurnRate, 0.03f); @@ -4114,7 +4114,7 @@ void func_play_800B0F50(Player* playerx) { gRadioState = gRadioMsgRadioId = gCurrentRadioPortrait = 0; D_ctx_8017853C = gRadioTextBoxScaleY = 0.0f; player->cam.eye.z = 400.0f; - player->unk_148 = 0.77699995f; + player->unk_148 = 0.77699995f; // 77.7f *0.01f player->unk_14C = 0.77699995f; player->unk_01C = 1.0f; player->groundPos.y = -1000.0f; diff --git a/src/engine/fox_tank.c b/src/engine/fox_tank.c index 24c247f7..d9ec4dbe 100644 --- a/src/engine/fox_tank.c +++ b/src/engine/fox_tank.c @@ -322,7 +322,7 @@ void func_tank_800444BC(Player* player) { } if ((player->pos.y - sp30) < sp38) { if (player->vel.y < -10.0f) { - AUDIO_PLAY_SFX(0x09008015, player->sfxSource, 0); + AUDIO_PLAY_SFX(NA_SE_TANK_BOUND, player->sfxSource, 0); } player->grounded = true; if (player->vel.y < -20.0f) { @@ -941,7 +941,7 @@ void func_tank_80046704(Player* player) { player->baseSpeed = -(D_800C9F00 * 1.5f); player->vel.z = D_800C9F00 * 1.5f; D_800C9F00 = 12; - AUDIO_PLAY_SFX(0x09008015, player->sfxSource, 0); + AUDIO_PLAY_SFX(NA_SE_TANK_WALL_HIT, player->sfxSource, 0); break; } if (scenery->obj.id == OBJ_SCENERY_59) { @@ -1253,7 +1253,7 @@ void func_tank_80047D38(Player* player, f32 arg1) { } if ((player->pos.y - 5.0f) < arg1) { if (player->vel.y < -10.0f) { - AUDIO_PLAY_SFX(0x09008015, player->sfxSource, 0); + AUDIO_PLAY_SFX(NA_SE_TANK_BOUND, player->sfxSource, 0); player->hitTimer = 10; } D_800C9F04 = 1; diff --git a/src/engine/fox_versus.c b/src/engine/fox_versus.c index ffd9e655..37d85811 100644 --- a/src/engine/fox_versus.c +++ b/src/engine/fox_versus.c @@ -349,41 +349,38 @@ void func_versus_800BDE44(void) { } } -s32 func_versus_800BE078(void) { - s32 temp; +s32 Versus_UpdateTimer(void) { + s32 temp = (s32) CYCLES_TO_USEC((D_80178860 - D_80178868)) / 10000; - while (true) { - temp = (s32) CYCLES_TO_USEC((D_80178860 - D_80178868)) / 10000; - - if ((D_versus_80178768[2] -= temp) >= 0) { - break; - } + D_versus_80178768[2] -= temp; + if (D_versus_80178768[2] < 0) { D_versus_80178768[2] *= -1; temp = (D_versus_80178768[2] / 100) + 1; D_versus_80178768[2] %= 100; D_versus_80178768[2] = (100 - D_versus_80178768[2]) % 100; + D_versus_80178768[1] -= temp; - if ((D_versus_80178768[1] -= temp) >= 0) { + if (D_versus_80178768[1] >= 0) { if ((D_versus_80178768[0] == 0) && (D_versus_80178768[1] < 15) && (D_versus_80178768[1] >= 0)) { AUDIO_PLAY_SFX(0x4900C02A, gDefaultSfxSource, 4); } - break; + } else { + // clang-format off + if (D_versus_80178768[0] == 0) {\ + AUDIO_PLAY_SFX(0x4900D036, gDefaultSfxSource, 4);\ + } + // clang-format on + D_versus_80178768[1] *= -1; + temp = (D_versus_80178768[1] / 60) + 1; + D_versus_80178768[1] %= 60; + D_versus_80178768[1] = (60 - D_versus_80178768[1]) % 60; + D_versus_80178768[0] -= temp; + if (D_versus_80178768[0] < 0) { + D_versus_80178768[0] = 0; + D_versus_80178768[1] = 0; + D_versus_80178768[2] = 0; + } } - // clang-format off - if (D_versus_80178768[0] == 0) { AUDIO_PLAY_SFX(0x4900D036, gDefaultSfxSource, 4); } - // clang-format on - D_versus_80178768[1] *= -1; - temp = (D_versus_80178768[1] / 60) + 1; - D_versus_80178768[1] %= 60; - D_versus_80178768[1] = (60 - D_versus_80178768[1]) % 60; - - if ((D_versus_80178768[0] -= temp) >= 0) { - break; - } - D_versus_80178768[0] = 0; - D_versus_80178768[1] = 0; - D_versus_80178768[2] = 0; - break; } return 0; @@ -1538,7 +1535,7 @@ bool Versus_Update(void) { if (gVsMatchType == 2) { D_80178778 = 10; - func_versus_800BE078(); + Versus_UpdateTimer(); func_versus_800BDE3C(); } else { D_80178778 = 8; diff --git a/src/mods/sfxjukebox2.c b/src/mods/sfxjukebox2.c index 553a09f0..68d11235 100644 --- a/src/mods/sfxjukebox2.c +++ b/src/mods/sfxjukebox2.c @@ -10,17 +10,17 @@ extern OptionId D_menu_801B9124; extern s32 D_menu_801B912C; static s32 showJukebox = 0; -static u32 prevSfx = 0; -static u32 sfx = 0; +static u32 prevSfx = NA_SE_NONE; +static u32 sfx = NA_SE_NONE; static s32 sfxId = 0; -static u32 sfxBank = 0; +static u32 sfxBank = SFX_BANK_PLAYER; static u32 sfxRange = 0; static s32 sfxImport = 0; static int holdTimer = 0; static u8 sfxFlag = 0; static u8 sfxFlags[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; static char* flagNames[] = { "F18", "F19", "F20", "F21", "F22", "F23", "STT", "F25", "F26", "SFX" }; -static u8 bankSizes[] = { 0x33, 0x85, 0x9B, 0x9C, 0x37 }; +static u8 bankSizes[] = { 0x33, 0x85, 0x9C, 0x9C, 0x37 }; static u32 sfxEditMode = 9; static u32 srcEditMode = 0; static u32 editMode = 0; @@ -97,6 +97,9 @@ void Jukebox_UpdateSource(void) { } void Jukebox_UpdateSfx(void) { + s32 i; + u16 flags = 0; + if (gControllerPress[gMainController].button & L_JPAD) { sfxEditMode--; } else if (gControllerPress[gMainController].button & R_JPAD) { @@ -125,8 +128,10 @@ void Jukebox_UpdateSfx(void) { } break; } - sfx = SFX_PACK(sfxBank, sfxRange, sfxImport, sfxId, 1, sfxFlag, sfxFlags[7], sfxFlags[6], sfxFlags[5], sfxFlags[4], - sfxFlags[3], sfxFlags[2], sfxFlags[1], sfxFlags[0]); + for (i = 0; i < 8; i++) { + flags |= sfxFlags[i] << (i + (i > 5)); + } + sfx = SFX_PACK(sfxBank, sfxId, sfxRange, sfxImport, (sfxFlag << 27) | (flags << 18)); } s32 sfxModeX[] = { 95, 104, 113, 122, 131, 140, 149, 158, 180, 0, 22, 43, 60 }; diff --git a/src/overlays/ovl_i2/fox_me.c b/src/overlays/ovl_i2/fox_me.c index 30d3b236..2fe0eefe 100644 --- a/src/overlays/ovl_i2/fox_me.c +++ b/src/overlays/ovl_i2/fox_me.c @@ -1488,18 +1488,18 @@ void Meteo_8018978C(Boss* boss) { if (gBossFrameCount > 406) { gBossHealthBar = (boss->swork[2] + boss->swork[3] + boss->swork[4] + boss->swork[5] + boss->swork[7] + boss->swork[8] + boss->swork[6]) / - 2.6274f; + 2.6274f; // approx 670 / 255 if ((gBossFrameCount > 506) && (gBossFrameCount < 1000)) { Math_SmoothStepToF(&boss->fwork[17], 3.3f, 1.0f, 0.1f, 0.0f); - Math_SmoothStepToF(&boss->fwork[0x12], 3.3f, 1.0f, 0.1f, 0.0f); - Math_SmoothStepToF(&boss->fwork[0x13], 3.3f, 1.0f, 0.1f, 0.0f); + Math_SmoothStepToF(&boss->fwork[18], 3.3f, 1.0f, 0.1f, 0.0f); + Math_SmoothStepToF(&boss->fwork[19], 3.3f, 1.0f, 0.1f, 0.0f); Math_SmoothStepToF(&boss->fwork[20], 3.3f, 1.0f, 0.1f, 0.0f); } } } void Meteo_8018B7C4(s32 arg0) { - f32 effect = arg0 * 0.83333f; + f32 effect = arg0 * 0.83333f; // approx 5 / 6 if ((gGameFrameCount % 2) != 0) { effect *= 1.1f; diff --git a/src/overlays/ovl_i3/fox_aq.c b/src/overlays/ovl_i3/fox_aq.c index e4e38616..58784a56 100644 --- a/src/overlays/ovl_i3/fox_aq.c +++ b/src/overlays/ovl_i3/fox_aq.c @@ -6351,8 +6351,8 @@ void Aquas_801BE274(Actor* actor, f32 yRot, f32 xRot) { Vec3f sp4C = { 0.0f, 0.0f, 0.0f }; Vec3f sp40; - Matrix_RotateY(gCalcMatrix, 0.017453292f * yRot, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, 0.017453292f * xRot, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, M_DTOR * yRot, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, M_DTOR * xRot, MTXF_APPLY); sp40.x = sp40.y = 0.0f; sp40.z = 50.0f; diff --git a/src/overlays/ovl_i3/fox_zo.c b/src/overlays/ovl_i3/fox_zo.c index 11c31548..25574f72 100644 --- a/src/overlays/ovl_i3/fox_zo.c +++ b/src/overlays/ovl_i3/fox_zo.c @@ -8,31 +8,6 @@ #include "assets/ast_enmy_planet.h" #include "assets/ast_zoness.h" -// f32 temp[] = { -// 13.0f, -// { { -163.79999f, 187.2f }, { 1495.0f, 119.6f }, { 0.0f, 153.4f } }, -// { { -397.8f, 130.0f }, { 1284.3999f, 262.59998f }, { 0.0f, 80.6f } }, -// { { -223.59999f, 197.59999f }, { 904.8f, 145.59999f }, { 0.0f, 140.4f } }, -// { -// HITBOX_ROTATED, -// { 40.0f, 0.0f, 0.0f }, -// { { -561.6f, 119.6f }, { 600.6f, 319.8f }, { 338.0f, 104.0f } }, -// }, -// { -// HITBOX_ROTATED, -// { 40.0f, 0.0f, 0.0f }, -// { { -561.6f, 119.6f }, { 600.6f, 319.8f }, { -338.0f, 104.0f } }, -// }, -// { { -78.0f, 231.4f }, { 577.19995f, 184.59999f }, { 0.0f, 189.79999f } }, -// { { 26.0f, 754.0f }, { 140.4f, 267.8f }, { 0.0f, 215.79999f } }, -// { { -556.39996f, 260.0f }, { 491.4f, 226.2f }, { 0.0f, 179.4f } }, -// { { -213.2f, 200.2f }, { 473.19998f, 231.4f }, { 613.6f, 187.2f } }, -// { { -213.2f, 200.2f }, { 473.19998f, 231.4f }, { -613.6f, 187.2f } }, -// { { -351.0f, 694.19995f }, { 33.8f, 208.0f }, { 572.0f, 306.8f } }, -// { { -351.0f, 694.19995f }, { 33.8f, 208.0f }, { -572.0f, 306.8f } }, -// { { -896.99994f, 244.4f }, { 863.19995f, 171.59999f }, { 0.0f, 93.6f } }, -// }; - typedef struct { f32 id; Vec3f tilt; @@ -2217,12 +2192,12 @@ void Zoness_80194A84(Boss* bossZO) { break; case 3: if (ZO_HIT_12(bossZO)->z.offset != -883.99994f) { - ZO_HIT_12(bossZO)->z.offset = -883.99994f; - ZO_HIT_12(bossZO)->z.size = 244.4f; - ZO_HIT_12(bossZO)->y.offset = 863.19995f; - ZO_HIT_12(bossZO)->y.size = 171.59999f; + ZO_HIT_12(bossZO)->z.offset = -883.99994f; // 13 * 68.0 + ZO_HIT_12(bossZO)->z.size = 244.4f; // 13 * 18.8 + ZO_HIT_12(bossZO)->y.offset = 863.19995f; // 13 * 66.4 + ZO_HIT_12(bossZO)->y.size = 171.59999f; // 13 * 13.2 ZO_HIT_12(bossZO)->x.offset = 0.0f; - ZO_HIT_12(bossZO)->x.size = 93.6f; + ZO_HIT_12(bossZO)->x.size = 93.6f; // 13 * 7.2 } Math_SmoothStepToF(&bossZO->fwork[ZO_FWK_4], 100.0f, 0.1f, 1.0f, 0.0f); if (bossZO->timer_058 != 0) { @@ -3267,7 +3242,7 @@ void Zoness_801991D0(Boss* bossZO, s32 arg1) { } } - if (arg1 == 0) { + if (arg1 == 0) { // all divisible by 13 ZO_HIT_12(bossZO)->z.offset = -556.39996f; ZO_HIT_12(bossZO)->z.size = 130.0f; ZO_HIT_12(bossZO)->y.offset = 663.0f; @@ -3575,7 +3550,7 @@ void Zoness_8019A1FC(Actor* actor) { } for (var_s0 = 0; var_s0 < var_s1; var_s0++) { Matrix_Translate(gGfxMatrix, 0.0f, 30.0f, 0.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, 1.5707964f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, M_PI / 2, MTXF_APPLY); Matrix_Push(&gGfxMatrix); Matrix_Scale(gGfxMatrix, 0.75f, 0.75f, 0.75f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); @@ -3769,7 +3744,7 @@ void Zoness_8019ACCC(Actor* actor) { Matrix_RotateX(gGfxMatrix, M_DTOR * temp_fs0_4, MTXF_APPLY); Matrix_Push(&gGfxMatrix); Matrix_RotateZ(gGfxMatrix, M_DTOR * var_fs5, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, 1.5707964f, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, M_PI / 2, MTXF_APPLY); Matrix_Scale(gGfxMatrix, 1.5f, 1.5f, 1.5f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_ZO_6018660); @@ -4260,7 +4235,7 @@ void Zoness_8019C83C(Actor* actor) { gSPDisplayList(gMasterDisp++, D_ZO_6013330); Matrix_Pop(&gGfxMatrix); Matrix_Push(&gGfxMatrix); - Matrix_RotateZ(gGfxMatrix, 1.5707964f, MTXF_APPLY); + Matrix_RotateZ(gGfxMatrix, M_PI / 2, MTXF_APPLY); Matrix_Translate(gGfxMatrix, -110.0f, 0.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_ZO_601D680); @@ -4286,7 +4261,7 @@ void Zoness_8019C83C(Actor* actor) { } for (i = 0; i < var_s1; i++) { Matrix_Translate(gGfxMatrix, 0.0f, 9.3f, 0.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, 1.5707964f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, M_PI / 2, MTXF_APPLY); Matrix_Push(&gGfxMatrix); Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); diff --git a/src/overlays/ovl_i4/fox_fo.c b/src/overlays/ovl_i4/fox_fo.c index d9f75a78..378f12fd 100644 --- a/src/overlays/ovl_i4/fox_fo.c +++ b/src/overlays/ovl_i4/fox_fo.c @@ -885,7 +885,7 @@ void Fortuna_LevelComplete(Player* player) { case 11: D_ctx_80177A48[1] += D_ctx_80177A48[3]; - Matrix_RotateX(gCalcMatrix, -0.17453292f, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -M_DTOR * 10.0f, MTXF_NEW); Matrix_RotateY(gCalcMatrix, D_ctx_80177A48[1] * M_DTOR, MTXF_APPLY); src.x = 0; src.y = 0.0f; diff --git a/src/overlays/ovl_i5/fox_ti.c b/src/overlays/ovl_i5/fox_ti.c index d10f7275..b962632c 100644 --- a/src/overlays/ovl_i5/fox_ti.c +++ b/src/overlays/ovl_i5/fox_ti.c @@ -5000,7 +5000,7 @@ void Titania_801982A8(Boss* boss) { RCP_SetupDL(&gMasterDisp, 0x45); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0); - Matrix_RotateX(gGfxMatrix, -1.5707964f, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, -M_PI / 2, MTXF_APPLY); Matrix_Scale(gGfxMatrix, boss->fwork[47] * 10.0f, boss->fwork[47] * 10.0f, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); @@ -5017,7 +5017,7 @@ void Titania_801982A8(Boss* boss) { RCP_SetupDL(&gMasterDisp, 0x45); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0); - Matrix_RotateX(gGfxMatrix, -1.5707964f, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, -M_PI / 2, MTXF_APPLY); Matrix_Scale(gGfxMatrix, 10.0f, 10.0f, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); @@ -5053,7 +5053,7 @@ void Titania_801982A8(Boss* boss) { Matrix_Push(&gGfxMatrix); sp120 = D_i5_801BBEF0[7] * 16.0f; RCP_SetupDL(&gMasterDisp, 0x40); - Matrix_RotateX(gGfxMatrix, 1.5707964f, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, M_PI / 2, MTXF_APPLY); Matrix_Push(&gGfxMatrix); Matrix_Scale(gGfxMatrix, sp120, 1.0f, sp120, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); diff --git a/src/overlays/ovl_i6/fox_andross.c b/src/overlays/ovl_i6/fox_andross.c index e077dd5b..fb8b1707 100644 --- a/src/overlays/ovl_i6/fox_andross.c +++ b/src/overlays/ovl_i6/fox_andross.c @@ -2118,7 +2118,8 @@ void Andross_8018DBF0(Boss* boss) { Math_SmoothStepToF(&boss->fwork[13], 80.0f, 1.0f, 15.0f, 0); } if (boss->unk_04C == 25) { - AUDIO_PLAY_SFX(0x09008015, D_i6_801A67B8, 4); + // Why tank? + AUDIO_PLAY_SFX(NA_SE_TANK_BOUND, D_i6_801A67B8, 4); } } Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); diff --git a/src/overlays/ovl_menu/fox_map.c b/src/overlays/ovl_menu/fox_map.c index 86951da7..744b6757 100644 --- a/src/overlays/ovl_menu/fox_map.c +++ b/src/overlays/ovl_menu/fox_map.c @@ -1322,7 +1322,7 @@ void Map_8019E99C(void) { D_menu_801CDA08 = 0.0f; D_menu_801CDA0C = -42.750008f; D_menu_801CDA10 = -9.849999f; - D_menu_801CDA14 = 3375.000000f; + D_menu_801CDA14 = 3375.0f; // 15^3 D_menu_801CDA18 = 0.0f; D_menu_801CDA1C = 0.0f; @@ -2770,7 +2770,7 @@ void Map_801A281C(void) { D_menu_801CDA0C = -42.750008f; D_menu_801CDA10 = -9.849999f; - D_menu_801CDA14 = 3375.000000f; + D_menu_801CDA14 = 3375.0f; // 15^3 Map_801AD718(D_menu_801CEF58[6].x, D_menu_801CEF58[6].y, D_menu_801CEF58[6].z, &D_menu_801CEEE8[6].x, &D_menu_801CEEE8[6].y, &D_menu_801CEEE8[6].z, D_menu_801CDA14, D_menu_801CDA0C, D_menu_801CDA10); diff --git a/src/sys/sys_fault.c b/src/sys/sys_fault.c index 04dc5ea4..b0240169 100644 --- a/src/sys/sys_fault.c +++ b/src/sys/sys_fault.c @@ -1,5 +1,6 @@ #include "sys.h" #include "PR/os_internal.h" +#include "mods.h" FaultMgr gFaultMgr; @@ -242,7 +243,7 @@ void Fault_ThreadEntry(void* arg0) { func_8000762C(300, 10, "-"); gControllerPlugged[0] = 1; -#if 1 // Turn this off for instant crash debugger (no button combination needed) +#if MODS_AUTO_DEBUGGER == 0 // Turn this off for instant crash debugger (no button combination needed) while (var_s5 == 0) { osSendMesg(&gSerialThreadMesgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_NOBLOCK); MQ_WAIT_FOR_MESG(&gControllerMesgQueue, NULL);