decomp, label, doc, repeat

This commit is contained in:
Seth Barberee 2021-01-27 18:46:39 -06:00
parent cb77386b65
commit 4886c9f7dc
29 changed files with 815 additions and 918 deletions

View File

@ -1116,7 +1116,7 @@ _08000F58:
ldr r0, _08000F64
bl sub_80121E0
_08000F5E:
bl sub_8011854
bl xxx_call_start_bg_music
b _08000F78
.align 2, 0
_08000F64: .4byte 0x000f1209

View File

@ -5,93 +5,6 @@
.text
thumb_func_start sub_800D16C
sub_800D16C:
push {r0-r3}
push {lr}
mov r12, r4
ldr r4, _0800D198
add sp, r4
mov r4, r12
ldr r0, _0800D19C
add r0, sp
ldr r1, [r0]
movs r2, 0x81
lsls r2, 3
add r2, sp
mov r0, sp
bl vsprintf
movs r3, 0x80
lsls r3, 3
add sp, r3
pop {r3}
add sp, 0x10
bx r3
.align 2, 0
_0800D198: .4byte 0xfffffc00
_0800D19C: .4byte 0x00000404
thumb_func_end sub_800D16C
thumb_func_start sub_800D1A0
sub_800D1A0:
push {r3}
add sp, 0x4
bx lr
thumb_func_end sub_800D1A0
thumb_func_start nullsub_183
nullsub_183:
bx lr
thumb_func_end nullsub_183
thumb_func_start nullsub_188
nullsub_188:
bx lr
thumb_func_end nullsub_188
thumb_func_start nullsub_184
nullsub_184:
bx lr
thumb_func_end nullsub_184
thumb_func_start sub_800D1B4
sub_800D1B4:
movs r0, 0
bx lr
thumb_func_end sub_800D1B4
thumb_func_start sub_800D1B8
sub_800D1B8:
adds r0, r2, 0
bx lr
thumb_func_end sub_800D1B8
thumb_func_start nullsub_187
nullsub_187:
bx lr
thumb_func_end nullsub_187
thumb_func_start sub_800D1C0
sub_800D1C0:
push {lr}
ldr r1, _0800D1D4
ldr r0, [r1]
cmp r0, 0x2
bne _0800D1D8
ldr r0, [r1, 0x4]
cmp r0, 0x2
bne _0800D1D8
movs r0, 0x1
b _0800D1DA
.align 2, 0
_0800D1D4: .4byte gUnknown_202DB60
_0800D1D8:
movs r0, 0
_0800D1DA:
pop {r1}
bx r1
thumb_func_end sub_800D1C0
thumb_func_start sub_800D1E0
sub_800D1E0:
push {r4-r7,lr}

View File

@ -1,38 +0,0 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
@ Unused
thumb_func_start PrintMessageWithFuncFileLine
PrintMessageWithFuncFileLine:
push {r2,r3}
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
adds r5, r1, 0
ldr r1, [sp, 0x10]
add r2, sp, 0x14
bl vsprintf
adds r0, r4, 0
bl strlen
adds r4, r0
ldr r1, _08011AFC
ldr r2, [r5, 0x8]
ldr r3, [r5]
ldr r0, [r5, 0x4]
str r0, [sp]
adds r0, r4, 0
bl sprintf
add sp, 0x4
pop {r4,r5}
pop {r3}
add sp, 0x8
bx r3
.align 2, 0
_08011AFC: .4byte gFuncFileLineString2
thumb_func_end PrintMessageWithFuncFileLine
.align 2,0 @ Don't pad with nop

View File

@ -2875,7 +2875,7 @@ _08014110: .4byte 0x004000bc
thumb_func_start sub_8014114
sub_8014114:
push {lr}
bl sub_8011854
bl xxx_call_start_bg_music
movs r0, 0
bl SetSavingIconCoords
pop {r0}

View File

@ -1277,7 +1277,7 @@ _08028782:
ldr r1, [r4]
str r0, [r1, 0x44]
_0802878A:
bl sub_8011854
bl xxx_call_start_bg_music
b _08028AF2
_08028790:
ldr r0, [r6]

View File

