More menu work (#33)

* split adventure log menu out and decompile

* add most adventure log matchings w/ 2 nonmatchings and move some relevant data

* more work on other menus

* fully decomp debug stuff around 203B3F0

* more debug menu work

* fix CreatePartnerSelectionMenu nonmatch

* move more data and clean some data up
This commit is contained in:
Seth Barberee
2021-04-03 20:44:48 -05:00
committed by GitHub
parent a2d206665c
commit 22fec43f18
29 changed files with 5060 additions and 5478 deletions

View File

@@ -106,8 +106,8 @@ _080006B8:
pop {r0}
bx r0
.align 2, 0
_08000708: .4byte gUnknown_80B69F8
_0800070C: .4byte gUnknown_80B6A28
_08000708: .4byte gLoadScreenBackgroundFileNames
_0800070C: .4byte gLoadScreenBackgroundPaletteFileNames
_08000710: .4byte 0x00005b20
_08000714: .4byte gTitleMenuFileArchive
_08000718: .4byte gTitlePaletteFile

File diff suppressed because it is too large Load Diff

686
asm/debug_menu_1.s Normal file
View File

@@ -0,0 +1,686 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_803AA34
sub_803AA34:
push {r4,r5,lr}
movs r4, 0
ldr r0, _0803AA64
ldr r1, [r0]
ldr r2, _0803AA68
ldr r3, [r2]
ldrb r0, [r3, 0x4]
adds r1, r0
ldrb r0, [r1]
adds r5, r2, 0
cmp r0, 0
beq _0803AA7A
ldr r0, _0803AA6C
str r0, [r3, 0xC]
bl sub_803ABC8
lsls r0, 24
cmp r0, 0
beq _0803AA70
ldr r1, [r5]
movs r0, 0x3
str r0, [r1, 0x10]
b _0803AA82
.align 2, 0
_0803AA64: .4byte gFriendAreas
_0803AA68: .4byte gUnknown_203B3F4
_0803AA6C: .4byte gDebug_CloseText
_0803AA70:
ldr r1, [r5]
movs r0, 0x1
negs r0, r0
str r0, [r1, 0x10]
b _0803AA82
_0803AA7A:
ldr r0, _0803AABC
str r0, [r3, 0xC]
movs r0, 0x2
str r0, [r3, 0x10]
_0803AA82:
adds r4, 0x1
ldr r5, [r5]
mov r12, r5
lsls r1, r4, 3
mov r3, r12
adds r3, 0xC
adds r2, r3, r1
ldr r0, _0803AAC0
ldr r0, [r0]
str r0, [r2]
mov r2, r12
adds r2, 0x10
adds r1, r2, r1
movs r0, 0x4
str r0, [r1]
adds r4, 0x1
lsls r1, r4, 3
adds r3, r1
movs r0, 0
str r0, [r3]
adds r2, r1
movs r0, 0x1
str r0, [r2]
mov r1, r12
ldr r0, [r1, 0x10]
str r0, [r1, 0x8]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803AABC: .4byte gDebug_OpenText
_0803AAC0: .4byte gUnknown_80D4970
thumb_func_end sub_803AA34
thumb_func_start sub_803AAC4
sub_803AAC4:
push {lr}
movs r0, 0x1
bl sub_8021274
cmp r0, 0x4
bhi _0803AB2E
lsls r0, 2
ldr r1, _0803AADC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803AADC: .4byte _0803AAE0
.align 2, 0
_0803AAE0:
.4byte _0803AB2E
.4byte _0803AB2E
.4byte _0803AB24
.4byte _0803AAF4
.4byte _0803AB0C
_0803AAF4:
bl sub_802132C
ldr r1, _0803AB08
ldr r1, [r1]
strb r0, [r1, 0x4]
movs r0, 0x2
bl sub_803A924
b _0803AB2E
.align 2, 0
_0803AB08: .4byte gUnknown_203B3F4
_0803AB0C:
bl sub_802132C
ldr r1, _0803AB20
ldr r1, [r1]
strb r0, [r1, 0x4]
movs r0, 0x3
bl sub_803A924
b _0803AB2E
.align 2, 0
_0803AB20: .4byte gUnknown_203B3F4
_0803AB24:
bl sub_80213A0
movs r0, 0x4
bl sub_803A924
_0803AB2E:
pop {r0}
bx r0
thumb_func_end sub_803AAC4
thumb_func_start sub_803AB34
sub_803AB34:
push {r4,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_8021274
ldr r4, _0803AB6C
ldr r0, [r4]
adds r0, 0x4C
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _0803AB5A
ldr r0, [r4]
adds r0, 0x4C
mov r1, sp
bl sub_8013114
_0803AB5A:
ldr r0, [sp]
cmp r0, 0x2
beq _0803AB7A
cmp r0, 0x2
bgt _0803AB70
cmp r0, 0x1
beq _0803AB9E
b _0803ABA4
.align 2, 0
_0803AB6C: .4byte gUnknown_203B3F4
_0803AB70:
cmp r0, 0x3
beq _0803AB84
cmp r0, 0x4
beq _0803AB96
b _0803ABA4
_0803AB7A:
ldr r0, [r4]
ldrb r0, [r0, 0x4]
bl UnlockFriendArea
b _0803AB8E
_0803AB84:
ldr r0, [r4]
ldrb r0, [r0, 0x4]
movs r1, 0x1
bl sub_809249C
_0803AB8E:
movs r0, 0x1
bl sub_803A924
b _0803ABA4
_0803AB96:
movs r0, 0x3
bl sub_803A924
b _0803ABA4
_0803AB9E:
movs r0, 0x1
bl sub_803A924
_0803ABA4:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_803AB34
thumb_func_start sub_803ABAC
sub_803ABAC:
push {lr}
bl sub_80217EC
cmp r0, 0x1
bls _0803ABC4
cmp r0, 0x3
bhi _0803ABC4
bl sub_8021830
movs r0, 0x1
bl sub_803A924
_0803ABC4:
pop {r0}
bx r0
thumb_func_end sub_803ABAC
thumb_func_start sub_803ABC8
sub_803ABC8:
push {r4-r6,lr}
movs r5, 0
movs r6, 0x1
_0803ABCE:
ldr r2, _0803AC08
movs r0, 0x58
adds r1, r5, 0
muls r1, r0
ldr r0, [r2]
adds r2, r0, r1
ldrh r1, [r2]
adds r0, r6, 0
ands r0, r1
cmp r0, 0
beq _0803AC10
lsrs r0, r1, 1
ands r0, r6
cmp r0, 0
beq _0803AC10
ldr r0, _0803AC0C
ldr r4, [r0]
movs r1, 0x8
ldrsh r0, [r2, r1]
bl GetFriendArea
ldrb r1, [r4, 0x4]
lsls r0, 24
lsrs r0, 24
cmp r1, r0
bne _0803AC10
movs r0, 0
b _0803AC1C
.align 2, 0
_0803AC08: .4byte gUnknown_203B45C
_0803AC0C: .4byte gUnknown_203B3F4
_0803AC10:
adds r5, 0x1
movs r0, 0xCE
lsls r0, 1
cmp r5, r0
ble _0803ABCE
movs r0, 0x1
_0803AC1C:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_803ABC8
thumb_func_start sub_803AC24
sub_803AC24:
push {r4,lr}
ldr r4, _0803AC44
movs r0, 0xA0
lsls r0, 1
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
movs r0, 0
bl sub_803ACD0
movs r0, 0x1
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0803AC44: .4byte gUnknown_203B3F8
thumb_func_end sub_803AC24
thumb_func_start sub_803AC48
sub_803AC48:
push {lr}
ldr r0, _0803AC60
ldr r0, [r0]
ldr r0, [r0]
cmp r0, 0x7
bhi _0803ACA8
lsls r0, 2
ldr r1, _0803AC64
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803AC60: .4byte gUnknown_203B3F8
_0803AC64: .4byte _0803AC68
.align 2, 0
_0803AC68:
.4byte _0803AC88
.4byte _0803AC90
.4byte _0803AC90
.4byte _0803AC96
.4byte _0803ACA8
.4byte _0803AC9C
.4byte _0803ACA2
.4byte _0803ACA8
_0803AC88:
movs r0, 0x1
bl sub_803ACD0
b _0803ACAC
_0803AC90:
bl sub_803AF38
b _0803ACAC
_0803AC96:
bl sub_803AF88
b _0803ACAC
_0803AC9C:
bl sub_803AFE8
b _0803ACAC
_0803ACA2:
bl sub_803B034
b _0803ACAC
_0803ACA8:
movs r0, 0x3
b _0803ACAE
_0803ACAC:
movs r0, 0
_0803ACAE:
pop {r1}
bx r1
thumb_func_end sub_803AC48
thumb_func_start sub_803ACB4
sub_803ACB4:
push {r4,lr}
ldr r4, _0803ACCC
ldr r0, [r4]
cmp r0, 0
beq _0803ACC6
bl MemoryFree
movs r0, 0
str r0, [r4]
_0803ACC6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0803ACCC: .4byte gUnknown_203B3F8
thumb_func_end sub_803ACB4
thumb_func_start sub_803ACD0
sub_803ACD0:
push {lr}
ldr r1, _0803ACE4
ldr r1, [r1]
str r0, [r1]
bl sub_803ACE8
bl sub_803AD88
pop {r0}
bx r0
.align 2, 0
_0803ACE4: .4byte gUnknown_203B3F8
thumb_func_end sub_803ACD0
thumb_func_start sub_803ACE8
sub_803ACE8:
push {r4-r7,lr}
ldr r4, _0803AD08
ldr r0, [r4]
adds r0, 0xE0
bl sub_8006518
ldr r1, [r4]
ldr r0, [r1]
cmp r0, 0x3
beq _0803AD10
cmp r0, 0x5
beq _0803AD38
movs r2, 0
ldr r3, _0803AD0C
b _0803AD50
.align 2, 0
_0803AD08: .4byte gUnknown_203B3F8
_0803AD0C: .4byte gUnknown_80E7ED4
_0803AD10:
bl sub_803AEB0
ldr r2, [r4]
movs r0, 0x88
lsls r0, 1
adds r2, r0
ldr r1, _0803AD34
ldm r1!, {r3,r5,r6}
stm r2!, {r3,r5,r6}
ldm r1!, {r3,r5,r7}
stm r2!, {r3,r5,r7}
ldr r1, [r4]
adds r0, r1, r0
adds r1, 0x90
bl sub_8012CAC
b _0803AD6C
.align 2, 0
_0803AD34: .4byte gUnknown_80E7EEC
_0803AD38:
movs r6, 0x94
lsls r6, 1
adds r1, r6
ldr r0, _0803AD4C
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
b _0803AD6C
.align 2, 0
_0803AD4C: .4byte gUnknown_80E7F04
_0803AD50:
ldr r0, [r4]
lsls r1, r2, 1
adds r1, r2
lsls r1, 3
adds r0, r1
adds r0, 0xE0
adds r1, r3, 0
ldm r1!, {r5-r7}
stm r0!, {r5-r7}
ldm r1!, {r5-r7}
stm r0!, {r5-r7}
adds r2, 0x1
cmp r2, 0x3
ble _0803AD50
_0803AD6C:
bl ResetUnusedInputStruct
ldr r0, _0803AD84
ldr r0, [r0]
adds r0, 0xE0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803AD84: .4byte gUnknown_203B3F8
thumb_func_end sub_803ACE8
thumb_func_start sub_803AD88
sub_803AD88:
push {lr}
sub sp, 0x8
ldr r1, _0803ADA4
ldr r0, [r1]
ldr r0, [r0]
adds r2, r1, 0
cmp r0, 0x7
bhi _0803AE50
lsls r0, 2
ldr r1, _0803ADA8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803ADA4: .4byte gUnknown_203B3F8
_0803ADA8: .4byte _0803ADAC
.align 2, 0
_0803ADAC:
.4byte _0803AE50
.4byte _0803ADCC
.4byte _0803ADDA
.4byte _0803ADE2
.4byte _0803AE50
.4byte _0803AE0C
.4byte _0803AE44
.4byte _0803AE50
_0803ADCC:
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0xA
bl sub_8023868
b _0803AE50
_0803ADDA:
movs r0, 0x1
bl sub_8023B7C
b _0803AE50
_0803ADE2:
bl sub_8023DA4
ldr r0, _0803AE08
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x10
adds r1, r2, 0
adds r1, 0x90
adds r3, r2, 0
adds r3, 0xD0
ldr r2, [r2, 0xC]
str r2, [sp]
movs r2, 0x2
str r2, [sp, 0x4]
movs r2, 0
bl sub_8012D60
b _0803AE50
.align 2, 0
_0803AE08: .4byte gUnknown_203B3F8
_0803AE0C:
ldr r2, [r2]
movs r1, 0x3
str r1, [r2, 0x70]
movs r0, 0x1
str r0, [r2, 0x68]
movs r0, 0x64
str r0, [r2, 0x6C]
ldr r0, [r2, 0x8]
ldrb r0, [r0, 0x3]
str r0, [r2, 0x64]
str r1, [r2, 0x74]
movs r1, 0x94
lsls r1, 1
adds r0, r2, r1
str r0, [r2, 0x78]
movs r0, 0x2C
str r0, [r2, 0x7C]
adds r1, r2, 0
adds r1, 0x80
movs r0, 0x12
str r0, [r1]
adds r0, r2, 0
adds r0, 0x60
bl sub_8013AA0
bl sub_803AE58
b _0803AE50
_0803AE44:
ldr r0, [r2]
ldr r1, [r0, 0x8]
adds r1, 0x4C
movs r0, 0x2
bl sub_801602C
_0803AE50:
add sp, 0x8
pop {r0}
bx r0
thumb_func_end sub_803AD88
thumb_func_start sub_803AE58
sub_803AE58:
push {r4,lr}
sub sp, 0x4
ldr r4, _0803AEA8
ldr r0, [r4]
ldr r0, [r0, 0x74]
bl sub_8008C54
ldr r0, [r4]
ldr r0, [r0, 0x74]
bl sub_80073B8
ldr r2, _0803AEAC
ldr r0, [r4]
ldr r3, [r0, 0x74]
movs r0, 0
str r0, [sp]
movs r0, 0x4
movs r1, 0
bl xxx_call_draw_string
ldr r0, [r4]
adds r0, 0x60
bl sub_8013C68
ldr r0, [r4]
ldr r0, [r0, 0x74]
bl sub_80073E0
bl sub_8023DA4
ldr r0, [r4]
adds r0, 0x10
movs r1, 0
bl sub_8012EA4
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0803AEA8: .4byte gUnknown_203B3F8
_0803AEAC: .4byte gDebug_NumberText2
thumb_func_end sub_803AE58
thumb_func_start sub_803AEB0
sub_803AEB0:
push {r4-r6,lr}
ldr r4, _0803AEFC
ldr r0, [r4]
adds r0, 0xD0
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r4, [r4]
movs r3, 0
adds r1, r4, 0
adds r1, 0x90
ldr r0, _0803AF00
str r0, [r1]
adds r5, r4, 0
adds r5, 0x94
movs r0, 0x4
str r0, [r5]
movs r2, 0x1
adds r1, 0x8
ldr r0, _0803AF04
str r0, [r1]
adds r1, 0x4
movs r0, 0x5
str r0, [r1]
movs r6, 0x2
adds r0, r4, 0
adds r0, 0xA0
str r3, [r0]
adds r0, 0x4
str r2, [r0]
adds r0, 0x2C
ldrh r0, [r0]
cmp r0, 0
bne _0803AF08
ldr r0, [r5]
str r0, [r4, 0xC]
b _0803AF2C
.align 2, 0
_0803AEFC: .4byte gUnknown_203B3F8
_0803AF00: .4byte gDebug_LevelText
_0803AF04: .4byte gUnknown_80E7F2C
_0803AF08:
adds r3, 0x1
cmp r3, r6
bge _0803AF2C
ldr r0, _0803AF34
ldr r2, [r0]
lsls r1, r3, 1
adds r0, r2, 0
adds r0, 0xD0
adds r0, r1
ldrh r0, [r0]
cmp r0, 0
bne _0803AF08
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0x94
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0xC]
_0803AF2C:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803AF34: .4byte gUnknown_203B3F8
thumb_func_end sub_803AEB0
thumb_func_start sub_803AF38
sub_803AF38:
push {lr}
movs r0, 0x1
bl sub_8023A94
cmp r0, 0x2
beq _0803AF78
cmp r0, 0x2
bcc _0803AF82
cmp r0, 0x3
bne _0803AF82
bl sub_8023B44
ldr r1, _0803AF70
ldr r1, [r1]
strh r0, [r1, 0x4]
ldr r3, _0803AF74
movs r0, 0x4
ldrsh r2, [r1, r0]
movs r0, 0x58
muls r2, r0
ldr r0, [r3]
adds r0, r2
str r0, [r1, 0x8]
movs r0, 0x3
bl sub_803ACD0
b _0803AF82
.align 2, 0
_0803AF70: .4byte gUnknown_203B3F8
_0803AF74: .4byte gUnknown_203B45C
_0803AF78:
bl sub_8023C60
movs r0, 0x7
bl sub_803ACD0
_0803AF82:
pop {r0}
bx r0
thumb_func_end sub_803AF38
.align 2,0

File diff suppressed because it is too large Load Diff

View File

@@ -100,7 +100,7 @@ _080389A0:
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080389B8: .4byte gUnknown_203B370
_080389B8: .4byte gRescuePasswordMenu
_080389BC: .4byte gUnknown_80E71E4
_080389C0: .4byte gUnknown_203B368
_080389C4: .4byte gUnknown_203B36C
@@ -163,7 +163,7 @@ _08038A36:
bx r0
.align 2, 0
_08038A54: .4byte gUnknown_202EC50
_08038A58: .4byte gUnknown_203B370
_08038A58: .4byte gRescuePasswordMenu
thumb_func_end CreateRescuePasswordMenu
thumb_func_start CleanRescuePasswordMenu
@@ -189,7 +189,7 @@ _08038A86:
pop {r0}
bx r0
.align 2, 0
_08038A8C: .4byte gUnknown_203B370
_08038A8C: .4byte gRescuePasswordMenu
thumb_func_end CleanRescuePasswordMenu
thumb_func_start UpdateRescuePasswordMenu
@@ -214,7 +214,7 @@ _08038AA8:
mov pc, r0
.align 2, 0
_08038AB4: .4byte 0x0000ffdc
_08038AB8: .4byte gUnknown_203B370
_08038AB8: .4byte gRescuePasswordMenu
_08038ABC: .4byte _08038AC0
.align 2, 0
_08038AC0:
@@ -277,7 +277,7 @@ _08038B38:
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08038B44: .4byte gUnknown_203B370
_08038B44: .4byte gRescuePasswordMenu
_08038B48: .4byte gUnknown_202EC50
_08038B4C: .4byte _08038B50
.align 2, 0
@@ -328,7 +328,7 @@ _08038BA8:
bl sub_80951BC
b _08038DB0
.align 2, 0
_08038BCC: .4byte gUnknown_203B370
_08038BCC: .4byte gRescuePasswordMenu
_08038BD0: .4byte 0x0000ffdc
_08038BD4:
movs r0, 0x13
@@ -362,7 +362,7 @@ _08038BDC:
bl MemoryFill8
b _08038DB0
.align 2, 0
_08038C18: .4byte gUnknown_203B370
_08038C18: .4byte gRescuePasswordMenu
_08038C1C: .4byte 0x0000ffdc
_08038C20: .4byte gUnknown_203B484
_08038C24:
@@ -396,13 +396,13 @@ _08038C2C:
stm r2!, {r3,r4,r6}
movs r1, 0x6
strb r1, [r0]
bl sub_8035D4C
bl GetMainMenu
adds r0, 0x3A
movs r1, 0x1
strb r1, [r0]
b _08038DB0
.align 2, 0
_08038C70: .4byte gUnknown_203B370
_08038C70: .4byte gRescuePasswordMenu
_08038C74: .4byte 0x0000ffdc
_08038C78:
bl sub_8031DCC
@@ -438,7 +438,7 @@ _08038CB0:
ldr r5, _08038CB8
b _08038DB0
.align 2, 0
_08038CB4: .4byte gUnknown_203B370
_08038CB4: .4byte gRescuePasswordMenu
_08038CB8: .4byte 0x0000ffdc
_08038CBC:
bl sub_8031E00
@@ -488,7 +488,7 @@ _08038CEE:
b _08038C84
.align 2, 0
_08038D1C: .4byte gUnknown_202EC50
_08038D20: .4byte gUnknown_203B370
_08038D20: .4byte gRescuePasswordMenu
_08038D24:
ldr r1, [r6]
movs r0, 0x8
@@ -547,7 +547,7 @@ _08038D66:
b _08038DB0
.align 2, 0
_08038D9C: .4byte gUnknown_202EC50
_08038DA0: .4byte gUnknown_203B370
_08038DA0: .4byte gRescuePasswordMenu
_08038DA4:
ldr r1, [r6]
movs r0, 0x9
@@ -592,7 +592,7 @@ _08038DEE:
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08038DF8: .4byte gUnknown_203B370
_08038DF8: .4byte gRescuePasswordMenu
_08038DFC: .4byte _08038E00
.align 2, 0
_08038E00:
@@ -623,7 +623,7 @@ _08038E3C:
ldr r2, _08038E58
b _08038F2E
.align 2, 0
_08038E50: .4byte gUnknown_203B370
_08038E50: .4byte gRescuePasswordMenu
_08038E54: .4byte gUnknown_80E71FC
_08038E58: .4byte gUnknown_80E7214
_08038E5C:
@@ -638,7 +638,7 @@ _08038E5C:
ldr r2, _08038E78
b _08038F2E
.align 2, 0
_08038E70: .4byte gUnknown_203B370
_08038E70: .4byte gRescuePasswordMenu
_08038E74: .4byte gUnknown_80E72EC
_08038E78: .4byte gUnknown_80E7304
_08038E7C:
@@ -653,7 +653,7 @@ _08038E7C:
ldr r2, _08038E98
b _08038F2E
.align 2, 0
_08038E90: .4byte gUnknown_203B370
_08038E90: .4byte gRescuePasswordMenu
_08038E94: .4byte gUnknown_80E7344
_08038E98: .4byte gUnknown_80E735C
_08038E9C:
@@ -668,7 +668,7 @@ _08038E9C:
ldr r2, _08038EB8
b _08038F2E
.align 2, 0
_08038EB0: .4byte gUnknown_203B370
_08038EB0: .4byte gRescuePasswordMenu
_08038EB4: .4byte gUnknown_80E7588
_08038EB8: .4byte gUnknown_80E75A0
_08038EBC:
@@ -683,7 +683,7 @@ _08038EBC:
ldr r2, _08038ED8
b _08038F2E
.align 2, 0
_08038ED0: .4byte gUnknown_203B370
_08038ED0: .4byte gRescuePasswordMenu
_08038ED4: .4byte gUnknown_80E73AC
_08038ED8: .4byte gUnknown_80E73C4
_08038EDC:
@@ -698,7 +698,7 @@ _08038EDC:
ldr r2, _08038EF8
b _08038F2E
.align 2, 0
_08038EF0: .4byte gUnknown_203B370
_08038EF0: .4byte gRescuePasswordMenu
_08038EF4: .4byte gUnknown_80E7408
_08038EF8: .4byte gUnknown_80E7420
_08038EFC:
@@ -713,7 +713,7 @@ _08038EFC:
ldr r2, _08038F18
b _08038F2E
.align 2, 0
_08038F10: .4byte gUnknown_203B370
_08038F10: .4byte gRescuePasswordMenu
_08038F14: .4byte gUnknown_80E7468
_08038F18: .4byte gUnknown_80E7480
_08038F1C:
@@ -737,7 +737,7 @@ _08038F2E:
bl SetMenuItems
b _08038F74
.align 2, 0
_08038F44: .4byte gUnknown_203B370
_08038F44: .4byte gRescuePasswordMenu
_08038F48: .4byte gUnknown_80E74C8
_08038F4C: .4byte gUnknown_80E74E0
_08038F50:
@@ -770,7 +770,7 @@ _08038F74:
pop {r0}
bx r0
.align 2, 0
_08038F8C: .4byte gUnknown_203B370
_08038F8C: .4byte gRescuePasswordMenu
_08038F90: .4byte gUnknown_80E752C
_08038F94: .4byte gUnknown_80E7544
thumb_func_end sub_8038DC0
@@ -817,7 +817,7 @@ sub_8038F98:
pop {r0}
bx r0
.align 2, 0
_08038FF4: .4byte gUnknown_203B370
_08038FF4: .4byte gRescuePasswordMenu
_08038FF8: .4byte gUnknown_80E7278
_08038FFC: .4byte gUnknown_80E7290
thumb_func_end sub_8038F98
@@ -838,7 +838,7 @@ sub_8039000:
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803901C: .4byte gUnknown_203B370
_0803901C: .4byte gRescuePasswordMenu
_08039020: .4byte _08039024
.align 2, 0
_08039024:
@@ -1075,7 +1075,7 @@ sub_8039174:
pop {r0}
bx r0
.align 2, 0
_080391D8: .4byte gUnknown_203B370
_080391D8: .4byte gRescuePasswordMenu
_080391DC: .4byte 0x0000feff
_080391E0: .4byte 0x0000fdff
_080391E4: .4byte 0x0000f3ff
@@ -1131,7 +1131,7 @@ _0803923C:
pop {r0}
bx r0
.align 2, 0
_08039250: .4byte gUnknown_203B370
_08039250: .4byte gRescuePasswordMenu
thumb_func_end sub_80391F8
.align 2,0

76
asm/unk_menu_203B360.s Normal file
View File

@@ -0,0 +1,76 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8038440
sub_8038440:
push {r4,r5,lr}
movs r5, 0
ldr r0, _080384B0
ldr r0, [r0]
mov r12, r0
movs r3, 0xD4
lsls r3, 1
add r3, r12
ldrh r1, [r3]
ldr r0, _080384B4
ands r0, r1
ldr r1, _080384B8
ands r0, r1
ldr r4, _080384BC
ands r0, r4
ldr r1, _080384C0
ands r0, r1
ldr r1, _080384C4
ands r0, r1
movs r2, 0x80
lsls r2, 7
ldr r1, _080384C8
ands r0, r1
orrs r0, r2
strh r0, [r3]
movs r2, 0xFC
lsls r2, 2
ldrh r1, [r3, 0x4]
movs r0, 0xFC
lsls r0, 8
ands r0, r1
orrs r0, r2
ands r0, r4
movs r2, 0xF
movs r4, 0xF0
lsls r4, 8
ldr r1, _080384CC
ands r0, r1
orrs r0, r4
strh r0, [r3, 0x4]
movs r0, 0x70
strh r0, [r3, 0x2]
movs r1, 0xE0
lsls r1, 3
ldrh r0, [r3, 0x6]
ands r2, r0
orrs r2, r1
strh r2, [r3, 0x6]
movs r0, 0xD8
lsls r0, 1
add r0, r12
str r5, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080384B0: .4byte gUnknown_203B360
_080384B4: .4byte 0x0000feff
_080384B8: .4byte 0x0000fdff
_080384BC: .4byte 0x0000f3ff
_080384C0: .4byte 0x0000efff
_080384C4: .4byte 0x0000dfff
_080384C8: .4byte 0x00003fff
_080384CC: .4byte 0x00000fff
thumb_func_end sub_8038440
.align 2,0

364
asm/unk_menu_203B364.s Normal file
View File

@@ -0,0 +1,364 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8038630
sub_8038630:
push {r4-r6,lr}
sub sp, 0x18
ldr r5, _080386A8
movs r0, 0x3
str r0, [sp, 0x14]
ldr r6, _080386AC
ldr r0, [r6]
ldr r4, [r0, 0x4]
cmp r4, 0x1
bne _08038646
b _08038798
_08038646:
cmp r4, 0x1
bcc _0803864C
b _08038824
_0803864C:
adds r0, 0x8
bl sub_8012FD8
movs r5, 0
str r5, [sp, 0x10]
bl sub_80140F8
bl sub_8011C1C
adds r1, r0, 0
add r0, sp, 0x10
bl sub_801203C
adds r4, r0, 0
bl sub_8014114
cmp r4, 0
beq _080386B8
cmp r4, 0x1
beq _08038738
ldr r0, [r6]
movs r4, 0xA4
lsls r4, 1
adds r0, r4
movs r1, 0
bl sub_8035CC0
ldr r1, [r6]
ldr r0, [r1]
cmp r0, 0x2E
bne _08038750
adds r0, r1, 0
adds r0, 0x8
adds r1, r4
ldr r3, _080386B0
ldr r2, _080386B4
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r5, [sp, 0xC]
movs r2, 0
bl SetMenuItems
b _0803876E
.align 2, 0
_080386A8: .4byte 0x0000ffdc
_080386AC: .4byte gUnknown_203B364
_080386B0: .4byte gUnknown_80E6F38
_080386B4: .4byte gUnknown_80E7114
_080386B8:
ldr r0, [r6]
movs r1, 0xA4
lsls r1, 1
adds r0, r1
movs r1, 0
bl sub_8035CC0
ldr r1, [r6]
ldr r0, [r1]
cmp r0, 0x2E
bne _080386F8
adds r0, r1, 0
adds r0, 0x8
movs r2, 0xA4
lsls r2, 1
adds r1, r2
ldr r3, _080386F0
ldr r2, _080386F4
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r5, [sp, 0xC]
movs r2, 0
bl SetMenuItems
b _08038716
.align 2, 0
_080386F0: .4byte gUnknown_80E6F38
_080386F4: .4byte gUnknown_80E70CC
_080386F8:
adds r0, r1, 0
adds r0, 0x8
movs r2, 0xA4
lsls r2, 1
adds r1, r2
ldr r3, _08038728
ldr r2, _0803872C
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r5, [sp, 0xC]
movs r2, 0
bl SetMenuItems
_08038716:
ldr r4, _08038730
ldr r1, [r4]
ldr r0, [r1]
cmp r0, 0x2D
bne _08038734
movs r0, 0x1
str r0, [r1, 0x4]
movs r0, 0x13
b _08038826
.align 2, 0
_08038728: .4byte gUnknown_80E6F38
_0803872C: .4byte gUnknown_80E6FBC
_08038730: .4byte gUnknown_203B364
_08038734:
adds r0, r1, 0
b _08038772
_08038738:
ldr r0, _0803874C
movs r1, 0
movs r2, 0
movs r3, 0
bl sub_80141B4
ldr r1, [r6]
movs r0, 0x5
b _08038780
.align 2, 0
_0803874C: .4byte gUnknown_80E7178
_08038750:
adds r0, r1, 0
adds r0, 0x8
movs r2, 0xA4
lsls r2, 1
adds r1, r2
ldr r3, _08038788
ldr r2, _0803878C
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r5, [sp, 0xC]
movs r2, 0
bl SetMenuItems
_0803876E:
ldr r4, _08038790
ldr r0, [r4]
_08038772:
adds r0, 0x8
movs r1, 0
movs r2, 0x1
bl sub_8035CF4
ldr r1, [r4]
movs r0, 0x1
_08038780:
str r0, [r1, 0x4]
ldr r5, _08038794
b _08038824
.align 2, 0
_08038788: .4byte gUnknown_80E6F38
_0803878C: .4byte gUnknown_80E701C
_08038790: .4byte gUnknown_203B364
_08038794: .4byte 0x0000ffdc
_08038798:
adds r0, 0x8
bl sub_80130A8
lsls r0, 24
cmp r0, 0
bne _080387AE
ldr r0, [r6]
adds r0, 0x8
add r1, sp, 0x14
bl sub_8013114
_080387AE:
ldr r0, [sp, 0x14]
cmp r0, 0x3
beq _0803881C
cmp r0, 0x3
bhi _080387BE
cmp r0, 0x2
beq _080387C2
b _08038820
_080387BE:
cmp r0, 0x4
bne _08038820
_080387C2:
ldr r4, _080387D8
ldr r1, [r4]
ldr r0, [r1]
cmp r0, 0x29
beq _080387D0
cmp r0, 0x2E
bne _080387DC
_080387D0:
movs r0, 0x1
str r0, [r1, 0x4]
movs r5, 0x1
b _08038820
.align 2, 0
_080387D8: .4byte gUnknown_203B364
_080387DC:
cmp r0, 0x2D
bne _080387E8
movs r0, 0x1
str r0, [r1, 0x4]
movs r5, 0x13
b _08038820
_080387E8:
cmp r0, 0x2C
bne _080387F4
movs r0, 0x1
str r0, [r1, 0x4]
movs r5, 0x1F
b _08038820
_080387F4:
bl GetMainMenu
adds r0, 0x3A
ldrb r0, [r0]
cmp r0, 0
beq _0803880A
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0x4]
movs r5, 0x35
b _08038820
_0803880A:
ldr r0, [r4]
movs r1, 0x1
str r1, [r0, 0x4]
ldr r0, [r0]
movs r5, 0xB
cmp r0, 0x2B
bne _08038820
movs r5, 0xD
b _08038820
_0803881C:
ldr r0, [r6]
str r4, [r0, 0x4]
_08038820:
bl sub_80388C4
_08038824:
adds r0, r5, 0
_08038826:
add sp, 0x18
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8038630
thumb_func_start sub_8038830
sub_8038830:
push {r4,r5,lr}
movs r5, 0
ldr r0, _080388A4
ldr r0, [r0]
mov r12, r0
movs r3, 0xD4
lsls r3, 1
add r3, r12
ldrh r1, [r3]
ldr r0, _080388A8
ands r0, r1
ldr r1, _080388AC
ands r0, r1
ldr r4, _080388B0
ands r0, r4
ldr r1, _080388B4
ands r0, r1
ldr r1, _080388B8
ands r0, r1
movs r2, 0x80
lsls r2, 7
ldr r1, _080388BC
ands r0, r1
orrs r0, r2
strh r0, [r3]
movs r2, 0xFC
lsls r2, 2
ldrh r1, [r3, 0x4]
movs r0, 0xFC
lsls r0, 8
ands r0, r1
orrs r0, r2
ands r0, r4
movs r2, 0xF
movs r4, 0xF0
lsls r4, 8
ldr r1, _080388C0
ands r0, r1
orrs r0, r4
strh r0, [r3, 0x4]
movs r0, 0x70
strh r0, [r3, 0x2]
movs r1, 0xD0
lsls r1, 3
ldrh r0, [r3, 0x6]
ands r2, r0
orrs r2, r1
strh r2, [r3, 0x6]
movs r0, 0xD8
lsls r0, 1
add r0, r12
str r5, [r0]
movs r0, 0
bl ResetSprites
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080388A4: .4byte gUnknown_203B364
_080388A8: .4byte 0x0000feff
_080388AC: .4byte 0x0000fdff
_080388B0: .4byte 0x0000f3ff
_080388B4: .4byte 0x0000efff
_080388B8: .4byte 0x0000dfff
_080388BC: .4byte 0x00003fff
_080388C0: .4byte 0x00000fff
thumb_func_end sub_8038830
thumb_func_start sub_80388C4
sub_80388C4:
push {r4,r5,lr}
ldr r5, _080388FC
ldr r2, [r5]
movs r4, 0xD8
lsls r4, 1
adds r0, r2, r4
ldr r0, [r0]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _080388EA
movs r1, 0xD4
lsls r1, 1
adds r0, r2, r1
subs r1, 0xA8
movs r2, 0
movs r3, 0
bl AddSprite
_080388EA:
ldr r1, [r5]
adds r1, r4
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080388FC: .4byte gUnknown_203B364
thumb_func_end sub_80388C4
.align 2,0

