diff options
-rw-r--r-- | asm/code_2.s | 2 | ||||
-rw-r--r-- | asm/code_800D090.s | 87 | ||||
-rw-r--r-- | asm/code_80118A4.s | 38 | ||||
-rw-r--r-- | asm/code_8012A18.s | 2 | ||||
-rw-r--r-- | asm/code_8027C84.s | 2 | ||||
-rw-r--r-- | asm/code_80521D0.s | 136 | ||||
-rw-r--r-- | asm/code_8097F40.s | 28 | ||||
-rw-r--r-- | asm/code_809D148.s | 2 | ||||
-rw-r--r-- | asm/debug.s (renamed from asm/fatal_system_1.s) | 0 | ||||
-rw-r--r-- | asm/music.s | 270 | ||||
-rw-r--r-- | asm/wonder_mail.s | 10 | ||||
-rw-r--r-- | include/music.h | 4 | ||||
-rwxr-xr-x | ld_script.txt | 6 | ||||
-rw-r--r-- | src/code_800558C.c | 49 | ||||
-rw-r--r-- | src/code_800C9CC.c | 42 | ||||
-rw-r--r-- | src/code_800D090.c | 60 | ||||
-rw-r--r-- | src/code_80118A4.c | 118 | ||||
-rw-r--r-- | src/code_80118A4_1.c | 55 | ||||
-rw-r--r-- | src/code_808EAB0.c | 8 | ||||
-rw-r--r-- | src/code_8097F40.c | 60 | ||||
-rw-r--r-- | src/debug.c | 198 | ||||
-rw-r--r-- | src/fatal_system.c | 89 | ||||
-rw-r--r-- | src/friend_area.c | 69 | ||||
-rw-r--r-- | src/friend_area_1.c | 6 | ||||
-rw-r--r-- | src/music.c | 6 | ||||
-rw-r--r-- | src/music_pre.c | 372 | ||||
-rw-r--r-- | src/save_mid.c | 4 | ||||
-rw-r--r-- | sym_ewram.txt | 8 | ||||
-rw-r--r-- | sym_ewram2.txt | 2 |
29 files changed, 815 insertions, 918 deletions
diff --git a/asm/code_2.s b/asm/code_2.s index 4fb8c50..994f260 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -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 diff --git a/asm/code_800D090.s b/asm/code_800D090.s index d6f365d..9571b63 100644 --- a/asm/code_800D090.s +++ b/asm/code_800D090.s @@ -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} diff --git a/asm/code_80118A4.s b/asm/code_80118A4.s deleted file mode 100644 index 06b2d1f..0000000 --- a/asm/code_80118A4.s +++ /dev/null @@ -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 diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index ddb0ef8..e765d1a 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -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} diff --git a/asm/code_8027C84.s b/asm/code_8027C84.s index 8aa4674..7c4a52b 100644 --- a/asm/code_8027C84.s +++ b/asm/code_8027C84.s @@ -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] diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 5114113..2e47ea9 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -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: diff --git a/asm/code_8097F40.s b/asm/code_8097F40.s index 5368da6..6392ba9 100644 --- a/asm/code_8097F40.s +++ b/asm/code_8097F40.s @@ -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 diff --git a/asm/code_809D148.s b/asm/code_809D148.s index 2473525..a48ad08 100644 --- a/asm/code_809D148.s +++ b/asm/code_809D148.s @@ -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 diff --git a/asm/fatal_system_1.s b/asm/debug.s index e0f194d..e0f194d 100644 --- a/asm/fatal_system_1.s +++ b/asm/debug.s diff --git a/asm/music.s b/asm/music.s index 0e13f2c..1bec74b 100644 --- a/asm/music.s +++ b/asm/music.s @@ -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} diff --git a/asm/wonder_mail.s b/asm/wonder_mail.s index f903140..df22c33 100644 --- a/asm/wonder_mail.s +++ b/asm/wonder_mail.s @@ -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 diff --git a/include/music.h b/include/music.h index 3a83946..8baa030 100644 --- a/include/music.h +++ b/include/music.h @@ -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); diff --git a/ld_script.txt b/ld_script.txt index dce23d0..cc185a3 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -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); diff --git a/src/code_800558C.c b/src/code_800558C.c index 13e3255..8de7dd3 100644 --- a/src/code_800558C.c +++ b/src/code_800558C.c @@ -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; } diff --git a/src/code_800C9CC.c b/src/code_800C9CC.c index 28ce10a..99aa827 100644 --- a/src/code_800C9CC.c +++ b/src/code_800C9CC.c @@ -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) diff --git a/src/code_800D090.c b/src/code_800D090.c index da82789..b263d30 100644 --- a/src/code_800D090.c +++ b/src/code_800D090.c @@ -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; +} diff --git a/src/code_80118A4.c b/src/code_80118A4.c index 2cb450d..03859b0 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -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); -} diff --git a/src/code_80118A4_1.c b/src/code_80118A4_1.c index 89f4db5..e69de29 100644 --- a/src/code_80118A4_1.c +++ b/src/code_80118A4_1.c @@ -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); - } -} diff --git a/src/code_808EAB0.c b/src/code_808EAB0.c index bf80687..44be84e 100644 --- a/src/code_808EAB0.c +++ b/src/code_808EAB0.c @@ -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; } diff --git a/src/code_8097F40.c b/src/code_8097F40.c index 94d271c..6775965 100644 --- a/src/code_8097F40.c +++ b/src/code_8097F40.c @@ -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 diff --git a/src/debug.c b/src/debug.c new file mode 100644 index 0000000..4482df1 --- /dev/null +++ b/src/debug.c @@ -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(); +} diff --git a/src/fatal_system.c b/src/fatal_system.c deleted file mode 100644 index 31c430e..0000000 --- a/src/fatal_system.c +++ /dev/null @@ -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(); -} diff --git a/src/friend_area.c b/src/friend_area.c index 445a1cf..8435bb1 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -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) { diff --git a/src/friend_area_1.c b/src/friend_area_1.c index ae04cdf..9a40e2c 100644 --- a/src/friend_area_1.c +++ b/src/friend_area_1.c @@ -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); } diff --git a/src/music.c b/src/music.c index 8f02775..701fd3f 100644 --- a/src/music.c +++ b/src/music.c @@ -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(); diff --git a/src/music_pre.c b/src/music_pre.c index 42a8cb0..5c0589a 100644 --- a/src/music_pre.c +++ b/src/music_pre.c @@ -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(); + } + } +} diff --git a/src/save_mid.c b/src/save_mid.c index 604c98d..0c4531c 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -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) { diff --git a/sym_ewram.txt b/sym_ewram.txt index f5dd6a1..53ff44a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -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 */ diff --git a/sym_ewram2.txt b/sym_ewram2.txt index d736c01..4ff84ba 100644 --- a/sym_ewram2.txt +++ b/sym_ewram2.txt @@ -161,7 +161,7 @@ gUnknown_203B0E8 = .; /* 203B0E8 */ gUnknown_203B0EC = .; /* 203B0EC */ . += 0x60; -gUnknown_203B14C = .; /* 203B14C */ +gNDS_DebugEnabled = .; /* 203B14C */ . += 0x4; gUnknown_203B150 = .; /* 203B150 */ |