@ -4476,7 +4476,7 @@ _08054B58:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_8058AAC
bl SkyAttackMoveAction
bl _080554BA
_08054B68:
adds r0, r7, 0
@ -4800,7 +4800,7 @@ _08054E0C:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805B220
bl TrapperOrbAction
b _080554BA
_08054E1A:
adds r0, r7, 0
@ -4849,7 +4849,7 @@ _08054E6E:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805B8B0
bl SkullBashMoveAction
b _080554BA
_08054E7C:
adds r0, r7, 0
@ -4905,7 +4905,7 @@ _08054EDE:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_8057A98
bl TormentMoveAction
b _080554BA
_08054EEC:
adds r0, r7, 0
@ -4961,7 +4961,7 @@ _08054F4E:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805C2AC
bl FillInOrbAction
b _080554BA
_08054F5C:
adds r0, r7, 0
@ -5031,7 +5031,7 @@ _08054FDA:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805983C
bl DiveMoveAction
b _080554BA
_08054FE8:
adds r0, r7, 0
@ -5066,7 +5066,7 @@ _08055020:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805BF40
bl TrapbustOrbAction
b _080554BA
_0805502E:
adds r0, r7, 0
@ -5087,7 +5087,7 @@ _0805504A:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805810C
bl GrudgeMoveAction
b _080554BA
_08055058:
adds r0, r7, 0
@ -5236,7 +5236,7 @@ _08055174:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805A640
bl SpitUpMoveAction
b _080554BA
_08055182:
adds r0, r7, 0
@ -5341,7 +5341,7 @@ _08055246:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_8059C8C
bl HelpingHandMoveAction
b _080554BA
_08055254:
adds r0, r7, 0
@ -5390,7 +5390,7 @@ _080552A8:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805B038
bl TransformMoveAction
b _080554BA
_080552B6:
adds r0, r7, 0
@ -5425,7 +5425,7 @@ _080552EE:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805BD88
bl TransferOrbAction
b _080554BA
_080552FC:
adds r0, r7, 0
@ -5474,7 +5474,7 @@ _08055350:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805BED4
bl EscapeOrbAction
b _080554BA
_0805535E:
adds r0, r7, 0
@ -5502,7 +5502,7 @@ _08055388:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_8059340
bl SketchMoveAction
b _080554BA
_08055396:
adds r0, r7, 0
@ -5523,7 +5523,7 @@ _080553B2:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_8059290
bl SkillSwapMoveAction
b _080554BA
_080553C0:
adds r0, r7, 0
@ -5537,7 +5537,7 @@ _080553CE:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805BBA8
bl CleanseOrbAction
b _080554BA
_080553DC:
adds r0, r7, 0
@ -5635,7 +5635,7 @@ _08055492:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_805B464
bl MimicMoveAction
b _080554BA
_080554A0:
adds r0, r7, 0
@ -10577,8 +10577,8 @@ _08057A90: .4byte gUnknown_202DF98
_08057A94: .4byte gUnknown_80FC7EC
thumb_func_end sub_8057A0C
thumb_func_start sub_8057A98
sub_8057A98:
thumb_func_start TormentMoveAction
TormentMoveAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@ -10719,7 +10719,7 @@ _08057B9C:
bx r1
.align 2, 0
_08057BB0: .4byte gUnknown_80FCFE4
thumb_func_end sub_8057A98
thumb_func_end TormentMoveAction
thumb_func_start sub_8057BB4
sub_8057BB4:
@ -11439,8 +11439,8 @@ _080580F4:
bx r1
thumb_func_end sub_805805C
thumb_func_start sub_805810C
sub_805810C:
thumb_func_start GrudgeMoveAction
GrudgeMoveAction:
push {r4-r7,lr}
adds r6, r0, 0
adds r5, r1, 0
@ -11478,7 +11478,7 @@ _0805814E:
bx r1
.align 2, 0
_08058158: .4byte gUnknown_80FD294
thumb_func_end sub_805810C
thumb_func_end GrudgeMoveAction
thumb_func_start sub_805815C
sub_805815C:
@ -12740,8 +12740,8 @@ _08058AA4: .4byte gUnknown_8106A4C
_08058AA8: .4byte gUnknown_8106A50
thumb_func_end sub_8058A7C
thumb_func_start sub_8058AAC
sub_8058AAC:
thumb_func_start SkyAttackMoveAction
SkyAttackMoveAction:
push {r4-r7,lr}
mov r7, r8
push {r7}
@ -12810,7 +12810,7 @@ _08058B2A:
bx r1
.align 2, 0
_08058B38: .4byte gUnknown_80FACC4
thumb_func_end sub_8058AAC
thumb_func_end SkyAttackMoveAction
thumb_func_start sub_8058B3C
sub_8058B3C:
@ -13804,8 +13804,8 @@ _0805927E:
bx r1
thumb_func_end sub_80591E4
thumb_func_start sub_8059290
sub_8059290:
thumb_func_start SkillSwapMoveAction
SkillSwapMoveAction:
push {r4-r7,lr}
mov r7, r8
push {r7}
@ -13890,10 +13890,10 @@ _0805932E:
.align 2, 0
_08059338: .4byte gUnknown_203B418
_0805933C: .4byte gUnknown_80FC888
thumb_func_end sub_8059290
thumb_func_end SkillSwapMoveAction
thumb_func_start sub_8059340
sub_8059340:
thumb_func_start SketchMoveAction
SketchMoveAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@ -14008,7 +14008,7 @@ _0805940A:
.align 2, 0
_0805941C: .4byte gUnknown_202DE58
_08059420: .4byte gUnknown_80FE38C
thumb_func_end sub_8059340
thumb_func_end SketchMoveAction
thumb_func_start sub_8059424
sub_8059424:
@ -14549,8 +14549,8 @@ sub_80597F0:
bx r1
thumb_func_end sub_80597F0
thumb_func_start sub_805983C
sub_805983C:
thumb_func_start DiveMoveAction
DiveMoveAction:
push {r4-r7,lr}
mov r7, r8
push {r7}
@ -14616,7 +14616,7 @@ _080598B8:
bx r1
.align 2, 0
_080598C8: .4byte gUnknown_80FAD2C
thumb_func_end sub_805983C
thumb_func_end DiveMoveAction
thumb_func_start sub_80598CC
sub_80598CC:
@ -15126,8 +15126,8 @@ sub_8059C80:
bx r1
thumb_func_end sub_8059C80
thumb_func_start sub_8059C8C
sub_8059C8C:
thumb_func_start HelpingHandMoveAction
HelpingHandMoveAction:
push {r4-r6,lr}
adds r5, r0, 0
adds r4, r1, 0
@ -15163,7 +15163,7 @@ _08059CC6:
.align 2, 0
_08059CD0: .4byte gUnknown_8106A4C
_08059CD4: .4byte gUnknown_8106A50
thumb_func_end sub_8059C8C
thumb_func_end HelpingHandMoveAction
thumb_func_start sub_8059CD8
sub_8059CD8:
@ -16432,8 +16432,8 @@ _0805A632:
_0805A63C: .4byte gUnknown_80F4DD2
thumb_func_end sub_805A5E8
thumb_func_start sub_805A640
sub_805A640:
thumb_func_start SpitUpMoveAction
SpitUpMoveAction:
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
@ -16469,7 +16469,7 @@ _0805A678:
bx r1
.align 2, 0
_0805A684: .4byte gUnknown_80FCA3C
thumb_func_end sub_805A640
thumb_func_end SpitUpMoveAction
thumb_func_start sub_805A688
sub_805A688:
@ -17721,8 +17721,8 @@ sub_805B028:
bx r1
thumb_func_end sub_805B028
thumb_func_start sub_805B038
sub_805B038:
thumb_func_start TransformMoveAction
TransformMoveAction:
push {r4-r6,lr}
adds r5, r0, 0
adds r6, r1, 0
@ -17751,7 +17751,7 @@ _0805B068:
bx r1
.align 2, 0
_0805B070: .4byte gUnknown_80FEFF4
thumb_func_end sub_805B038
thumb_func_end TransformMoveAction
thumb_func_start sub_805B074
sub_805B074:
@ -17977,8 +17977,8 @@ sub_805B214:
bx r1
thumb_func_end sub_805B214
thumb_func_start sub_805B220
sub_805B220:
thumb_func_start TrapperOrbAction
TrapperOrbAction:
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
@ -18012,7 +18012,7 @@ _0805B252:
bx r1
.align 2, 0
_0805B260: .4byte gUnknown_80FC5A8
thumb_func_end sub_805B220
thumb_func_end TrapperOrbAction
thumb_func_start sub_805B264
sub_805B264:
@ -18297,8 +18297,8 @@ sub_805B454:
bx r1
thumb_func_end sub_805B454
thumb_func_start sub_805B464
sub_805B464:
thumb_func_start MimicMoveAction
MimicMoveAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@ -18404,7 +18404,7 @@ _0805B524:
bx r1
.align 2, 0
_0805B538: .4byte gUnknown_80FDD00
thumb_func_end sub_805B464
thumb_func_end MimicMoveAction
thumb_func_start sub_805B53C
sub_805B53C:
@ -18864,8 +18864,8 @@ sub_805B884:
_0805B8AC: .4byte gUnknown_8106A4C
thumb_func_end sub_805B884
thumb_func_start sub_805B8B0
sub_805B8B0:
thumb_func_start SkullBashMoveAction
SkullBashMoveAction:
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
@ -18910,7 +18910,7 @@ _0805B900:
bx r1
.align 2, 0
_0805B90C: .4byte gUnknown_80FAFF0
thumb_func_end sub_805B8B0
thumb_func_end SkullBashMoveAction
thumb_func_start sub_805B910
sub_805B910:
@ -19256,8 +19256,8 @@ sub_805BB98:
bx r1
thumb_func_end sub_805BB98
thumb_func_start sub_805BBA8
sub_805BBA8:
thumb_func_start CleanseOrbAction
CleanseOrbAction:
push {r4-r7,lr}
mov r7, r8
push {r7}
@ -19358,7 +19358,7 @@ _0805BC60:
bx r1
.align 2, 0
_0805BC6C: .4byte gUnknown_80FC920
thumb_func_end sub_805BBA8
thumb_func_end CleanseOrbAction
thumb_func_start sub_805BC70
sub_805BC70:
@ -19517,8 +19517,8 @@ sub_805BD7C:
bx r1
thumb_func_end sub_805BD7C
thumb_func_start sub_805BD88
sub_805BD88:
thumb_func_start TransferOrbAction
TransferOrbAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@ -19644,7 +19644,7 @@ _0805BE78:
.align 2, 0
_0805BE88: .4byte gUnknown_202DF98
_0805BE8C: .4byte gUnknown_80FD450
thumb_func_end sub_805BD88
thumb_func_end TransferOrbAction
thumb_func_start sub_805BE90
sub_805BE90:
@ -19694,8 +19694,8 @@ sub_805BEC8:
bx r1
thumb_func_end sub_805BEC8
thumb_func_start sub_805BED4
sub_805BED4:
thumb_func_start EscapeOrbAction
EscapeOrbAction:
push {r4-r6,lr}
adds r4, r0, 0
adds r6, r1, 0
@ -19739,7 +19739,7 @@ _0805BF26:
bx r1
.align 2, 0
_0805BF30: .4byte gUnknown_80FD4C4
thumb_func_end sub_805BED4
thumb_func_end EscapeOrbAction
thumb_func_start sub_805BF34
sub_805BF34:
@ -19750,8 +19750,8 @@ sub_805BF34:
bx r1
thumb_func_end sub_805BF34
thumb_func_start sub_805BF40
sub_805BF40:
thumb_func_start TrapbustOrbAction
TrapbustOrbAction:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@ -19908,7 +19908,7 @@ _0805C06A:
bx r1
.align 2, 0
_0805C07C: .4byte gUnknown_80FD1CC
thumb_func_end sub_805BF40
thumb_func_end TrapbustOrbAction
thumb_func_start sub_805C080
sub_805C080:
@ -20209,8 +20209,8 @@ sub_805C2A0:
bx r1
thumb_func_end sub_805C2A0
thumb_func_start sub_805C2AC
sub_805C2AC:
thumb_func_start FillInOrbAction
FillInOrbAction:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@ -20356,7 +20356,7 @@ _0805C3CA:
bx r1
.align 2, 0
_0805C3D8: .4byte gUnknown_80FD0B8
thumb_func_end sub_805C2AC
thumb_func_end FillInOrbAction
thumb_func_start sub_805C3DC
sub_805C3DC:

View File

@ -5,34 +5,6 @@
.text
thumb_func_start sub_8097F74
sub_8097F74:
push {r4,lr}
ldr r4, _08097FA0
ldr r0, [r4]
movs r1, 0
movs r2, 0x64
bl memset
movs r2, 0
ldr r3, _08097FA4
_08097F86:
ldr r0, [r4]
adds r0, 0x58
adds r0, r2
ldrb r1, [r3, 0x2]
strb r1, [r0]
adds r3, 0x4
adds r2, 0x1
cmp r2, 0xB
ble _08097F86
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08097FA0: .4byte gUnknown_203B498
_08097FA4: .4byte gExclusivePokemon
thumb_func_end sub_8097F74
thumb_func_start sub_8097FA8
sub_8097FA8:
lsls r0, 24