View File

@@ -15555,371 +15555,5 @@ _08031F00:
_08031F5C: .4byte gUnknown_203B334
thumb_func_end sub_8031E74
thumb_func_start CreateAdventureLogScreen
CreateAdventureLogScreen:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _08031FD0
movs r0, 0xA0
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
str r5, [r0, 0x34]
lsls r1, r5, 1
adds r1, r5
lsls r1, 3
adds r1, 0x3C
adds r1, r0, r1
str r1, [r0, 0x38]
adds r0, 0x3C
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x34]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x3C
ldr r0, _08031FD4
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldr r0, [r4]
ldr r1, [r0, 0x38]
adds r0, 0x9C
str r0, [r1, 0x14]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
movs r1, 0x20
movs r2, 0x8
adds r3, r5, 0
bl sub_8013818
bl sub_8032084
bl DisplayAdventureLog
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08031FD0: .4byte gUnknown_203B338
_08031FD4: .4byte gUnknown_80E2008
thumb_func_end CreateAdventureLogScreen
thumb_func_start HandleAdventureLogInput
HandleAdventureLogInput:
push {r4,lr}
lsls r0, 24
cmp r0, 0
bne _08031FF0
ldr r0, _08031FEC
ldr r0, [r0]
bl sub_8013660
movs r0, 0
b _08032034
.align 2, 0
_08031FEC: .4byte gUnknown_203B338
_08031FF0:
ldr r4, _0803200C
ldr r0, [r4]
bl GetKeyPress
cmp r0, 0x1
beq _08032010
cmp r0, 0x2
bne _0803201A
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _08032034
.align 2, 0
_0803200C: .4byte gUnknown_203B338
_08032010:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _08032034
_0803201A:
ldr r0, [r4]
bl sub_8013938
lsls r0, 24
cmp r0, 0
bne _0803202A
movs r0, 0
b _08032034
_0803202A:
bl sub_8032084
bl DisplayAdventureLog
movs r0, 0x1
_08032034:
pop {r4}
pop {r1}
bx r1
thumb_func_end HandleAdventureLogInput
thumb_func_start sub_803203C
sub_803203C:
push {r4,r5,lr}
ldr r4, _0803207C
ldr r2, [r4]
cmp r2, 0
beq _08032076
ldr r0, [r2, 0x34]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x3C
ldr r0, _08032080
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_08032076:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803207C: .4byte gUnknown_203B338
_08032080: .4byte gUnknown_80E1FF0
thumb_func_end sub_803203C
thumb_func_start sub_8032084
sub_8032084:
push {r4,lr}
ldr r4, _080320F4
ldr r0, [r4]
ldrh r1, [r0, 0x20]
adds r0, 0x9C
movs r2, 0
strb r1, [r0]
ldr r0, [r4]
ldrh r1, [r0, 0x1E]
adds r0, 0x9D
strb r1, [r0]
ldr r0, [r4]
adds r0, 0x9E
movs r1, 0xB
strb r1, [r0]
ldr r0, [r4]
adds r0, 0x9F
strb r2, [r0]
ldr r0, [r4]
movs r1, 0x1A
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x34]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x4A
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x34]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x4C
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080320F4: .4byte gUnknown_203B338
thumb_func_end sub_8032084
thumb_func_start DisplayAdventureLog
DisplayAdventureLog:
push {r4-r7,lr}
sub sp, 0x8
ldr r5, _08032158
ldr r0, [r5]
ldr r0, [r0, 0x34]
bl sub_8008C54
ldr r0, [r5]
ldr r0, [r0, 0x34]
bl sub_80073B8
ldr r0, [r5]
movs r1, 0x1E
ldrsh r4, [r0, r1]
lsls r4, 3
adds r6, r4, 0
adds r6, 0xA
ldr r2, _0803215C
ldr r3, [r0, 0x34]
movs r0, 0
str r0, [sp]
adds r0, r6, 0
movs r1, 0
bl xxx_call_draw_string
adds r4, 0x4
ldr r1, [r5]
adds r0, r1, 0
adds r0, 0x9E
ldrb r0, [r0]
lsls r0, 3
adds r6, r4, r0
movs r0, 0x1E
ldrsh r2, [r1, r0]
adds r2, 0x1
movs r0, 0x7
str r0, [sp]
ldr r0, [r1, 0x34]
str r0, [sp, 0x4]
adds r0, r6, 0
movs r1, 0
movs r3, 0x1
bl sub_8012BC4
movs r7, 0
ldr r0, [r5]
b _0803223A
.align 2, 0
_08032158: .4byte gUnknown_203B338
_0803215C: .4byte gUnknown_80E2020
_08032160:
ldr r5, _08032194
ldr r0, [r5]
movs r2, 0x1E
ldrsh r1, [r0, r2]
movs r2, 0x1C
ldrsh r0, [r0, r2]
muls r0, r1
adds r0, r7
lsls r0, 24
lsrs r6, r0, 24
adds r0, r6, 0
bl sub_8097710
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _0803221C
subs r0, r6, 0x7
cmp r0, 0x5
bhi _080321EC
lsls r0, 2
ldr r1, _08032198
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08032194: .4byte gUnknown_203B338
_08032198: .4byte _0803219C
.align 2, 0
_0803219C:
.4byte _080321BA
.4byte _080321C6
.4byte _080321D4
.4byte _080321E0
.4byte _080321C0
.4byte _080321B4
_080321B4:
bl sub_80978B8
b _080321E4
_080321BA:
bl sub_8097880
b _080321E4
_080321C0:
bl sub_8097838
b _080321E4
_080321C6:
bl sub_80977B8
ldr r1, _080321D0
b _080321EA
.align 2, 0
_080321D0: .4byte gUnknown_202DE30
_080321D4:
bl sub_80977F8
ldr r1, _080321DC
b _080321EA
.align 2, 0
_080321DC: .4byte gUnknown_202DE30
_080321E0:
bl sub_8097870
_080321E4:
ldr r1, _08032214
lsls r0, 16
asrs r0, 16
_080321EA:
str r0, [r1]
_080321EC:
ldr r4, _08032218
ldr r0, [r4]
adds r1, r7, 0
bl sub_8013800
adds r5, r0, 0
adds r0, r6, 0
bl GetAdventureLogLine
adds r2, r0, 0
ldr r0, [r4]
ldr r3, [r0, 0x34]
movs r0, 0
str r0, [sp]
movs r0, 0x8
adds r1, r5, 0
bl sub_8014FF0
b _08032234
.align 2, 0
_08032214: .4byte gUnknown_202DE30
_08032218: .4byte gUnknown_203B338
_0803221C:
ldr r0, [r5]
adds r1, r7, 0
bl sub_8013800
adds r1, r0, 0
ldr r2, _08032254
ldr r0, [r5]
ldr r3, [r0, 0x34]
str r4, [sp]
movs r0, 0x8
bl xxx_call_draw_string
_08032234:
adds r7, 0x1
ldr r0, _08032258
ldr r0, [r0]
_0803223A:
movs r1, 0x1A
ldrsh r0, [r0, r1]
cmp r7, r0
blt _08032160
ldr r0, _08032258
ldr r0, [r0]
ldr r0, [r0, 0x34]
bl sub_80073E0
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08032254: .4byte gUnknown_80E2030
_08032258: .4byte gUnknown_203B338
thumb_func_end DisplayAdventureLog
.align 2,0

