use better m4a variable/constant names
This commit is contained in:
226
src/m4a.c
226
src/m4a.c
@@ -10,7 +10,7 @@ BSS_CODE ALIGNED(4) char SoundMainRAM_Buffer[0x800] = {0};
|
||||
struct SoundInfo gSoundInfo;
|
||||
struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES];
|
||||
struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES];
|
||||
void *gMPlayJumpTable[36];
|
||||
MPlayFunc gMPlayJumpTable[36];
|
||||
struct CgbChannel gCgbChans[4];
|
||||
struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2];
|
||||
struct PokemonCrySong gPokemonCrySong;
|
||||
@@ -293,7 +293,7 @@ void MPlayExtender(struct CgbChannel *cgbChans)
|
||||
gMPlayJumpTable[32] = FadeOutBody;
|
||||
gMPlayJumpTable[33] = TrkVolPitSet;
|
||||
|
||||
soundInfo->cgbChans = (struct CgbChannel *)cgbChans;
|
||||
soundInfo->cgbChans = cgbChans;
|
||||
soundInfo->CgbSound = CgbSound;
|
||||
soundInfo->CgbOscOff = CgbOscOff;
|
||||
soundInfo->MidiKeyToCgbFreq = MidiKeyToCgbFreq;
|
||||
@@ -301,13 +301,13 @@ void MPlayExtender(struct CgbChannel *cgbChans)
|
||||
|
||||
CpuFill32(0, cgbChans, sizeof(struct CgbChannel) * 4);
|
||||
|
||||
cgbChans[0].ty = 1;
|
||||
cgbChans[0].type = 1;
|
||||
cgbChans[0].panMask = 0x11;
|
||||
cgbChans[1].ty = 2;
|
||||
cgbChans[1].type = 2;
|
||||
cgbChans[1].panMask = 0x22;
|
||||
cgbChans[2].ty = 3;
|
||||
cgbChans[2].type = 3;
|
||||
cgbChans[2].panMask = 0x44;
|
||||
cgbChans[3].ty = 4;
|
||||
cgbChans[3].type = 4;
|
||||
cgbChans[3].panMask = 0x88;
|
||||
|
||||
soundInfo->ident = ident;
|
||||
@@ -362,15 +362,15 @@ void SoundInit(struct SoundInfo *soundInfo)
|
||||
|
||||
soundInfo->maxChans = 8;
|
||||
soundInfo->masterVolume = 15;
|
||||
soundInfo->plynote = (u32)ply_note;
|
||||
soundInfo->plynote = ply_note;
|
||||
soundInfo->CgbSound = DummyFunc;
|
||||
soundInfo->CgbOscOff = (void (*)(u8))DummyFunc;
|
||||
soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc;
|
||||
soundInfo->ExtVolPit = (u32)DummyFunc;
|
||||
soundInfo->CgbOscOff = (CgbOscOffFunc)DummyFunc;
|
||||
soundInfo->MidiKeyToCgbFreq = (MidiKeyToCgbFreqFunc)DummyFunc;
|
||||
soundInfo->ExtVolPit = (ExtVolPitFunc)DummyFunc;
|
||||
|
||||
MPlayJumpTableCopy(gMPlayJumpTable);
|
||||
|
||||
soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable;
|
||||
soundInfo->MPlayJumpTable = gMPlayJumpTable;
|
||||
|
||||
SampleFreqSet(SOUND_MODE_FREQ_13379);
|
||||
|
||||
@@ -437,7 +437,7 @@ void m4aSoundMode(u32 mode)
|
||||
|
||||
while (temp != 0)
|
||||
{
|
||||
chan->status = 0;
|
||||
chan->statusFlags = 0;
|
||||
temp--;
|
||||
chan++;
|
||||
}
|
||||
@@ -483,7 +483,7 @@ void SoundClear(void)
|
||||
|
||||
while (i > 0)
|
||||
{
|
||||
((struct SoundChannel *)chan)->status = 0;
|
||||
((struct SoundChannel *)chan)->statusFlags = 0;
|
||||
i--;
|
||||
chan = (void *)((s32)chan + sizeof(struct SoundChannel));
|
||||
}
|
||||
@@ -497,7 +497,7 @@ void SoundClear(void)
|
||||
while (i <= 4)
|
||||
{
|
||||
soundInfo->CgbOscOff(i);
|
||||
((struct CgbChannel *)chan)->sf = 0;
|
||||
((struct CgbChannel *)chan)->statusFlags = 0;
|
||||
i++;
|
||||
chan = (void *)((s32)chan + sizeof(struct CgbChannel));
|
||||
}
|
||||
@@ -572,15 +572,18 @@ void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
|
||||
tracks++;
|
||||
}
|
||||
|
||||
if (soundInfo->func != 0)
|
||||
// append music player and MPlayMain to linked list
|
||||
|
||||
if (soundInfo->MPlayMainHead != NULL)
|
||||
{
|
||||
mplayInfo->func = soundInfo->func;
|
||||
mplayInfo->intp = soundInfo->intp;
|
||||
soundInfo->func = 0;
|
||||
mplayInfo->MPlayMainNext = soundInfo->MPlayMainHead;
|
||||
mplayInfo->musicPlayerNext = soundInfo->musicPlayerHead;
|
||||
// NULL assignment semantically useless, but required for match
|
||||
soundInfo->MPlayMainHead = NULL;
|
||||
}
|
||||
|
||||
soundInfo->intp = (u32)mplayInfo;
|
||||
soundInfo->func = (u32)MPlayMain;
|
||||
soundInfo->musicPlayerHead = mplayInfo;
|
||||
soundInfo->MPlayMainHead = MPlayMain;
|
||||
soundInfo->ident = ID_NUMBER;
|
||||
mplayInfo->ident = ID_NUMBER;
|
||||
}
|
||||
@@ -884,7 +887,7 @@ void CgbModVol(struct CgbChannel *chan)
|
||||
if ((soundInfo->mode & 1) || !CgbPan(chan))
|
||||
{
|
||||
chan->pan = 0xFF;
|
||||
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
|
||||
chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -895,12 +898,12 @@ void CgbModVol(struct CgbChannel *chan)
|
||||
asm("" : : : "memory");
|
||||
#endif
|
||||
|
||||
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
|
||||
if (chan->eg > 15)
|
||||
chan->eg = 15;
|
||||
chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
|
||||
if (chan->envelopeGoal > 15)
|
||||
chan->envelopeGoal = 15;
|
||||
}
|
||||
|
||||
chan->sg = (chan->eg * chan->su + 15) >> 4;
|
||||
chan->sustainGoal = (chan->envelopeGoal * chan->sustain + 15) >> 4;
|
||||
chan->pan &= chan->panMask;
|
||||
}
|
||||
|
||||
@@ -927,7 +930,7 @@ void CgbSound(void)
|
||||
|
||||
for (ch = 1, channels = soundInfo->cgbChans; ch <= 4; ch++, channels++)
|
||||
{
|
||||
if (!(channels->sf & 0xc7))
|
||||
if (!(channels->statusFlags & SOUND_CHANNEL_SF_ON))
|
||||
continue;
|
||||
|
||||
switch (ch)
|
||||
@@ -965,53 +968,53 @@ void CgbSound(void)
|
||||
prevC15 = soundInfo->c15;
|
||||
evAdd = *nrx2ptr;
|
||||
|
||||
if (channels->sf & 0x80)
|
||||
if (channels->statusFlags & SOUND_CHANNEL_SF_START)
|
||||
{
|
||||
if (!(channels->sf & 0x40))
|
||||
if (!(channels->statusFlags & SOUND_CHANNEL_SF_STOP))
|
||||
{
|
||||
channels->sf = 3;
|
||||
channels->mo = 3;
|
||||
channels->statusFlags = SOUND_CHANNEL_SF_ENV_ATTACK;
|
||||
channels->modify = CGB_CHANNEL_MO_PIT | CGB_CHANNEL_MO_VOL;
|
||||
CgbModVol(channels);
|
||||
switch (ch)
|
||||
{
|
||||
case 1:
|
||||
*nrx0ptr = channels->sw;
|
||||
*nrx0ptr = channels->sweep;
|
||||
// fallthrough
|
||||
case 2:
|
||||
*nrx1ptr = ((u32)channels->wp << 6) + channels->le;
|
||||
*nrx1ptr = ((u32)channels->wavePointer << 6) + channels->length;
|
||||
goto loc_82E0E30;
|
||||
case 3:
|
||||
if ((u32)channels->wp != channels->cp)
|
||||
if (channels->wavePointer != channels->currentPointer)
|
||||
{
|
||||
*nrx0ptr = 0x40;
|
||||
REG_WAVE_RAM0 = channels->wp[0];
|
||||
REG_WAVE_RAM1 = channels->wp[1];
|
||||
REG_WAVE_RAM2 = channels->wp[2];
|
||||
REG_WAVE_RAM3 = channels->wp[3];
|
||||
channels->cp = (u32)channels->wp;
|
||||
REG_WAVE_RAM0 = channels->wavePointer[0];
|
||||
REG_WAVE_RAM1 = channels->wavePointer[1];
|
||||
REG_WAVE_RAM2 = channels->wavePointer[2];
|
||||
REG_WAVE_RAM3 = channels->wavePointer[3];
|
||||
channels->currentPointer = channels->wavePointer;
|
||||
}
|
||||
*nrx0ptr = 0;
|
||||
*nrx1ptr = channels->le;
|
||||
if (channels->le)
|
||||
channels->n4 = -64;
|
||||
*nrx1ptr = channels->length;
|
||||
if (channels->length)
|
||||
channels->n4 = 0xC0;
|
||||
else
|
||||
channels->n4 = -128;
|
||||
channels->n4 = 0x80;
|
||||
break;
|
||||
default:
|
||||
*nrx1ptr = channels->le;
|
||||
*nrx3ptr = (u32)channels->wp << 3;
|
||||
*nrx1ptr = channels->length;
|
||||
*nrx3ptr = (u32)channels->wavePointer << 3;
|
||||
loc_82E0E30:
|
||||
evAdd = channels->at + 8;
|
||||
if (channels->le)
|
||||
channels->n4 = 64;
|
||||
evAdd = channels->attack + 8;
|
||||
if (channels->length)
|
||||
channels->n4 = 0x40;
|
||||
else
|
||||
channels->n4 = 0;
|
||||
channels->n4 = 0x00;
|
||||
break;
|
||||
}
|
||||
channels->ec = channels->at;
|
||||
if ((s8)(channels->at & mask))
|
||||
channels->envelopeCounter = channels->attack;
|
||||
if ((s8)(channels->attack & mask))
|
||||
{
|
||||
channels->ev = 0;
|
||||
channels->envelopeVolume = 0;
|
||||
goto EC_MINUS;
|
||||
}
|
||||
else
|
||||
@@ -1024,28 +1027,28 @@ void CgbSound(void)
|
||||
goto loc_82E0E82;
|
||||
}
|
||||
}
|
||||
else if (channels->sf & 0x04)
|
||||
else if (channels->statusFlags & SOUND_CHANNEL_SF_IEC)
|
||||
{
|
||||
channels->echoLength--;
|
||||
if ((s8)(channels->echoLength & mask) <= 0)
|
||||
channels->pseudoEchoLength--;
|
||||
if ((s8)(channels->pseudoEchoLength & mask) <= 0)
|
||||
{
|
||||
loc_82E0E82:
|
||||
CgbOscOff(ch);
|
||||
channels->sf = 0;
|
||||
channels->statusFlags = 0;
|
||||
goto LAST_LABEL;
|
||||
}
|
||||
goto loc_82E0FD6;
|
||||
}
|
||||
else if ((channels->sf & 0x40) && (channels->sf & 0x03))
|
||||
else if ((channels->statusFlags & SOUND_CHANNEL_SF_STOP) && (channels->statusFlags & SOUND_CHANNEL_SF_ENV))
|
||||
{
|
||||
channels->sf &= 0xfc;
|
||||
channels->ec = channels->re;
|
||||
if ((s8)(channels->re & mask))
|
||||
channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV;
|
||||
channels->envelopeCounter = channels->release;
|
||||
if ((s8)(channels->release & mask))
|
||||
{
|
||||
channels->mo |= 1;
|
||||
channels->modify |= CGB_CHANNEL_MO_VOL;
|
||||
if (ch != 3)
|
||||
{
|
||||
evAdd = channels->re;
|
||||
evAdd = channels->release;
|
||||
}
|
||||
goto EC_MINUS;
|
||||
}
|
||||
@@ -1057,24 +1060,24 @@ void CgbSound(void)
|
||||
else
|
||||
{
|
||||
loc_82E0ED0:
|
||||
if (channels->ec == 0)
|
||||
if (channels->envelopeCounter == 0)
|
||||
{
|
||||
if (ch == 3)
|
||||
{
|
||||
channels->mo |= 1;
|
||||
channels->modify |= CGB_CHANNEL_MO_VOL;
|
||||
}
|
||||
CgbModVol(channels);
|
||||
if ((channels->sf & 0x3) == 0)
|
||||
if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 0)
|
||||
{
|
||||
channels->ev--;
|
||||
if ((s8)(channels->ev & mask) <= 0)
|
||||
channels->envelopeVolume--;
|
||||
if ((s8)(channels->envelopeVolume & mask) <= 0)
|
||||
{
|
||||
loc_82E0F02:
|
||||
channels->ev = ((channels->eg * channels->echoVolume) + 0xFF) >> 8;
|
||||
if (channels->ev)
|
||||
channels->envelopeVolume = ((channels->envelopeGoal * channels->pseudoEchoVolume) + 0xFF) >> 8;
|
||||
if (channels->envelopeVolume)
|
||||
{
|
||||
channels->sf |= 0x4;
|
||||
channels->mo |= 1;
|
||||
channels->statusFlags |= SOUND_CHANNEL_SF_IEC;
|
||||
channels->modify |= CGB_CHANNEL_MO_VOL;
|
||||
if (ch != 3)
|
||||
{
|
||||
evAdd = 8;
|
||||
@@ -1088,34 +1091,34 @@ void CgbSound(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
channels->ec = channels->re;
|
||||
channels->envelopeCounter = channels->release;
|
||||
}
|
||||
}
|
||||
else if ((channels->sf & 0x3) == 1)
|
||||
else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 1)
|
||||
{
|
||||
loc_82E0F3A:
|
||||
channels->ev = channels->sg;
|
||||
channels->ec = 7;
|
||||
channels->envelopeVolume = channels->sustainGoal;
|
||||
channels->envelopeCounter = 7;
|
||||
}
|
||||
else if ((channels->sf & 0x3) == 2)
|
||||
else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 2)
|
||||
{
|
||||
int ev, sg;
|
||||
int envelopeVolume, sustainGoal;
|
||||
|
||||
channels->ev--;
|
||||
ev = (s8)(channels->ev & mask);
|
||||
sg = (s8)(channels->sg);
|
||||
if (ev <= sg)
|
||||
channels->envelopeVolume--;
|
||||
envelopeVolume = (s8)(channels->envelopeVolume & mask);
|
||||
sustainGoal = (s8)(channels->sustainGoal);
|
||||
if (envelopeVolume <= sustainGoal)
|
||||
{
|
||||
loc_82E0F5A:
|
||||
if (channels->su == 0)
|
||||
if (channels->sustain == 0)
|
||||
{
|
||||
channels->sf &= 0xfc;
|
||||
channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV;
|
||||
goto loc_82E0F02;
|
||||
}
|
||||
else
|
||||
{
|
||||
channels->sf--;
|
||||
channels->mo |= 1;
|
||||
channels->statusFlags--;
|
||||
channels->modify |= CGB_CHANNEL_MO_VOL;
|
||||
if (ch != 3)
|
||||
{
|
||||
evAdd = 8;
|
||||
@@ -1125,24 +1128,24 @@ void CgbSound(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
channels->ec = channels->de;
|
||||
channels->envelopeCounter = channels->decay;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
channels->ev++;
|
||||
if ((u8)(channels->ev & mask) >= channels->eg)
|
||||
channels->envelopeVolume++;
|
||||
if ((u8)(channels->envelopeVolume & mask) >= channels->envelopeGoal)
|
||||
{
|
||||
loc_82E0F96:
|
||||
channels->sf--;
|
||||
channels->ec = channels->de;
|
||||
if ((u8)(channels->ec & mask))
|
||||
channels->statusFlags--;
|
||||
channels->envelopeCounter = channels->decay;
|
||||
if ((u8)(channels->envelopeCounter & mask))
|
||||
{
|
||||
channels->mo |= 1;
|
||||
channels->ev = channels->eg;
|
||||
channels->modify |= CGB_CHANNEL_MO_VOL;
|
||||
channels->envelopeVolume = channels->envelopeGoal;
|
||||
if (ch != 3)
|
||||
{
|
||||
evAdd = channels->de;
|
||||
evAdd = channels->decay;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1152,14 +1155,14 @@ void CgbSound(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
channels->ec = channels->at;
|
||||
channels->envelopeCounter = channels->attack;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EC_MINUS:
|
||||
channels->ec--;
|
||||
channels->envelopeCounter--;
|
||||
if (prevC15 == 0)
|
||||
{
|
||||
prevC15--;
|
||||
@@ -1167,39 +1170,39 @@ void CgbSound(void)
|
||||
}
|
||||
|
||||
loc_82E0FD6:
|
||||
if (channels->mo & 0x2)
|
||||
if (channels->modify & CGB_CHANNEL_MO_PIT)
|
||||
{
|
||||
if (ch < 4 && (channels->ty & 0x08))
|
||||
if (ch < 4 && (channels->type & TONEDATA_TYPE_FIX))
|
||||
{
|
||||
int biasH = REG_SOUNDBIAS_H;
|
||||
|
||||
if (biasH < 64)
|
||||
{
|
||||
channels->fr = (channels->fr + 2) & 0x7fc;
|
||||
channels->frequency = (channels->frequency + 2) & 0x7fc;
|
||||
}
|
||||
else if (biasH < 128)
|
||||
{
|
||||
channels->fr = (channels->fr + 1) & 0x7fe;
|
||||
channels->frequency = (channels->frequency + 1) & 0x7fe;
|
||||
}
|
||||
}
|
||||
if (ch != 4)
|
||||
{
|
||||
*nrx3ptr = channels->fr;
|
||||
*nrx3ptr = channels->frequency;
|
||||
}
|
||||
else
|
||||
{
|
||||
*nrx3ptr = (*nrx3ptr & 0x08) | channels->fr;
|
||||
*nrx3ptr = (*nrx3ptr & 0x08) | channels->frequency;
|
||||
}
|
||||
channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->fr) + 1));
|
||||
channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->frequency) + 1));
|
||||
*nrx4ptr = (s8)(channels->n4 & mask);
|
||||
}
|
||||
|
||||
if (channels->mo & 1)
|
||||
if (channels->modify & 1)
|
||||
{
|
||||
REG_NR51 = (REG_NR51 & ~channels->panMask) | channels->pan;
|
||||
if (ch == 3)
|
||||
{
|
||||
*nrx2ptr = gCgb3Vol[channels->ev];
|
||||
*nrx2ptr = gCgb3Vol[channels->envelopeVolume];
|
||||
if (channels->n4 & 0x80)
|
||||
{
|
||||
*nrx0ptr = 0x80;
|
||||
@@ -1210,7 +1213,7 @@ void CgbSound(void)
|
||||
else
|
||||
{
|
||||
evAdd &= 0xf;
|
||||
*nrx2ptr = (channels->ev << 4) + evAdd;
|
||||
*nrx2ptr = (channels->envelopeVolume << 4) + evAdd;
|
||||
*nrx4ptr = channels->n4 | 0x80;
|
||||
if (ch == 1 && !(*nrx0ptr & 0x08))
|
||||
{
|
||||
@@ -1220,7 +1223,7 @@ void CgbSound(void)
|
||||
}
|
||||
|
||||
LAST_LABEL:
|
||||
channels->mo = 0;
|
||||
channels->modify = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1504,8 +1507,8 @@ void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *trac
|
||||
|
||||
cond_true:
|
||||
{
|
||||
void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[1]);
|
||||
func(mplayInfo, track);
|
||||
// *& is required for matching
|
||||
(*&gMPlayJumpTable[1])(mplayInfo, track);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1523,8 +1526,7 @@ void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
|
||||
|
||||
void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
|
||||
{
|
||||
void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[0]);
|
||||
func(mplayInfo, track);
|
||||
gMPlayJumpTable[0](mplayInfo, track);
|
||||
}
|
||||
|
||||
#define READ_XCMD_BYTE(var, n) \
|
||||
@@ -1580,13 +1582,13 @@ void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
|
||||
|
||||
void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
|
||||
{
|
||||
track->echoVolume = *track->cmdPtr;
|
||||
track->pseudoEchoVolume = *track->cmdPtr;
|
||||
track->cmdPtr++;
|
||||
}
|
||||
|
||||
void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
|
||||
{
|
||||
track->echoLength = *track->cmdPtr;
|
||||
track->pseudoEchoLength = *track->cmdPtr;
|
||||
track->cmdPtr++;
|
||||
}
|
||||
|
||||
|
||||
440
src/m4a_1.s
440
src/m4a_1.s
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user