mirror of https://github.com/zeldaret/tmc.git
matched 4 more functions
This commit is contained in:
parent
34931c4eac
commit
e0ee481eeb
|
@ -1,61 +0,0 @@
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
push {r4, r5, r6, r7, lr}
|
|
||||||
sub sp, #4
|
|
||||||
adds r7, r0, #0
|
|
||||||
ldr r1, [r7, #0x34]
|
|
||||||
ldr r0, _080B0228 @ =0x68736D53
|
|
||||||
cmp r1, r0
|
|
||||||
bne _080B021E
|
|
||||||
adds r0, r1, #1
|
|
||||||
str r0, [r7, #0x34]
|
|
||||||
ldrb r5, [r7, #8]
|
|
||||||
ldr r4, [r7, #0x2c]
|
|
||||||
cmp r5, #0
|
|
||||||
ble _080B021A
|
|
||||||
movs r2, #0x80
|
|
||||||
_080B01E0:
|
|
||||||
ldrb r1, [r4]
|
|
||||||
adds r0, r2, #0
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080B0212
|
|
||||||
movs r6, #0x40
|
|
||||||
adds r0, r6, #0
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080B0212
|
|
||||||
adds r0, r4, #0
|
|
||||||
str r2, [sp]
|
|
||||||
bl Clear64byte
|
|
||||||
ldr r2, [sp]
|
|
||||||
strb r2, [r4]
|
|
||||||
movs r0, #2
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
strb r6, [r4, #0x13]
|
|
||||||
movs r0, #0x16
|
|
||||||
strb r0, [r4, #0x19]
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x24
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r1]
|
|
||||||
_080B0212:
|
|
||||||
subs r5, #1
|
|
||||||
adds r4, #0x50
|
|
||||||
cmp r5, #0
|
|
||||||
bgt _080B01E0
|
|
||||||
_080B021A:
|
|
||||||
ldr r0, _080B0228 @ =0x68736D53
|
|
||||||
str r0, [r7, #0x34]
|
|
||||||
_080B021E:
|
|
||||||
add sp, #4
|
|
||||||
pop {r4, r5, r6, r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080B0228: .4byte 0x68736D53
|
|
||||||
|
|
||||||
.syntax divided
|
|
|
@ -1,54 +0,0 @@
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080B06C4 @ =0x03007FF0
|
|
||||||
ldr r2, [r0]
|
|
||||||
ldr r0, [r2]
|
|
||||||
ldr r1, _080B06C8 @ =0x978C92AD
|
|
||||||
adds r0, r0, r1
|
|
||||||
cmp r0, #1
|
|
||||||
bhi _080B06BE
|
|
||||||
ldrb r0, [r2, #4]
|
|
||||||
subs r0, #1
|
|
||||||
ldrb r1, [r2, #4]
|
|
||||||
strb r0, [r2, #4]
|
|
||||||
ldrb r0, [r2, #4]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
bgt _080B06BE
|
|
||||||
ldrb r0, [r2, #0xb]
|
|
||||||
ldrb r1, [r2, #4]
|
|
||||||
strb r0, [r2, #4]
|
|
||||||
ldr r2, _080B06CC @ =0x040000C4
|
|
||||||
ldr r0, [r2]
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #0x12
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080B06AC
|
|
||||||
ldr r0, _080B06D0 @ =0x84400004
|
|
||||||
str r0, [r2]
|
|
||||||
_080B06AC:
|
|
||||||
ldr r0, _080B06D4 @ =0x040000C6
|
|
||||||
movs r2, #0x80
|
|
||||||
lsls r2, r2, #3
|
|
||||||
adds r1, r2, #0
|
|
||||||
strh r1, [r0]
|
|
||||||
movs r2, #0xb6
|
|
||||||
lsls r2, r2, #8
|
|
||||||
adds r1, r2, #0
|
|
||||||
strh r1, [r0]
|
|
||||||
_080B06BE:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080B06C4: .4byte 0x03007FF0
|
|
||||||
_080B06C8: .4byte 0x978C92AD
|
|
||||||
_080B06CC: .4byte 0x040000C4
|
|
||||||
_080B06D0: .4byte 0x84400004
|
|
||||||
_080B06D4: .4byte 0x040000C6
|
|
||||||
|
|
||||||
.syntax divided
|
|
|
@ -1,57 +0,0 @@
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
push {lr}
|
|
||||||
sub sp, #4
|
|
||||||
ldr r0, _080B05E4 @ =0x03007FF0
|
|
||||||
ldr r2, [r0]
|
|
||||||
ldr r1, [r2]
|
|
||||||
ldr r3, _080B05E8 @ =0x978C92AD
|
|
||||||
adds r0, r1, r3
|
|
||||||
cmp r0, #1
|
|
||||||
bhi _080B05DC
|
|
||||||
adds r0, r1, #0
|
|
||||||
adds r0, #0xa
|
|
||||||
str r0, [r2]
|
|
||||||
ldr r1, _080B05EC @ =0x04000102
|
|
||||||
movs r0, #0
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r3, _080B05F0 @ =0x040000C4
|
|
||||||
ldr r0, [r3]
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #0x12
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080B05C0
|
|
||||||
ldr r0, _080B05F4 @ =0x84400004
|
|
||||||
str r0, [r3]
|
|
||||||
_080B05C0:
|
|
||||||
ldr r1, _080B05F8 @ =0x040000C6
|
|
||||||
movs r3, #0x80
|
|
||||||
lsls r3, r3, #3
|
|
||||||
adds r0, r3, #0
|
|
||||||
strh r0, [r1]
|
|
||||||
movs r0, #0
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, #0xd4
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r1, r2, r0
|
|
||||||
ldr r2, _080B05FC @ =0x0500018C
|
|
||||||
mov r0, sp
|
|
||||||
bl CpuSet
|
|
||||||
_080B05DC:
|
|
||||||
add sp, #4
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080B05E4: .4byte 0x03007FF0
|
|
||||||
_080B05E8: .4byte 0x978C92AD
|
|
||||||
_080B05EC: .4byte 0x04000102
|
|
||||||
_080B05F0: .4byte 0x040000C4
|
|
||||||
_080B05F4: .4byte 0x84400004
|
|
||||||
_080B05F8: .4byte 0x040000C6
|
|
||||||
_080B05FC: .4byte 0x0500018C
|
|
||||||
|
|
||||||
.syntax divided
|
|
|
@ -1,61 +0,0 @@
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
push {r4, lr}
|
|
||||||
ldr r0, _080B0658 @ =0x03007FF0
|
|
||||||
ldr r2, [r0]
|
|
||||||
ldr r3, [r2]
|
|
||||||
ldr r0, _080B065C @ =0x68736D53
|
|
||||||
cmp r3, r0
|
|
||||||
beq _080B0650
|
|
||||||
ldr r1, _080B0660 @ =0x040000C6
|
|
||||||
movs r4, #0xb6
|
|
||||||
lsls r4, r4, #8
|
|
||||||
adds r0, r4, #0
|
|
||||||
strh r0, [r1]
|
|
||||||
ldrb r0, [r2, #4]
|
|
||||||
movs r0, #0
|
|
||||||
strb r0, [r2, #4]
|
|
||||||
adds r0, r3, #0
|
|
||||||
subs r0, #0xa
|
|
||||||
str r0, [r2]
|
|
||||||
ldr r3, _080B0664 @ =0x04000006
|
|
||||||
ldrb r0, [r3]
|
|
||||||
ldr r1, [r2, #0x10]
|
|
||||||
cmp r0, #0x9f
|
|
||||||
bne _080B0636
|
|
||||||
adds r2, r3, #0
|
|
||||||
_080B0630:
|
|
||||||
ldrb r0, [r2]
|
|
||||||
cmp r0, #0x9f
|
|
||||||
beq _080B0630
|
|
||||||
_080B0636:
|
|
||||||
ldr r2, _080B0664 @ =0x04000006
|
|
||||||
_080B0638:
|
|
||||||
ldrb r0, [r2]
|
|
||||||
cmp r0, #0x9f
|
|
||||||
bne _080B0638
|
|
||||||
ldr r4, _080B0668 @ =0x04000100
|
|
||||||
ldr r0, _080B066C @ =0x00044940
|
|
||||||
bl __divsi3
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
strh r0, [r4]
|
|
||||||
ldr r1, _080B0670 @ =0x04000102
|
|
||||||
movs r0, #0x80
|
|
||||||
strh r0, [r1]
|
|
||||||
_080B0650:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080B0658: .4byte 0x03007FF0
|
|
||||||
_080B065C: .4byte 0x68736D53
|
|
||||||
_080B0660: .4byte 0x040000C6
|
|
||||||
_080B0664: .4byte 0x04000006
|
|
||||||
_080B0668: .4byte 0x04000100
|
|
||||||
_080B066C: .4byte 0x00044940
|
|
||||||
_080B0670: .4byte 0x04000102
|
|
||||||
|
|
||||||
.syntax divided
|
|
|
@ -46,6 +46,7 @@ typedef void (*CgbOscOffFunc)(u8);
|
||||||
typedef u32 (*MidiKeyToCgbFreqFunc)(u8, u8, u8);
|
typedef u32 (*MidiKeyToCgbFreqFunc)(u8, u8, u8);
|
||||||
typedef void (*ExtVolPitFunc)(void);
|
typedef void (*ExtVolPitFunc)(void);
|
||||||
typedef void (*MPlayMainFunc)(MusicPlayerInfo*);
|
typedef void (*MPlayMainFunc)(MusicPlayerInfo*);
|
||||||
|
typedef void (*XcmdFunc)(MusicPlayerInfo*, MusicPlayerTrack*);
|
||||||
|
|
||||||
typedef struct WaveData {
|
typedef struct WaveData {
|
||||||
u16 type;
|
u16 type;
|
||||||
|
@ -309,19 +310,7 @@ extern char SoundMainRAM[];
|
||||||
|
|
||||||
extern void* gMPlayJumpTable[];
|
extern void* gMPlayJumpTable[];
|
||||||
|
|
||||||
typedef void (*XcmdFunc)(MusicPlayerInfo*, MusicPlayerTrack*);
|
|
||||||
extern const XcmdFunc gXcmdTable[];
|
|
||||||
|
|
||||||
extern CgbChannel gCgbChans[];
|
extern CgbChannel gCgbChans[];
|
||||||
extern const u8 gCgb3Vol[];
|
|
||||||
|
|
||||||
extern const u8 gScaleTable[];
|
|
||||||
extern const u32 gFreqTable[];
|
|
||||||
extern const u16 gPcmSamplesPerVBlankTable[];
|
|
||||||
|
|
||||||
extern const u8 gCgbScaleTable[];
|
|
||||||
extern const s16 gCgbFreqTable[];
|
|
||||||
extern const u8 gNoiseTable[];
|
|
||||||
|
|
||||||
extern char gNumMusicPlayers[];
|
extern char gNumMusicPlayers[];
|
||||||
extern char gMaxLines[];
|
extern char gMaxLines[];
|
||||||
|
@ -654,9 +643,16 @@ void m4aMPlayFadeIn(MusicPlayerInfo* mplayInfo, u16 speed) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NONMATCH("asm/non_matching/m4a/m4aMPlayImmInit.inc", void m4aMPlayImmInit(MusicPlayerInfo* mplayInfo)) {
|
void m4aMPlayImmInit(MusicPlayerInfo* mplayInfo) {
|
||||||
s32 trackCount = mplayInfo->trackCount;
|
s32 trackCount;
|
||||||
MusicPlayerTrack* track = mplayInfo->tracks;
|
MusicPlayerTrack* track;
|
||||||
|
|
||||||
|
if (mplayInfo->ident != ID_NUMBER)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mplayInfo->ident++;
|
||||||
|
trackCount = mplayInfo->trackCount;
|
||||||
|
track = mplayInfo->tracks;
|
||||||
|
|
||||||
while (trackCount > 0) {
|
while (trackCount > 0) {
|
||||||
if (track->flags & MPT_FLG_EXIST) {
|
if (track->flags & MPT_FLG_EXIST) {
|
||||||
|
@ -673,8 +669,8 @@ NONMATCH("asm/non_matching/m4a/m4aMPlayImmInit.inc", void m4aMPlayImmInit(MusicP
|
||||||
trackCount--;
|
trackCount--;
|
||||||
track++;
|
track++;
|
||||||
}
|
}
|
||||||
|
mplayInfo->ident = ID_NUMBER;
|
||||||
}
|
}
|
||||||
END_NONMATCH
|
|
||||||
|
|
||||||
void MPlayExtender(CgbChannel* cgbChans) {
|
void MPlayExtender(CgbChannel* cgbChans) {
|
||||||
SoundInfo* soundInfo;
|
SoundInfo* soundInfo;
|
||||||
|
@ -885,27 +881,26 @@ void SoundClear(void) {
|
||||||
soundInfo->ident = ID_NUMBER;
|
soundInfo->ident = ID_NUMBER;
|
||||||
}
|
}
|
||||||
|
|
||||||
NONMATCH("asm/non_matching/m4a/m4aSoundVSyncOff.inc", void m4aSoundVSyncOff(void)) {
|
void m4aSoundVSyncOff(void) {
|
||||||
SoundInfo* soundInfo = SOUND_INFO_PTR;
|
SoundInfo* soundInfo = SOUND_INFO_PTR;
|
||||||
|
|
||||||
if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1) {
|
if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1) {
|
||||||
soundInfo->ident += 10;
|
soundInfo->ident += 10;
|
||||||
|
|
||||||
|
REG_TM0CNT_H = 0;
|
||||||
|
|
||||||
if (REG_DMA1CNT & (DMA_REPEAT << 16))
|
if (REG_DMA1CNT & (DMA_REPEAT << 16))
|
||||||
REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
|
REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
|
||||||
|
|
||||||
if (REG_DMA2CNT & (DMA_REPEAT << 16))
|
|
||||||
REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
|
|
||||||
|
|
||||||
REG_DMA1CNT_H = DMA_32BIT;
|
REG_DMA1CNT_H = DMA_32BIT;
|
||||||
REG_DMA2CNT_H = DMA_32BIT;
|
|
||||||
|
|
||||||
CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer));
|
CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
END_NONMATCH
|
|
||||||
|
|
||||||
NONMATCH("asm/non_matching/m4a/m4aSoundVSyncOn.inc", void m4aSoundVSyncOn(void)) {
|
#define REG_VCOUNT_8 (*(vu8*)REG_ADDR_VCOUNT)
|
||||||
|
|
||||||
|
void m4aSoundVSyncOn(void) {
|
||||||
SoundInfo* soundInfo = SOUND_INFO_PTR;
|
SoundInfo* soundInfo = SOUND_INFO_PTR;
|
||||||
u32 ident = soundInfo->ident;
|
u32 ident = soundInfo->ident;
|
||||||
|
|
||||||
|
@ -913,16 +908,33 @@ NONMATCH("asm/non_matching/m4a/m4aSoundVSyncOn.inc", void m4aSoundVSyncOn(void))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
REG_DMA1CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT;
|
REG_DMA1CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT;
|
||||||
REG_DMA2CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT;
|
|
||||||
|
|
||||||
soundInfo->pcmDmaCounter = 0;
|
soundInfo->pcmDmaCounter = 0;
|
||||||
soundInfo->ident = ident - 10;
|
soundInfo->ident = ident - 10;
|
||||||
}
|
|
||||||
END_NONMATCH
|
|
||||||
|
|
||||||
NONMATCH("asm/non_matching/m4a/m4aSoundVSync.inc", void m4aSoundVSync(void)) {
|
while (REG_VCOUNT_8 == 0x9f) {}
|
||||||
|
while (REG_VCOUNT_8 != 0x9f) {}
|
||||||
|
|
||||||
|
REG_TM0CNT_L = -(0x44940 / soundInfo->pcmSamplesPerVBlank);
|
||||||
|
REG_TM0CNT_H = 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
|
void m4aSoundVSync(void) {
|
||||||
|
SoundInfo* soundInfo = SOUND_INFO_PTR;
|
||||||
|
|
||||||
|
if (soundInfo->ident - ID_NUMBER > 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
soundInfo->pcmDmaCounter--;
|
||||||
|
if ((s8)soundInfo->pcmDmaCounter > 0)
|
||||||
|
return;
|
||||||
|
soundInfo->pcmDmaCounter = soundInfo->pcmDmaPeriod;
|
||||||
|
if (REG_DMA1CNT & (DMA_REPEAT << 16)) {
|
||||||
|
REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
|
||||||
|
}
|
||||||
|
REG_DMA1CNT_H = DMA_32BIT;
|
||||||
|
REG_DMA1CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT;
|
||||||
}
|
}
|
||||||
END_NONMATCH
|
|
||||||
|
|
||||||
void MPlayOpen(MusicPlayerInfo* mplayInfo, MusicPlayerTrack* tracks, u8 trackCount) {
|
void MPlayOpen(MusicPlayerInfo* mplayInfo, MusicPlayerTrack* tracks, u8 trackCount) {
|
||||||
SoundInfo* soundInfo;
|
SoundInfo* soundInfo;
|
||||||
|
|
Loading…
Reference in New Issue