View File

@@ -72,8 +72,8 @@ gPMDBuildVersion: @ 80B69BC
.string "titlen2\0"
.align 2,0
.global gUnknown_80B69F8
gUnknown_80B69F8: @ 80B69F8
.global gLoadScreenBackgroundFileNames
gLoadScreenBackgroundFileNames: @ 80B69F8
.4byte titlen0_text
.4byte titlen1_text
.4byte titlen2_text
@@ -93,8 +93,8 @@ gUnknown_80B69F8: @ 80B69F8
.string "titlen2p\0"
.align 2,0
.global gUnknown_80B6A28
gUnknown_80B6A28: @ 80B6A28
.global gLoadScreenBackgroundPaletteFileNames
gLoadScreenBackgroundPaletteFileNames: @ 80B6A28
.4byte titlen0p_text
.4byte titlen1p_text
.4byte titlen2p_text
@@ -455,13 +455,19 @@ gUnknown_80B7318: @ 80B7318
.global gUnknown_80B7324
gUnknown_80B7324: @ 80B7324
.incbin "baserom.gba", 0xB7324, 0x2C
.string "event flag expansion error %d\0"
.align 2,0
.global FlagJudge_Text
FlagJudge_Text:
.string "_FlagJudge\0"
.align 2,0
.global gUnknown_80B7350
gUnknown_80B7350: @ 80B7350
.4byte EventFlagFile_Text
.byte 0x7C, 0x05, 0x00, 0x00
.byte 0x44, 0x73, 0x0B, 0x08 @ Pointer to _FlagJudge
.4byte FlagJudge_Text
.global gUnknown_80B735C
gUnknown_80B735C: @ 80B735C