View File

@ -1481,7 +1481,7 @@ _0809DEE8:
str r0, [r1]
add r0, sp, 0x4
ldrh r0, [r0, 0x2]
bl sub_8011940
bl IsEqualtoBGTrack
lsls r0, 24
cmp r0, 0
bne _0809DF06

View File

@ -5,276 +5,6 @@
.text
thumb_func_start sub_800C074
sub_800C074:
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
lsrs r5, r0, 16
mov r8, r5
lsls r1, 16
lsrs r6, r1, 16
ldr r0, _0800C0FC
cmp r5, r0
bne _0800C08C
b _0800C208
_0800C08C:
movs r7, 0x80
lsls r7, 1
cmp r6, r7
bls _0800C096
adds r6, r7, 0
_0800C096:
adds r0, r5, 0
bl sub_800CACC
lsls r0, 24
cmp r0, 0
bne _0800C0A4
b _0800C1B0
_0800C0A4:
adds r0, r5, 0
bl sub_800CAE0
lsls r0, 16
lsrs r7, r0, 16
cmp r7, 0x1
beq _0800C0B4
b _0800C1D0
_0800C0B4:
bl DisableInterrupts
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r6, _0800C100
strh r5, [r6]
ldr r4, _0800C104
ldrh r0, [r4]
adds r2, r0, 0
cmp r2, 0
bne _0800C144
ldr r0, _0800C108
ldrh r1, [r0]
ldr r0, _0800C10C
cmp r1, r0
beq _0800C12C
ldr r0, _0800C110
ldrh r1, [r0]
subs r0, r1, 0x1
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bhi _0800C120
strh r7, [r4]
ldr r1, _0800C114
movs r0, 0x10
strh r0, [r1]
ldr r0, _0800C118
strb r2, [r0]
ldr r0, _0800C11C
movs r1, 0x1
bl m4aMPlayFadeOutTemporarily
b _0800C15E
.align 2, 0
_0800C0FC: .4byte 0x000003e5
_0800C100: .4byte gUnknown_202D68E
_0800C104: .4byte gUnknown_202D690
_0800C108: .4byte gCurrentBGSong
_0800C10C: .4byte 0x000003e7
_0800C110: .4byte gBGMusicPlayerState
_0800C114: .4byte gUnknown_202D692
_0800C118: .4byte gUnknown_202D694
_0800C11C: .4byte gUnknown_20008F0
_0800C120:
lsls r0, r1, 16
lsrs r0, 16
cmp r0, 0x3
bne _0800C12C
movs r0, 0x2
b _0800C15C
_0800C12C:
movs r0, 0x3
strh r0, [r4]
ldr r0, _0800C140
bl m4aMPlayStop
ldrh r0, [r6]
bl m4aSongNumStart
b _0800C15E
.align 2, 0
_0800C140: .4byte gUnknown_20008F0
_0800C144:
subs r0, 0x1
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bls _0800C15E
ldr r0, _0800C17C
bl m4aMPlayStop
ldrh r0, [r6]
bl m4aSongNumStart
movs r0, 0x3
_0800C15C:
strh r0, [r4]
_0800C15E:
ldr r0, _0800C180
ldrh r0, [r0]
cmp r0, 0x26
bgt _0800C184
cmp r0, 0x25
bge _0800C19A
cmp r0, 0x1A
blt _0800C1A0
cmp r0, 0x1F
ble _0800C19A
cmp r0, 0x23
bgt _0800C1A0
cmp r0, 0x22
blt _0800C1A0
b _0800C19A
.align 2, 0
_0800C17C: .4byte gUnknown_20008F0
_0800C180: .4byte gCurrentBGSong
_0800C184:
cmp r0, 0x7A
beq _0800C19A
cmp r0, 0x7A
bgt _0800C196
cmp r0, 0x77
bgt _0800C1A0
cmp r0, 0x75
blt _0800C1A0
b _0800C19A
_0800C196:
cmp r0, 0x7F
bne _0800C1A0
_0800C19A:
ldr r1, _0800C1AC
movs r0, 0x1
strb r0, [r1]
_0800C1A0:
mov r0, r8
cmp r0, 0
beq _0800C208
bl EnableInterrupts
b _0800C208
.align 2, 0
_0800C1AC: .4byte gUnknown_202D694
_0800C1B0:
adds r0, r5, 0
bl sub_800CAAC
lsls r0, 24
cmp r0, 0
beq _0800C208
adds r0, r5, 0
bl sub_800CAE0
lsls r0, 16
lsrs r0, 16
lsls r2, r0, 3
ldr r1, _0800C1D8
adds r4, r2, r1
cmp r0, 0x1
bhi _0800C1DC
_0800C1D0:
adds r0, r5, 0
bl nullsub_20
b _0800C208
.align 2, 0
_0800C1D8: .4byte gUnknown_3000FD8
_0800C1DC:
bl DisableInterrupts
lsls r0, 24
lsrs r5, r0, 24
mov r0, r8
bl m4aSongNumStart
movs r0, 0x1
strh r0, [r4]
mov r0, r8
strh r0, [r4, 0x2]
cmp r6, r7
bne _0800C1FA
movs r0, 0
b _0800C1FC
_0800C1FA:
movs r0, 0x1
_0800C1FC:
strb r0, [r4, 0x6]
strh r6, [r4, 0x4]
cmp r5, 0
beq _0800C208
bl EnableInterrupts
_0800C208:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_800C074
thumb_func_start sub_800C214
sub_800C214:
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
lsrs r5, r0, 16
lsls r1, 16
lsrs r7, r1, 16
movs r0, 0x80
lsls r0, 1
cmp r7, r0
bls _0800C22C
adds r7, r0, 0
_0800C22C:
adds r0, r5, 0
bl sub_800CACC
lsls r0, 24
cmp r0, 0
bne _0800C286
adds r0, r5, 0
bl sub_800CAAC
lsls r0, 24
cmp r0, 0
beq _0800C286
adds r0, r5, 0
bl sub_800CAE0
lsls r0, 16
lsrs r0, 16
ldr r2, _0800C290
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r2
ldr r1, [r1]
mov r8, r1
lsls r2, r0, 3
ldr r1, _0800C294
adds r4, r2, r1
cmp r0, 0x1
bls _0800C286
bl DisableInterrupts
lsls r0, 24
lsrs r6, r0, 24
ldrh r0, [r4, 0x2]
cmp r0, r5
bne _0800C27E
mov r0, r8
movs r1, 0xF
adds r2, r7, 0
bl m4aMPlayVolumeControl
_0800C27E:
cmp r6, 0
beq _0800C286
bl EnableInterrupts
_0800C286:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800C290: .4byte gMPlayTable
_0800C294: .4byte gUnknown_3000FD8
thumb_func_end sub_800C214
thumb_func_start sub_800C298
sub_800C298:
push {r4-r7,lr}

View File

@ -2393,7 +2393,7 @@ _0802AEE2:
ldr r0, [r0]
str r0, [r1]
_0802AEE6:
bl sub_8011854
bl xxx_call_start_bg_music
b _0802B2AA
_0802AEEC:
ldr r0, _0802AEF0
@ -18996,7 +18996,7 @@ _080333DA:
_080333DC:
str r0, [r1]
_080333DE:
bl sub_8011854
bl xxx_call_start_bg_music
b _080338B4
_080333E4:
ldr r0, _080333E8
@ -26254,7 +26254,7 @@ _08036D44:
ldr r1, [r4]
str r0, [r1, 0xC]
_08036D66:
bl sub_8011854
bl xxx_call_start_bg_music
b _08036DFA
.align 2, 0
_08036D6C: .4byte gUnknown_203B358
@ -27375,7 +27375,7 @@ _080376AE:
ldr r1, [r4]
str r0, [r1, 0x4]
_080376BE:
bl sub_8011854
bl xxx_call_start_bg_music
pop {r4-r6}
pop {r0}
bx r0
@ -32681,7 +32681,7 @@ _0803A138:
movs r2, 0xB4
bl memcpy
_0803A14C:
bl sub_8011854
bl xxx_call_start_bg_music
b _0803A1AA
_0803A152:
ldr r0, _0803A160

View File

