diff options
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/unk_02005CFC.s | 303 | ||||
-rw-r--r-- | arm9/global.inc | 8 | ||||
-rw-r--r-- | arm9/lib/NitroSDK/include/SPI_mic.h | 14 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 11 | ||||
-rw-r--r-- | arm9/src/scrcmd_sound.c | 17 | ||||
-rw-r--r-- | arm9/src/sound.c | 2 | ||||
-rw-r--r-- | arm9/src/sound_chatot.c | 181 | ||||
-rw-r--r-- | arm9/src/unk_020040F4.c | 31 | ||||
-rw-r--r-- | arm9/src/unk_020051F4.c | 6 | ||||
-rw-r--r-- | include/pokemon.h | 3 | ||||
-rw-r--r-- | include/proto.h | 4 | ||||
-rw-r--r-- | include/sound_chatot.h | 19 | ||||
-rw-r--r-- | include/unk_020040F4.h | 27 |
14 files changed, 266 insertions, 362 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 48254159..eb02cf99 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -15,7 +15,7 @@ Static arm9 Object sound.o Object unk_020040F4.o Object unk_020051F4.o - Object unk_02005CFC.o + Object sound_chatot.o Object poke_overlay.o Object unk_020061E8.o Object overlay_manager.o diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s deleted file mode 100644 index e56b613f..00000000 --- a/arm9/asm/unk_02005CFC.s +++ /dev/null @@ -1,303 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02005CFC -FUN_02005CFC: ; 0x02005CFC - push {r3, lr} - mov r0, #0x1d - bl FUN_02003D38 - ldrb r0, [r0, #0x0] - cmp r0, #0x1 - bne _02005D1C - mov r0, #0xe - bl FUN_02004ABC - cmp r0, #0x0 - bne _02005D1C - bl FUN_02005DFC - mov r0, #0x1 - pop {r3, pc} -_02005D1C: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02005D20 -FUN_02005D20: ; 0x02005D20 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0x1e - bl FUN_02003D38 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl Chatot_exists - cmp r0, #0x0 - bne _02005D3A - mov r0, #0x0 - pop {r3-r5, pc} -_02005D3A: - ldrb r0, [r4, #0x0] - cmp r0, #0x1 - beq _02005D44 - mov r0, #0x1 - pop {r3-r5, pc} -_02005D44: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02005D48 -FUN_02005D48: ; 0x02005D48 - push {r3-r7, lr} - sub sp, #0x30 - add r6, r0, #0x0 - add r5, r2, #0x0 - add r7, r3, #0x0 - bl FUN_02004DB4 - str r0, [sp, #0x0] - mov r0, #0x1d - bl FUN_02003D38 - str r0, [sp, #0x4] - add r0, r6, #0x0 - bl FUN_02005D20 - cmp r0, #0x0 - bne _02005D70 - add sp, #0x30 - mov r0, #0x0 - pop {r3-r7, pc} -_02005D70: - mov r0, #0x0 - bl FUN_02005614 - bl FUN_02005DFC - mov r0, #0xe - bl FUN_02004984 - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x13 - sub r1, r1, r2 - mov r0, #0x13 - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r6, #0x0 - bl Chatot_GetData - add r1, r0, #0x0 - ldr r0, [sp, #0x0] - bl Chatot_Decode - mov r0, #0xe - bl FUN_02004930 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - bl FUN_02004DB4 - str r0, [sp, #0x10] - mov r0, #0x0 - str r0, [sp, #0x14] - str r0, [sp, #0x18] - mov r0, #0x7d - lsl r0, r0, #0x4 - str r0, [sp, #0x1c] - str r0, [sp, #0x20] - mov r0, #0x2 - lsl r0, r0, #0xe - add r0, r4, r0 - str r0, [sp, #0x28] - lsr r0, r7, #0x1f - add r0, r7, r0 - asr r0, r0, #0x1 - add r0, #0x40 - str r0, [sp, #0x2c] - add r0, sp, #0x8 - mov r1, #0xe - str r5, [sp, #0x24] - bl FUN_02004A6C - add r4, r0, #0x0 - mov r0, #0xe - add r1, r5, #0x0 - bl FUN_02004AF8 - ldr r0, [sp, #0x4] - mov r1, #0x1 - strb r1, [r0, #0x0] - mov r0, #0x0 - bl FUN_02005E80 - add r0, r4, #0x0 - add sp, #0x30 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02005DFC -FUN_02005DFC: ; 0x02005DFC - push {r3-r5, lr} - mov r0, #0xf - bl FUN_02003D38 - add r5, r0, #0x0 - mov r0, #0x1d - bl FUN_02003D38 - add r4, r0, #0x0 - ldrb r0, [r5, #0x0] - cmp r0, #0x1 - bne _02005E20 - mov r0, #0xe - bl FUN_02004C3C - mov r0, #0xe - bl FUN_02004A04 -_02005E20: - mov r0, #0x0 - strb r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02005E28 -FUN_02005E28: ; 0x02005E28 - push {lr} - sub sp, #0x1c - mov r0, #0x2 - str r0, [sp, #0x0] - bl FUN_02004DB4 - mov r1, #0x7d - str r0, [sp, #0x4] - lsl r1, r1, #0x4 - mov r0, #0x1f - str r1, [sp, #0x8] - tst r0, r1 - beq _02005E48 - mov r0, #0x1f - bic r1, r0 - str r1, [sp, #0x8] -_02005E48: - ldr r0, _02005E60 ; =0x00004174 - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - str r0, [sp, #0x18] - add r0, sp, #0x0 - bl GF_MIC_StartAutoSampling - add sp, #0x1c - pop {pc} - nop -_02005E60: .word 0x00004174 - - thumb_func_start FUN_02005E64 -FUN_02005E64: ; 0x02005E64 - ldr r3, _02005E68 ; =GF_MIC_StopAutoSampling - bx r3 - .balign 4 -_02005E68: .word GF_MIC_StopAutoSampling - - thumb_func_start FUN_02005E6C -FUN_02005E6C: ; 0x02005E6C - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02004DB4 - add r1, r0, #0x0 - add r0, r4, #0x0 - bl Chatot_Encode - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02005E80 -FUN_02005E80: ; 0x02005E80 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x1e - bl FUN_02003D38 - strb r4, [r0, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02005E90 -FUN_02005E90: ; 0x02005E90 - push {r3-r7, lr} - add r5, r0, #0x0 - mov r0, #0x23 - add r7, r1, #0x0 - add r4, r2, #0x0 - add r6, r3, #0x0 - bl FUN_02003D38 - cmp r5, #0x0 - bne _02005EB2 - ldr r0, [r0, #0x0] - add r1, r7, #0x0 - add r2, r4, #0x0 - add r3, r6, #0x0 - bl FUN_02005D48 - b _02005EBE -_02005EB2: - add r0, r5, #0x0 - add r1, r7, #0x0 - add r2, r4, #0x0 - add r3, r6, #0x0 - bl FUN_02005D48 -_02005EBE: - cmp r0, #0x0 - bne _02005ED8 - mov r0, #0x1 - bl FUN_02005E80 - mov r0, #0xb - str r0, [sp, #0x0] - ldr r1, _02005EDC ; =0x000001B9 - mov r0, #0x0 - add r2, r6, #0x0 - add r3, r4, #0x0 - bl FUN_020056AC -_02005ED8: - pop {r3-r7, pc} - nop -_02005EDC: .word 0x000001B9 - - thumb_func_start FUN_02005EE0 -FUN_02005EE0: ; 0x02005EE0 - push {r4, lr} - add r4, r0, #0x0 - bl Chatot_exists - cmp r0, #0x0 - bne _02005EF0 - mov r0, #0x0 - pop {r4, pc} -_02005EF0: - add r0, r4, #0x0 - bl Chatot_GetData - mov r1, #0xf - ldrsb r0, [r0, r1] - sub r1, #0x2d - cmp r0, r1 - bge _02005F04 - mov r0, #0x1 - pop {r4, pc} -_02005F04: - cmp r0, #0x1e - blt _02005F10 - cmp r0, #0x80 - bge _02005F10 - mov r0, #0x2 - pop {r4, pc} -_02005F10: - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_02005F14 -FUN_02005F14: ; 0x02005F14 - cmp r0, #0xb - bgt _02005F2E - bge _02005F32 - cmp r0, #0x5 - bgt _02005F36 - cmp r0, #0x0 - blt _02005F36 - beq _02005F32 - cmp r0, #0x1 - beq _02005F32 - cmp r0, #0x5 - beq _02005F32 - b _02005F36 -_02005F2E: - cmp r0, #0xc - bne _02005F36 -_02005F32: - mov r0, #0x1 - bx lr -_02005F36: - mov r0, #0x0 - bx lr - .balign 4 diff --git a/arm9/global.inc b/arm9/global.inc index 48e8a7c7..9b994394 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -363,12 +363,12 @@ .extern PlaySound .extern FUN_02005CBC .extern FUN_02005CFC -.extern FUN_02005D20 +.extern Chatot_checkCry .extern FUN_02005D48 .extern FUN_02005DFC -.extern FUN_02005E28 -.extern FUN_02005E64 -.extern FUN_02005E6C +.extern Chatot_startRecording +.extern Chatot_stopRecording +.extern Chatot_saveRecording .extern FUN_02005E80 .extern FUN_02005E90 .extern FUN_02005EE0 diff --git a/arm9/lib/NitroSDK/include/SPI_mic.h b/arm9/lib/NitroSDK/include/SPI_mic.h index 79588fe9..b1d7b5ea 100644 --- a/arm9/lib/NitroSDK/include/SPI_mic.h +++ b/arm9/lib/NitroSDK/include/SPI_mic.h @@ -1,6 +1,20 @@ #ifndef NITRO_SPI_MIC_H_ #define NITRO_SPI_MIC_H_ +struct MIC_SamplingData +{ + int unk00; + void *unk04; + int unk08; + int unk0c; + int unk10; + int unk14; + int unk18; +}; + void MIC_Init(void); +int MIC_StartAutoSampling(struct MIC_SamplingData *data); +int MIC_StopAutoSampling(void); +int MIC_DoSamplingAsync(int param0, int param1, int param2, int param3); #endif //NITRO_SPI_MIC_H_ diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 29075833..6139a21f 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -18,6 +18,9 @@ #include "constants/moves.h" #include "constants/sinnoh_dex.h" #include "constants/trainer_classes.h" +#include "unk_020051F4.h" +#include "sound_chatot.h" + #pragma thumb on @@ -3303,25 +3306,25 @@ void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl) ReadWholeNarcMemberByIdPair(wotbl, NARC_POKETOOL_PERSONAL_WOTBL, ResolveMonForme(species, forme)); } -void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20) +void FUN_02069FB0(struct SaveChatotSoundClip *r7, u32 r5, u16 r4, s32 r6, s32 sp18, u32 sp1C, u32 sp20) { if (r4 == SPECIES_CHATOT) { if (!FUN_02005F14((int)r5)) { FUN_02005E80(1); - FUN_020056AC((int)r5, (int)r4, (int)r6, (int)sp18, (int)sp20); + FUN_020056AC(r5, r4, r6, sp18, sp20); } else { if (sp1C) FUN_02005E80(1); - FUN_02005E90((int)r7, 0, (int)sp18, (int)r6); + FUN_02005E90(r7, 0, sp18, r6); } } else { - FUN_020056AC((int)r5, (int)r4, (int)r6, (int)sp18, (int)sp20); + FUN_020056AC(r5, r4, r6, sp18, sp20); } } diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index ae20b5a4..b0993387 100644 --- a/arm9/src/scrcmd_sound.c +++ b/arm9/src/scrcmd_sound.c @@ -1,11 +1,7 @@ #include "scrcmd.h" #include "unk_020040F4.h" +#include "sound_chatot.h" -extern void* Sav2_Chatot_get(struct SaveBlock2* sav2); -extern u32 FUN_02005D20(void *); -extern void FUN_02005E6C(void *); -extern u32 FUN_02005E28(void); -extern void FUN_02005E64(void); extern BOOL FUN_02005CBC(void); extern void PlaySound(u16); extern void FUN_0204AB20(struct UnkSavStruct80 *ctx, u16); @@ -41,7 +37,8 @@ THUMB_FUNC BOOL ScrCmd_PlayBgm(struct ScriptContext *ctx) THUMB_FUNC BOOL ScrCmd_StopBgm(struct ScriptContext *ctx) { - u32 unk0 = FUN_02004124(ScriptReadHalfword(ctx)); + ScriptReadHalfword(ctx); + u32 unk0 = FUN_02004124(); FUN_02005350(unk0, 0); return FALSE; } @@ -199,7 +196,7 @@ THUMB_FUNC BOOL ScrCmd_CheckChatotCry(struct ScriptContext* ctx) u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2); - if (FUN_02005D20(unk) == 1) + if (Chatot_checkCry(unk) == 1) { *ret_ptr = 1; return FALSE; @@ -215,7 +212,7 @@ THUMB_FUNC BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx) { u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); - if (FUN_02005E28() == 0) + if (Chatot_startRecording() == 0) { *ret_ptr = 1; return FALSE; @@ -230,14 +227,14 @@ THUMB_FUNC BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_StopChatotRecord(struct ScriptContext* ctx) { #pragma unused(ctx) - FUN_02005E64(); + Chatot_stopRecording(); return TRUE; } THUMB_FUNC BOOL ScrCmd_SaveChatotCry(struct ScriptContext* ctx) { void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2); - FUN_02005E6C(unk); + Chatot_saveRecording(unk); return TRUE; } diff --git a/arm9/src/sound.c b/arm9/src/sound.c index ec65dd06..210aec2e 100644 --- a/arm9/src/sound.c +++ b/arm9/src/sound.c @@ -3,6 +3,7 @@ #include "SPI_mic.h" #include "SPI_pm.h" #include "unk_020040F4.h" +#include "sound_chatot.h" #pragma thumb on @@ -21,7 +22,6 @@ void FUN_020040DC(void); extern void FUN_0200521C(int); extern void FUN_0200538C(int, int, int); extern BOOL FUN_02005404(void); -extern void FUN_02005CFC(void); void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options) { diff --git a/arm9/src/sound_chatot.c b/arm9/src/sound_chatot.c new file mode 100644 index 00000000..06b2fc64 --- /dev/null +++ b/arm9/src/sound_chatot.c @@ -0,0 +1,181 @@ +#include "global.h" +#include "sound_chatot.h" +#include "SPI_mic.h" +#include "math_util.h" +#include "proto.h" +#include "sav_chatot.h" +#include "sound.h" +#include "unk_020040F4.h" +#include "unk_020051F4.h" + +THUMB_FUNC BOOL FUN_02005CFC(void) +{ + if (*(u8 *)FUN_02003D38(29) == 1 && FUN_02004ABC(14) == 0) + { + FUN_02005DFC(); + + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL Chatot_checkCry(struct SaveChatotSoundClip *param0) +{ + u8 *r4 = FUN_02003D38(30); + + if (!Chatot_exists(param0)) + { + return FALSE; + } + + if (*r4 != 1) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u32 FUN_02005D48(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3) +{ +#pragma unused(param1) + + s8 *st0 = FUN_02004DB4(); + u8 *st4 = FUN_02003D38(29); + + if (!Chatot_checkCry(param0)) + { + return 0; + } + + FUN_02005614(0); + FUN_02005DFC(); + FUN_02004984(14); + u16 r4 = (u16)(LCRandom() % 8192); + + Chatot_Decode(st0, Chatot_GetData(param0)); + + struct UnkStruct_020040F4_1 st8; + + st8.unk00 = FUN_02004930(14); + st8.unk04 = 0; + st8.unk08 = FUN_02004DB4(); + st8.unk0c = 0; + st8.unk10 = 0; + st8.unk14 = 2000; + st8.unk18 = 2000; + st8.unk20 = (u32)(r4 + 0x8000); + st8.unk24 = param3 / 2 + 64; + st8.unk1c = param2; + + u32 res = FUN_02004A6C(&st8, 14); + FUN_02004AF8(14, param2); + *st4 = 1; + FUN_02005E80(0); + + return res; +} + +THUMB_FUNC void FUN_02005DFC(void) +{ + u8 *r5 = FUN_02003D38(15); + u8 *r4 = FUN_02003D38(29); + + if (*r5 == 1) + { + FUN_02004C3C(14); + FUN_02004A04(14); + } + + *r4 = 0; +} + +THUMB_FUNC u32 Chatot_startRecording(void) +{ + struct MIC_SamplingData st0; + + st0.unk00 = 2; + st0.unk04 = FUN_02004DB4(); + st0.unk08 = 2000; + if ((st0.unk08 & 0x1f) != 0) + { + st0.unk08 &= ~0x1f; + } + st0.unk0c = 0x4174; + st0.unk10 = 0; + st0.unk14 = 0; + st0.unk18 = 0; + + return GF_MIC_StartAutoSampling(&st0); +} + +THUMB_FUNC void Chatot_stopRecording(void) +{ + GF_MIC_StopAutoSampling(); +} + +THUMB_FUNC void Chatot_saveRecording(struct SaveChatotSoundClip *param0) +{ + Chatot_Encode(param0, FUN_02004DB4()); +} + +THUMB_FUNC void FUN_02005E80(u8 param0) +{ + *(u8 *)FUN_02003D38(30) = param0; +} + +THUMB_FUNC void FUN_02005E90(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3) +{ + struct SaveChatotSoundClip **r0 = FUN_02003D38(35); + u32 ret; + if (param0 == 0) + { + ret = FUN_02005D48(*r0, param1, param2, param3); + } + else + { + ret = FUN_02005D48(param0, param1, param2, param3); + } + + if (ret == 0) + { + FUN_02005E80(1); + FUN_020056AC(0, SPECIES_CHATOT, param3, param2, 11); + } +} + +THUMB_FUNC u32 FUN_02005EE0(struct SaveChatotSoundClip *param0) +{ + if (!Chatot_exists(param0)) + { + return 0; + } + + s8 r0 = Chatot_GetData(param0)[15]; + if (r0 < -30) + { + return 1; + } + else if (r0 >= 30 && r0 < 128) + { + return 2; + } + + return 0; +} + +THUMB_FUNC BOOL FUN_02005F14(s32 param0) +{ + switch (param0) + { + case 0: + case 1: + case 5: + case 11: + case 12: + return TRUE; + default: + return FALSE; + } +} diff --git a/arm9/src/unk_020040F4.c b/arm9/src/unk_020040F4.c index 5713ddf0..fa1d968f 100644 --- a/arm9/src/unk_020040F4.c +++ b/arm9/src/unk_020040F4.c @@ -3,6 +3,7 @@ #include "OS_cache.h" #include "sound.h" #include "unk_0202F150.h" +#include "SPI_mic.h" u32 UNK_021C3DD8[2]; @@ -22,9 +23,6 @@ extern void NNS_SndArcPlayerStartSeqEx(u32 *, u32, s32, s32, u32); extern u16 NNS_SndPlayerCountPlayingSeqByPlayerNo(int); extern u32 NNS_SndPlayerGetSeqNo(u32 *); extern u32 NNS_SndArcGetBankInfo(u32); -extern u32 MIC_StartAutoSampling(u32); -extern u32 MIC_StopAutoSampling(); -extern u32 MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3); extern u32 NNS_SndWaveOutAllocChannel(u32); extern void NNS_SndWaveOutFreeChannel(u32); extern u32 NNS_SndWaveOutStart(u32, u32, void *, u32, u32, u32, u32, s32, u32, s32); @@ -59,7 +57,7 @@ THUMB_FUNC void FUN_020040F4(u8 param0) *ptr = param0; } -THUMB_FUNC u8 FUN_02004104() +THUMB_FUNC u8 FUN_02004104(void) { u8 *ptr = FUN_02003D38(5); @@ -74,7 +72,7 @@ THUMB_FUNC void FUN_02004110(u16 param0) FUN_02004130(0); } -THUMB_FUNC u16 FUN_02004124() +THUMB_FUNC u16 FUN_02004124(void) { u16 *ptr = FUN_02003D38(9); @@ -87,7 +85,7 @@ THUMB_FUNC void FUN_02004130(u16 param0) *ptr = param0; } -THUMB_FUNC u16 FUN_02004140() +THUMB_FUNC u16 FUN_02004140(void) { u16 *ptr = FUN_02003D38(10); @@ -471,7 +469,7 @@ THUMB_FUNC void FUN_02004724(int param0) FUN_0200521C(param0); } -THUMB_FUNC void FUN_02004738() +THUMB_FUNC void FUN_02004738(void) { GF_Snd_RestoreState(FUN_02004748(4)); } @@ -544,7 +542,7 @@ THUMB_FUNC void FUN_020047C8(u8 param0, u8 param1) *ptr = param1; } -THUMB_FUNC void FUN_02004810() +THUMB_FUNC void FUN_02004810(void) { u8 *ptr = FUN_02003D38(11); u8 *ptr2 = FUN_02003D38(12); @@ -650,14 +648,13 @@ THUMB_FUNC u16 FUN_02004900(u32 param0) return *ptr; } -THUMB_FUNC u32 GF_MIC_StartAutoSampling(u32 param0) +THUMB_FUNC u32 GF_MIC_StartAutoSampling(struct MIC_SamplingData *param0) { return MIC_StartAutoSampling(param0); } -THUMB_FUNC u32 GF_MIC_StopAutoSampling(u32 param0) +THUMB_FUNC u32 GF_MIC_StopAutoSampling(void) { -#pragma unused(param0) GetSoundDataPointer(); return MIC_StopAutoSampling(); } @@ -914,7 +911,7 @@ THUMB_FUNC void FUN_02004C3C(u32 param0) } } -THUMB_FUNC BOOL GF_SndCaptureIsActive() +THUMB_FUNC BOOL GF_SndCaptureIsActive(void) { return NNS_SndCaptureIsActive(); } @@ -936,7 +933,7 @@ THUMB_FUNC void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1) NNS_SndCaptureSetReverbVolume(param0, param1); } -THUMB_FUNC void FUN_02004CB4() +THUMB_FUNC void FUN_02004CB4(void) { GetSoundDataPointer(); @@ -948,7 +945,7 @@ THUMB_FUNC void FUN_02004CB4() NNS_SndCaptureStartEffect(r4, 0x1000, 0, 0x55F0, 2, FUN_02005068, st8); } -THUMB_FUNC void GF_SndCaptureStopEffect() +THUMB_FUNC void GF_SndCaptureStopEffect(void) { NNS_SndCaptureStopEffect(); } @@ -1000,7 +997,7 @@ THUMB_FUNC void FUN_02004D84(u32 param0) *(u32 *)FUN_02003D38(7) = param0; } -THUMB_FUNC u16 FUN_02004D94() +THUMB_FUNC u16 FUN_02004D94(void) { u16 *ptr = FUN_02003D38(7); @@ -1013,7 +1010,7 @@ THUMB_FUNC u16 FUN_02004D94() return --(*ptr); } -THUMB_FUNC u8 *FUN_02004DB4() +THUMB_FUNC u8 *FUN_02004DB4(void) { return UNK_021C3DE0; } @@ -1345,7 +1342,7 @@ THUMB_FUNC void FUN_0200516C(u32 param0) GF_SndCaptureIsActive(); } -THUMB_FUNC void FUN_020051AC() +THUMB_FUNC void FUN_020051AC(void) { if (FUN_02005404() == FALSE && GF_SndPlayerGetSeqNo(GetSoundPlayer(0)) != -1 && FUN_02004124() != 0x47e) diff --git a/arm9/src/unk_020051F4.c b/arm9/src/unk_020051F4.c index 6da250d5..53311039 100644 --- a/arm9/src/unk_020051F4.c +++ b/arm9/src/unk_020051F4.c @@ -6,6 +6,7 @@ #include "sound.h" #include "unk_020040F4.h" #include "unk_0200CA44.h" +#include "sound_chatot.h" extern u32 NNS_SndArcPlayerStartSeq(u32 *, u32); extern u32 NNS_SndArcPlayerStartSeqEx(u32 *, s32, s32, s32, u32); @@ -13,9 +14,6 @@ extern void NNS_SndPlayerStopSeqBySeqNo(u32, u32); extern void NNS_SndPlayerStopSeqAll(u32); extern void NNS_SndPlayerStopSeq(u32 *, u32); extern void NNS_SndPlayerSetTrackPan(u32 *, u32, u32); -extern u32 FUN_02005D48(u32, u32, u32, u32); -extern void FUN_02005E80(u32); -extern void FUN_02005DFC(); extern void *FUN_0201B6C8(u32 *); THUMB_FUNC u32 FUN_020051F4(u16 param0) @@ -281,7 +279,7 @@ THUMB_FUNC void FUN_0200554C(u32 param0) THUMB_FUNC u32 FUN_02005578(u16 species) { u8 *r4 = FUN_02003D38(17); - u32 *r0 = FUN_02003D38(35); + struct SaveChatotSoundClip **r0 = FUN_02003D38(35); if (species != SPECIES_CHATOT) { diff --git a/include/pokemon.h b/include/pokemon.h index d107bf85..60fa1838 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -10,6 +10,7 @@ #include "constants/pokemon.h" #include "string16.h" #include "player_data.h" +#include "sound_chatot.h" struct BaseStats { /* 0x00 */ u8 hp; @@ -294,7 +295,7 @@ void Party_SpreadPokerus(struct PlayerParty * party); BOOL Pokemon_HasPokerus(struct Pokemon * pokemon); BOOL Pokemon_IsImmuneToPokerus(struct Pokemon * pokemon); void Pokemon_UpdateArceusForme(struct Pokemon * pokemon); -void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20); +void FUN_02069FB0(struct SaveChatotSoundClip *r7, u32 r5, u16 r4, s32 r6, s32 sp18, u32 sp1C, u32 sp20); void FUN_0206A014(struct Pokemon * pokemon, struct PlayerData * a1, u32 pokeball, u32 a3, u32 encounterType, u32 heap_id); void FUN_0206A094(struct Pokemon * pokemon, u32 a1, u32 a2); BOOL FUN_0206A13C(struct Pokemon * pokemon, u32 a1); diff --git a/include/proto.h b/include/proto.h index 7af3f19d..43ed28ac 100644 --- a/include/proto.h +++ b/include/proto.h @@ -11,10 +11,6 @@ int TrainerClass_GetGenderOrTrainerCount(int x); int FUN_02014C3C(u8); void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8); u32 IsNighttime(void); // is day or night -int FUN_02005F14(int); -void FUN_02005E80(int); -void FUN_02005E90(int, int, int, int); -void FUN_020056AC(int, int, int, int, int); void FUN_020808AC(struct BoxPokemon *, struct PlayerData *, int, u32, u32); #endif //POKEDIAMOND_PROTO_H diff --git a/include/sound_chatot.h b/include/sound_chatot.h new file mode 100644 index 00000000..fbbba0c6 --- /dev/null +++ b/include/sound_chatot.h @@ -0,0 +1,19 @@ +#ifndef POKEDIAMOND_SOUND_CHATOT_H +#define POKEDIAMOND_SOUND_CHATOT_H + +#include "global.h" +#include "sav_chatot.h" + +BOOL FUN_02005CFC(void); +BOOL Chatot_checkCry(struct SaveChatotSoundClip *param0); +u32 FUN_02005D48(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3); +void FUN_02005DFC(void); +u32 Chatot_startRecording(void); +void Chatot_stopRecording(void); +void Chatot_saveRecording(struct SaveChatotSoundClip *param0); +void FUN_02005E80(u8 param0); +void FUN_02005E90(struct SaveChatotSoundClip *param0, u32 param1, s32 param2, s32 param3); +u32 FUN_02005EE0(struct SaveChatotSoundClip *param0); +BOOL FUN_02005F14(s32 param0); + +#endif // POKEDIAMOND_UNK_02005CFC_H diff --git a/include/unk_020040F4.h b/include/unk_020040F4.h index 413e853f..819a96fa 100644 --- a/include/unk_020040F4.h +++ b/include/unk_020040F4.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_UNK_020040F4_H #include "global.h" +#include "SPI_mic.h" struct WaveArcInfo { @@ -31,11 +32,11 @@ struct UnkStruct_020040F4_2 }; void FUN_020040F4(u8 param0); -u8 FUN_02004104(); +u8 FUN_02004104(void); void FUN_02004110(u16 param0); -u16 FUN_02004124(); +u16 FUN_02004124(void); void FUN_02004130(u16 param0); -u16 FUN_02004140(); +u16 FUN_02004140(void); void FUN_0200414C(u16 param0); void FUN_0200415C(u8 param0); BOOL FUN_02004180(s32 param0); @@ -51,10 +52,10 @@ void FUN_020046C4(int param0, u32 param1); void FUN_020046E8(s32 param0); void FUN_02004704(s32 param0, int param1, u32 param2); void FUN_02004724(int param0); -void FUN_02004738(); +void FUN_02004738(void); int FUN_02004748(s32 param0); void FUN_020047C8(u8 param0, u8 param1); -void FUN_02004810(); +void FUN_02004810(void); void GF_SndPlayerMoveVolume(int playerNo, s32 param1, s32 param2); void GF_SndPlayerSetInitialVolume(int playerNo, s32 param1); void FUN_02004858(u32 param0, int playerNo); @@ -65,8 +66,8 @@ u8 FUN_020048D0(u16 param0); u32 GF_SndPlayerGetSeqNo(u32 *param0); u32 FUN_020048F4(u16 param0); u16 FUN_02004900(u32 param0); -u32 GF_MIC_StartAutoSampling(u32 param0); -u32 GF_MIC_StopAutoSampling(u32 param0); +u32 GF_MIC_StartAutoSampling(struct MIC_SamplingData *param0); +u32 GF_MIC_StopAutoSampling(void); u32 GF_MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3); void *FUN_02004930(u32 param0); BOOL FUN_02004984(u32 param0); @@ -80,12 +81,12 @@ void FUN_02004AF8(u32 param0, s32 param1); u32 FUN_02004B30(u32 param0, s32 param1, s32 param2, u32 param3, u32 param4); void FUN_02004C1C(u8 *param0, u32 param1); void FUN_02004C3C(u32 param0); -BOOL GF_SndCaptureIsActive(); +BOOL GF_SndCaptureIsActive(void); u32 GF_SndCaptureStartReverb(u32 param0); void GF_SndCaptureStopReverb(u32 param0); void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1); -void FUN_02004CB4(); -void GF_SndCaptureStopEffect(); +void FUN_02004CB4(void); +void GF_SndCaptureStopEffect(void); void FUN_02004D04(s32 param0); void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, s32 param2); void FUN_02004D34(u16 param0, u32 param1, s32 param2); @@ -93,8 +94,8 @@ void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, s32 param2); void GF_SndSetMonoFlag(u32 param0); void FUN_02004D74(s32 param0); void FUN_02004D84(u32 param0); -u16 FUN_02004D94(); -u8 *FUN_02004DB4(); +u16 FUN_02004D94(void); +u8 *FUN_02004DB4(void); void FUN_02004DBC(u8 param0); u32 FUN_02004DCC(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5); u32 FUN_02004E08( @@ -110,7 +111,7 @@ void FUN_02004F70(struct UnkStruct_020040F4_2 *param0, u8 *param1, int param2, s void FUN_02005068(s16 *param0, s16 *param1, u32 param2, u32 param3, void *param4); void FUN_02005160(u32 param0); void FUN_0200516C(u32 param0); -void FUN_020051AC(); +void FUN_020051AC(void); void GF_SndPlayerSetPlayerVolume(u32 param0, u8 param1); #endif // POKEDIAMOND_UNK_020040F4_H |