File diff suppressed because it is too large Load Diff

2203
data/data_80E2068.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,5 @@
.section .rodata
.global gFormattedTypeStrings
gFormattedTypeStrings: @ 810AE24
.incbin "baserom.gba", 0x10AE24, 0x12C
.global gUnknown_810AF50
gUnknown_810AF50: @ 810AF50
.incbin "baserom.gba", 0x10AF50, 0xFC
@@ -1656,24 +1652,42 @@ gUnknown_8118218: @ 8118218
.byte 0xC8, 0x06, 0x00, 0x00
.4byte ExecutePlayerScript_Text
.global ExecutePlayerScriptActionLives_Text
ExecutePlayerScriptActionLives_Text:
.string "GroundLives_ExecutePlayerScriptActionLives\0"
.align 2,0
.global gUnknown_8118250
gUnknown_8118250: @ 8118250
.incbin "baserom.gba", 0x118250, 0xC
.4byte GroundLivesFile_Text
.byte 0xF9, 0x06, 0x00, 0x00
.4byte ExecutePlayerScriptActionLives_Text
.global gUnknown_811825C
gUnknown_811825C: @ 811825C
.incbin "baserom.gba", 0x11825C, 0x24
.string "#CWinvalidity#R\0"
.align 2,0
.global GroundLives_ActionText
GroundLives_ActionText:
.string "GroundLives_Action\0"
.align 2,0
.global gUnknown_8118280
gUnknown_8118280: @ 8118280
.incbin "baserom.gba", 0x118280, 0xC
.4byte GroundLivesFile_Text
.byte 0xA2, 0x11, 0x00, 0x00
.4byte GroundLives_ActionText
.global gUnknown_811828C
gUnknown_811828C: @ 811828C
.incbin "baserom.gba", 0x11828C, 0x14
.4byte GroundLivesFile_Text
.byte 0x0E, 0x12, 0x00, 0x00
.4byte GroundLives_ActionText
.string "pksdir0\0"
.align 2,0
.global gUnknown_81182A0
gUnknown_81182A0: @ 81182A0
@@ -1714,6 +1728,9 @@ gUnknown_811842C: @ 811842C
gUnknown_8118448: @ 8118448
.string "GroundObject Add id %3d kind %3d[%3d] type %3d group %3d sector %3d\0"
.align 2,0
.global GroundObject_AddText
GroundObject_AddText:
.string "GroundObject_Add\0"
.align 2,0
@@ -1759,15 +1776,18 @@ gUnknown_8118610: @ 8118610
.global gUnknown_811861C
gUnknown_811861C: @ 811861C
.incbin "baserom.gba", 0x11861C, 0x24
.string "GroundEffect Select %3d %3d %3d"
.align 2,0
.global gUnknown_8118640
gUnknown_8118640: @ 8118640
.incbin "baserom.gba", 0x118640, 0x18
.string "GroundEffect Cancel %3d"
.align 2,0
.global gUnknown_8118658
gUnknown_8118658: @ 8118658
.incbin "baserom.gba", 0x118658, 0x1C
.string "GroundEffect CancelBlank\0"
.align 2,0
.global gUnknown_8118674
gUnknown_8118674: @ 8118674
@@ -1779,11 +1799,16 @@ gUnknown_81186CC: @ 81186CC
.global gUnknown_81186D8
gUnknown_81186D8: @ 81186D8
.incbin "baserom.gba", 0x1186D8, 0x1C
.string "GroundEffect Delete id %3d"
.align 2,0
.global gUnknown_81186F4
gUnknown_81186F4: @ 81186F4
.incbin "baserom.gba", 0x1186F4, 0x38
.string "GroundEffect Execute %3d "
.align 2,0
.string "GroundEffect_ExecuteScript"
.align 2,0
.global gUnknown_811872C
gUnknown_811872C: @ 811872C

8
include/adventure_log.h Normal file
View File

@@ -0,0 +1,8 @@
#ifndef ADVENTURE_LOG_H
#define ADVENTURE_LOG_H
void CreateAdventureLogMenu(void);
void CleanAdventureLogMenu(void);
u32 UpdateAdventureLogMenu(void);
#endif

View File

@@ -5,7 +5,8 @@
struct unkData
{
s16 unk0[12];
s16 unk0[10];
u8 *unk14;
};
// Definitely wrong but need to figure out better structure later
@@ -63,7 +64,7 @@ struct PersonalityStruct_203B404
u32 unk4C;
/* 0x50 */ struct unkData *unk50;
/* 0x54 */ struct unkData unk54[4];
/* 0xB4 */ struct PersonalitySubStruct sub;
/* 0xB4 */ u8 unkb4[4];
};
extern struct PersonalityStruct_203B404 *gUnknown_203B404;

View File