@ -1,8 +1,8 @@
#ifndef GUARD_MUSIC_H
#define GUARD_MUSIC_H
void sub_800C93C(void);
void sub_800C9CC(void);
void StopBGMusicVSync(void);
void StartBGMusicVSync(void);
u8 sub_800CA38(u32 songIndex);
void StartNewBGM(u16 songIndex);
bool8 IsBGSong(u32 songIndex);

View File

@ -78,10 +78,8 @@ SECTIONS {
src/code_800D090.o(.text);
asm/code_800D090.o(.text);
src/code_80118A4.o(.text);
asm/code_80118A4.o(.text);
src/code_80118A4_1.o(.text);
src/fatal_system.o(.text);
asm/fatal_system_1.o(.text);
src/debug.o(.text);
asm/debug.o(.text);
src/save.o(.text);
asm/save.o(.text);
src/save_mid.o(.text);

View File

@ -16,58 +16,17 @@ extern void sub_800CC44(s32 r0, s32 r1);
void sub_80060A8(void)
{
bool32 temp;
bool32 preload;
bool32 preload2;
gUnknown_2026E3C = gUnknown_2026E58;
preload = gUnknown_2026E54;
temp = FALSE;
if (!gUnknown_2026E54)
{
temp = TRUE;
}
gUnknown_2026E54 = temp;
preload2 = gUnknown_2026E50;
temp = FALSE;
if (!gUnknown_2026E50)
{
temp = TRUE;
}
gUnknown_2026E50 = temp;
gUnknown_2026E54 = !gUnknown_2026E54;
gUnknown_2026E50 = !gUnknown_2026E50;
gUnknown_2026E38 = FALSE;
}
void sub_80060EC(void)
{
bool32 temp;
bool32 preload;
bool32 preload2;
gUnknown_2026E3C = gUnknown_2026E58;
preload = gUnknown_2026E54;
temp = FALSE;
if (!gUnknown_2026E54)
{
temp = TRUE;
}
gUnknown_2026E54 = temp;
preload2 = gUnknown_2026E50;
temp = FALSE;
if (!gUnknown_2026E50)
{
temp = TRUE;
}
gUnknown_2026E50 = temp;
gUnknown_2026E54 = !gUnknown_2026E54;
gUnknown_2026E50 = !gUnknown_2026E50;
sub_800CC44((gUnknown_2026E4E & (0xF8 << 5)) >> 8, gUnknown_2026E4E & 0x1F);
gUnknown_2026E38 = TRUE;
}

View File

@ -8,10 +8,10 @@ extern u8 gUnknown_202D6B9;
extern u16 gUnknown_202D7FA;
extern u8 gUnknown_202D7FE;
extern struct BGControlStruct gUnknown_202D698;
extern struct BGControlStruct gUnknown_202D6A0;
extern struct BGControlStruct gUnknown_202D6A8;
extern struct BGControlStruct gUnknown_202D6B0;
extern struct BGControlStruct gBG0Control;
extern struct BGControlStruct gBG1Control;
extern struct BGControlStruct gBG2Control;
extern struct BGControlStruct gBG3Control;
void ReadKeyInput(struct Inputs *r0)
{
@ -93,26 +93,26 @@ void sub_800CC44(s32 r0, s32 r1)
void SetBG0RegOffsets(s32 xoffset, s32 yoffset)
{
gUnknown_202D698.hofs = xoffset;
gUnknown_202D698.vofs = yoffset;
gBG0Control.hofs = xoffset;
gBG0Control.vofs = yoffset;
}
void SetBG1RegOffsets(s32 xoffset, s32 yoffset)
{
gUnknown_202D6A0.hofs = xoffset;
gUnknown_202D6A0.vofs = yoffset;
gBG1Control.hofs = xoffset;
gBG1Control.vofs = yoffset;
}
void SetBG2RegOffsets(s32 xoffset, s32 yoffset)
{
gUnknown_202D6A8.hofs = xoffset;
gUnknown_202D6A8.vofs = yoffset;
gBG2Control.hofs = xoffset;
gBG2Control.vofs = yoffset;
}
void SetBG3RegOffsets(s32 xoffset, s32 yoffset)
{
gUnknown_202D6B0.hofs = xoffset;
gUnknown_202D6B0.vofs = yoffset;
gBG3Control.hofs = xoffset;
gBG3Control.vofs = yoffset;
}
void SetBGRegOffsets(s32 reg, u32 xoffset, s32 yoffset)
@ -131,16 +131,16 @@ void SetBGRegXOffset(s32 reg, s32 offset)
switch (reg) {
default:
case 0:
gUnknown_202D698.hofs = offset;
gBG0Control.hofs = offset;
break;
case 1:
gUnknown_202D6A0.hofs = offset;
gBG1Control.hofs = offset;
break;
case 2:
gUnknown_202D6A8.hofs = offset;
gBG2Control.hofs = offset;
break;
case 3:
gUnknown_202D6B0.hofs = offset;
gBG3Control.hofs = offset;
break;
}
}
@ -150,16 +150,16 @@ void SetBGRegYOffset(s32 reg, s32 offset)
switch (reg) {
default:
case 0:
gUnknown_202D698.vofs = offset;
gBG0Control.vofs = offset;
break;
case 1:
gUnknown_202D6A0.vofs = offset;
gBG1Control.vofs = offset;
break;
case 2:
gUnknown_202D6A8.vofs = offset;
gBG2Control.vofs = offset;
break;
case 3:
gUnknown_202D6B0.vofs = offset;
gBG3Control.vofs = offset;
break;
}
}
@ -167,7 +167,7 @@ void SetBGRegYOffset(s32 reg, s32 offset)
void sub_800CD64(s32 r0, u8 r1)
{
gUnknown_202D7FE = r1;
gUnknown_202D6A8.unk2 = r0 ? 0x8000 : 0;
gBG2Control.unk2 = r0 ? 0x8000 : 0;
}
void SetBGOBJEnableFlags(u32 mask)

View File

@ -2,11 +2,20 @@
#include <stdio.h>
#include "gba/gba.h"
#include "config.h"
#include "global.h"
extern void SoundBiasReset(void);
extern void SoundBiasSet(void);
struct unkStruct_202DB60
{
u32 unk0;
u32 unk4;
};
extern struct unkStruct_202DB60 gUnknown_202DB60;
void Hang(void)
{
while(1)
@ -62,7 +71,6 @@ void sub_800D098(void)
REG_IME = 1;
// Good after here
while(REG_VCOUNT <= 159){}
REG_DISPCNT = dispcnt_save; // restore DISPCNT
while(REG_KEYINPUT != 0x3ff){} // All buttons
@ -75,3 +83,53 @@ void sub_800D158(u8 *buffer, const char *text, ...)
vsprintf(buffer, text, vArgv);
va_end(vArgv);
}
// Unused
void sub_800D16C(const char *text, ...)
{
char buffer[1024];
va_list vArgv;
va_start(vArgv, text);
vsprintf(buffer, text, vArgv);
va_end(vArgv);
}
// Unused
void sub_800D10A(const char *r0, u32 r1, u32 r2, u32 r3, ...)
{
}
void nullsub_183(void)
{
}
void nullsub_188(void)
{
}
void nullsub_184(void)
{
}
u32 sub_800D1B4(void)
{
return 0;
}
u32 sub_800D1B8(u32 r0, u32 r1, u32 r2)
{
return r2;
}
void nullsub_187(void)
{
}
u32 sub_800D1C0(void)
{
if(gUnknown_202DB60.unk0 != 2)
return 0;
if(gUnknown_202DB60.unk4 != 2)
return 0;
return 1;
}

View File

