mirror of
https://github.com/pret/pmd-sky.git
synced 2026-09-08 19:37:22 -05:00
more dse decomp
This commit is contained in:
@@ -91,19 +91,3 @@ DseTrackEvent_SetBankMsb: ; 0x02071B8C
|
||||
add r0, r4, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end DseTrackEvent_SetBankMsb
|
||||
|
||||
arm_func_start DseTrackEvent_SetBankLsb
|
||||
DseTrackEvent_SetBankLsb: ; 0x02071BBC
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
ldrh r2, [r3, #0xe]
|
||||
ldrb r1, [r4]
|
||||
mov r0, r3
|
||||
bic r2, r2, #0xff
|
||||
add r1, r2, r1
|
||||
mov r1, r1, lsl #0x10
|
||||
mov r1, r1, lsr #0x10
|
||||
bl DseChannel_SetBank
|
||||
add r0, r4, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end DseTrackEvent_SetBankLsb
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "include/main_02071CC8.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DseTrackEvent_SetNoteDurationMultiplier
|
||||
DseTrackEvent_SetNoteDurationMultiplier: ; 0x02071DB0
|
||||
ldrb r1, [r0], #1
|
||||
strb r1, [r2, #5]
|
||||
bx lr
|
||||
arm_func_end DseTrackEvent_SetNoteDurationMultiplier
|
||||
|
||||
arm_func_start DseTrackEvent_ForceLfoEnvelopeLevel
|
||||
DseTrackEvent_ForceLfoEnvelopeLevel: ; 0x02071DBC
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
ldrsb r1, [r4]
|
||||
mov r0, r3
|
||||
bl DseChannel_SetLfoConstEnvelopeLevel
|
||||
add r0, r4, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end DseTrackEvent_ForceLfoEnvelopeLevel
|
||||
|
||||
arm_func_start DseTrackEvent_SetHoldNotes
|
||||
DseTrackEvent_SetHoldNotes: ; 0x02071DD8
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
ldrb r1, [r4]
|
||||
ldr r0, [r2, #0x54]
|
||||
cmp r1, #0x40
|
||||
ldrb r1, [r0, #4]
|
||||
orrhs r1, r1, #1
|
||||
strhsb r1, [r0, #4]
|
||||
bhs _02071E08
|
||||
bic r1, r1, #1
|
||||
strb r1, [r0, #4]
|
||||
bl DseVoice_ReleaseHeld
|
||||
_02071E08:
|
||||
add r0, r4, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end DseTrackEvent_SetHoldNotes
|
||||
|
||||
arm_func_start DseTrackEvent_SetFlagBit1Unknown
|
||||
DseTrackEvent_SetFlagBit1Unknown: ; 0x02071E10
|
||||
ldrb r1, [r3, #4]
|
||||
orr r1, r1, #2
|
||||
strb r1, [r3, #4]
|
||||
bx lr
|
||||
arm_func_end DseTrackEvent_SetFlagBit1Unknown
|
||||
|
||||
arm_func_start DseTrackEvent_SetOptionalVolume
|
||||
DseTrackEvent_SetOptionalVolume: ; 0x02071E20
|
||||
ldrb r1, [r0], #1
|
||||
strb r1, [r3, #0x58]
|
||||
bx lr
|
||||
arm_func_end DseTrackEvent_SetOptionalVolume
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "dse.h"
|
||||
|
||||
u8* DseTrackEvent_SetBankLsb(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_Dummy1Byte(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetInstrument(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SongVolumeFade(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
@@ -13,6 +14,13 @@ u8* DseTrackEvent_SetEnvelopeHoldTime(u8 *ptr_next_byte, struct dse_sequence *se
|
||||
u8* DseTrackEvent_SetEnvelopeDecayTimeAndSustainLevel(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetEnvelopeSustainTime(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetEnvelopeReleaseTime(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetNoteDurationMultiplier(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_ForceLfoEnvelopeLevel(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetHoldNotes(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetFlagBit1Unknown(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetOptionalVolume(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_Dummy2Bytes(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetTuning(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
|
||||
|
||||
#endif //PMDSKY_MAIN_02071BF4_H
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
#ifndef PMDSKY_MAIN_02071E34_H
|
||||
#define PMDSKY_MAIN_02071E34_H
|
||||
|
||||
#include "dse.h"
|
||||
|
||||
u8* DseTrackEvent_Dummy2Bytes(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
u8* DseTrackEvent_SetTuning(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel);
|
||||
|
||||
#endif //PMDSKY_MAIN_02071E34_H
|
||||
@@ -1,12 +1,23 @@
|
||||
#include "main_02071BF4.h"
|
||||
#include "dc_envelope.h"
|
||||
|
||||
#define IME (*(vu16*)0x4000208)
|
||||
|
||||
extern struct dse_driver_work DRIVER_WORK;
|
||||
|
||||
extern u32 DseChannel_SetInstrument(struct dse_channel *channel, u16 instrument_index);
|
||||
extern void DseChannel_SetLfoConstEnvelopeLevel(struct dse_channel *channel, s8 envelope_level);
|
||||
void DseChannel_SetBank(struct dse_channel*, u16);
|
||||
extern void DseVoice_ReleaseHeld(struct dse_channel *);
|
||||
extern u32 _u32_div_f(u32 dividend, u32 divisor);
|
||||
extern u32 _s32_div_f(s32 dividend, s32 divisor);
|
||||
|
||||
u8* DseTrackEvent_SetBankLsb(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
DseChannel_SetBank(channel, (u16) ((channel->swd_id & ~0xFF) + *ptr_next_byte));
|
||||
return ptr_next_byte + 1;
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_Dummy1Byte(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
return ptr_next_byte + 1;
|
||||
@@ -108,3 +119,68 @@ u8* DseTrackEvent_SetEnvelopeReleaseTime(u8 *ptr_next_byte, struct dse_sequence
|
||||
SoundEnvelopeParameters_CheckValidity(&channel->envelope_override);
|
||||
return ptr_next_byte + 1;
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_SetNoteDurationMultiplier(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
track->note_duration_multiplier = ptr_next_byte[0];
|
||||
return ptr_next_byte + 1;
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_ForceLfoEnvelopeLevel(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
DseChannel_SetLfoConstEnvelopeLevel(channel, (s8)ptr_next_byte[0]);
|
||||
return ptr_next_byte + 1;
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_SetHoldNotes(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
|
||||
struct dse_channel* track_channel = track->channel;
|
||||
|
||||
if ((u32) *ptr_next_byte >= 0x40) {
|
||||
track_channel->channel_flags |= 1;
|
||||
} else {
|
||||
track_channel->channel_flags &= ~1;
|
||||
DseVoice_ReleaseHeld(track_channel);
|
||||
}
|
||||
return ptr_next_byte + 1;
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_SetFlagBit1Unknown(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
channel->channel_flags |= 2;
|
||||
return ptr_next_byte;
|
||||
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_SetOptionalVolume(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
|
||||
channel->optional_volume = ptr_next_byte[0];
|
||||
return ptr_next_byte + 1;
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_Dummy2Bytes(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
return ptr_next_byte + 2;
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_SetTuning(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
s16 tune = *(s8*)ptr_next_byte<<8;
|
||||
channel->tuning = tune;
|
||||
|
||||
channel->bend_final = tune + (s16)(channel->bend.current >> 0x10) + channel->container->bend;
|
||||
u16 old_ime = IME;
|
||||
IME = 0;
|
||||
struct dse_voice *voice = channel->voice_list;
|
||||
if(voice) {
|
||||
do {
|
||||
voice->update_flags = voice->update_flags | 0x10;
|
||||
voice = voice->next_in_channel_allocation_list;
|
||||
} while(voice);
|
||||
}
|
||||
u16 unused = IME;
|
||||
IME = old_ime;
|
||||
return ptr_next_byte + 1;
|
||||
}
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
#include "main_02071E34.h"
|
||||
|
||||
#define IME (*(vu16*)0x4000208)
|
||||
|
||||
u8* DseTrackEvent_Dummy2Bytes(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
return ptr_next_byte + 2;
|
||||
}
|
||||
|
||||
u8* DseTrackEvent_SetTuning(u8 *ptr_next_byte, struct dse_sequence *sequence, struct dse_track *track, struct dse_channel *channel)
|
||||
{
|
||||
s16 tune = *(s8*)ptr_next_byte<<8;
|
||||
channel->tuning = tune;
|
||||
|
||||
channel->bend_final = tune + (s16)(channel->bend.current >> 0x10) + channel->container->bend;
|
||||
u16 old_ime = IME;
|
||||
IME = 0;
|
||||
struct dse_voice *voice = channel->voice_list;
|
||||
if(voice) {
|
||||
do {
|
||||
voice->update_flags = voice->update_flags | 0x10;
|
||||
voice = voice->next_in_channel_allocation_list;
|
||||
} while(voice);
|
||||
}
|
||||
u16 unused = IME;
|
||||
IME = old_ime;
|
||||
return ptr_next_byte + 1;
|
||||
}
|
||||
2
main.lsf
2
main.lsf
@@ -222,8 +222,6 @@ Static main
|
||||
Object lib/DSE/src/main_02071A98.o
|
||||
Object lib/DSE/asm/main_02071AC0.o
|
||||
Object lib/DSE/src/main_02071BF4.o
|
||||
Object lib/DSE/asm/main_02071CC8.o
|
||||
Object lib/DSE/src/main_02071E34.o
|
||||
Object lib/DSE/asm/main_02071EB4.o
|
||||
Object lib/DSE/src/dc_envelope.o
|
||||
Object lib/DSE/src/dc_lfo.o
|
||||
|
||||
Reference in New Issue
Block a user