@@ -94,6 +94,7 @@ SECTIONS {
src/wonder_mail.o(.text);
src/wonder_mail_mid.o(.text);
asm/wonder_mail_1.o(.text);
src/adventure_log.o(.text);
src/friend_rescue.o(.text);
asm/friend_rescue.o(.text);
src/friend_rescue_1.o(.text);
@@ -104,15 +105,24 @@ SECTIONS {
src/main_menu_mid.o(.text);
asm/main_menu_1.o(.text);
src/trade_items_menu.o(.text);
src/other_menus.o(.text);
asm/other_menus.o(.text);
src/adventure_log_menu.o(.text);
src/unk_menu_203B360.o(.text);
asm/unk_menu_203B360.o(.text);
src/unk_menu_203B360_1.o(.text);
src/unk_menu_203B364.o(.text);
asm/unk_menu_203B364.o(.text);
asm/rescue_password_menu.o(.text);
asm/load_screen.o(.text);
src/main_menu_1.o(.text);
src/load_screen.o(.text);
src/wonder_mail_main_menu_pre.o(.text);
asm/wonder_mail_main_menu.o(.text);
src/wonder_mail_main_menu.o(.text);
src/debug_menu.o(.text);
asm/debug_menu.o(.text);
src/debug_menu_mid.o(.text);
asm/debug_menu_1.o(.text);
src/debug_menu_1.o(.text);
asm/code_803B050.o(.text);
src/pokemon_mail.o(.text);
@@ -237,6 +247,8 @@ SECTIONS {
data/data_80B9BB8.o(.rodata);
src/wonder_mail.o(.rodata);
data/data_80DED44.o(.rodata);
src/adventure_log.o(.rodata);
data/data_80E2068.o(.rodata);
data/pokemon_mail.o(.rodata);
data/personality_test.o(.rodata);
src/personality_test.o(.rodata);

425
src/adventure_log.c Normal file
View File

@@ -0,0 +1,425 @@
#include "global.h"
#include "input.h"
#include "gba/io_reg.h"
struct unkData
{
u8 unk0[14];
u16 unkD;
u16 unk10;
u16 unk12;
u8 *unk14;
};
struct AdventureLog
{
// size: 0xA0
u8 fill0[0x1A];
/* 0x1A */ s16 unk1A;
/* 0x1C */ s16 unk1C;
/* 0x1E */ s16 currPage;
u16 unk20;
u8 fill22[0x34 - 0x22];
u32 unk34;
struct unkData *unk38;
struct unkData unk3C[3];
u8 fill84[0x9C - 0x84];
u8 unk9C;
/* 0x9D */ u8 currPage_u8;
u8 unk9E;
u8 unk9F;
};
extern struct AdventureLog *gAdventureLog;
extern struct unkData gUnknown_80E2008;
extern struct unkData gUnknown_80E1FF0;
// Adventure Log Text
const u8 gAdventureLogHeaderText[] = "Adventure Log";
const u8 gUnknown_80E2030[] = "~95~95~95~95~95~95~95~95~95~95~95~95~95~95~95 "; // string of ???????
const u8 fill_adven[] = "pksdir0";
extern void *MemoryAlloc(u32, u32);
extern void MemoryFree(void *);
extern void sub_8006518(struct unkData *);
extern void sub_800641C(void *, u32, u32);
extern void sub_8032084();
extern void DisplayAdventureLog();
extern void sub_8013818(void *, u32, u32, u32);
extern u8 sub_8013938(void *);
extern void sub_8013660(void *);
extern void PlayMenuSoundEffect(u32);
extern u32 GetKeyPress(void *);
extern u8 sub_8097710(u8);
extern s16 sub_80978B8();
extern s16 sub_8097880();
extern s16 sub_8097838();
extern s16 sub_8097870();
extern s32 sub_80977B8();
extern s32 sub_80977F8();
extern void xxx_call_draw_string(s32, u32, u32 *, u32, u32);
extern u32 gUnknown_202DE30;
u32 CreateAdventureLogScreen(u32 param_1)
{
gAdventureLog = MemoryAlloc(0xa0,8);
gAdventureLog->unk34 = param_1;
gAdventureLog->unk38 = &gAdventureLog->unk3C[param_1];
sub_8006518(gAdventureLog->unk3C);
gAdventureLog->unk3C[gAdventureLog->unk34] = gUnknown_80E2008;
gAdventureLog->unk38->unk14 = &gAdventureLog->unk9C;
ResetUnusedInputStruct();
sub_800641C(gAdventureLog->unk3C,1,1);
sub_8013818(gAdventureLog,0x20,8,param_1);
sub_8032084();
DisplayAdventureLog();
return 1;
}
u32 HandleAdventureLogInput(u8 param_1)
{
if (param_1 == 0) {
sub_8013660(gAdventureLog);
return 0;
}
else {
switch(GetKeyPress(gAdventureLog))
{
case B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
default:
if (sub_8013938(gAdventureLog) != '\0') {
sub_8032084();
DisplayAdventureLog();
return 1;
}
else {
return 0;
}
}
}
}
void CleanAdventureLogScreen(void)
{
if (gAdventureLog != NULL) {
gAdventureLog->unk3C[gAdventureLog->unk34] = gUnknown_80E1FF0;
ResetUnusedInputStruct();
sub_800641C(gAdventureLog->unk3C,1,1);
MemoryFree(gAdventureLog);
gAdventureLog = 0;
}
}
#ifdef NONMATCHING
void sub_8032084(void)
{
u32 sVar2;
gAdventureLog->unk9C = gAdventureLog->unk20;
gAdventureLog->currPage_u8 = gAdventureLog->currPage;
gAdventureLog->unk9E = 0xb;
gAdventureLog->unk9F = 0;
// So a sign extend..
sVar2 = sub_80095E4(gAdventureLog->unk1A,0xc) + 2 << 0x10;
// TODO needs asr r3, r0, r16
// and lsr r0, r0, r16
gAdventureLog->unk3C[gAdventureLog->unk34].unkD = sVar2;
// Good past here except regs for this store
gAdventureLog->unk3C[gAdventureLog->unk34].unk10 = sVar2 + 2;
ResetUnusedInputStruct();
sub_800641C(gAdventureLog->unk3C,1,1);
}
#else
NAKED
void sub_8032084(void)
{
asm_unified("\tpush {r4,lr}\n"
"\tldr r4, _080320F4\n"
"\tldr r0, [r4]\n"
"\tldrh r1, [r0, 0x20]\n"
"\tadds r0, 0x9C\n"
"\tmovs r2, 0\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tldrh r1, [r0, 0x1E]\n"
"\tadds r0, 0x9D\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x9E\n"
"\tmovs r1, 0xB\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x9F\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tmovs r1, 0x1A\n"
"\tldrsh r0, [r0, r1]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r2, [r4]\n"
"\tldr r3, [r2, 0x34]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x4A\n"
"\tasrs r3, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r2, 0x34]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r2, r0\n"
"\tadds r3, 0x2\n"
"\tadds r2, 0x4C\n"
"\tstrh r3, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x3C\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_080320F4: .4byte gAdventureLog");
}
#endif
// Uses 1 too many regs
#ifdef NONMATCHING
void DisplayAdventureLog(void)
{
s32 counter;
s32 iVar5;
u32 uVar6;
u8 temp;
sub_8008C54(gAdventureLog->unk34);
sub_80073B8(gAdventureLog->unk34);
iVar5 = gAdventureLog->currPage * 8;
iVar5 += 10;
// Draw Header
xxx_call_draw_string(iVar5, 0, &gAdventureLogHeaderText, gAdventureLog->unk34, 0);
iVar5 += 4;
iVar5 += gAdventureLog->unk9E * 8;
// Draw Page #
sub_8012BC4(iVar5, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);
counter = 0;
do {
uVar6 = gAdventureLog->currPage * gAdventureLog->unk1C + counter;
temp = uVar6; // Having another var in middle gets close (does a u8 cast)
if(sub_8097710(temp) != 0){
switch(temp) {
case 0xc:
gUnknown_202DE30 = sub_80978B8();
break;
case 7:
gUnknown_202DE30 = sub_8097880();
break;
case 0xb:
gUnknown_202DE30 = sub_8097838();
break;
case 8:
gUnknown_202DE30 = sub_80977B8();
break;
case 9:
gUnknown_202DE30 = sub_80977F8();
break;
case 10:
gUnknown_202DE30 = sub_8097870();
break;
default:
break;
}
sub_8014FF0(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(uVar6), gAdventureLog->unk34, 0);
}
else
{
// Draw the ?????????? across the row
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), &gUnknown_80E2030, gAdventureLog->unk34, 0);
}
counter++;
} while(counter < gAdventureLog->unk1A);
sub_80073E0(gAdventureLog->unk34);
}
#else
NAKED
void DisplayAdventureLog(void)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tsub sp, 0x8\n"
"\tldr r5, _08032158\n"
"\tldr r0, [r5]\n"
"\tldr r0, [r0, 0x34]\n"
"\tbl sub_8008C54\n"
"\tldr r0, [r5]\n"
"\tldr r0, [r0, 0x34]\n"
"\tbl sub_80073B8\n"
"\tldr r0, [r5]\n"
"\tmovs r1, 0x1E\n"
"\tldrsh r4, [r0, r1]\n"
"\tlsls r4, 3\n"
"\tadds r6, r4, 0\n"
"\tadds r6, 0xA\n"
"\tldr r2, _0803215C\n"
"\tldr r3, [r0, 0x34]\n"
"\tmovs r0, 0\n"
"\tstr r0, [sp]\n"
"\tadds r0, r6, 0\n"
"\tmovs r1, 0\n"
"\tbl xxx_call_draw_string\n"
"\tadds r4, 0x4\n"
"\tldr r1, [r5]\n"
"\tadds r0, r1, 0\n"
"\tadds r0, 0x9E\n"
"\tldrb r0, [r0]\n"
"\tlsls r0, 3\n"
"\tadds r6, r4, r0\n"
"\tmovs r0, 0x1E\n"
"\tldrsh r2, [r1, r0]\n"
"\tadds r2, 0x1\n"
"\tmovs r0, 0x7\n"
"\tstr r0, [sp]\n"
"\tldr r0, [r1, 0x34]\n"
"\tstr r0, [sp, 0x4]\n"
"\tadds r0, r6, 0\n"
"\tmovs r1, 0\n"
"\tmovs r3, 0x1\n"
"\tbl sub_8012BC4\n"
"\tmovs r7, 0\n"
"\tldr r0, [r5]\n"
"\tb _0803223A\n"
"\t.align 2, 0\n"
"_08032158: .4byte gAdventureLog\n"
"_0803215C: .4byte gAdventureLogHeaderText\n"
"_08032160:\n"
"\tldr r5, _08032194\n"
"\tldr r0, [r5]\n"
"\tmovs r2, 0x1E\n"
"\tldrsh r1, [r0, r2]\n"
"\tmovs r2, 0x1C\n"
"\tldrsh r0, [r0, r2]\n"
"\tmuls r0, r1\n"
"\tadds r0, r7\n"
"\tlsls r0, 24\n"
"\tlsrs r6, r0, 24\n"
"\tadds r0, r6, 0\n"
"\tbl sub_8097710\n"
"\tlsls r0, 24\n"
"\tlsrs r4, r0, 24\n"
"\tcmp r4, 0\n"
"\tbeq _0803221C\n"
"\tsubs r0, r6, 0x7\n"
"\tcmp r0, 0x5\n"
"\tbhi _080321EC\n"
"\tlsls r0, 2\n"
"\tldr r1, _08032198\n"
"\tadds r0, r1\n"
"\tldr r0, [r0]\n"
"\tmov pc, r0\n"
"\t.align 2, 0\n"
"_08032194: .4byte gAdventureLog\n"
"_08032198: .4byte _0803219C\n"
"\t.align 2, 0\n"
"_0803219C:\n"
"\t.4byte _080321BA\n"
"\t.4byte _080321C6\n"
"\t.4byte _080321D4\n"
"\t.4byte _080321E0\n"
"\t.4byte _080321C0\n"
"\t.4byte _080321B4\n"
"_080321B4:\n"
"\tbl sub_80978B8\n"
"\tb _080321E4\n"
"_080321BA:\n"
"\tbl sub_8097880\n"
"\tb _080321E4\n"
"_080321C0:\n"
"\tbl sub_8097838\n"
"\tb _080321E4\n"
"_080321C6:\n"
"\tbl sub_80977B8\n"
"\tldr r1, _080321D0\n"
"\tb _080321EA\n"
"\t.align 2, 0\n"
"_080321D0: .4byte gUnknown_202DE30\n"
"_080321D4:\n"
"\tbl sub_80977F8\n"
"\tldr r1, _080321DC\n"
"\tb _080321EA\n"
"\t.align 2, 0\n"
"_080321DC: .4byte gUnknown_202DE30\n"
"_080321E0:\n"
"\tbl sub_8097870\n"
"_080321E4:\n"
"\tldr r1, _08032214\n"
"\tlsls r0, 16\n"
"\tasrs r0, 16\n"
"_080321EA:\n"
"\tstr r0, [r1]\n"
"_080321EC:\n"
"\tldr r4, _08032218\n"
"\tldr r0, [r4]\n"
"\tadds r1, r7, 0\n"
"\tbl sub_8013800\n"
"\tadds r5, r0, 0\n"
"\tadds r0, r6, 0\n"
"\tbl GetAdventureLogLine\n"
"\tadds r2, r0, 0\n"
"\tldr r0, [r4]\n"
"\tldr r3, [r0, 0x34]\n"
"\tmovs r0, 0\n"
"\tstr r0, [sp]\n"
"\tmovs r0, 0x8\n"
"\tadds r1, r5, 0\n"
"\tbl sub_8014FF0\n"
"\tb _08032234\n"
"\t.align 2, 0\n"
"_08032214: .4byte gUnknown_202DE30\n"
"_08032218: .4byte gAdventureLog\n"
"_0803221C:\n"
"\tldr r0, [r5]\n"
"\tadds r1, r7, 0\n"
"\tbl sub_8013800\n"
"\tadds r1, r0, 0\n"
"\tldr r2, _08032254\n"
"\tldr r0, [r5]\n"
"\tldr r3, [r0, 0x34]\n"
"\tstr r4, [sp]\n"
"\tmovs r0, 0x8\n"
"\tbl xxx_call_draw_string\n"
"_08032234:\n"
"\tadds r7, 0x1\n"
"\tldr r0, _08032258\n"
"\tldr r0, [r0]\n"
"_0803223A:\n"
"\tmovs r1, 0x1A\n"
"\tldrsh r0, [r0, r1]\n"
"\tcmp r7, r0\n"
"\tblt _08032160\n"
"\tldr r0, _08032258\n"
"\tldr r0, [r0]\n"
"\tldr r0, [r0, 0x34]\n"
"\tbl sub_80073E0\n"
"\tadd sp, 0x8\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_08032254: .4byte gUnknown_80E2030\n"
"_08032258: .4byte gAdventureLog");
}
#endif

40
src/adventure_log_menu.c Normal file
View File

@@ -0,0 +1,40 @@
#include "global.h"
#include "input.h"
#include "main_menu.h"
#include "adventure_log.h"
extern void sub_800641C(u8 *, u32, u32);
extern void CreateAdventureLogScreen(u32);
extern u32 HandleAdventureLogInput(u32);
extern void CleanAdventureLogScreen();
void CreateAdventureLogMenu(void)
{
CreateAdventureLogScreen(0);
}
void CleanAdventureLogMenu(void)
{
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
}
u32 UpdateAdventureLogMenu(void)
{
u32 nextMenu;
nextMenu = MENU_NO_SCREEN_CHANGE;
switch(HandleAdventureLogInput(1))
{
case 0:
case 1:
break;
case 2:
case 3:
CleanAdventureLogScreen();
nextMenu = MENU_MAIN_SCREEN;
default:
break;
}
return nextMenu;
}

View File

@@ -0,0 +1,18 @@
ALIGNED(4) const char gFormattedSteelText[] = "#c6Steel#r";
ALIGNED(4) const char gFormattedDarkText[] = "#c6Dark#r";
ALIGNED(4) const char gFormattedDragonText[] = "#c6Dragon#r";
ALIGNED(4) const char gFormattedGhostText[] = "#c6Ghost#r";
ALIGNED(4) const char gFormattedRockText[] = "#c6Rock#r";
ALIGNED(4) const char gFormattedBugText[] = "#c6Bug#r";
ALIGNED(4) const char gFormattedPsychicText[] = "#c6Psychic#r";
ALIGNED(4) const char gFormattedFlyingText[] = "#c6Flying#r";
ALIGNED(4) const char gFormattedGroundText[] = "#c6Ground#r";
ALIGNED(4) const char gFormattedPoisonText[] = "#c6Poison#r";
ALIGNED(4) const char gFormattedFightingText[] = "#c6Fighting#r";
ALIGNED(4) const char gFormattedIceText[] = "#c6Ice#r ";
ALIGNED(4) const char gFormattedElectricText[] = "#c6Electric#r";
ALIGNED(4) const char gFormattedGrassText[] = "#c6Grass#r";
ALIGNED(4) const char gFormattedWaterText[] = "#c6Water#r";
ALIGNED(4) const char gFormattedFireText[] = "#c6Fire#r ";
ALIGNED(4) const char gFormattedNormalText[] = "#c6Normal#r";
ALIGNED(4) const char gFormattedNoneText[] = "#c6None#r";

439
src/debug_menu_mid.c Normal file
View File