@ -1,12 +1,15 @@
#include <stdarg.h>
#include <stdio.h>
#include "global.h"
#include "music.h"
#include "constants/bg_music.h"
#include "time.h"
#include "bg.h"
#include "input.h"
#include "config.h"
void sub_8011924(void);
void nullsub_26(void);
extern u8 sub_80023E4(u8);
extern void sub_800BF48(u16 r0);
@ -18,15 +21,6 @@ extern void sub_800C074(u16 r0, u16 r1);
extern void sub_800C298(u16 r0);
extern u8 sub_800C5D0(u16 r0);
extern void nullsub_27(void);
extern void nullsub_29(void);
extern void nullsub_30(void);
extern void nullsub_31(void);
extern void nullsub_32(void);
extern void nullsub_28(void);
extern int sprintf(char *, const char *, ...);
extern struct PlayTimeStruct *gUnknown_203B47C;
struct UnkSaveStruct1
@ -50,23 +44,12 @@ struct UnkBgStruct
};
extern struct UnkBgStruct *gUnknown_203B0E4;
struct DebugLocation
{
char *file;
u32 line;
char *func;
};
extern u16 gUnknown_80D4144[];
extern s16 gUnknown_202DE20;
extern s16 gUnknown_202DE22;
extern s16 gUnknown_202DE24;
extern u32 gUnknown_202DE1C;
extern u32 gUnknown_203B14C;
extern const char gNotEntryText[];
extern const char gFuncFileLineString[];
extern const char gFuncFileLineStringWPrefix[];
void nullsub_8(u32);
void sub_8005838(u32, u32);
@ -114,32 +97,23 @@ void sub_801169C(void)
void sub_8011760(void)
{
if(sub_80023E4(0xD) != 0)
{
StartNewBGM(MUS_WORLD_CALAMITY);
return;
}
if(sub_80023E4(0xC) != 0)
{
else if(sub_80023E4(0xC) != 0)
StartNewBGM(MUS_POKEMON_SQUARE);
}
}
void sub_801178C(void)
{
if(sub_80023E4(0xD) != 0)
{
StartNewBGM(MUS_WORLD_CALAMITY);
return;
}
StartNewBGM(MUS_POKEMON_SQUARE);
else
StartNewBGM(MUS_POKEMON_SQUARE);
}
void sub_80117AC(void)
{
if(sub_80023E4(0xD) == 0)
{
sub_800BFD0(0x1E);
}
}
void sub_80117C4(void)
@ -149,17 +123,19 @@ void sub_80117C4(void)
void sub_80117D0(void)
{
sub_800C074(0x97 << 1, 0x80 << 1);
sub_800C074(0x97 << 1, 256);
}
// Some sound effect
void sub_80117E4(void)
{
sub_800C074(0x12f, 0x80 << 1);
sub_800C074(303, 256);
}
// Some sound effect
void sub_80117F8(void)
{
sub_800C074(0x12d, 0x80 << 1);
sub_800C074(301, 256);
}
void sub_801180C(void)
@ -172,15 +148,15 @@ void sub_801180C(void)
void sub_8011830(void)
{
sub_800C93C();
StopBGMusicVSync();
gUnknown_202DE20 = 0;
gUnknown_202DE22 = 0;
gUnknown_202DE24 = 0;
}
void sub_8011854(void)
void xxx_call_start_bg_music(void)
{
sub_800C9CC();
StartBGMusicVSync();
}
void sub_8011860(void)
@ -238,40 +214,40 @@ void sub_8011930(u16 r0)
sub_800BFD0(r0);
}
u32 sub_8011940(u16 r0)
u32 IsEqualtoBGTrack(u16 songIndex)
{
u32 temp;
temp = GetCurrentBGSong();
if(r0 == 999)
if(songIndex == 999)
return temp != 999;
return temp == r0;
return temp == songIndex;
}
void sub_8011974(u16 r0, u16 r1)
void sub_8011974(u16 songIndex, u16 r1)
{
sub_800C074(r0, r1);
sub_800C074(songIndex, r1);
}
void sub_8011988(u16 r0)
void sub_8011988(u16 songIndex)
{
sub_800C074(r0, 0x80 << 1);
sub_800C074(songIndex, 0x80 << 1);
}
void sub_801199C(u16 r0)
void sub_801199C(u16 songIndex)
{
sub_800C298(r0);
sub_800C298(songIndex);
}
void sub_80119AC(u16 r0, u16 r1)
void sub_80119AC(u16 songIndex, u16 r1)
{
sub_800C3F8(r0, r1);
sub_800C3F8(songIndex, r1);
}
u8 sub_80119C0(u16 r0)
u8 sub_80119C0(u16 songIndex)
{
return sub_800C5D0(r0);
return sub_800C5D0(songIndex);
}
void sub_80119D4(u32 r0)
@ -294,41 +270,3 @@ void sub_8011A2C(u32 r0)
{
gUnknown_202DE1C = r0;
}
void NDS_DebugInit(void)
{
nullsub_26();
nullsub_27();
nullsub_29();
nullsub_30();
nullsub_31();
nullsub_32();
nullsub_28();
gUnknown_203B14C = 1; // Maybe a flag saying Debug is on?
}
void nullsub_25(void)
{
}
void nullsub_26(void)
{
}
// Unused
void PrintFuncFileLineOrNotEntry(char * r0, struct DebugLocation *r1)
{
if(r1 != 0)
{
sprintf(r0, gFuncFileLineString, r1->func, r1->file, r1->line);
}
else
{
sprintf(r0, gNotEntryText);
}
}
void PrintFuncFileLine(char *buf, struct DebugLocation *loc, char* prefix)
{
sprintf(buf, gFuncFileLineStringWPrefix, prefix, loc->func, loc->file, loc->line);
}

View File

@ -1,55 +0,0 @@
#include "global.h"
extern u8 gUnknown_203B150;
void PrintFuncFileLine(char *r0, const char *r1, ...);
extern const char gUnknown_80D421C;
void nullsub_199(void)
{
}
void nullsub_27(void)
{
}
void sub_8011B08(void)
{
gUnknown_203B150 = 1;
}
void sub_8011B14(void)
{
gUnknown_203B150 = 0;
}
u8 sub_8011B20(void)
{
gUnknown_203B150 = !gUnknown_203B150;
return gUnknown_203B150;
}
// unused
u8 sub_8011B3C(void)
{
return gUnknown_203B150;
}
// unused
void nullsub_137(void)
{
}
// TODO merge with fatal_system
void FatalErrorPrintFuncFileLine(const char *r0, const char *r1)
{
char buf[0x100];
if(r0 != 0){
PrintFuncFileLine(buf, r1, r0);
}
else
{
PrintFuncFileLine(buf, r1, &gUnknown_80D421C);
}
}

View File

@ -119,16 +119,10 @@ void sub_808EB48(u8 *r0, s32 r1)
bool8 sub_808EB7C(s32 r0, u8 r1)
{
u8 return_var;
if(r1 == 0)
{
return FALSE;
}
return_var = FALSE;
if(gUnknown_810A390[r1] <= r0)
{
return_var = TRUE;
}
return return_var;
return gUnknown_810A390[r1] <= r0;
}

View File

@ -1,4 +1,13 @@
#include "global.h"
#define NUM_EXCLUSIVE_POKEMON 12
struct ExclusivePokemon
{
u16 poke_id;
bool8 in_rrt; // red rescue team
bool8 in_brt; // blue rescue team
};
extern struct ExclusivePokemon gExclusivePokemon[];
extern u8 gUnknown_810ACC0[];
extern u8 *gUnknown_203B498;
@ -6,14 +15,7 @@ extern u8 gUnknown_2039840;
bool8 sub_8097F40(u32 r0)
{
bool8 temp;
temp = FALSE;
if(gUnknown_810ACC0[r0] == 2)
{
temp = TRUE;
}
return temp;
return gUnknown_810ACC0[r0] == 2;
}
void sub_8097F5C(void)
@ -26,3 +28,45 @@ u8 *sub_8097F6C(void)
return &gUnknown_2039840;
}
#ifdef NONMATCHING
void sub_8097F74(void)
{
s32 counter;
memset(gUnknown_203B498, 0, 0x64);
for(counter = 0; counter < NUM_EXCLUSIVE_POKEMON; counter++)
{
// TODO fix switching of addition statements (when it figures out the index)
gUnknown_203B498[counter + 0x58] = gExclusivePokemon[counter].in_rrt;
}
}
#else
NAKED
void sub_8097F74(void)
{
asm_unified("\tpush {r4,lr}\n"
"\tldr r4, _08097FA0\n"
"\tldr r0, [r4]\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0x64\n"
"\tbl memset\n"
"\tmovs r2, 0\n"
"\tldr r3, _08097FA4\n"
"_08097F86:\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x58\n"
"\tadds r0, r2\n"
"\tldrb r1, [r3, 0x2]\n"
"\tstrb r1, [r0]\n"
"\tadds r3, 0x4\n"
"\tadds r2, 0x1\n"
"\tcmp r2, 0xB\n"
"\tble _08097F86\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_08097FA0: .4byte gUnknown_203B498\n"
"_08097FA4: .4byte gExclusivePokemon");
}
#endif

198
src/debug.c Normal file
View File

