summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2017-01-04 16:32:45 -0600
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-01-04 14:32:45 -0800
commit41d2b112ebdf91da3d85b4495ceb95e69d69ef0a (patch)
treeca825845e7dfeda33d9d5af48a15bfafaf865216
parent370c7f78539698902907f262721fe60e606c774d (diff)
almost finish decompiling matsuda_debug_menu.c (#158)
* almost finish decompiling matsuda_debug_menu.c * rename sub_8071C20 to CloseMenu
-rw-r--r--asm/map_name_popup.s2
-rw-r--r--asm/matsuda_debug_menu.s685
-rw-r--r--asm/unknown_debug_menu.s4
-rw-r--r--include/main.h46
-rw-r--r--include/menu.h2
-rw-r--r--src/matsuda_debug_menu.c940
-rw-r--r--src/menu.c2
-rw-r--r--src/mori_debug_menu.c20
-rw-r--r--src/start_menu.c6
9 files changed, 504 insertions, 1203 deletions
diff --git a/asm/map_name_popup.s b/asm/map_name_popup.s
index a1ba949da..b488e5f73 100644
--- a/asm/map_name_popup.s
+++ b/asm/map_name_popup.s
@@ -9,7 +9,7 @@
thumb_func_start unref_sub_80A2F44
unref_sub_80A2F44: @ 80A2F44
push {lr}
- bl sub_8071C20
+ bl CloseMenu
bl AddMapNamePopUpWindowTask
movs r0, 0x1
pop {r1}
diff --git a/asm/matsuda_debug_menu.s b/asm/matsuda_debug_menu.s
deleted file mode 100644
index a7291e20a..000000000
--- a/asm/matsuda_debug_menu.s
+++ /dev/null
@@ -1,685 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80AAC5C
-sub_80AAC5C: @ 80AAC5C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- cmp r1, 0
- ble _080AAC78
- ldr r1, _080AAC74 @ =gScriptContestRank
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- adds r4, r1, 0
- b _080AAC86
- .align 2, 0
-_080AAC74: .4byte gScriptContestRank
-_080AAC78:
- ldr r0, _080AACBC @ =gScriptContestRank
- ldrh r2, [r0]
- adds r4, r0, 0
- cmp r2, 0
- beq _080AAC86
- subs r0, r2, 0x1
- strh r0, [r4]
-_080AAC86:
- adds r1, r4, 0
- ldrh r0, [r1]
- cmp r0, 0x3
- bls _080AAC92
- movs r0, 0x3
- strh r0, [r1]
-_080AAC92:
- ldrb r0, [r4]
- bl sub_80AA5E8
- ldr r0, _080AACC0 @ =gScriptContestCategory
- ldrb r0, [r0]
- ldrb r1, [r4]
- bl sub_80AE398
- ldrh r0, [r5, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA280
- ldrh r0, [r5, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA658
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AACBC: .4byte gScriptContestRank
-_080AACC0: .4byte gScriptContestCategory
- thumb_func_end sub_80AAC5C
-
- thumb_func_start sub_80AACC4
-sub_80AACC4: @ 80AACC4
- push {lr}
- bl UpdatePaletteFade
- ldr r0, _080AACF8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080AACF4
- bl SetDebugMonForContest
- ldr r0, _080AACFC @ =gIsLinkContest
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080AACEE
- ldr r0, _080AAD00 @ =0x02000000
- ldrb r0, [r0]
- bl sub_80AE82C
-_080AACEE:
- ldr r0, _080AAD04 @ =sub_80AB47C
- bl SetMainCallback2
-_080AACF4:
- pop {r0}
- bx r0
- .align 2, 0
-_080AACF8: .4byte gPaletteFade
-_080AACFC: .4byte gIsLinkContest
-_080AAD00: .4byte 0x02000000
-_080AAD04: .4byte sub_80AB47C
- thumb_func_end sub_80AACC4
-
- thumb_func_start sub_80AAD08
-sub_80AAD08: @ 80AAD08
- push {r4,lr}
- sub sp, 0x4
- lsls r1, 24
- asrs r1, 24
- cmp r1, 0x1
- bne _080AAD32
- ldr r1, _080AAD3C @ =0x02000000
- ldrh r0, [r0, 0x34]
- movs r4, 0
- strb r0, [r1]
- ldr r0, _080AAD40 @ =sub_80AACC4
- bl SetMainCallback2
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080AAD32:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAD3C: .4byte 0x02000000
-_080AAD40: .4byte sub_80AACC4
- thumb_func_end sub_80AAD08
-
- thumb_func_start sub_80AAD44
-sub_80AAD44: @ 80AAD44
- push {r4,r5,lr}
- lsls r1, 24
- asrs r1, 24
- cmp r1, 0x1
- bne _080AAD72
- bl SetDebugMonForContest
- movs r4, 0
- ldr r5, _080AAD78 @ =gUnknown_02038670
-_080AAD56:
- lsls r0, r4, 24
- lsrs r0, 24
- ldr r1, _080AAD7C @ =gScriptContestCategory
- ldrb r1, [r1]
- bl sub_80AE770
- strh r0, [r5]
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _080AAD56
- ldr r0, _080AAD80 @ =sub_805469C
- bl SetMainCallback2
-_080AAD72:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAD78: .4byte gUnknown_02038670
-_080AAD7C: .4byte gScriptContestCategory
-_080AAD80: .4byte sub_805469C
- thumb_func_end sub_80AAD44
-
- thumb_func_start sub_80AAD84
-sub_80AAD84: @ 80AAD84
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x64
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x48]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x4C]
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- mov r5, r10
- adds r5, 0x1
- lsls r1, r5, 8
- ldr r0, _080AAEC4 @ =0x06018000
- subs r1, r0, r1
- movs r0, 0
- str r0, [sp, 0x44]
- ldr r4, _080AAEC8 @ =0x040000d4
- add r0, sp, 0x44
- str r0, [r4]
- str r1, [r4, 0x4]
- ldr r0, _080AAECC @ =0x85000040
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- mov r0, r9
- bl StringLength
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x8
- bls _080AADD0
- movs r7, 0x8
-_080AADD0:
- movs r6, 0
- mov r8, r5
- mov r1, r10
- lsls r1, 1
- str r1, [sp, 0x58]
- ldr r2, [sp, 0x48]
- adds r2, 0x20
- str r2, [sp, 0x5C]
- cmp r6, r7
- bge _080AAE1E
- add r5, sp, 0x40
- add r0, sp, 0x20
- mov r10, r0
- ldr r2, _080AAEC4 @ =0x06018000
-_080AADEC:
- mov r1, r9
- adds r0, r1, r6
- ldrb r0, [r0]
- strb r0, [r5]
- movs r0, 0xFF
- strb r0, [r5, 0x1]
- mov r0, sp
- adds r1, r5, 0
- str r2, [sp, 0x60]
- bl sub_80034D4
- mov r1, r8
- lsls r0, r1, 8
- ldr r2, [sp, 0x60]
- subs r0, r2, r0
- mov r1, r10
- str r1, [r4]
- str r0, [r4, 0x4]
- ldr r0, _080AAED0 @ =0x84000008
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- adds r2, 0x20
- adds r6, 0x1
- cmp r6, r7
- blt _080AADEC
-_080AAE1E:
- movs r1, 0x7C
- ldr r2, [sp, 0x58]
- subs r1, r2
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, _080AAED4 @ =gMain
- mov r9, r0
- lsls r3, r7, 3
- add r3, r9
- ldr r0, _080AAED8 @ =gUnknown_083C9400
- ldr r1, [r0]
- ldr r2, [r0, 0x4]
- str r1, [sp, 0x50]
- str r2, [sp, 0x54]
- str r1, [r3, 0x3C]
- str r2, [r3, 0x40]
- mov r2, r8
- lsls r0, r2, 3
- movs r1, 0x80
- lsls r1, 3
- adds r2, r1, 0
- subs r2, r0
- adds r6, r3, 0
- adds r6, 0x40
- ldr r0, _080AAEDC @ =0x000003ff
- mov r8, r0
- mov r1, r8
- ands r2, r1
- ldrh r5, [r6]
- ldr r4, _080AAEE0 @ =0xfffffc00
- adds r0, r4, 0
- ands r0, r5
- orrs r0, r2
- strh r0, [r6]
- ldrh r5, [r3, 0x3E]
- ldr r2, _080AAEE4 @ =0xfffffe00
- adds r0, r2, 0
- ands r0, r5
- ldr r1, [sp, 0x48]
- orrs r0, r1
- strh r0, [r3, 0x3E]
- adds r3, 0x3C
- add r0, sp, 0x4C
- ldrb r0, [r0]
- strb r0, [r3]
- adds r1, r7, 0x1
- lsls r1, 3
- mov r0, r9
- adds r7, r1, r0
- ldr r0, [sp, 0x50]
- ldr r1, [sp, 0x54]
- str r0, [r7, 0x3C]
- str r1, [r7, 0x40]
- ldrh r0, [r6]
- lsls r0, 22
- lsrs r0, 22
- adds r0, 0x4
- adds r5, r7, 0
- adds r5, 0x40
- mov r1, r8
- ands r0, r1
- ldrh r3, [r5]
- ands r4, r3
- orrs r4, r0
- strh r4, [r5]
- ldrh r0, [r7, 0x3E]
- ands r2, r0
- ldr r0, [sp, 0x5C]
- orrs r2, r0
- strh r2, [r7, 0x3E]
- adds r1, r7, 0
- adds r1, 0x3C
- add r2, sp, 0x4C
- ldrb r2, [r2]
- strb r2, [r1]
- add sp, 0x64
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAEC4: .4byte 0x06018000
-_080AAEC8: .4byte 0x040000d4
-_080AAECC: .4byte 0x85000040
-_080AAED0: .4byte 0x84000008
-_080AAED4: .4byte gMain
-_080AAED8: .4byte gUnknown_083C9400
-_080AAEDC: .4byte 0x000003ff
-_080AAEE0: .4byte 0xfffffc00
-_080AAEE4: .4byte 0xfffffe00
- thumb_func_end sub_80AAD84
-
- thumb_func_start unref_sub_80AAEE8
-unref_sub_80AAEE8: @ 80AAEE8
- push {r4-r7,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r5, r3, 24
- movs r0, 0
- cmp r4, 0
- bge _080AAF08
- mov r1, sp
- movs r0, 0xAE
- strb r0, [r1]
- movs r0, 0x1
-_080AAF08:
- add r0, sp
- adds r1, r4, 0
- cmp r1, 0
- bge _080AAF12
- negs r1, r1
-_080AAF12:
- movs r2, 0
- movs r3, 0x8
- bl ConvertIntToDecimalStringN
- mov r0, sp
- adds r1, r7, 0
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_80AAD84
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_80AAEE8
-
- thumb_func_start sub_80AAF30
-sub_80AAF30: @ 80AAF30
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r1, _080AAFC0 @ =gUnknown_0203856C
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _080AAFC4 @ =gContestPlayerMonIndex
- movs r0, 0x3
- strb r0, [r1]
- movs r0, 0
- bl sub_80AE098
- movs r4, 0x3
- movs r5, 0x1
- negs r5, r5
- ldr r3, _080AAFC8 @ =gUnknown_02038690
- movs r2, 0x3
-_080AAF56:
- adds r1, r4, r3
- subs r0, r2, r4
- strb r0, [r1]
- subs r4, 0x1
- cmp r4, r5
- bgt _080AAF56
- movs r4, 0
- movs r6, 0
- ldr r7, _080AAFCC @ =gUnknown_02038670
- ldr r5, _080AAFD0 @ =gContestMons
- mov r9, r5
-_080AAF6C:
- lsls r1, r4, 1
- strh r6, [r7]
- ldr r0, _080AAFD4 @ =gUnknown_02038680
- mov r8, r0
- adds r0, r1, r0
- strh r6, [r0]
- ldr r3, _080AAFD8 @ =gUnknown_02038678
- adds r1, r3
- strh r6, [r1]
- adds r0, r5, 0
- mov r1, r9
- adds r1, 0xC0
- movs r2, 0x40
- str r3, [sp]
- bl memcpy
- adds r7, 0x2
- adds r5, 0x40
- adds r4, 0x1
- ldr r3, [sp]
- cmp r4, 0x2
- ble _080AAF6C
- ldr r0, _080AAFCC @ =gUnknown_02038670
- movs r1, 0x96
- lsls r1, 1
- strh r1, [r0, 0x6]
- movs r0, 0xC8
- lsls r0, 1
- mov r1, r8
- strh r0, [r1, 0x6]
- strh r0, [r3, 0x6]
- movs r0, 0xFE
- bl sub_80B2A7C
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAFC0: .4byte gUnknown_0203856C
-_080AAFC4: .4byte gContestPlayerMonIndex
-_080AAFC8: .4byte gUnknown_02038690
-_080AAFCC: .4byte gUnknown_02038670
-_080AAFD0: .4byte gContestMons
-_080AAFD4: .4byte gUnknown_02038680
-_080AAFD8: .4byte gUnknown_02038678
- thumb_func_end sub_80AAF30
-
- thumb_func_start MatsudaDebugMenu_SetHighScore
-MatsudaDebugMenu_SetHighScore: @ 80AAFDC
- push {lr}
- bl sub_80AAF30
- bl sub_8071C20
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end MatsudaDebugMenu_SetHighScore
-
- thumb_func_start MatsudaDebugMenu_ResetHighScore
-MatsudaDebugMenu_ResetHighScore: @ 80AAFEC
- push {r4,lr}
- ldr r1, _080AB01C @ =gUnknown_0203856C
- movs r0, 0
- strb r0, [r1]
- movs r4, 0
- ldr r3, _080AB020 @ =gUnknown_02038678
- ldr r2, _080AB024 @ =gUnknown_02038680
- ldr r1, _080AB028 @ =gUnknown_02038670
- movs r0, 0x3
-_080AAFFE:
- strh r4, [r1]
- strh r4, [r2]
- strh r4, [r3]
- adds r3, 0x2
- adds r2, 0x2
- adds r1, 0x2
- subs r0, 0x1
- cmp r0, 0
- bge _080AAFFE
- bl sub_8071C20
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080AB01C: .4byte gUnknown_0203856C
-_080AB020: .4byte gUnknown_02038678
-_080AB024: .4byte gUnknown_02038680
-_080AB028: .4byte gUnknown_02038670
- thumb_func_end MatsudaDebugMenu_ResetHighScore
-
- thumb_func_start MatsudaDebugMenu_SetArtMuseumItems
-MatsudaDebugMenu_SetArtMuseumItems: @ 80AB02C
- push {r4,r5,lr}
- ldr r1, _080AB078 @ =gContestPlayerMonIndex
- movs r0, 0x3
- strb r0, [r1]
- movs r0, 0
- bl sub_80AE098
- movs r2, 0x3
- movs r5, 0x1
- negs r5, r5
- ldr r4, _080AB07C @ =gUnknown_02038690
- movs r3, 0x3
-_080AB044:
- adds r1, r2, r4
- subs r0, r3, r2
- strb r0, [r1]
- subs r2, 0x1
- cmp r2, r5
- bgt _080AB044
- ldr r1, _080AB080 @ =gScriptContestCategory
- movs r0, 0
- strh r0, [r1]
- adds r4, r1, 0
-_080AB058:
- movs r0, 0xFF
- bl sub_80B2A7C
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4
- bls _080AB058
- bl sub_8071C20
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080AB078: .4byte gContestPlayerMonIndex
-_080AB07C: .4byte gUnknown_02038690
-_080AB080: .4byte gScriptContestCategory
- thumb_func_end MatsudaDebugMenu_SetArtMuseumItems
-
- thumb_func_start unref_sub_80AB084
-unref_sub_80AB084: @ 80AB084
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- mov r8, r0
- ldr r0, _080AB160 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x22
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- movs r2, 0x80
- lsls r2, 19
- movs r3, 0xFA
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r2]
- ldr r3, _080AB164 @ =0x04000208
- ldrh r2, [r3]
- strh r1, [r3]
- ldr r4, _080AB168 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r1, _080AB16C @ =REG_DISPSTAT
- movs r0, 0x8
- strh r0, [r1]
- bl ResetTasks
- bl ResetSpriteData
- ldr r0, _080AB170 @ =sub_80AB184
- bl SetMainCallback2
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- movs r5, 0
- ldr r1, _080AB174 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- ldr r6, _080AB178 @ =0x85000400
- movs r7, 0x85
- lsls r7, 24
-_080AB108:
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- str r0, [r1]
- str r2, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _080AB108
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r4, _080AB17C @ =gWindowConfig_81E6FD8
- adds r0, r4, 0
- bl SetUpWindowConfig
- ldr r5, _080AB180 @ =gUnknown_03004210
- adds r0, r5, 0
- adds r1, r4, 0
- bl InitWindowFromConfig
- adds r0, r4, 0
- bl LoadFontDefaultPalette
- movs r0, 0x7
- str r0, [sp]
- adds r0, r5, 0
- mov r1, r8
- movs r2, 0x1
- movs r3, 0x9
- bl sub_8003460
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB160: .4byte REG_BG0HOFS
-_080AB164: .4byte 0x04000208
-_080AB168: .4byte 0x04000200
-_080AB16C: .4byte REG_DISPSTAT
-_080AB170: .4byte sub_80AB184
-_080AB174: .4byte 0x040000d4
-_080AB178: .4byte 0x85000400
-_080AB17C: .4byte gWindowConfig_81E6FD8
-_080AB180: .4byte gUnknown_03004210
- thumb_func_end unref_sub_80AB084
-
- thumb_func_start sub_80AB184
-sub_80AB184: @ 80AB184
- ldr r0, _080AB1A8 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_080AB1A8: .4byte REG_BG0HOFS
- thumb_func_end sub_80AB184
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unknown_debug_menu.s b/asm/unknown_debug_menu.s
index 2aff875ac..138fdb876 100644
--- a/asm/unknown_debug_menu.s
+++ b/asm/unknown_debug_menu.s
@@ -79,7 +79,7 @@ _0814A4A0: .4byte gUnknown_02024D1E
_0814A4A4: .4byte gCallback_03004AE8
_0814A4A8: .4byte gUnknown_0842C29C
_0814A4AC:
- bl sub_8071C20
+ bl CloseMenu
movs r0, 0x1
_0814A4B2:
pop {r1}
@@ -115,7 +115,7 @@ sub_814A4B8: @ 814A4B8
ldr r0, _0814A514 @ =0x0000055a
adds r2, r0
strh r1, [r2]
- bl sub_8071C20
+ bl CloseMenu
movs r0, 0x1
pop {r4}
pop {r1}
diff --git a/include/main.h b/include/main.h
index bed3a5749..eca0e7f96 100644
--- a/include/main.h
+++ b/include/main.h
@@ -9,38 +9,38 @@ typedef void (*IntrFunc)(void);
struct Main
{
- MainCallback callback1;
- MainCallback callback2;
+ /*0x000*/ MainCallback callback1;
+ /*0x004*/ MainCallback callback2;
- MainCallback field_8;
+ /*0x008*/ MainCallback field_8;
- IntrCallback vblankCallback;
- IntrCallback hblankCallback;
- IntrCallback vcountCallback;
- IntrCallback serialCallback;
+ /*0x00C*/ IntrCallback vblankCallback;
+ /*0x010*/ IntrCallback hblankCallback;
+ /*0x014*/ IntrCallback vcountCallback;
+ /*0x018*/ IntrCallback serialCallback;
- vu16 intrCheck;
+ /*0x01C*/ vu16 intrCheck;
- u32 vblankCounter1;
- u32 vblankCounter2;
+ /*0x020*/ u32 vblankCounter1;
+ /*0x024*/ u32 vblankCounter2;
- u16 heldKeysRaw; // held keys without L=A remapping
- u16 newKeysRaw; // newly pressed keys without L=A remapping
- u16 heldKeys; // held keys with L=A remapping
- u16 newKeys; // newly pressed keys with L=A remapping
- u16 newAndRepeatedKeys; // newly pressed keys plus key repeat
- u16 keyRepeatCounter; // counts down to 0, triggering key repeat
- bool16 watchedKeysPressed; // whether one of the watched keys was pressed
- u16 watchedKeysMask; // bit mask for watched keys
+ /*0x028*/ u16 heldKeysRaw; // held keys without L=A remapping
+ /*0x02A*/ u16 newKeysRaw; // newly pressed keys without L=A remapping
+ /*0x02C*/ u16 heldKeys; // held keys with L=A remapping
+ /*0x02E*/ u16 newKeys; // newly pressed keys with L=A remapping
+ /*0x030*/ u16 newAndRepeatedKeys; // newly pressed keys plus key repeat
+ /*0x032*/ u16 keyRepeatCounter; // counts down to 0, triggering key repeat
+ /*0x034*/ bool16 watchedKeysPressed; // whether one of the watched keys was pressed
+ /*0x036*/ u16 watchedKeysMask; // bit mask for watched keys
- u8 objCount;
+ /*0x038*/ u8 objCount;
- struct OamData oamBuffer[128];
+ /*0x03C*/ struct OamData oamBuffer[128];
- u8 state;
+ /*0x43C*/ u8 state;
- u8 oamLoadDisabled:1;
- u8 inBattle:1;
+ /*0x43D*/ u8 oamLoadDisabled:1;
+ /*0x43D*/ u8 inBattle:1;
};
extern u8 gUnknown_3001764;
diff --git a/include/menu.h b/include/menu.h
index 7b3525461..05c675097 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -9,7 +9,7 @@ struct MenuAction
u8 (*func)();
};
-void sub_8071C20(void);
+void CloseMenu(void);
void AppendToList(u8 *list, u8 *pindex, u32 value);
void InitMenuWindow(const struct WindowConfig *);
void MultistepInitMenuWindowBegin(const struct WindowConfig *);
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c
index c74f4db0d..131369e91 100644
--- a/src/matsuda_debug_menu.c
+++ b/src/matsuda_debug_menu.c
@@ -13,12 +13,18 @@
#define BIT(n) (1 << (n))
+extern u8 gUnknown_0203856C;
+extern u8 gUnknown_0203857D[][64];
+extern u16 gUnknown_02038670[];
+extern u16 gUnknown_02038678[];
+extern u16 gUnknown_02038680[];
+extern u8 gUnknown_02038690[];
+extern u8 gUnknown_02038694;
extern u8 gIsLinkContest;
extern u8 gUnknown_0203869B;
extern u8 gContestPlayerMonIndex;
extern u16 gScriptContestCategory;
extern u16 gScriptContestRank;
-extern u8 (*gCallback_03004AE8)(void);
extern struct Window gMenuWindow;
@@ -30,14 +36,14 @@ extern u16 gUnknown_03004288;
extern u16 gUnknown_03004280;
extern u16 gUnknown_030041B0;
extern u16 gUnknown_030041B8;
+extern struct Window gUnknown_03004210;
+extern u8 (*gCallback_03004AE8)(void);
-extern u8 gUnknown_02038694;
-extern u8 gUnknown_083C9296[];
-extern u8 gUnknown_083C92A8[];
-extern u8 gUnknown_083C9282[];
-extern u8 gUnknown_0203857D[][64];
extern u8 gUnknown_083C926E[][2];
+extern u8 gUnknown_083C9282[];
extern const u8 gUnknown_083C928E[][2];
+extern u8 gUnknown_083C9296[];
+extern u8 gUnknown_083C92A8[];
extern u8 unk_2000000[];
extern u8 gMatsudaDebugMenu_GoBackText[];
extern u8 gMatsudaDebugMenu_BattlePointsText[];
@@ -46,6 +52,8 @@ extern u8 gMatsudaDebugMenu_StartText[];
extern struct SpritePalette gUnknown_083C92BC;
extern struct SpriteSheet gUnknown_083C92B4;
extern struct SpriteTemplate gSpriteTemplate_83C92CC;
+extern void (*gUnknown_083C92E4[][2])(struct Sprite *, s8);
+extern u32 gUnknown_083C9400[2];
extern u8 gMoveNames[][13];
@@ -94,6 +102,10 @@ static void sub_80A9F10(u8);
static void sub_80AA10C(void);
static void sub_80AA5BC(u8);
static void sub_80AA614(u8, u8);
+static void sub_80AAD08(struct Sprite *, s8);
+extern void sub_80AB184(void);
+extern void sub_80AB47C(void);
+extern int sub_80B2A7C(u8); //Don't know return type size
u8 unref_sub_80A9B28(void)
{
@@ -117,7 +129,7 @@ static bool8 sub_80A9B78(void)
gCallback_03004AE8 = gMatsudaDebugMenuActions[choice].func;
return FALSE;
case -1:
- sub_8071C20();
+ CloseMenu();
return TRUE;
}
}
@@ -190,7 +202,7 @@ static void sub_80A9CF8(u8 taskId)
{
DestroyTask(gTasks[taskId].data[10]);
DestroyTask(taskId);
- sub_8071C20();
+ CloseMenu();
}
}
@@ -223,7 +235,7 @@ static void sub_80A9DD8(u8 taskId)
{
DestroyTask(gTasks[taskId].data[10]);
DestroyTask(taskId);
- sub_8071C20();
+ CloseMenu();
}
static void sub_80A9E04(u8 taskId)
@@ -532,186 +544,48 @@ void SetDebugMonForContest(void)
SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[3]);
}
-// too complicated
-__attribute__((naked))
void sub_80AA754(struct Sprite *sprite)
{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- adds r4, r0, 0\n\
- ldr r0, _080AA774 @ =gMain\n\
- ldrh r1, [r0, 0x30]\n\
- cmp r1, 0x20\n\
- beq _080AA7A2\n\
- cmp r1, 0x20\n\
- bgt _080AA782\n\
- cmp r1, 0x2\n\
- beq _080AA7F8\n\
- cmp r1, 0x2\n\
- bgt _080AA778\n\
- cmp r1, 0x1\n\
- beq _080AA7D8\n\
- b _080AA870\n\
- .align 2, 0\n\
-_080AA774: .4byte gMain\n\
-_080AA778:\n\
- cmp r1, 0x8\n\
- beq _080AA868\n\
- cmp r1, 0x10\n\
- beq _080AA7A2\n\
- b _080AA870\n\
-_080AA782:\n\
- cmp r1, 0x80\n\
- beq _080AA7C2\n\
- cmp r1, 0x80\n\
- bgt _080AA790\n\
- cmp r1, 0x40\n\
- beq _080AA7AC\n\
- b _080AA870\n\
-_080AA790:\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- cmp r1, r0\n\
- beq _080AA814\n\
- movs r0, 0x80\n\
- lsls r0, 2\n\
- cmp r1, r0\n\
- beq _080AA834\n\
- b _080AA870\n\
-_080AA7A2:\n\
- ldrh r0, [r4, 0x2E]\n\
- movs r1, 0x1\n\
- eors r0, r1\n\
- strh r0, [r4, 0x2E]\n\
- b _080AA870\n\
-_080AA7AC:\n\
- ldrh r1, [r4, 0x30]\n\
- movs r2, 0x30\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0\n\
- bne _080AA7BC\n\
- movs r0, 0x8\n\
- strh r0, [r4, 0x30]\n\
- b _080AA870\n\
-_080AA7BC:\n\
- subs r0, r1, 0x1\n\
- strh r0, [r4, 0x30]\n\
- b _080AA870\n\
-_080AA7C2:\n\
- ldrh r1, [r4, 0x30]\n\
- movs r3, 0x30\n\
- ldrsh r0, [r4, r3]\n\
- cmp r0, 0x8\n\
- bne _080AA7D2\n\
- movs r0, 0\n\
- strh r0, [r4, 0x30]\n\
- b _080AA870\n\
-_080AA7D2:\n\
- adds r0, r1, 0x1\n\
- strh r0, [r4, 0x30]\n\
- b _080AA870\n\
-_080AA7D8:\n\
- ldr r2, _080AA7F4 @ =gUnknown_083C92E4\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- lsls r0, 2\n\
- movs r3, 0x30\n\
- ldrsh r1, [r4, r3]\n\
- lsls r1, 3\n\
- adds r0, r1\n\
- adds r0, r2\n\
- ldr r2, [r0]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- b _080AA84E\n\
- .align 2, 0\n\
-_080AA7F4: .4byte gUnknown_083C92E4\n\
-_080AA7F8:\n\
- ldr r1, _080AA810 @ =gUnknown_083C92E4\n\
- movs r0, 0x2E\n\
- ldrsh r2, [r4, r0]\n\
- lsls r2, 2\n\
- movs r3, 0x30\n\
- ldrsh r0, [r4, r3]\n\
- lsls r0, 3\n\
- adds r2, r0\n\
- adds r2, r1\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- b _080AA84A\n\
- .align 2, 0\n\
-_080AA810: .4byte gUnknown_083C92E4\n\
-_080AA814:\n\
- ldr r2, _080AA830 @ =gUnknown_083C92E4\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- lsls r0, 2\n\
- movs r3, 0x30\n\
- ldrsh r1, [r4, r3]\n\
- lsls r1, 3\n\
- adds r0, r1\n\
- adds r0, r2\n\
- ldr r2, [r0]\n\
- adds r0, r4, 0\n\
- movs r1, 0xA\n\
- b _080AA84E\n\
- .align 2, 0\n\
-_080AA830: .4byte gUnknown_083C92E4\n\
-_080AA834:\n\
- ldr r1, _080AA864 @ =gUnknown_083C92E4\n\
- movs r0, 0x2E\n\
- ldrsh r2, [r4, r0]\n\
- lsls r2, 2\n\
- movs r3, 0x30\n\
- ldrsh r0, [r4, r3]\n\
- lsls r0, 3\n\
- adds r2, r0\n\
- adds r2, r1\n\
- movs r1, 0xA\n\
- negs r1, r1\n\
-_080AA84A:\n\
- ldr r2, [r2]\n\
- adds r0, r4, 0\n\
-_080AA84E:\n\
- bl _call_via_r2\n\
- ldrh r0, [r4, 0x32]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldrh r1, [r4, 0x34]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- bl sub_80AA614\n\
- b _080AA870\n\
- .align 2, 0\n\
-_080AA864: .4byte gUnknown_083C92E4\n\
-_080AA868:\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl sub_80AAD08\n\
-_080AA870:\n\
- ldr r2, _080AA898 @ =gUnknown_083C9296\n\
- movs r0, 0x2E\n\
- ldrsh r1, [r4, r0]\n\
- movs r3, 0x30\n\
- ldrsh r0, [r4, r3]\n\
- lsls r0, 1\n\
- adds r1, r0\n\
- adds r1, r2\n\
- ldrb r0, [r1]\n\
- strh r0, [r4, 0x20]\n\
- ldr r1, _080AA89C @ =gUnknown_083C92A8\n\
- movs r2, 0x30\n\
- ldrsh r0, [r4, r2]\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- strh r0, [r4, 0x22]\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080AA898: .4byte gUnknown_083C9296\n\
-_080AA89C: .4byte gUnknown_083C92A8\n\
- .syntax divided");
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case 0x10:
+ case 0x20:
+ sprite->data0 ^= 1;
+ break;
+ case 0x40:
+ if (sprite->data1 == 0)
+ sprite->data1 = 8;
+ else
+ sprite->data1--;
+ break;
+ case 0x80:
+ if (sprite->data1 == 8)
+ sprite->data1 = 0;
+ else
+ sprite->data1++;
+ break;
+ case 0x1:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case 0x2:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case 0x100:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case 0x200:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case 0x8:
+ sub_80AAD08(sprite, 1);
+ break;
+ }
+ sprite->pos1.x = gUnknown_083C9296[sprite->data0 + sprite->data1 * 2];
+ sprite->pos1.y = gUnknown_083C92A8[sprite->data1];
}
static void sub_80AA8A0(struct Sprite *sprite, s8 var1, u8 var2)
@@ -849,298 +723,410 @@ void sub_80AABB0(struct Sprite *sprite, u8 var2)
sub_80AA4F0(sprite->data2, 3);
}
-// hard/weird function #2
-__attribute__((naked))
-void sub_80AABF0(struct Sprite *sprite, u8 var2)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- movs r0, 0xFF\n\
- cmp r1, 0\n\
- ble _080AABFE\n\
- movs r0, 0x1\n\
-_080AABFE:\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- ldrh r1, [r5, 0x34]\n\
- adds r0, r1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0\n\
- bge _080AAC14\n\
- movs r4, 0\n\
- b _080AAC1A\n\
-_080AAC14:\n\
- cmp r0, 0x4\n\
- ble _080AAC1A\n\
- movs r4, 0x4\n\
-_080AAC1A:\n\
- lsls r4, 24\n\
- lsrs r0, r4, 24\n\
- bl sub_80AA5BC\n\
- asrs r4, 24\n\
- strh r4, [r5, 0x34]\n\
- ldr r0, _080AAC54 @ =gScriptContestCategory\n\
- strh r4, [r0]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldr r0, _080AAC58 @ =gScriptContestRank\n\
- ldrb r1, [r0]\n\
- adds r0, r4, 0\n\
- bl sub_80AE398\n\
- ldrh r0, [r5, 0x32]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl sub_80AA280\n\
- ldrh r0, [r5, 0x32]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl sub_80AA658\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080AAC54: .4byte gScriptContestCategory\n\
-_080AAC58: .4byte gScriptContestRank\n\
- .syntax divided");
+void sub_80AABF0(struct Sprite *sprite, s8 var2)
+{
+ s8 a = (var2 > 0) ? 1 : -1;
+ s8 r4 = sprite->data3 + a;
+
+ if (r4 < 0)
+ r4 = 0;
+ else if (r4 > 4)
+ r4 = 4;
+ sub_80AA5BC(r4);
+ sprite->data3 = r4;
+ gScriptContestCategory = sprite->data3;
+ sub_80AE398(sprite->data3, gScriptContestRank);
+ sub_80AA280(sprite->data2);
+ sub_80AA658(sprite->data2);
}
-/*
- thumb_func_start sub_80AABF0
-sub_80AABF0: @ 80AABF0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- movs r0, 0xFF
- cmp r1, 0
- ble _080AABFE
- movs r0, 0x1
-_080AABFE:
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r5, 0x34]
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080AAC14
- movs r4, 0
- b _080AAC1A
-_080AAC14:
- cmp r0, 0x4
- ble _080AAC1A
- movs r4, 0x4
-_080AAC1A:
- lsls r4, 24
- lsrs r0, r4, 24
- bl sub_80AA5BC
- asrs r4, 24
- strh r4, [r5, 0x34]
- ldr r0, _080AAC54 @ =gScriptContestCategory
- strh r4, [r0]
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080AAC58 @ =gScriptContestRank
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_80AE398
- ldrh r0, [r5, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA280
- ldrh r0, [r5, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA658
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAC54: .4byte gScriptContestCategory
-_080AAC58: .4byte gScriptContestRank
- thumb_func_end sub_80AABF0
-*/
+void sub_80AAC5C(struct Sprite *sprite, s8 var2)
+{
+ if (var2 > 0)
+ gScriptContestRank++;
+ else if (gScriptContestRank != 0)
+ gScriptContestRank--;
+ if (gScriptContestRank > 3)
+ gScriptContestRank = 3;
+ sub_80AA5E8(gScriptContestRank);
+ sub_80AE398(gScriptContestCategory, gScriptContestRank);
+ sub_80AA280(sprite->data2);
+ sub_80AA658(sprite->data2);
+}
+void sub_80AACC4(void)
+{
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ SetDebugMonForContest();
+ if (!(gIsLinkContest & 1))
+ sub_80AE82C(unk_2000000[0]);
+ SetMainCallback2(sub_80AB47C);
+ }
+}
+
+void sub_80AAD08(struct Sprite *sprite, s8 var2)
+{
+ if (var2 == 1)
+ {
+ unk_2000000[0] = sprite->data3;
+ SetMainCallback2(sub_80AACC4);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ }
+}
+
+void sub_80AAD44(struct Sprite *sprite, s8 var2)
+{
+ if (var2 == 1)
+ {
+ int i;
+
+ SetDebugMonForContest();
+ for (i = 0; i < 4; i++)
+ gUnknown_02038670[i] = sub_80AE770(i, gScriptContestCategory);
+ SetMainCallback2(sub_805469C);
+ }
+}
+
+//Do this later
/*
- thumb_func_start sub_80AA754
-sub_80AA754: @ 80AA754
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080AA774 @ =gMain
- ldrh r1, [r0, 0x30]
- cmp r1, 0x20
- beq _080AA7A2
- cmp r1, 0x20
- bgt _080AA782
- cmp r1, 0x2
- beq _080AA7F8
- cmp r1, 0x2
- bgt _080AA778
- cmp r1, 0x1
- beq _080AA7D8
- b _080AA870
- .align 2, 0
-_080AA774: .4byte gMain
-_080AA778:
- cmp r1, 0x8
- beq _080AA868
- cmp r1, 0x10
- beq _080AA7A2
- b _080AA870
-_080AA782:
- cmp r1, 0x80
- beq _080AA7C2
- cmp r1, 0x80
- bgt _080AA790
- cmp r1, 0x40
- beq _080AA7AC
- b _080AA870
-_080AA790:
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- beq _080AA814
- movs r0, 0x80
- lsls r0, 2
- cmp r1, r0
- beq _080AA834
- b _080AA870
-_080AA7A2:
- ldrh r0, [r4, 0x2E]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x2E]
- b _080AA870
-_080AA7AC:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080AA7BC
- movs r0, 0x8
- strh r0, [r4, 0x30]
- b _080AA870
-_080AA7BC:
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _080AA870
-_080AA7C2:
- ldrh r1, [r4, 0x30]
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- cmp r0, 0x8
- bne _080AA7D2
- movs r0, 0
- strh r0, [r4, 0x30]
- b _080AA870
-_080AA7D2:
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _080AA870
-_080AA7D8:
- ldr r2, _080AA7F4 @ =gUnknown_083C92E4
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 2
- movs r3, 0x30
- ldrsh r1, [r4, r3]
- lsls r1, 3
- adds r0, r1
- adds r0, r2
- ldr r2, [r0]
- adds r0, r4, 0
- movs r1, 0x1
- b _080AA84E
- .align 2, 0
-_080AA7F4: .4byte gUnknown_083C92E4
-_080AA7F8:
- ldr r1, _080AA810 @ =gUnknown_083C92E4
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- lsls r2, 2
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r2, r0
- adds r2, r1
- movs r1, 0x1
- negs r1, r1
- b _080AA84A
- .align 2, 0
-_080AA810: .4byte gUnknown_083C92E4
-_080AA814:
- ldr r2, _080AA830 @ =gUnknown_083C92E4
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 2
- movs r3, 0x30
- ldrsh r1, [r4, r3]
- lsls r1, 3
- adds r0, r1
- adds r0, r2
- ldr r2, [r0]
- adds r0, r4, 0
- movs r1, 0xA
- b _080AA84E
- .align 2, 0
-_080AA830: .4byte gUnknown_083C92E4
-_080AA834:
- ldr r1, _080AA864 @ =gUnknown_083C92E4
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- lsls r2, 2
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r2, r0
- adds r2, r1
- movs r1, 0xA
- negs r1, r1
-_080AA84A:
- ldr r2, [r2]
- adds r0, r4, 0
-_080AA84E:
- bl _call_via_r2
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- bl sub_80AA614
- b _080AA870
- .align 2, 0
-_080AA864: .4byte gUnknown_083C92E4
-_080AA868:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80AAD08
-_080AA870:
- ldr r2, _080AA898 @ =gUnknown_083C9296
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- strh r0, [r4, 0x20]
- ldr r1, _080AA89C @ =gUnknown_083C92A8
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x22]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA898: .4byte gUnknown_083C9296
-_080AA89C: .4byte gUnknown_083C92A8
- thumb_func_end sub_80AA754
+void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d)
+{
+ u32 r5;
+ u16 r7;
+ u8 r7_2;
+ //u32 sp44;
+ //u32 sp48;
+ u32 sp58;
+
+ gMain.state = 0;
+
+ r5 = d + 1;
+ //Could also be DmaClear32
+ DmaFill32(3, 0, (u8 *)VRAM + 0x18000 - r5 * 256, 0x100);
+
+ r7 = StringLength(string);
+ if (r7 > 8)
+ r7 = 8;
+ sp58 = d * 2;
+
+ //More stuff
+
+ r7_2 = 0x7C - sp58;
+
+}
*/
+
+__attribute__((naked))
+void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x64\n\
+ mov r9, r0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ str r1, [sp, 0x48]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x4C]\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ mov r10, r3\n\
+ mov r5, r10\n\
+ adds r5, 0x1\n\
+ lsls r1, r5, 8\n\
+ ldr r0, _080AAEC4 @ =0x06018000\n\
+ subs r1, r0, r1\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x44]\n\
+ ldr r4, _080AAEC8 @ =0x040000d4\n\
+ add r0, sp, 0x44\n\
+ str r0, [r4]\n\
+ str r1, [r4, 0x4]\n\
+ ldr r0, _080AAECC @ =0x85000040\n\
+ str r0, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ mov r0, r9\n\
+ bl StringLength\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ cmp r7, 0x8\n\
+ bls _080AADD0\n\
+ movs r7, 0x8\n\
+_080AADD0:\n\
+ movs r6, 0\n\
+ mov r8, r5\n\
+ mov r1, r10\n\
+ lsls r1, 1\n\
+ str r1, [sp, 0x58]\n\
+ ldr r2, [sp, 0x48]\n\
+ adds r2, 0x20\n\
+ str r2, [sp, 0x5C]\n\
+ cmp r6, r7\n\
+ bge _080AAE1E\n\
+ add r5, sp, 0x40\n\
+ add r0, sp, 0x20\n\
+ mov r10, r0\n\
+ ldr r2, _080AAEC4 @ =0x06018000\n\
+_080AADEC:\n\
+ mov r1, r9\n\
+ adds r0, r1, r6\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r5]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5, 0x1]\n\
+ mov r0, sp\n\
+ adds r1, r5, 0\n\
+ str r2, [sp, 0x60]\n\
+ bl sub_80034D4\n\
+ mov r1, r8\n\
+ lsls r0, r1, 8\n\
+ ldr r2, [sp, 0x60]\n\
+ subs r0, r2, r0\n\
+ mov r1, r10\n\
+ str r1, [r4]\n\
+ str r0, [r4, 0x4]\n\
+ ldr r0, _080AAED0 @ =0x84000008\n\
+ str r0, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ adds r2, 0x20\n\
+ adds r6, 0x1\n\
+ cmp r6, r7\n\
+ blt _080AADEC\n\
+_080AAE1E:\n\
+ movs r1, 0x7C\n\
+ ldr r2, [sp, 0x58]\n\
+ subs r1, r2\n\
+ lsls r1, 24\n\
+ lsrs r7, r1, 24\n\
+ ldr r0, _080AAED4 @ =gMain\n\
+ mov r9, r0\n\
+ lsls r3, r7, 3\n\
+ add r3, r9\n\
+ ldr r0, _080AAED8 @ =gUnknown_083C9400\n\
+ ldr r1, [r0]\n\
+ ldr r2, [r0, 0x4]\n\
+ str r1, [sp, 0x50]\n\
+ str r2, [sp, 0x54]\n\
+ str r1, [r3, 0x3C]\n\
+ str r2, [r3, 0x40]\n\
+ mov r2, r8\n\
+ lsls r0, r2, 3\n\
+ movs r1, 0x80\n\
+ lsls r1, 3\n\
+ adds r2, r1, 0\n\
+ subs r2, r0\n\
+ adds r6, r3, 0\n\
+ adds r6, 0x40\n\
+ ldr r0, _080AAEDC @ =0x000003ff\n\
+ mov r8, r0\n\
+ mov r1, r8\n\
+ ands r2, r1\n\
+ ldrh r5, [r6]\n\
+ ldr r4, _080AAEE0 @ =0xfffffc00\n\
+ adds r0, r4, 0\n\
+ ands r0, r5\n\
+ orrs r0, r2\n\
+ strh r0, [r6]\n\
+ ldrh r5, [r3, 0x3E]\n\
+ ldr r2, _080AAEE4 @ =0xfffffe00\n\
+ adds r0, r2, 0\n\
+ ands r0, r5\n\
+ ldr r1, [sp, 0x48]\n\
+ orrs r0, r1\n\
+ strh r0, [r3, 0x3E]\n\
+ adds r3, 0x3C\n\
+ add r0, sp, 0x4C\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r3]\n\
+ adds r1, r7, 0x1\n\
+ lsls r1, 3\n\
+ mov r0, r9\n\
+ adds r7, r1, r0\n\
+ ldr r0, [sp, 0x50]\n\
+ ldr r1, [sp, 0x54]\n\
+ str r0, [r7, 0x3C]\n\
+ str r1, [r7, 0x40]\n\
+ ldrh r0, [r6]\n\
+ lsls r0, 22\n\
+ lsrs r0, 22\n\
+ adds r0, 0x4\n\
+ adds r5, r7, 0\n\
+ adds r5, 0x40\n\
+ mov r1, r8\n\
+ ands r0, r1\n\
+ ldrh r3, [r5]\n\
+ ands r4, r3\n\
+ orrs r4, r0\n\
+ strh r4, [r5]\n\
+ ldrh r0, [r7, 0x3E]\n\
+ ands r2, r0\n\
+ ldr r0, [sp, 0x5C]\n\
+ orrs r2, r0\n\
+ strh r2, [r7, 0x3E]\n\
+ adds r1, r7, 0\n\
+ adds r1, 0x3C\n\
+ add r2, sp, 0x4C\n\
+ ldrb r2, [r2]\n\
+ strb r2, [r1]\n\
+ add sp, 0x64\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080AAEC4: .4byte 0x06018000\n\
+_080AAEC8: .4byte 0x040000d4\n\
+_080AAECC: .4byte 0x85000040\n\
+_080AAED0: .4byte 0x84000008\n\
+_080AAED4: .4byte gMain\n\
+_080AAED8: .4byte gUnknown_083C9400\n\
+_080AAEDC: .4byte 0x000003ff\n\
+_080AAEE0: .4byte 0xfffffc00\n\
+_080AAEE4: .4byte 0xfffffe00\n\
+ .syntax divided\n");
+}
+
+void unref_sub_80AAEE8(s32 a, u8 b, u8 c, u8 d)
+{
+ u8 string[12];
+ u8 offset = 0;
+
+ if (a < 0)
+ {
+ string[0] = 0xAE;
+ offset = 1;
+ }
+ ConvertIntToDecimalStringN(string + offset, (a < 0) ? -a : a, 0, 8);
+ sub_80AAD84(string, b, c, d);
+}
+
+void sub_80AAF30(void)
+{
+ s32 i;
+
+ gUnknown_0203856C = 1;
+ gContestPlayerMonIndex = 3;
+ sub_80AE098(0);
+ for (i = 3; i > -1; i--)
+ gUnknown_02038690[i] = 3 - i;
+ for (i = 0; i < 3; i++)
+ {
+ gUnknown_02038670[i] = 0;
+ gUnknown_02038680[i] = 0;
+ gUnknown_02038678[i] = 0;
+ memcpy(&gContestMons[i], &gContestMons[3], 0x40);
+ }
+ gUnknown_02038670[3] = 0x12C;
+ gUnknown_02038680[3] = 0x190;
+ gUnknown_02038678[3] = 0x190;
+ sub_80B2A7C(0xFE);
+}
+
+//Don't know size of return type
+int MatsudaDebugMenu_SetHighScore(void)
+{
+ sub_80AAF30();
+ CloseMenu();
+ return 1;
+}
+
+//Don't know size of return type
+int MatsudaDebugMenu_ResetHighScore(void)
+{
+ s32 i;
+
+ gUnknown_0203856C = 0;
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_02038670[i] = 0;
+ gUnknown_02038680[i] = 0;
+ gUnknown_02038678[i] = 0;
+ }
+ CloseMenu();
+ return 1;
+}
+
+//Don't know size of return type
+int MatsudaDebugMenu_SetArtMuseumItems(void)
+{
+ s32 i;
+
+ gContestPlayerMonIndex = 3;
+ sub_80AE098(0);
+ for (i = 3; i > -1; i--)
+ gUnknown_02038690[i] = 3 - i;
+ for (gScriptContestCategory = 0; gScriptContestCategory < 5; gScriptContestCategory++)
+ sub_80B2A7C(0xFF);
+ CloseMenu();
+ return 1;
+}
+
+void unref_sub_80AB084(u8 *text)
+{
+ u16 savedIme;
+ u8 *addr;
+ size_t size;
+
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_DISPCNT = 0x1F40;
+
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = savedIme;
+ REG_DISPSTAT = 8;
+ ResetTasks();
+ ResetSpriteData();
+ SetMainCallback2(sub_80AB184);
+
+ addr = (void *)VRAM;
+ size = 0x18000;
+ while(1)
+ {
+ DmaFill32(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if(size <= 0x1000)
+ {
+ DmaFill32(3, 0, addr, size);
+ break;
+ }
+ }
+ SetUpWindowConfig(&gWindowConfig_81E6FD8);
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8);
+ LoadFontDefaultPalette(&gWindowConfig_81E6FD8);
+ sub_8003460(&gUnknown_03004210, text, 1, 9, 7);
+}
+
+void sub_80AB184(void)
+{
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+}
diff --git a/src/menu.c b/src/menu.c
index 5960e2f79..4bb4dbec2 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -43,7 +43,7 @@ EWRAM_DATA u16 gMenuMessageBoxContentTileOffset = 0;
extern const struct MenuAction gMenuYesNoItems[];
-void sub_8071C20(void)
+void CloseMenu(void)
{
PlaySE(SE_SELECT);
MenuZeroFillScreen();
diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c
index 44f8542a5..645aecc9e 100644
--- a/src/mori_debug_menu.c
+++ b/src/mori_debug_menu.c
@@ -37,7 +37,7 @@ bool8 sub_8083D4C(void)
{
if ( gMain.newKeys & A_BUTTON )
{
- sub_8071C20();
+ CloseMenu();
return TRUE;
}
else
@@ -67,7 +67,7 @@ s8 MoriDebugMenu_Egg(void)
{
if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() )
sub_8041940();
- sub_8071C20();
+ CloseMenu();
return 1;
}
@@ -76,7 +76,7 @@ s8 MoriDebugMenu_MaleEgg(void)
{
if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() )
sub_8041950();
- sub_8071C20();
+ CloseMenu();
return 1;
}
@@ -84,21 +84,21 @@ s8 MoriDebugMenu_MaleEgg(void)
s8 MoriDebugMenu_1000Steps(void)
{
sub_8041790(1000);
- sub_8071C20();
+ CloseMenu();
return 1;
}
s8 MoriDebugMenu_10000Steps(void)
{
sub_8041790(10000);
- sub_8071C20();
+ CloseMenu();
return 1;
}
s8 MoriDebugMenu_MoveTutor(void)
{
sub_8132670();
- sub_8071C20();
+ CloseMenu();
return 1;
}
@@ -116,14 +116,14 @@ s8 MoriDebugMenu_BreedEgg(void)
}
}
gSaveBlock1.filler_30B6 = -3;
- sub_8071C20();
+ CloseMenu();
return 1;
}
s8 MoriDebugMenu_LongName(void)
{
SetMonData(gPlayerParty, MON_DATA_NICKNAME, gUnknown_0839B257);
- sub_8071C20();
+ CloseMenu();
return 1;
}
@@ -134,7 +134,7 @@ s8 MoriDebugMenu_PokeblockCase(void)
for(loopCounter = 0; loopCounter <= 39; loopCounter++)
sub_810CA6C((u8)loopCounter);
- sub_8071C20();
+ CloseMenu();
return 1;
}
@@ -150,7 +150,7 @@ bool8 MoriDebugMenuProcessInput(void)
case -2:
return FALSE;
case -1:
- sub_8071C20();
+ CloseMenu();
return TRUE;
}
}
diff --git a/src/start_menu.c b/src/start_menu.c
index 1e828eed1..0d9e8af2c 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -317,7 +317,7 @@ static u8 StartMenu_InputProcessCallback(void)
}
if(gMain.newKeys & (START_BUTTON | B_BUTTON))
{
- sub_8071C20();
+ CloseMenu();
return 1;
}
return 0;
@@ -408,14 +408,14 @@ u8 StartMenu_OptionCallback(void)
//When player selects EXIT
u8 StartMenu_ExitCallback(void)
{
- sub_8071C20();
+ CloseMenu();
return 1;
}
//When player selects RETIRE
u8 StartMenu_RetireCallback(void)
{
- sub_8071C20();
+ CloseMenu();
SafariZoneRetirePrompt();
return 1;
}