@@ -0,0 +1,439 @@
#include "global.h"
#include "input.h"
struct unkData
{
u8 unk0[14];
u16 unkD;
u16 unk10;
u16 unk12;
u8 *unk14;
};
struct unkStruct_203B3F0
{
// size: 0x138
u32 unk0;
u8 unk4;
u8 fill5[0x8 - 5];
u32 unk8;
u32 *unkC;
u32 unk10;
u32 unk14;
u32 unk18;
u32 unk1C;
u32 unk20;
u8 fill24[0x4C - 0x24];
u32 unk4C;
u8 fill50[0x9C - 0x50];
u32 unk9C;
u32 unkA0;
u32 unkA4;
u32 unkA8;
u32 unkAC;
u32 unkB0;
struct unkData *unkB4;
u32 unkB8;
u32 unkBC;
u8 fill4[0xD8 - 0xC0];
struct unkData unkD8[4];
};
extern struct unkStruct_203B3F0 *gUnknown_203B3F0;
struct unkStruct_203B3F4
{
// size: 0xFC
u32 unk0;
u8 unk4;
u8 fill5[0x8 - 5];
u32 unk8;
u32 *unkC;
u32 unk10;
u32 unk14;
u32 unk18;
u32 unk1C;
u32 unk20;
u8 fill24[0x4C - 0x24];
u32 unk4C;
u8 fill50[0x9C - 0x50];
struct unkData unk9C[4];
};
extern struct unkStruct_203B3F4 *gUnknown_203B3F4;
struct unkStruct_203B460
{
u8 unk0[0x50];
u16 unk50[10];
};
extern struct unkStruct_203B460 *gUnknown_203B460; // TODO unify this
extern void sub_801B3C0(u8 *);
extern void sub_8090A8C(u8 *, u8, u32);
extern void sub_8013AA0(u32 *);
extern struct unkData gUnknown_80E7E4C;
extern struct unkData gUnknown_80E7E34;
extern struct unkData gUnknown_80E7E64;
extern struct unkData gUnknown_80E7EA4;
extern struct unkData gUnknown_80E7E8C;
extern u32 gDebug_NumberText;
extern u32 gDebug_NumberText;
extern u32 gUnknown_80D4970;
extern void *MemoryAlloc(u32, u32);
extern void MemoryFree(void *);
extern void sub_800641C(void *, u32, u32);
extern void sub_8006518(void *);
extern void sub_801C8C4(u32, u32, u32, u32);
extern void sub_801CB5C(u32);
extern void sub_801CCD8();
extern void sub_8012D60(u32 *, u32 **, u32, u32, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8012EA4(u32 *, u32);
extern void sub_80073E0(u32);
extern void sub_8013C68(u32 *);
extern void xxx_call_draw_string(s32, u32, u32 *, u32, u32);
extern u8 sub_8091524(u8);
extern u32 sub_801CA08(u32);
extern u8 sub_801CB24();
extern void sub_801CBB8();
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_8013BBC(u32 *);
extern u32 sub_801B410();
extern void sub_801B450();
extern void sub_80211AC(u32, u32);
extern void sub_8021354(u32);
extern void sub_8021494();
extern void sub_803AA34();
extern void sub_8021774(u8,u32, u32);
extern void sub_803AAC4();
extern void sub_803AB34();
extern void sub_803ABAC();
void sub_803A924(u32);
void sub_803A93C();
void sub_803A9AC();
void sub_803A504(u32);
void sub_803A51C();
void sub_803A5A0();
void sub_803A690();
void sub_803A6F0();
void sub_803A740();
void sub_803A7B0();
void sub_803A810();
void sub_803A86C();
u32 sub_803A45C(void)
{
ResetUnusedInputStruct();
sub_800641C(0,1,1);
gUnknown_203B3F0 = MemoryAlloc(sizeof(struct unkStruct_203B3F0), 8);
sub_803A504(0);
return 1;
}
u32 sub_803A48C(void)
{
switch(gUnknown_203B3F0->unk0) {
case 0:
case 1:
sub_803A740();
break;
case 2:
sub_803A7B0();
break;
case 3:
sub_803A810();
break;
case 4:
sub_803A86C();
break;
case 5:
return 3;
}
return 0;
}
void sub_803A4E8(void)
{
if(gUnknown_203B3F0 != NULL)
{
MemoryFree(gUnknown_203B3F0);
gUnknown_203B3F0 = NULL;
}
}
void sub_803A504(u32 newState)
{
gUnknown_203B3F0->unk0 = newState;
sub_803A51C();
sub_803A5A0();
}
void sub_803A51C(void)
{
s32 iVar4;
sub_8006518(gUnknown_203B3F0->unkD8);
switch(gUnknown_203B3F0->unk0)
{
case 3:
gUnknown_203B3F0->unkD8[1] = gUnknown_80E7E64;
break;
case 2:
gUnknown_203B3F0->unkD8[2] = gUnknown_80E7E4C;
break;
default:
for(iVar4 = 0; iVar4 < 4; iVar4++)
{
gUnknown_203B3F0->unkD8[iVar4] = gUnknown_80E7E34;
}
break;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B3F0->unkD8, 1, 1);
}
void sub_803A5A0(void)
{
u8 auStack8 [4];
switch(gUnknown_203B3F0->unk0) {
case 0:
sub_801C8C4(2,3,0,10);
break;
case 1:
sub_801CB5C(1);
break;
case 2:
sub_801CCD8();
sub_803A6F0();
sub_8012D60(&gUnknown_203B3F0->unk4C, &gUnknown_203B3F0->unkC, 0, 0, gUnknown_203B3F0->unk8, 2);
break;
case 3:
gUnknown_203B3F0->unkAC = 3;
gUnknown_203B3F0->unkA4 = 0;
gUnknown_203B3F0->unkA8 = 0x3e7;
gUnknown_203B3F0->unkA0 = gUnknown_203B460->unk50[gUnknown_203B3F0->unk4];
gUnknown_203B3F0->unkB0 = 1;
gUnknown_203B3F0->unkB4 = &gUnknown_203B3F0->unkD8[1];
gUnknown_203B3F0->unkB8 = 0x2C;
gUnknown_203B3F0->unkBC = 0x12;
sub_8013AA0(&gUnknown_203B3F0->unk9C);
sub_803A690();
break;
case 4:
sub_8090A8C(auStack8,gUnknown_203B3F0->unk4,0);
sub_801B3C0(auStack8);
break;
case 5:
break;
}
}
void sub_803A690(void)
{
sub_8008C54(gUnknown_203B3F0->unkB0);
sub_80073B8(gUnknown_203B3F0->unkB0);
xxx_call_draw_string(4, 0, &gDebug_NumberText, gUnknown_203B3F0->unkB0, 0);
sub_8013C68(&gUnknown_203B3F0->unk9C);
sub_80073E0(gUnknown_203B3F0->unkB0);
sub_801CCD8();
sub_8012EA4(&gUnknown_203B3F0->unk4C,0);
}
void sub_803A6F0(void)
{
s32 temp1;
struct unkStruct_203B3F0 *preload;
gUnknown_203B3F0->unkC = &gDebug_NumberText;
gUnknown_203B3F0->unk10 = 2;
gUnknown_203B3F0->unk8 = 2;
if (sub_8091524(gUnknown_203B3F0->unk4) == 0) {
gUnknown_203B3F0->unk10 = -1;
gUnknown_203B3F0->unk8 = 3;
}
preload = gUnknown_203B3F0;
// this var gets loaded in between the sets... very dumb
temp1 = 1;
preload->unk14 = gUnknown_80D4970;
preload->unk18 = 3;
preload->unk1C = 0;
preload->unk20 = temp1;
}
void sub_803A740(void)
{
switch(sub_801CA08(1)) {
case 0:
case 1:
break;
case 3:
gUnknown_203B3F0->unk4 = sub_801CB24();
sub_803A504(2);
break;
case 4:
gUnknown_203B3F0->unk4 = sub_801CB24();
sub_803A504(4);
break;
case 2:
sub_801CBB8();
sub_803A504(5);
break;
}
}
void sub_803A7B0(void)
{
s32 local_c;
local_c = 0;
sub_801CA08(0);
if (sub_8012FD8(&gUnknown_203B3F0->unk4C) == '\0') {
sub_8013114(&gUnknown_203B3F0->unk4C,&local_c);
}
switch(local_c)
{
case 2:
sub_803A504(3);
break;
case 3:
sub_803A504(4);
break;
case 1:
sub_803A504(1);
break;
}
}
void sub_803A810(void)
{
sub_801CA08(0);
sub_8012FD8(&gUnknown_203B3F0->unk4C);
switch(sub_8013BBC(&gUnknown_203B3F0->unk9C))
{
case 3:
gUnknown_203B460->unk50[gUnknown_203B3F0->unk4] = gUnknown_203B3F0->unk9C;
// Fallthrough needed to match
case 2:
sub_803A504(1);
break;
case 1:
sub_803A690();
break;
}
}
void sub_803A86C(void)
{
switch(sub_801B410())
{
case 1:
case 0:
break;
case 2:
case 3:
sub_801B450();
sub_803A504(1);
break;
}
}
//////////////////////////////////////////
u32 sub_803A888(void)
{
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
gUnknown_203B3F4 = MemoryAlloc(0xFC, 8);
sub_803A924(0);
return 1;
}
u32 sub_803A8B8(void)
{
switch(gUnknown_203B3F4->unk0) {
case 0:
case 1:
sub_803AAC4();
break;
case 2:
sub_803AB34();
break;
case 3:
sub_803ABAC();
break;
case 4:
return 3;
}
return 0;
}
void sub_803A908(void)
{
if(gUnknown_203B3F4 != NULL)
{
MemoryFree(gUnknown_203B3F4);
gUnknown_203B3F4 = NULL;
}
}
void sub_803A924(u32 newState)
{
gUnknown_203B3F4->unk0 = newState;
sub_803A93C();
sub_803A9AC();
}
void sub_803A93C(void)
{
s32 iVar4;
sub_8006518(gUnknown_203B3F4->unk9C);
if(gUnknown_203B3F4->unk0 == 2)
{
gUnknown_203B3F4->unk9C[2] = gUnknown_80E7EA4;
}
else
{
for(iVar4 = 0; iVar4 < 4; iVar4++)
{
gUnknown_203B3F4->unk9C[iVar4] = gUnknown_80E7E8C;
}
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B3F4->unk9C, 1, 1);
}
void sub_803A9AC(void)
{
switch(gUnknown_203B3F4->unk0) {
case 0:
sub_80211AC(0,3);
break;
case 1:
sub_8021354(1);
break;
case 2:
sub_8021494();
sub_803AA34();
sub_8012D60(&gUnknown_203B3F4->unk4C,&gUnknown_203B3F4->unkC,0,0,gUnknown_203B3F4->unk8,2);
break;
case 3:
sub_8021774(gUnknown_203B3F4->unk4,1,0);
break;
case 4:
break;
}
}

View File

@@ -1,6 +1,7 @@
#include "global.h"
#include "debug_menu.h"
#include "main_menu.h"
#include "adventure_log.h"
// NOTE: 0x13 and 0x14
// Communication Screen?
@@ -31,7 +32,6 @@ extern void sub_803A1E4(void);
extern void CreateFriendRescueMenu(void);
extern void sub_803A1D8(void);
extern void CreateWonderMailMenu(void);
extern void CreateAdventureLogMenu(void);
extern void CreateLoadScreen(u32);
extern s32 sub_8035DB4(u32);
extern void CreateRescuePasswordMenu(u32);
@@ -44,7 +44,6 @@ extern s32 UpdateWonderMailMenu(void);
extern s32 sub_803A1DC(void);
extern s32 sub_803A1E8(void);
extern s32 UpdateRescuePasswordMenu(void);
extern s32 UpdateAdventureLogMenu(void);
extern s32 sub_80383D4(void);
extern s32 sub_8038630(void);
@@ -57,7 +56,6 @@ extern void CleanWonderMailMenu(void);
extern void nullsub_55(void);
extern void sub_803A1EC(void);
extern void CleanRescuePasswordMenu(void);
extern void CleanAdventureLogMenu(void);
extern void sub_80383A8(void);
extern void sub_8038604(void);

View File

@@ -59,9 +59,9 @@ s16 sub_8035D3C(void)
return gMainMenu->unk38;
}
s32 *sub_8035D4C(void)
struct MainMenu *GetMainMenu(void)
{
return &gMainMenu->currMenu;
return gMainMenu;
}
void sub_8035D58(void)

413
src/other_menus.c Normal file
View File