@ -0,0 +1,198 @@
#include <stdarg.h>
#include <stdio.h>
#include "gba/gba.h"
#include "config.h"
#include "debug.h"
extern void Hang();
extern u8 gUnknown_203B150;
extern bool32 gNDS_DebugEnabled;
extern const char gUnknown_80D421C[];
extern const char gNotMountText[];
extern const char gNotEntryText[];
extern const char gFuncFileLineString[];
extern const char gFuncFileLineStringWPrefix[];
extern const char gFuncFileLineString2[];
void NDS_DebugInit(void)
{
nullsub_26();
nullsub_27();
nullsub_29();
nullsub_30();
nullsub_31();
nullsub_32();
nullsub_28();
gNDS_DebugEnabled = TRUE;
}
void nullsub_25(void)
{
}
void nullsub_26(void)
{
}
// Unused
void PrintFuncFileLineOrNotEntry(char * buf, struct DebugLocation *debug)
{
if(debug != NULL)
{
sprintf(buf, gFuncFileLineString, debug->func, debug->file, debug->line);
}
else
{
sprintf(buf, gNotEntryText);
}
}
void PrintFuncFileLine(char *buf, struct DebugLocation *loc, const char* prefix)
{
sprintf(buf, gFuncFileLineStringWPrefix, prefix, loc->func, loc->file, loc->line);
}
void PrintMessageWithFuncFileLine(u8 *buffer, struct DebugLocation *debug, const char *text, ...)
{
va_list vArgv;
u32 length;
va_start(vArgv, text);
vsprintf(buffer, text, vArgv);
length = strlen(buffer);
sprintf(&buffer[length], gFuncFileLineString2, debug->func, debug->file, debug->line);
va_end(vArgv);
}
void nullsub_199(void)
{
}
void nullsub_27(void)
{
}
void sub_8011B08(void)
{
gUnknown_203B150 = 1;
}
void sub_8011B14(void)
{
gUnknown_203B150 = 0;
}
u8 sub_8011B20(void)
{
gUnknown_203B150 = !gUnknown_203B150;
return gUnknown_203B150;
}
// unused
u8 sub_8011B3C(void)
{
return gUnknown_203B150;
}
// unused
void nullsub_137(void)
{
}
void FatalErrorPrintFuncFileLine(const char *r0, struct DebugLocation *debug)
{
char buf[0x100];
if(r0 != NULL){
PrintFuncFileLine(buf, debug, r0);
}
else
{
PrintFuncFileLine(buf, debug, gUnknown_80D421C);
}
}
void FatalErrorFormatMessage(const char *text, ...)
{
char bufPrint[0x100];
va_list vArgv;
va_start(vArgv, text);
vsprintf(bufPrint, text, vArgv);
va_end(vArgv);
}
void sub_8011B88(const char *text, ...)
{
char bufPrint[0x100];
va_list vArgv;
va_start(vArgv, text);
vsprintf(bufPrint, text, vArgv);
va_end(vArgv);
}
void nullsub_28(void)
{
}
u32 sub_8011BA4(void)
{
return 0;
}
// Unused
u32 sub_8011BA8(void)
{
return 0;
}
// Unused
const char *sub_8011BAC(void)
{
return gNotMountText;
}
// Unused
void UnusedHang(void)
{
Hang();
}
void Log(u8 *buffer, const char *text, ...)
{
va_list vArgv;
va_start(vArgv, text);
va_end(vArgv);
}
// Unused
void sub_8011BC8(u32 r0, u32 r1, u32 r2, ...)
{
va_list vArgv;
va_start(vArgv, r2);
va_end(vArgv);
}
void nullsub_29()
{
}
void nullsub_30()
{
}
void nullsub_31()
{
}
void nullsub_32()
{
}
void FatalErrorHang()
{
Hang();
}

View File

@ -1,89 +0,0 @@
#include <stdarg.h>
#include <stdio.h>
#include "gba/gba.h"
#include "config.h"
extern const char gNotMountText;
extern void Hang();
void FatalErrorFormatMessage(const char *text, ...)
{
char bufPrint[0x100];
va_list vArgv;
va_start(vArgv, text);
vsprintf(bufPrint, text, vArgv);
va_end(vArgv);
}
void sub_8011B88(const char *text, ...)
{
char bufPrint[0x100];
va_list vArgv;
va_start(vArgv, text);
vsprintf(bufPrint, text, vArgv);
va_end(vArgv);
}
void nullsub_28(void)
{
}
u32 sub_8011BA4(void)
{
return 0;
}
// Unused
u32 sub_8011BA8(void)
{
return 0;
}
// Unused
const char *sub_8011BAC(void)
{
return &gNotMountText;
}
// Unused
void UnusedHang(void)
{
Hang();
}
void Log(u8 *buffer, const char *text, ...)
{
va_list vArgv;
va_start(vArgv, text);
va_end(vArgv);
}
// Unused
void sub_8011BC8(u32 r0, u32 r1, u32 r2, ...)
{
va_list vArgv;
va_start(vArgv, r2);
va_end(vArgv);
}
void nullsub_29()
{
}
void nullsub_30()
{
}
void nullsub_31()
{
}
void nullsub_32()
{
}
void FatalErrorHang()
{
Hang();
}

View File

