Document m4a xcmd_0C

This commit is contained in:
Josh 2025-12-27 01:11:40 +00:00
parent b0d2642e56
commit 349da0484b
4 changed files with 18 additions and 17 deletions

View File

@ -181,7 +181,7 @@
struct_field o_MusicPlayerTrack_ToneData_sustain, 1
struct_field o_MusicPlayerTrack_ToneData_release, 1
struct_field o_MusicPlayerTrack_gap, 10
struct_field o_MusicPlayerTrack_unk_3A, 2
struct_field o_MusicPlayerTrack_timer, 2
struct_field o_MusicPlayerTrack_unk_3C, 4
struct_field o_MusicPlayerTrack_cmdPtr, 4
struct_field o_MusicPlayerTrack_patternStack, 12

View File

@ -257,8 +257,8 @@ struct PokemonCrySong
u8 tieCmd; // 0x29
u8 tieKeyValue; // 0x2A
u8 tieVelocityValue; // 0x2B
u8 unkCmd0C[2]; // 0x2C
u16 unkCmd0CParam; // 0x2E
u8 xwaitCmd[2]; // 0x2C
u16 length; // 0x2E
u8 end[2]; // 0x30
};
@ -306,7 +306,7 @@ struct MusicPlayerTrack
struct SoundChannel *chan;
struct ToneData tone;
u8 gap[10];
u16 unk_3A;
u16 timer;
u32 unk_3C;
u8 *cmdPtr;
u8 *patternStack[3];
@ -495,7 +495,7 @@ void ply_xiecv(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xiecl(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xleng(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xswee(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xcmd_0C(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xwait(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xcmd_0D(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
#endif // GUARD_GBA_M4A_INTERNAL_H

View File

@ -1612,26 +1612,26 @@ void ply_xswee(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
track->cmdPtr++;
}
void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
void ply_xwait(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
u32 unk;
u32 len;
#ifdef UBFIX
unk = 0;
len = 0;
#endif
READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable
READ_XCMD_BYTE(unk, 1)
READ_XCMD_BYTE(len, 0) // UB: uninitialized variable
READ_XCMD_BYTE(len, 1)
if (track->unk_3A < (u16)unk)
if (track->timer < (u16)len)
{
track->unk_3A++;
track->timer++;
track->cmdPtr -= 2;
track->wait = 1;
}
else
{
track->unk_3A = 0;
track->timer = 0;
track->cmdPtr += 2;
}
}
@ -1719,7 +1719,7 @@ void SetPokemonCryPitch(s16 val)
void SetPokemonCryLength(u16 val)
{
gPokemonCrySong.unkCmd0CParam = val;
gPokemonCrySong.length = val;
}
void SetPokemonCryRelease(u8 val)

View File

@ -251,6 +251,7 @@ const u8 gClockTable[] =
#define xRELE 0x07
#define xIECV 0x08
#define xIECL 0x09
#define xWAIT 0x0c
#define EOT 0xce
#define TIE 0xcf
@ -282,8 +283,8 @@ const struct PokemonCrySong gPokemonCrySongTemplate =
.tieCmd = TIE,
.tieKeyValue = 60, // default is Cn3
.tieVelocityValue = 127,
.unkCmd0C = {XCMD, 0x0C},
.unkCmd0CParam = 60,
.xwaitCmd = {XCMD, xWAIT},
.length = 60, // frames to wait
.end = {EOT, FINE}
};
@ -301,6 +302,6 @@ const XcmdFunc gXcmdTable[] =
ply_xiecl,
ply_xleng,
ply_xswee,
ply_xcmd_0C,
ply_xwait,
ply_xcmd_0D,
};