@@ -0,0 +1,413 @@
#include "global.h"
#include "input.h"
#include "main_menu.h"
struct unkData
{
u8 unk0[14];
u16 unkD;
u16 unk10;
u16 unk12;
u8 *unk14;
};
struct unkStruct_203B35C
{
// size: 0x504
u32 unk0;
u32 unk4; // link status?
u32 unk8; // state var?
u8 fillC[0x1C - 0xC];
u32 unk1C;
u8 fill20[0x15C - 0x20];
struct unkData unk15C[4];
u8 unk1BC[4];
u32 unk1C0[9];
};
extern struct unkStruct_203B35C *gUnknown_203B35C;
extern struct unkData gUnknown_80E653C;
extern u32 gUnknown_80E66BC;
extern u32 gUnknown_80E66D4;
extern u32 gUnknown_80E6748;
extern u32 gUnknown_80E6760;
extern u32 gUnknown_80E67D4;
extern u32 gUnknown_80E67EC;
extern u32 gUnknown_80E689C;
extern u32 gUnknown_80E68B4;
extern u32 gUnknown_80E6938;
extern u32 gUnknown_80E6950;
extern u32 gUnknown_80E69B0;
extern u32 gUnknown_80E69C8;
extern u32 gUnknown_80E6A10;
extern u32 gUnknown_80E6A28;
extern u32 gUnknown_80E6A74;
extern u32 gUnknown_80E6A8C;
extern u32 gUnknown_80E6B78;
extern u32 gUnknown_80E6B90;
extern u32 gUnknown_80E6BF4;
extern u32 gUnknown_80E6C0C;
extern u32 gUnknown_80E6C50;
extern u32 gUnknown_80E6C68;
extern u32 gUnknown_80E6CD0;
extern u32 gUnknown_80E6CE8;
extern u32 gUnknown_80E6DDC;
extern u32 gUnknown_80E6DF4;
extern u32 gUnknown_80E6D54;
extern u32 gUnknown_80E6D6C;
struct unkStruct_8035D94
{
u8 unk0;
u8 fill[0x3];
u32 unk4;
};
extern struct unkStruct_8035D94 *sub_8035D94();
struct unkStruct_203B460
{
u8 unk0[0x50];
u16 unk50[10];
};
extern struct unkStruct_203B460 *gUnknown_203B460; // TODO unify this
extern void sub_8037400(void);
extern void sub_800641C(void *, u32, u32);
extern void ResetSprites(u32);
extern void *MemoryAlloc(u32, u32);
extern void MemoryFill8(u8 *, u8, s32);
extern void MemoryFree(void *);
extern void sub_8035CF4(u32 *,u32, u32);
extern void sub_80376CC();
extern void sub_8035CC0(void *, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern u32 sub_8037C10(u32);
extern void sub_8037748(void);
extern void sub_80371B8(void);
extern void sub_8037900(void);
extern void PlayMenuSoundEffect(u32);
extern u32 sub_8037798(void);
extern void SetMenuItems(void *, void *, u32, u32 *, u32 *, u32, u32, u32);
extern void sub_8005838(u32, u32);
extern void sub_80060EC();
extern void sub_800CB20();
extern void TransferBGPaletteBuffer();
extern void xxx_call_update_bg_vram();
extern void sub_8009908();
extern void xxx_call_update_bg_sound_input();
#ifdef NONMATCHING
void sub_8036FDC(s32 param_1)
{
int iVar3;
int iVar4;
ResetUnusedInputStruct();
sub_800641C(0,1,1);
ResetSprites(0);
if (gUnknown_203B35C == NULL) {
gUnknown_203B35C = MemoryAlloc(0x504,8);
MemoryFill8((u8 *)gUnknown_203B35C,0,0x504);
}
gUnknown_203B35C->unk0 = param_1;
gUnknown_203B35C->unk4 = 0;
gUnknown_203B35C->unk8 = 0;
iVar3 = 0;
do {
gUnknown_203B35C->unk1C0[iVar3 * 2] = 0;
// Add statements of index flip but ends in same result
gUnknown_203B35C->unk1BC[iVar3 * 8] = 0;
iVar3 = iVar3 + 1;
} while (iVar3 < 2);
for(iVar4 = 0; iVar4 < 4; iVar4++){
gUnknown_203B35C->unk15C[iVar4] = gUnknown_80E653C;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B35C->unk15C,1,1);
SetMenuItems(&gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,&gUnknown_80E6CE8,0,
6,0);
sub_8035CF4(&gUnknown_203B35C->unk1C,0,1);
sub_80376CC();
}
#else
NAKED
void sub_8036FDC(s32 param_1)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r8\n"
"\tpush {r7}\n"
"\tsub sp, 0x10\n"
"\tadds r6, r0, 0\n"
"\tbl ResetUnusedInputStruct\n"
"\tmovs r0, 0\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tmovs r0, 0\n"
"\tbl ResetSprites\n"
"\tldr r5, _080370C0\n"
"\tldr r0, [r5]\n"
"\tcmp r0, 0\n"
"\tbne _08037016\n"
"\tldr r4, _080370C4\n"
"\tadds r0, r4, 0\n"
"\tmovs r1, 0x8\n"
"\tbl MemoryAlloc\n"
"\tstr r0, [r5]\n"
"\tmovs r1, 0\n"
"\tadds r2, r4, 0\n"
"\tbl MemoryFill8\n"
"_08037016:\n"
"\tldr r0, [r5]\n"
"\tstr r6, [r0]\n"
"\tmovs r1, 0\n"
"\tstr r1, [r0, 0x4]\n"
"\tstr r1, [r0, 0x8]\n"
"\tmovs r3, 0\n"
"\tadds r7, r5, 0\n"
"\tmovs r6, 0xE0\n"
"\tlsls r6, 1\n"
"\tmovs r4, 0\n"
"\tmovs r5, 0xDE\n"
"\tlsls r5, 1\n"
"_0803702E:\n"
"\tldr r0, [r7]\n"
"\tlsls r2, r3, 3\n"
"\tadds r1, r0, r6\n"
"\tadds r1, r2\n"
"\tstr r4, [r1]\n"
"\tadds r0, r2\n"
"\tadds r0, r5\n"
"\tstrb r4, [r0]\n"
"\tadds r3, 0x1\n"
"\tcmp r3, 0x1\n"
"\tble _0803702E\n"
"\tldr r0, _080370C0\n"
"\tmov r12, r0\n"
"\tmovs r5, 0xAE\n"
"\tlsls r5, 1\n"
"\tmov r8, r5\n"
"\tldr r4, _080370C8\n"
"\tmovs r3, 0\n"
"\tmovs r2, 0x3\n"
"_08037054:\n"
"\tmov r6, r12\n"
"\tldr r1, [r6]\n"
"\tadds r1, r3\n"
"\tadd r1, r8\n"
"\tadds r0, r4, 0\n"
"\tldm r0!, {r5-r7}\n"
"\tstm r1!, {r5-r7}\n"
"\tldm r0!, {r5-r7}\n"
"\tstm r1!, {r5-r7}\n"
"\tadds r3, 0x18\n"
"\tsubs r2, 0x1\n"
"\tcmp r2, 0\n"
"\tbge _08037054\n"
"\tmovs r6, 0\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r5, _080370C0\n"
"\tldr r0, [r5]\n"
"\tmovs r4, 0xAE\n"
"\tlsls r4, 1\n"
"\tadds r0, r4\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tldr r1, [r5]\n"
"\tadds r0, r1, 0\n"
"\tadds r0, 0x1C\n"
"\tadds r1, r4\n"
"\tldr r3, _080370CC\n"
"\tldr r2, _080370D0\n"
"\tstr r2, [sp]\n"
"\tstr r6, [sp, 0x4]\n"
"\tmovs r2, 0x6\n"
"\tstr r2, [sp, 0x8]\n"
"\tstr r6, [sp, 0xC]\n"
"\tmovs r2, 0\n"
"\tbl SetMenuItems\n"
"\tldr r0, [r5]\n"
"\tadds r0, 0x1C\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0x1\n"
"\tbl sub_8035CF4\n"
"\tbl sub_80376CC\n"
"\tadd sp, 0x10\n"
"\tpop {r3}\n"
"\tmov r8, r3\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_080370C0: .4byte gUnknown_203B35C\n"
"_080370C4: .4byte 0x00000504\n"
"_080370C8: .4byte gUnknown_80E653C\n"
"_080370CC: .4byte gUnknown_80E6CD0\n"
"_080370D0: .4byte gUnknown_80E6CE8");
}
#endif
void sub_80370D4(void)
{
if(gUnknown_203B35C != NULL)
{
MemoryFree(gUnknown_203B35C);
gUnknown_203B35C = NULL;
}
}
// Unused
u32 sub_80370F0(void)
{
u32 nextMenu;
int local_10;
local_10 = 4;
nextMenu = MENU_NO_SCREEN_CHANGE;
switch(gUnknown_203B35C->unk8){
case 0:
if (sub_80130A8(&gUnknown_203B35C->unk1C) == '\0') {
sub_8013114(&gUnknown_203B35C->unk1C,&local_10);
}
if (local_10 == 4) {
sub_8037748();
}
else {
gUnknown_203B35C->unk8 = 1;
sub_8037900();
}
break;
case 1:
sub_80376CC();
gUnknown_203B35C->unk8 = 2;
sub_80371B8();
break;
case 2:
if (((gUnknown_203B35C->unk0 < 2) && (gUnknown_203B35C->unk4 == 0)) && (sub_8037C10(0) == 0) ) {
return 0x29; // TODO: what screen is this?
}
else {
if (sub_80130A8(&gUnknown_203B35C->unk1C) == '\0') {
sub_8013114(&gUnknown_203B35C->unk1C,&local_10);
}
if (local_10 != 4) {
PlayMenuSoundEffect(3);
nextMenu = sub_8037798();
gUnknown_203B35C->unk8 = 4;
}
sub_8037748();
}
break;
}
return nextMenu;
}
void sub_80371B8(void)
{
struct unkStruct_8035D94 *pbVar2;
u32 *ppuVar4;
u32 *puVar5;
puVar5 = NULL;
ppuVar4 = NULL;
sub_8037400();
if ((gUnknown_203B35C->unk0 < 2) &&(gUnknown_203B35C->unk4 == 0)) {
if (sub_8037C10(0) != 0) {
sub_80376CC();
sub_8035CC0(&gUnknown_203B35C->unk15C,0);
SetMenuItems(&gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, &gUnknown_80E6C50,
&gUnknown_80E6C68, 0, 6, 0);
sub_8035CF4(&gUnknown_203B35C->unk1C, 0, 1);
}
}
else {
sub_80376CC();
sub_8035CC0(&gUnknown_203B35C->unk15C, 0);
switch(gUnknown_203B35C->unk4) {
case 0:
puVar5 = &gUnknown_80E66BC;
ppuVar4 = &gUnknown_80E66D4;
break;
case 3:
puVar5 = &gUnknown_80E6D54;
ppuVar4 = &gUnknown_80E6D6C;
break;
case 2:
puVar5 = &gUnknown_80E6DDC;
ppuVar4 = &gUnknown_80E6DF4;
break;
case 4:
puVar5 = &gUnknown_80E67D4;
ppuVar4 = &gUnknown_80E67EC;
break;
case 1:
case 5:
puVar5 = &gUnknown_80E6748;
ppuVar4 = &gUnknown_80E6760;
break;
case 6:
puVar5 = &gUnknown_80E689C;
ppuVar4 = &gUnknown_80E68B4;
break;
case 7:
puVar5 = &gUnknown_80E6938;
ppuVar4 = &gUnknown_80E6950;
break;
case 9:
puVar5 = &gUnknown_80E69B0;
ppuVar4 = &gUnknown_80E69C8;
break;
case 0xb:
puVar5 = &gUnknown_80E6A10;
ppuVar4 = &gUnknown_80E6A28;
break;
case 0xd:
puVar5 = &gUnknown_80E6A74;
ppuVar4 = &gUnknown_80E6A8C;
break;
case 0xe:
puVar5 = &gUnknown_80E6B78;
ppuVar4 = &gUnknown_80E6B90;
break;
case 0xf:
puVar5 = &gUnknown_80E6BF4;
ppuVar4 = &gUnknown_80E6C0C;
break;
}
SetMenuItems(&gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, puVar5, ppuVar4, 0, 6, 0);
sub_8035CF4(&gUnknown_203B35C->unk1C, 0, 1);
// TODO clean this if statement up...
if ((((gUnknown_203B35C->unk4 != 0) &&(gUnknown_203B35C->unk0 == 0)) &&
(pbVar2 = sub_8035D94(), pbVar2->unk0 != 0)) && (pbVar2->unk4 != 0)) {
// We received something..
gUnknown_203B460->unk50[pbVar2->unk0] += pbVar2->unk4;
}
}
}
void sub_80373C4(void)
{
sub_8005838(0,0);
sub_80060EC();
sub_800CB20();
LoadBufferedInputs();
TransferBGPaletteBuffer();
xxx_call_update_bg_vram();
sub_8009908();
xxx_call_update_bg_sound_input();
ResetSprites(0);
}
// Unused
struct unkStruct_203B35C *sub_80373F4(void)
{
return gUnknown_203B35C;
}

View File