@ -18,14 +18,6 @@ struct unkStruct_203B45C
u8 unk29[0x2f];
};
struct unkFriendAreaStruct
{
// size: 0x18
u32 unk0;
u32 unk4;
u32 padding[4];
};
extern struct unkStruct_203B45C gUnknown_203B45C[];
extern bool8 *gFriendAreas;
@ -622,75 +614,20 @@ void sub_8092558(u8 *buffer, u8 index)
sub_800D158(buffer, &gUnknown_81098A4, gFriendAreaNames[index]);
}
#ifdef NONMATCHING
void sub_8092578(u8 *buffer, u8 index, u8 r2)
{
// I think this is when we buy the friend area from wigglytuff
struct unkFriendAreaStruct temp;
u32 temp[5];
if(r2)
{
sub_8090FEC(gFriendAreaSettings[index].price, &(temp.unk4), 1);
// TODO: There's some stack storage here in the middle calling this func
// add r0, sp, 0x4
// str r0, [sp]
//temp.unk0 = temp.unk4;
sub_800D158(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96);
sub_8090FEC(gFriendAreaSettings[index].price, (&temp[0]), 1);
sub_800D158(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, temp);
}
else
{
strcpy(buffer, gFriendAreaNames[index]);
}
}
#else
NAKED void sub_8092578(u8 *buffer, u8 index, u8 r2)
{
asm_unified("\tpush {r4,r5,lr}\n"
"\tsub sp, 0x18\n"
"\tadds r5, r0, 0\n"
"\tlsls r1, 24\n"
"\tlsrs r4, r1, 24\n"
"\tlsls r2, 24\n"
"\tcmp r2, 0\n"
"\tbeq _080925C0\n"
"\tldr r0, _080925B4\n"
"\tlsls r1, r4, 3\n"
"\tadds r0, 0x4\n"
"\tadds r1, r0\n"
"\tldr r0, [r1]\n"
"\tadd r1, sp, 0x4\n"
"\tmovs r2, 0x1\n"
"\tbl sub_8090FEC\n"
"\tldr r1, _080925B8\n"
"\tldr r2, _080925BC\n"
"\tlsls r0, r4, 2\n"
"\tadds r0, r2\n"
"\tldr r2, [r0]\n"
"\tadd r0, sp, 0x4\n"
"\tstr r0, [sp]\n"
"\tadds r0, r5, 0\n"
"\tmovs r3, 0x60\n"
"\tbl sub_800D158\n"
"\tb _080925CE\n"
"\t.align 2, 0\n"
"\t_080925B4: .4byte gFriendAreaSettings\n"
"\t_080925B8: .4byte gUnknown_81098AC\n"
"\t_080925BC: .4byte gFriendAreaNames\n"
"\t_080925C0:\n"
"\tldr r0, _080925D8\n"
"\tlsls r1, r4, 2\n"
"\tadds r1, r0\n"
"\tldr r1, [r1]\n"
"\tadds r0, r5, 0\n"
"\tbl strcpy\n"
"\t_080925CE:\n"
"\tadd sp, 0x18\n"
"\tpop {r4,r5}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"\t_080925D8: .4byte gFriendAreaNames");
}
#endif
u32 GetFriendAreaDescription(u8 index)
{

View File

@ -17,10 +17,8 @@ u32 sub_80927A8(u32 r0, u32 r1)
sub_809486C(temp, r0, r1);
for(counter = 0; counter < NUM_FRIEND_AREAS; counter++)
{
// TODO moves into R1 for the load else it matches
if(!gFriendAreas[counter])
temp[4] = gFriendAreas[counter];
else
// TODO fix one line diff of storing into temp[4]
if(gFriendAreas[counter])
temp[4] = -1;
sub_809488C(temp, &(temp[4]), 1);
}

View File

@ -32,7 +32,7 @@ bool8 sub_800CAAC(u32);
bool8 sub_800CACC(u32);
u16 sub_800CAE0(u16);
void sub_800C93C(void)
void StopBGMusicVSync(void)
{
bool8 interrupt_flag;
u16 temp;
@ -50,7 +50,7 @@ void sub_800C93C(void)
{
if(gBGMusicPlayerState == 2)
{
gUnknown_202D694 = gUnknown_202D690;
gUnknown_202D694 = 0;
}
else if(gBGMusicPlayerState == 1)
{
@ -68,7 +68,7 @@ void sub_800C93C(void)
}
}
void sub_800C9CC(void)
void StartBGMusicVSync(void)
{
bool8 interrupt_flag = DisableInterrupts();
m4aSoundVSyncOn();

View File

@ -11,13 +11,17 @@ extern void SoundBiasSet();
extern void SetInterruptFlag(u16);
extern void nullsub_25();
extern void nullsub_18();
extern void UpdateSound();
extern void UpdateInput();
extern void sub_800C298(u16 r0);
typedef void (*IntrCallback)(void);
extern IntrCallback gUnknown_202D5F0[];
extern struct MusicPlayerInfo gUnknown_20008F0; // BGM??
extern u32 gUnknown_203B0A0;
extern u32 gUnknown_203B0A4;
extern u16 gBGMusicPlayerState;
extern u16 gCurrentBGSong;
extern u16 gUnknown_202D68C;
@ -33,20 +37,19 @@ extern u8 gUnknown_203B09A;
struct unkStruct_3000FD8
{
u16 unk0;
u16 unk2;
u16 songIndex;
u16 unk4;
u8 unk6;
u8 padding;
};
extern struct unkStruct_3000FD8 gUnknown_3000FD8[8];
extern u8 gUnknown_202D7FE;
extern u16 gUnknown_202D7FC;
extern struct BGControlStruct gUnknown_202D698;
extern struct BGControlStruct gUnknown_202D6A0;
extern struct BGControlStruct gUnknown_202D6A8;
extern struct BGControlStruct gUnknown_202D6B0;
extern struct BGControlStruct gBG0Control;
extern struct BGControlStruct gBG1Control;
extern struct BGControlStruct gBG2Control;
extern struct BGControlStruct gBG3Control;
void sub_800BF80(void);
void xxx_update_bg_sound_input(void);
@ -219,18 +222,18 @@ void UpdateBGControlRegisters(void)
BG[3] = 3;
}
REG_BG0HOFS = gUnknown_202D698.hofs;
REG_BG0VOFS = gUnknown_202D698.vofs;
REG_BG1HOFS = gUnknown_202D6A0.hofs;
REG_BG1VOFS = gUnknown_202D6A0.vofs;
REG_BG2HOFS = gUnknown_202D6A8.hofs;
REG_BG2VOFS = gUnknown_202D6A8.vofs;
REG_BG3HOFS = gUnknown_202D6B0.hofs;
REG_BG3VOFS = gUnknown_202D6B0.vofs;
REG_BG0HOFS = gBG0Control.hofs;
REG_BG0VOFS = gBG0Control.vofs;
REG_BG1HOFS = gBG1Control.hofs;
REG_BG1VOFS = gBG1Control.vofs;
REG_BG2HOFS = gBG2Control.hofs;
REG_BG2VOFS = gBG2Control.vofs;
REG_BG3HOFS = gBG3Control.hofs;
REG_BG3VOFS = gBG3Control.vofs;
REG_BG0CNT = BG[0] | 0xB0 << 6;
REG_BG1CNT = BG[1] | 0xB4 << 6;
if(gUnknown_202D6A8.unk2 == 0x80 << 8)
if(gBG2Control.unk2 == 0x80 << 8)
{
REG_BG2CNT = BG[2] | 0x2e08;
}
@ -276,7 +279,7 @@ void sub_800BD08(void)
while(counter >= 0)
{
preload->unk0 = zero2;
preload->unk2 = 0x3e5;
preload->songIndex = 0x3e5;
preload->unk4 = zero2;
preload->unk6 = zero;
counter--;
@ -449,3 +452,340 @@ u16 GetCurrentBGSong(void)
{
return gCurrentBGSong;
}
#ifdef NONMATCHING
void sub_800C074(u16 SongIndex,u16 param_2)
{
bool8 interrupt_flag;
u16 msVar;
struct unkStruct_3000FD8 *preload;
if (SongIndex == 0x3e5)
return;
if (0x100 < param_2)
param_2 = 0x100;
if (sub_800CACC(SongIndex))
{
msVar = sub_800CAE0(SongIndex);
if (msVar == 1) {
interrupt_flag = DisableInterrupts();
gUnknown_202D68E = SongIndex;
if(gUnknown_202D690 == 0)
{
if (gCurrentBGSong != 999)
{
if ((u16)(gBGMusicPlayerState - 1U) < 2)
{
gUnknown_202D690 = msVar;
gUnknown_202D692 = 16;
gUnknown_202D694 = 0;
m4aMPlayFadeOutTemporarily(&gUnknown_20008F0,1);
}
else
{
if (gBGMusicPlayerState == 3)
gUnknown_202D690 = 2;
else
{
gUnknown_202D690 = 3;
m4aMPlayStop(&gUnknown_20008F0);
m4aSongNumStart(gUnknown_202D68E);
}
}
}
}
else
{
if (1 < (u16)(gUnknown_202D690 - 1U))
{
m4aMPlayStop(&gUnknown_20008F0);
m4aSongNumStart(gUnknown_202D68E);
gUnknown_202D690 = 3;
}
}
switch(gCurrentBGSong)
{
case 26: // 0x1A
case 27: // 0x1B
case 28: // 0x1C
case 29: // 0x1D
case 30: // 0x1E
case 31: // 0x1F
case 34: // 0x22
case 35: // 0x23
case 37: // 0x25
case 38: // 0x26
case 117: // 0x75
case 118: // 0x76
case 119: // 0x77
case 122: // 0x7A
case 127: // 0x7F
gUnknown_202D694 = 1;
break;
default:
break;
}
if (interrupt_flag)
EnableInterrupts();
}
else
{
nullsub_20(SongIndex);
}
}
else
{
if (!sub_800CAAC(SongIndex))
return;
msVar = sub_800CAE0(SongIndex);
preload = &gUnknown_3000FD8[msVar]; // need to load this before comparison to match
if (msVar <= 1)
nullsub_20(SongIndex);
else
{
interrupt_flag = DisableInterrupts();
m4aSongNumStart(SongIndex);
preload->unk0 = 1;
preload->songIndex = SongIndex;
// TODO fix this comparison
// Generates eor/neg/lsr
preload->unk6 = param_2 != 0x100;
preload->unk4 = param_2;
if (interrupt_flag)
EnableInterrupts();
}
}
}
#else
NAKED
void sub_800C074(u16 SongIndex, u16 param_2)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r8\n"
"\tpush {r7}\n"
"\tlsls r0, 16\n"
"\tlsrs r5, r0, 16\n"
"\tmov r8, r5\n"
"\tlsls r1, 16\n"
"\tlsrs r6, r1, 16\n"
"\tldr r0, _0800C0FC\n"
"\tcmp r5, r0\n"
"\tbne _0800C08C\n"
"\tb _0800C208\n"
"_0800C08C:\n"
"\tmovs r7, 0x80\n"
"\tlsls r7, 1\n"
"\tcmp r6, r7\n"
"\tbls _0800C096\n"
"\tadds r6, r7, 0\n"
"_0800C096:\n"
"\tadds r0, r5, 0\n"
"\tbl sub_800CACC\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbne _0800C0A4\n"
"\tb _0800C1B0\n"
"_0800C0A4:\n"
"\tadds r0, r5, 0\n"
"\tbl sub_800CAE0\n"
"\tlsls r0, 16\n"
"\tlsrs r7, r0, 16\n"
"\tcmp r7, 0x1\n"
"\tbeq _0800C0B4\n"
"\tb _0800C1D0\n"
"_0800C0B4:\n"
"\tbl DisableInterrupts\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
"\tmov r8, r0\n"
"\tldr r6, _0800C100\n"
"\tstrh r5, [r6]\n"
"\tldr r4, _0800C104\n"
"\tldrh r0, [r4]\n"
"\tadds r2, r0, 0\n"
"\tcmp r2, 0\n"
"\tbne _0800C144\n"
"\tldr r0, _0800C108\n"
"\tldrh r1, [r0]\n"
"\tldr r0, _0800C10C\n"
"\tcmp r1, r0\n"
"\tbeq _0800C12C\n"
"\tldr r0, _0800C110\n"
"\tldrh r1, [r0]\n"
"\tsubs r0, r1, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tcmp r0, 0x1\n"
"\tbhi _0800C120\n"
"\tstrh r7, [r4]\n"
"\tldr r1, _0800C114\n"
"\tmovs r0, 0x10\n"
"\tstrh r0, [r1]\n"
"\tldr r0, _0800C118\n"
"\tstrb r2, [r0]\n"
"\tldr r0, _0800C11C\n"
"\tmovs r1, 0x1\n"
"\tbl m4aMPlayFadeOutTemporarily\n"
"\tb _0800C15E\n"
"\t.align 2, 0\n"
"_0800C0FC: .4byte 0x000003e5\n"
"_0800C100: .4byte gUnknown_202D68E\n"
"_0800C104: .4byte gUnknown_202D690\n"
"_0800C108: .4byte gCurrentBGSong\n"
"_0800C10C: .4byte 0x000003e7\n"
"_0800C110: .4byte gBGMusicPlayerState\n"
"_0800C114: .4byte gUnknown_202D692\n"
"_0800C118: .4byte gUnknown_202D694\n"
"_0800C11C: .4byte gUnknown_20008F0\n"
"_0800C120:\n"
"\tlsls r0, r1, 16\n"
"\tlsrs r0, 16\n"
"\tcmp r0, 0x3\n"
"\tbne _0800C12C\n"
"\tmovs r0, 0x2\n"
"\tb _0800C15C\n"
"_0800C12C:\n"
"\tmovs r0, 0x3\n"
"\tstrh r0, [r4]\n"
"\tldr r0, _0800C140\n"
"\tbl m4aMPlayStop\n"
"\tldrh r0, [r6]\n"
"\tbl m4aSongNumStart\n"
"\tb _0800C15E\n"
"\t.align 2, 0\n"
"_0800C140: .4byte gUnknown_20008F0\n"
"_0800C144:\n"
"\tsubs r0, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tcmp r0, 0x1\n"
"\tbls _0800C15E\n"
"\tldr r0, _0800C17C\n"
"\tbl m4aMPlayStop\n"
"\tldrh r0, [r6]\n"
"\tbl m4aSongNumStart\n"
"\tmovs r0, 0x3\n"
"_0800C15C:\n"
"\tstrh r0, [r4]\n"
"_0800C15E:\n"
"\tldr r0, _0800C180\n"
"\tldrh r0, [r0]\n"
"\tcmp r0, 0x26\n"
"\tbgt _0800C184\n"
"\tcmp r0, 0x25\n"
"\tbge _0800C19A\n"
"\tcmp r0, 0x1A\n"
"\tblt _0800C1A0\n"
"\tcmp r0, 0x1F\n"
"\tble _0800C19A\n"
"\tcmp r0, 0x23\n"
"\tbgt _0800C1A0\n"
"\tcmp r0, 0x22\n"
"\tblt _0800C1A0\n"
"\tb _0800C19A\n"
"\t.align 2, 0\n"
"_0800C17C: .4byte gUnknown_20008F0\n"
"_0800C180: .4byte gCurrentBGSong\n"
"_0800C184:\n"
"\tcmp r0, 0x7A\n"
"\tbeq _0800C19A\n"
"\tcmp r0, 0x7A\n"
"\tbgt _0800C196\n"
"\tcmp r0, 0x77\n"
"\tbgt _0800C1A0\n"
"\tcmp r0, 0x75\n"
"\tblt _0800C1A0\n"
"\tb _0800C19A\n"
"_0800C196:\n"
"\tcmp r0, 0x7F\n"
"\tbne _0800C1A0\n"
"_0800C19A:\n"
"\tldr r1, _0800C1AC\n"
"\tmovs r0, 0x1\n"
"\tstrb r0, [r1]\n"
"_0800C1A0:\n"
"\tmov r0, r8\n"
"\tcmp r0, 0\n"
"\tbeq _0800C208\n"
"\tbl EnableInterrupts\n"
"\tb _0800C208\n"
"\t.align 2, 0\n"
"_0800C1AC: .4byte gUnknown_202D694\n"
"_0800C1B0:\n"
"\tadds r0, r5, 0\n"
"\tbl sub_800CAAC\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbeq _0800C208\n"
"\tadds r0, r5, 0\n"
"\tbl sub_800CAE0\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tlsls r2, r0, 3\n"
"\tldr r1, _0800C1D8\n"
"\tadds r4, r2, r1\n"
"\tcmp r0, 0x1\n"
"\tbhi _0800C1DC\n"
"_0800C1D0:\n"
"\tadds r0, r5, 0\n"
"\tbl nullsub_20\n"
"\tb _0800C208\n"
"\t.align 2, 0\n"
"_0800C1D8: .4byte gUnknown_3000FD8\n"
"_0800C1DC:\n"
"\tbl DisableInterrupts\n"
"\tlsls r0, 24\n"
"\tlsrs r5, r0, 24\n"
"\tmov r0, r8\n"
"\tbl m4aSongNumStart\n"
"\tmovs r0, 0x1\n"
"\tstrh r0, [r4]\n"
"\tmov r0, r8\n"
"\tstrh r0, [r4, 0x2]\n"
"\tcmp r6, r7\n"
"\tbne _0800C1FA\n"
"\tmovs r0, 0\n"
"\tb _0800C1FC\n"
"_0800C1FA:\n"
"\tmovs r0, 0x1\n"
"_0800C1FC:\n"
"\tstrb r0, [r4, 0x6]\n"
"\tstrh r6, [r4, 0x4]\n"
"\tcmp r5, 0\n"
"\tbeq _0800C208\n"
"\tbl EnableInterrupts\n"
"_0800C208:\n"
"\tpop {r3}\n"
"\tmov r8, r3\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0");
}
#endif
void sub_800C214(u16 songIndex, u16 volume)
{
bool8 interrupt_flag;
u16 msVar;
struct MusicPlayerInfo *info;
struct unkStruct_3000FD8 *preload;
if (256 < volume) {
volume = 256;
}
if ((!sub_800CACC(songIndex)) && (sub_800CAAC(songIndex))) {
msVar = sub_800CAE0(songIndex);
info = gMPlayTable[msVar].info;
preload = &gUnknown_3000FD8[msVar];
if (msVar > 1) {
interrupt_flag = DisableInterrupts();
if (preload->songIndex == songIndex) {
m4aMPlayVolumeControl(info, 0xf, volume);
}
if (interrupt_flag)
EnableInterrupts();
}
}
}

View File

@ -75,7 +75,7 @@ extern void MemoryFree(void* a);
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
extern void sub_8011830(void);
extern s32 WriteFlashData(s32 sector, u8 *src, s32 size);
extern void sub_8011854(void);
extern void xxx_call_start_bg_music(void);
extern u32 *sub_809769C(void);
u32 *sub_8011C4C(void);
extern void sub_80958E4(u8 *a, u32 b);
@ -125,7 +125,7 @@ u32 sub_8012240(void)
MemoryFill8((u8 *)r5, 0xFF, 0x4);
sub_8011830();
temp = WriteFlashData(0x1F, (u8 *)r5, sizeof(struct unk_struct));
sub_8011854();
xxx_call_start_bg_music();
MemoryFree(r5);
if(temp != 0)
{

View File

@ -292,16 +292,16 @@ gUnknown_202D692 = .; /* 202D692 */
gUnknown_202D694 = .; /* 202D694 */
. += 0x4;
gUnknown_202D698 = .; /* 202D698 */
gBG0Control = .; /* 202D698 */
. += 0x8;
gUnknown_202D6A0 = .; /* 202D6A0 */
gBG1Control = .; /* 202D6A0 */
. += 0x8;
gUnknown_202D6A8 = .; /* 202D6A8 */
gBG2Control = .; /* 202D6A8 */
. += 0x8;
gUnknown_202D6B0 = .; /* 202D6B0 */
gBG3Control = .; /* 202D6B0 */
. += 0x8;
gUnknown_202D6B8 = .; /* 202D6B8 */

View File

@ -161,7 +161,7 @@ gUnknown_203B0E8 = .; /* 203B0E8 */
gUnknown_203B0EC = .; /* 203B0EC */
. += 0x60;
gUnknown_203B14C = .; /* 203B14C */
gNDS_DebugEnabled = .; /* 203B14C */
. += 0x4;
gUnknown_203B150 = .; /* 203B150 */