@@ -40,7 +40,7 @@ extern void sub_800836C(u32, u8 *r0, u32);
extern void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray);
extern void RedrawPartnerSelectionMenu(void);
extern void sub_8013818(u32 *r0, s32, u32, u32);
extern void sub_8013818(struct UnkInputStruct **r0, s32, u32, u32);
extern u32 GetKeyPress(struct UnkInputStruct **r0);
extern u8 sub_80138B8(struct UnkInputStruct **r0, u32);
@@ -142,7 +142,7 @@ struct unkData gUnknown_80F4244 =
0xC, 6,
5, 5,
5,0,
0, 0
NULL
};
const char filler[] = "pksdir0"; // CHUNSOFT inserted for aligning data
@@ -168,7 +168,7 @@ const struct unkData gUnknown_80F4278 =
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00
NULL
};
const struct unkData gUnknown_80F4290 =
@@ -178,7 +178,7 @@ const struct unkData gUnknown_80F4290 =
0x02, 0x02,
0x09, 0x0B,
0x0D, 0x00,
0x00, 0x00
NULL
};
const struct unkData gUnknown_80F42A8 =
@@ -188,7 +188,7 @@ const struct unkData gUnknown_80F42A8 =
0x0E, 0x04,
0x05, 0x05,
0x05, 0x00,
0x00, 0x00
NULL
};
@@ -586,7 +586,6 @@ void sub_803CB5C(void)
void sub_803CB7C(void)
{
CopyStringtoBuffer(gUnknown_203B400->PartnerNick, GetMonSpecies(gUnknown_203B400->PartnerID));
sub_801602C(3, gUnknown_203B400->PartnerNick);
gUnknown_203B400->TestState = 13;
@@ -652,7 +651,6 @@ void PersonalityTest_DisplayStarterSprite(void)
sub_80073E0(1);
}
#ifdef NONMATCHING
void CreatePartnerSelectionMenu(s16 starterID)
{
s32 starterID_s32;
@@ -661,114 +659,26 @@ void CreatePartnerSelectionMenu(s16 starterID)
sub_803CEAC(); // creates 203B404
gUnknown_203B404->StarterID = starterID_s32;
gUnknown_203B404->unk4C = 0;
gUnknown_203B404->unk50 = &gUnknown_203B404->unk54;
gUnknown_203B404->unk50 = gUnknown_203B404->unk54;
gUnknown_203B404->unk54[0] = gUnknown_80F4290;
gUnknown_203B404->unk54[1] = gUnknown_80F42A8;
gUnknown_203B404->unk54[2] = gUnknown_80F4278;
gUnknown_203B404->unk54[3] = gUnknown_80F4278;
// TODO this is the problem area
//gUnknown_203B404->unk50[5] = (u32 *) &gUnknown_203B404->sub; // so weird but think they store the substruct
gUnknown_203B404->unk50->unk14 = gUnknown_203B404->unkb4;
gUnknown_203B404->sub.unkb4 = 1;
gUnknown_203B404->sub.unkb5 = 0;
gUnknown_203B404->sub.unkb6 = 6;
gUnknown_203B404->sub.unkb7 = 0;
gUnknown_203B404->unkb4[0] = 1;
gUnknown_203B404->unkb4[1] = 0;
gUnknown_203B404->unkb4[2] = 6;
gUnknown_203B404->unkb4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B404->unk54, 1, 1);
sub_8013818(&gUnknown_203B404->unk18, GetValidPartners(), 0xA, gUnknown_203B404->unk4C);
RedrawPartnerSelectionMenu();
PersonalityTest_DisplayPartnerSprite();
}
#else
NAKED
void CreatePartnerSelectionMenu(s16 starterID)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tadds r4, r0, 0\n"
"\tlsls r4, 16\n"
"\tasrs r4, 16\n"
"\tbl sub_803CEAC\n"
"\tldr r5, _0803CDB0\n"
"\tldr r0, [r5]\n"
"\tmovs r3, 0\n"
"\tmovs r1, 0\n"
"\tstrh r4, [r0]\n"
"\tstr r1, [r0, 0x4C]\n"
"\tadds r1, r0, 0\n"
"\tadds r1, 0x54\n"
"\tstr r1, [r0, 0x50]\n"
"\tldr r0, _0803CDB4\n"
"\tldm r0!, {r2,r4,r6}\n"
"\tstm r1!, {r2,r4,r6}\n"
"\tldm r0!, {r2,r4,r7}\n"
"\tstm r1!, {r2,r4,r7}\n"
"\tldr r1, [r5]\n"
"\tadds r1, 0x6C\n"
"\tldr r0, _0803CDB8\n"
"\tldm r0!, {r2,r6,r7}\n"
"\tstm r1!, {r2,r6,r7}\n"
"\tldm r0!, {r4,r6,r7}\n"
"\tstm r1!, {r4,r6,r7}\n"
"\tldr r1, [r5]\n"
"\tldr r2, _0803CDBC\n"
"\tadds r1, 0x84\n"
"\tadds r0, r2, 0\n"
"\tldm r0!, {r4,r6,r7}\n"
"\tstm r1!, {r4,r6,r7}\n"
"\tldm r0!, {r4,r6,r7}\n"
"\tstm r1!, {r4,r6,r7}\n"
"\tldr r0, [r5]\n"
"\tadds r0, 0x9C\n"
"\tldm r2!, {r1,r4,r6}\n"
"\tstm r0!, {r1,r4,r6}\n"
"\tldm r2!, {r1,r4,r7}\n"
"\tstm r0!, {r1,r4,r7}\n"
"\tldr r0, [r5]\n"
"\tldr r1, [r0, 0x50]\n"
"\tadds r0, 0xB4\n"
"\tstr r0, [r1, 0x14]\n"
"\tmovs r1, 0x1\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r5]\n"
"\tadds r0, 0xB5\n"
"\tstrb r3, [r0]\n"
"\tldr r0, [r5]\n"
"\tadds r0, 0xB6\n"
"\tmovs r1, 0x6\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r5]\n"
"\tadds r0, 0xB7\n"
"\tstrb r3, [r0]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r5]\n"
"\tadds r0, 0x54\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tldr r4, [r5]\n"
"\tadds r4, 0x18\n"
"\tbl GetValidPartners\n"
"\tadds r1, r0, 0\n"
"\tldr r0, [r5]\n"
"\tldr r3, [r0, 0x4C]\n"
"\tadds r0, r4, 0\n"
"\tmovs r2, 0xA\n"
"\tbl sub_8013818\n"
"\tbl RedrawPartnerSelectionMenu\n"
"\tbl PersonalityTest_DisplayPartnerSprite\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0803CDB0: .4byte gUnknown_203B404\n"
"_0803CDB4: .4byte gUnknown_80F4290\n"
"_0803CDB8: .4byte gUnknown_80F42A8\n"
"_0803CDBC: .4byte gUnknown_80F4278");
}
#endif
u16 HandlePartnerSelectionInput(void)
{

View File

@@ -21,6 +21,26 @@ extern const char gDragonText[];
extern const char gDarkText[];
extern const char gSteelText[];
extern const char gFormattedNoneText[];
extern const char gFormattedNormalText[];
extern const char gFormattedFireText[];
extern const char gFormattedWaterText[];
extern const char gFormattedGrassText[];
extern const char gFormattedElectricText[];
extern const char gFormattedIceText[];
extern const char gFormattedFightingText[];
extern const char gFormattedPoisonText[];
extern const char gFormattedGroundText[];
extern const char gFormattedFlyingText[];
extern const char gFormattedPsychicText[];
extern const char gFormattedBugText[];
extern const char gFormattedRockText[];
extern const char gFormattedGhostText[];
extern const char gFormattedDragonText[];
extern const char gFormattedDarkText[];
extern const char gFormattedSteelText[];
const char * const gUnformattedTypeStrings[NUM_POKEMON_TYPES] =
{
gNoneText,
@@ -45,7 +65,29 @@ const char * const gUnformattedTypeStrings[NUM_POKEMON_TYPES] =
#include "data/unformatted_type_names.h"
extern const char * gFormattedTypeStrings[NUM_POKEMON_TYPES]; // formatted type names
const char * const gFormattedTypeStrings[NUM_POKEMON_TYPES] =
{
gFormattedNoneText,
gFormattedNormalText,
gFormattedFireText,
gFormattedWaterText,
gFormattedGrassText,
gFormattedElectricText,
gFormattedIceText,
gFormattedFightingText,
gFormattedPoisonText,
gFormattedGroundText,
gFormattedFlyingText,
gFormattedPsychicText,
gFormattedBugText,
gFormattedRockText,
gFormattedGhostText,
gFormattedDragonText,
gFormattedDarkText,
gFormattedSteelText,
};
#include "data/formatted_type_names.h"
extern u8 *gAbilityNames[];

104
src/unk_menu_203B360.c Normal file
View File

@@ -0,0 +1,104 @@
#include "global.h"
#include "input.h"
#include "main_menu.h"
struct unkData
{
u8 unk0[14];
u16 unkD;
u16 unk10;
u16 unk12;
u8 *unk14;
};
struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
u32 unk4; // state
u32 unk8;
u8 fill8[0x148 - 0xC];
struct unkData unk148[4];
u32 unk1A8;
u32 unk1AC;
u32 unk1B0; // sprite count?
};
extern struct unkStruct_203B360 *gUnknown_203B360;
extern struct unkData gUnknown_80E6E7C;
extern u32 gUnknown_80E6E94;
extern u32 gUnknown_80E6EAC;
extern void *MemoryAlloc(u32, u32);
extern void MemoryFill8(u8 *, u8, u32);
extern void MemoryFree(void *);
extern void sub_8038440();
extern void sub_8035CF4(u32 *, u32, u32);
extern void sub_800641C(void *, u32, u32);
extern void SetMenuItems(void *, void *, u32, u32 *, u32 *, u32, u32, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_80384D0();
void sub_80382E4(s32 param_1)
{
s32 iVar4;
if (gUnknown_203B360 == NULL) {
gUnknown_203B360 = MemoryAlloc(sizeof(struct unkStruct_203B360), 8);
MemoryFill8((u8 *)gUnknown_203B360, 0, sizeof(struct unkStruct_203B360));
}
for(iVar4 = 0; iVar4 < 4; iVar4++){
gUnknown_203B360->unk148[iVar4] = gUnknown_80E6E7C;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B360->unk148,1,1);
if (param_1 == 0x25) {
SetMenuItems(&gUnknown_203B360->unk8,gUnknown_203B360->unk148,0,&gUnknown_80E6E94,&gUnknown_80E6EAC,
0,4,0);
}
sub_8035CF4(&gUnknown_203B360->unk8,0,1);
gUnknown_203B360->currMenu = param_1;
gUnknown_203B360->unk4 = 0;
sub_8038440();
}
void sub_80383A8(void)
{
ResetUnusedInputStruct();
sub_800641C(0,1,1);
if (gUnknown_203B360 != 0) {
MemoryFree(gUnknown_203B360);
gUnknown_203B360 = 0;
}
}
u32 sub_80383D4(void)
{
u32 nextMenu;
u32 menuAction;
menuAction = 2;
nextMenu = MENU_NO_SCREEN_CHANGE;
if (gUnknown_203B360->unk4 == 0){
if (sub_80130A8(&gUnknown_203B360->unk8) == '\0') {
sub_8013114(&gUnknown_203B360->unk8, &menuAction);
}
switch(menuAction)
{
case 3:
case 1:
gUnknown_203B360->unk4 = 0;
nextMenu = MENU_MAIN_SCREEN;
break;
case 2:
gUnknown_203B360->unk4 = 0;
default:
break;
}
sub_80384D0();
}
return nextMenu;
}

36
src/unk_menu_203B360_1.c Normal file
View File

@@ -0,0 +1,36 @@
#include "global.h"
struct unkData
{
u8 unk0[14];
u16 unkD;
u16 unk10;
u16 unk12;
u8 *unk14;
};
struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
u32 unk4;
u32 unk8;
u8 fill8[0x148 - 0xC];
struct unkData unk148[4];
u16 unk1A8;
u16 unk1AA;
u16 unk1AC;
u16 unk1AE;
u32 unk1B0; // Sprite count?
};
extern struct unkStruct_203B360 *gUnknown_203B360;
extern void AddSprite(u16 *, u32, u32, u32);
void sub_80384D0(void)
{
if ((gUnknown_203B360->unk1B0 & 8) != 0) {
AddSprite(&gUnknown_203B360->unk1A8, 0x100, 0, 0);
}
gUnknown_203B360->unk1B0++;
}

85
src/unk_menu_203B364.c Normal file
View File

@@ -0,0 +1,85 @@
#include "global.h"
#include "input.h"
struct unkData
{
u8 unk0[14];
u16 unkD;
u16 unk10;
u16 unk12;
u8 *unk14;
};
struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
u32 unk4;
u32 unk8;
u8 fill8[0x148 - 0xC];
struct unkData unk148[4];
u16 unk1A8;
u16 unk1AA;
u16 unk1AC;
u16 unk1AE;
u32 unk1B0; // Sprite count?
};
extern struct unkStruct_203B360 *gUnknown_203B364;
extern struct unkData gUnknown_80E6F20;
extern u32 gUnknown_80E6F38;
extern u32 gUnknown_80E7090;
extern u32 gUnknown_80E6F50;
extern void *MemoryAlloc(u32, u32);
extern void MemoryFill8(u8 *, u8, u32);
extern void MemoryFree(void *);
extern void sub_8038440();
extern void sub_8035CF4(u32 *, u32, u32);
extern void sub_800641C(void *, u32, u32);
extern void SetMenuItems(void *, void *, u32, u32 *, u32 *, u32, u32, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_80384D0();
extern void sub_8038830();
void sub_803850C(s32 param_1)
{
s32 iVar4;
if (gUnknown_203B364 == NULL) {
gUnknown_203B364 = MemoryAlloc(sizeof(struct unkStruct_203B360),8);
MemoryFill8((u8 *)gUnknown_203B364,0,sizeof(struct unkStruct_203B360));
}
for(iVar4 = 0; iVar4 < 4; iVar4++){
gUnknown_203B364->unk148[iVar4] = gUnknown_80E6F20;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B364->unk148,1,1);
if (param_1 == 0x2e) {
// Beware, Deleting your Adventure
SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,&gUnknown_80E7090,
0,6,0);
}
else {
// Saving your Adventure
SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,&gUnknown_80E6F50,
0,6,0);
}
sub_8035CF4(&gUnknown_203B364->unk8,0,1);
gUnknown_203B364->unk4 = 0;
gUnknown_203B364->currMenu = param_1;
sub_8038830();
}
void sub_8038604(void)
{
ResetUnusedInputStruct();
sub_800641C(0,1,1);
if (gUnknown_203B364 != 0) {
MemoryFree(gUnknown_203B364);
gUnknown_203B364 = 0;
}
}

View File

@@ -449,7 +449,7 @@ gUnknown_203B330 = .; /* 203B330 */
gUnknown_203B334 = .; /* 203B334 */
. += 0x4;
gUnknown_203B338 = .; /* 203B338 */
gAdventureLog = .; /* 203B338 */
. += 0x4;
gUnknown_203B33C = .; /* 203B33C */
@@ -491,7 +491,7 @@ gUnknown_203B368 = .; /* 203B368 */
gUnknown_203B36C = .; /* 203B36C */
. += 0x4;
gUnknown_203B370 = .; /* 203B370 */
gRescuePasswordMenu = .; /* 203B370 */
. += 0x4;
gUnknown_203B374 = .; /* 203B374 */