mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-24 06:57:18 -05:00
Wonder mail and some boss dialogues (#36)
* more wonder mail and main menu work * Lots of things.. doc'ing, decomping, and other things * continue decomping boss scenes * up to Suicune * up to Mewtwo dialogue * up to Raquaza * fix spelling error on Rayquaza and decomp a few more * up to groudon * divide > shift
This commit is contained in:
parent
d316d1e359
commit
f65dee5a14
|
|
@ -11533,7 +11533,7 @@ _08023532:
|
|||
cmp r0, 0
|
||||
beq _08023594
|
||||
adds r0, r5, 0
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
movs r7, 0x4
|
||||
cmp r0, 0
|
||||
|
|
|
|||
3387
asm/code_802B640.s
Normal file
3387
asm/code_802B640.s
Normal file
File diff suppressed because it is too large
Load Diff
105689
asm/code_80521D0.s
105689
asm/code_80521D0.s
File diff suppressed because it is too large
Load Diff
97987
asm/code_8057824.s
Normal file
97987
asm/code_8057824.s
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -1201,8 +1201,8 @@ _0808E72C:
|
|||
bx r0
|
||||
thumb_func_end sub_808E6F4
|
||||
|
||||
thumb_func_start sub_808E734
|
||||
sub_808E734:
|
||||
thumb_func_start HasRecruitedMon
|
||||
HasRecruitedMon:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
|
|
@ -1236,7 +1236,7 @@ _0808E76A:
|
|||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_808E734
|
||||
thumb_func_end HasRecruitedMon
|
||||
|
||||
thumb_func_start sub_808E770
|
||||
sub_808E770:
|
||||
|
|
|
|||
|
|
@ -8539,21 +8539,21 @@ _080A1AF0: .4byte gUnknown_811678C
|
|||
_080A1AF4: .4byte gUnknown_8116790
|
||||
_080A1AF8:
|
||||
movs r0, 0x90
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080A1B08
|
||||
bl _080A236A
|
||||
_080A1B08:
|
||||
movs r0, 0x91
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080A1B18
|
||||
bl _080A236A
|
||||
_080A1B18:
|
||||
movs r0, 0x92
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
b _080A171E
|
||||
_080A1B20:
|
||||
bl sub_808D33C
|
||||
|
|
@ -8854,7 +8854,7 @@ _080A1CCC:
|
|||
cmp r0, 0
|
||||
beq _080A1D9E
|
||||
adds r0, r5, 0
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080A1CA4
|
||||
|
|
|
|||
|
|
@ -1557,17 +1557,17 @@ _08001F7E:
|
|||
cmp r0, 0
|
||||
beq _08001FCC
|
||||
movs r0, 0x90
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08001FCC
|
||||
movs r0, 0x91
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08001FCC
|
||||
movs r0, 0x92
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08001FCC
|
||||
|
|
@ -1668,7 +1668,7 @@ _08002086:
|
|||
beq _080020AE
|
||||
movs r0, 0x89
|
||||
lsls r0, 1
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080020AE
|
||||
|
|
@ -1685,7 +1685,7 @@ _080020AE:
|
|||
cmp r0, 0
|
||||
beq _080020D4
|
||||
ldr r0, _080020E4
|
||||
bl sub_808E734
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080020D4
|
||||
|
|
|
|||
660
asm/jirachi_wish.s
Normal file
660
asm/jirachi_wish.s
Normal file
|
|
@ -0,0 +1,660 @@
|
|||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start JirachiWish
|
||||
JirachiWish:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x78
|
||||
movs r0, 0x1A
|
||||
bl sub_8085680
|
||||
adds r6, r0, 0
|
||||
ldr r0, _0808B82C
|
||||
ldr r1, _0808B830
|
||||
bl CopySpeciesNametoBuffer
|
||||
ldr r4, _0808B834
|
||||
adds r0, r4, 0
|
||||
bl sub_80855E4
|
||||
adds r0, r6, 0
|
||||
bl _call_via_r4
|
||||
movs r0, 0
|
||||
bl sub_8041888
|
||||
ldr r0, [r6, 0x70]
|
||||
movs r1, 0xAE
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
movs r1, 0
|
||||
movs r4, 0x1
|
||||
strb r4, [r0]
|
||||
ldr r0, [r6, 0x70]
|
||||
movs r2, 0xAF
|
||||
lsls r2, 1
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r0, r6, 0
|
||||
movs r1, 0xE
|
||||
movs r2, 0
|
||||
bl sub_80861B8
|
||||
ldr r0, _0808B838
|
||||
bl sub_80855E4
|
||||
ldr r0, _0808B83C
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0808B840
|
||||
adds r0, r1
|
||||
strb r4, [r0]
|
||||
movs r0, 0x1E
|
||||
bl sub_8083ED8
|
||||
movs r0, 0x1E
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808B844
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808B848
|
||||
bl sub_8083E38
|
||||
movs r0, 0x96
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
bl sub_80862BC
|
||||
ldr r0, _0808B84C
|
||||
bl sub_8052910
|
||||
movs r0, 0x79
|
||||
bl sub_8083E88
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
bl sub_80856E0
|
||||
movs r0, 0xB5
|
||||
lsls r0, 1
|
||||
bl sub_8083E38
|
||||
ldr r0, _0808B850
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
bl sub_808696C
|
||||
ldr r0, _0808B854
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
_0808B690:
|
||||
ldr r4, _0808B858
|
||||
_0808B692:
|
||||
movs r0, 0
|
||||
ldr r1, [r4]
|
||||
ldr r2, _0808B85C
|
||||
ldr r3, _0808B860
|
||||
bl sub_8052C68
|
||||
mov r9, r0
|
||||
cmp r0, 0
|
||||
ble _0808B692
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
mov r2, r9
|
||||
cmp r2, 0x1
|
||||
bne _0808B754
|
||||
ldr r0, _0808B864
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
bl JirachiWishGrantDialogue
|
||||
movs r0, 0
|
||||
add r7, sp, 0x6C
|
||||
_0808B6CA:
|
||||
adds r0, 0x1
|
||||
mov r8, r0
|
||||
mov r4, sp
|
||||
movs r5, 0x8
|
||||
_0808B6D2:
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x69
|
||||
movs r2, 0
|
||||
bl sub_8045C28
|
||||
adds r4, 0x4
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _0808B6D2
|
||||
movs r0, 0x3
|
||||
bl sub_8084100
|
||||
ldrh r1, [r6, 0x4]
|
||||
adds r1, r0
|
||||
subs r1, 0x1
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
ldr r2, _0808B868
|
||||
ldr r0, [sp, 0x6C]
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
str r0, [sp, 0x6C]
|
||||
movs r0, 0x3
|
||||
bl sub_8084100
|
||||
ldrh r2, [r6, 0x6]
|
||||
adds r2, r0
|
||||
subs r2, 0x1
|
||||
lsls r2, 16
|
||||
ldr r0, _0808B86C
|
||||
ldr r1, [sp, 0x6C]
|
||||
ands r1, r0
|
||||
orrs r1, r2
|
||||
str r1, [sp, 0x6C]
|
||||
movs r2, 0
|
||||
ldrsh r0, [r7, r2]
|
||||
asrs r1, 16
|
||||
bl sub_8049590
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0808B744
|
||||
movs r0, 0xA6
|
||||
lsls r0, 1
|
||||
bl sub_8083E38
|
||||
adds r0, r7, 0
|
||||
bl sub_808BB3C
|
||||
adds r0, r6, 0
|
||||
adds r1, r7, 0
|
||||
mov r2, sp
|
||||
movs r3, 0x9
|
||||
bl sub_8046860
|
||||
_0808B744:
|
||||
mov r0, r8
|
||||
cmp r0, 0x5
|
||||
ble _0808B6CA
|
||||
ldr r0, [r6, 0x70]
|
||||
ldr r2, _0808B870
|
||||
adds r1, r0, r2
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
_0808B754:
|
||||
mov r0, r9
|
||||
cmp r0, 0x2
|
||||
bne _0808B80A
|
||||
ldr r0, _0808B874
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
bl JirachiWishGrantDialogue
|
||||
movs r0, 0
|
||||
add r1, sp, 0x24
|
||||
mov r8, r1
|
||||
add r7, sp, 0x70
|
||||
_0808B776:
|
||||
adds r0, 0x1
|
||||
mov r10, r0
|
||||
mov r4, r8
|
||||
movs r5, 0x8
|
||||
_0808B77E:
|
||||
movs r0, 0
|
||||
bl sub_803D73C
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r4, 0
|
||||
movs r2, 0
|
||||
bl sub_8045C28
|
||||
adds r4, 0x4
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _0808B77E
|
||||
movs r0, 0x3
|
||||
bl sub_8084100
|
||||
ldrh r1, [r6, 0x4]
|
||||
adds r1, r0
|
||||
subs r1, 0x1
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
ldr r2, _0808B868
|
||||
ldr r0, [sp, 0x70]
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
str r0, [sp, 0x70]
|
||||
movs r0, 0x3
|
||||
bl sub_8084100
|
||||
ldrh r2, [r6, 0x6]
|
||||
adds r2, r0
|
||||
subs r2, 0x1
|
||||
lsls r2, 16
|
||||
ldr r0, _0808B86C
|
||||
ldr r1, [sp, 0x70]
|
||||
ands r1, r0
|
||||
orrs r1, r2
|
||||
str r1, [sp, 0x70]
|
||||
movs r2, 0
|
||||
ldrsh r0, [r7, r2]
|
||||
asrs r1, 16
|
||||
bl sub_8049590
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0808B7FA
|
||||
movs r0, 0xC8
|
||||
lsls r0, 1
|
||||
bl sub_8083E38
|
||||
adds r0, r7, 0
|
||||
bl sub_808BB3C
|
||||
adds r0, r6, 0
|
||||
adds r1, r7, 0
|
||||
mov r2, r8
|
||||
movs r3, 0x9
|
||||
bl sub_8046860
|
||||
_0808B7FA:
|
||||
mov r0, r10
|
||||
cmp r0, 0x5
|
||||
ble _0808B776
|
||||
ldr r0, [r6, 0x70]
|
||||
ldr r2, _0808B870
|
||||
adds r1, r0, r2
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
_0808B80A:
|
||||
mov r0, r9
|
||||
cmp r0, 0x3
|
||||
bne _0808B8CA
|
||||
bl JirachiFriendAreaSearch
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
cmp r4, 0x3A
|
||||
bne _0808B87C
|
||||
ldr r0, _0808B878
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
b _0808B690
|
||||
.align 2, 0
|
||||
_0808B82C: .4byte gUnknown_202E038
|
||||
_0808B830: .4byte 0x0000019d
|
||||
_0808B834: .4byte sub_808BBA8
|
||||
_0808B838: .4byte sub_80861A8
|
||||
_0808B83C: .4byte gUnknown_203B418
|
||||
_0808B840: .4byte 0x0001356c
|
||||
_0808B844: .4byte gUnknown_8105668
|
||||
_0808B848: .4byte 0x000001a7
|
||||
_0808B84C: .4byte gUnknown_8105674
|
||||
_0808B850: .4byte gUnknown_81056B8
|
||||
_0808B854: .4byte gUnknown_81056DC
|
||||
_0808B858: .4byte gUnknown_8105798
|
||||
_0808B85C: .4byte gUnknown_810579C
|
||||
_0808B860: .4byte 0x00000705
|
||||
_0808B864: .4byte gUnknown_810581C
|
||||
_0808B868: .4byte 0xffff0000
|
||||
_0808B86C: .4byte 0x0000ffff
|
||||
_0808B870: .4byte 0x0000015d
|
||||
_0808B874: .4byte gUnknown_8105974
|
||||
_0808B878: .4byte gUnknown_8105A08
|
||||
_0808B87C:
|
||||
ldr r0, _0808BA30
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
bl JirachiWishGrantDialogue
|
||||
ldr r0, [r6, 0x70]
|
||||
ldr r2, _0808BA34
|
||||
adds r1, r0, r2
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
ldr r0, _0808BA38
|
||||
bl sub_8052910
|
||||
adds r0, r4, 0
|
||||
bl UnlockFriendArea
|
||||
movs r0, 0xD4
|
||||
bl sub_8083E38
|
||||
bl sub_8083600
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0808BA3C
|
||||
movs r2, 0
|
||||
bl sub_8045B94
|
||||
ldr r0, _0808BA40
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl sub_8092578
|
||||
ldr r0, _0808BA44
|
||||
bl sub_8052910
|
||||
_0808B8CA:
|
||||
mov r0, r9
|
||||
cmp r0, 0x4
|
||||
bne _0808B98E
|
||||
ldr r0, _0808BA48
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
bl JirachiWishGrantDialogue
|
||||
movs r0, 0
|
||||
add r1, sp, 0x48
|
||||
mov r8, r1
|
||||
add r7, sp, 0x74
|
||||
_0808B8EC:
|
||||
adds r0, 0x1
|
||||
mov r10, r0
|
||||
mov r4, r8
|
||||
movs r5, 0x3
|
||||
_0808B8F4:
|
||||
movs r0, 0x8
|
||||
bl sub_8084100
|
||||
ldr r2, _0808BA4C
|
||||
adds r0, r2
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
movs r2, 0
|
||||
bl sub_8045C28
|
||||
adds r4, 0x4
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _0808B8F4
|
||||
movs r0, 0x3
|
||||
bl sub_8084100
|
||||
ldrh r1, [r6, 0x4]
|
||||
adds r1, r0
|
||||
subs r1, 0x1
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
ldr r2, _0808BA50
|
||||
ldr r0, [sp, 0x74]
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
str r0, [sp, 0x74]
|
||||
movs r0, 0x3
|
||||
bl sub_8084100
|
||||
ldrh r2, [r6, 0x6]
|
||||
adds r2, r0
|
||||
subs r2, 0x1
|
||||
lsls r2, 16
|
||||
ldr r0, _0808BA54
|
||||
ldr r1, [sp, 0x74]
|
||||
ands r1, r0
|
||||
orrs r1, r2
|
||||
str r1, [sp, 0x74]
|
||||
movs r2, 0
|
||||
ldrsh r0, [r7, r2]
|
||||
asrs r1, 16
|
||||
bl sub_8049590
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0808B970
|
||||
movs r0, 0xC8
|
||||
lsls r0, 1
|
||||
bl sub_8083E38
|
||||
adds r0, r7, 0
|
||||
bl sub_808BB3C
|
||||
adds r0, r6, 0
|
||||
adds r1, r7, 0
|
||||
mov r2, r8
|
||||
movs r3, 0x4
|
||||
bl sub_8046860
|
||||
_0808B970:
|
||||
mov r0, r10
|
||||
cmp r0, 0x4
|
||||
ble _0808B8EC
|
||||
ldr r0, [r6, 0x70]
|
||||
ldr r2, _0808BA34
|
||||
adds r1, r0, r2
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
ldr r0, _0808BA58
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
_0808B98E:
|
||||
mov r0, r9
|
||||
cmp r0, 0x5
|
||||
bne _0808B9F8
|
||||
ldr r0, _0808BA5C
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
bl JirachiWishGrantDialogue
|
||||
ldr r0, [r6, 0x70]
|
||||
ldr r2, _0808BA34
|
||||
adds r1, r0, r2
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
ldr r0, _0808BA60
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
bl sub_8083600
|
||||
adds r1, r0, 0
|
||||
adds r1, 0x4
|
||||
adds r0, r6, 0x4
|
||||
bl sub_80983D8
|
||||
adds r1, r0, 0
|
||||
adds r0, r6, 0
|
||||
bl sub_8085918
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808BA64
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808BA68
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0808BA6C
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
_0808B9F8:
|
||||
ldr r0, _0808BA70
|
||||
bl sub_8052910
|
||||
adds r0, r6, 0
|
||||
bl sub_808BC20
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808BA74
|
||||
bl sub_8052910
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
bl sub_808BD38
|
||||
add sp, 0x78
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808BA30: .4byte gUnknown_8105AD4
|
||||
_0808BA34: .4byte 0x0000015d
|
||||
_0808BA38: .4byte gUnknown_8105B20
|
||||
_0808BA3C: .4byte gAvailablePokemonNames
|
||||
_0808BA40: .4byte gUnknown_202DE58
|
||||
_0808BA44: .4byte gUnknown_8105B68
|
||||
_0808BA48: .4byte gUnknown_8105BA8
|
||||
_0808BA4C: .4byte gUnknown_81074FC
|
||||
_0808BA50: .4byte 0xffff0000
|
||||
_0808BA54: .4byte 0x0000ffff
|
||||
_0808BA58: .4byte gUnknown_8105BF4
|
||||
_0808BA5C: .4byte gUnknown_8105D2C
|
||||
_0808BA60: .4byte gUnknown_8105D80
|
||||
_0808BA64: .4byte gUnknown_8105D9C
|
||||
_0808BA68: .4byte gUnknown_203B418
|
||||
_0808BA6C: .4byte 0x00000674
|
||||
_0808BA70: .4byte gUnknown_81058E0
|
||||
_0808BA74: .4byte gUnknown_810593C
|
||||
thumb_func_end JirachiWish
|
||||
|
||||
thumb_func_start JirachiPreFightDialogue1
|
||||
JirachiPreFightDialogue1:
|
||||
push {lr}
|
||||
ldr r0, _0808BA94
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0808BA9C
|
||||
bl sub_8086448
|
||||
ldr r0, _0808BA98
|
||||
bl sub_80866C4
|
||||
b _0808BAA0
|
||||
.align 2, 0
|
||||
_0808BA94: .4byte 0x0000019d
|
||||
_0808BA98: .4byte gUnknown_8105E14
|
||||
_0808BA9C:
|
||||
bl JirachiPreFightDialogue
|
||||
_0808BAA0:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end JirachiPreFightDialogue1
|
||||
|
||||
thumb_func_start sub_808BAA4
|
||||
sub_808BAA4:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
ldr r0, _0808BB34
|
||||
bl sub_8083E38
|
||||
ldr r1, _0808BB38
|
||||
movs r0, 0x1F
|
||||
str r0, [r1]
|
||||
movs r4, 0xFA
|
||||
movs r5, 0x1
|
||||
_0808BAB8:
|
||||
str r5, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r4, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x1
|
||||
bl sub_8085C54
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
subs r4, 0xA
|
||||
cmp r4, 0x95
|
||||
bgt _0808BAB8
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r4, 0xFA
|
||||
movs r5, 0x1
|
||||
_0808BADE:
|
||||
str r5, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r4, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x1
|
||||
bl sub_8085C54
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
subs r4, 0xA
|
||||
cmp r4, 0xC7
|
||||
bgt _0808BADE
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r4, 0xFA
|
||||
movs r5, 0x1
|
||||
_0808BB04:
|
||||
str r5, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r4, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x1
|
||||
bl sub_8085C54
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
subs r4, 0xA
|
||||
cmp r4, 0
|
||||
bge _0808BB04
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
bl sub_8085EB0
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808BB34: .4byte 0x000002c1
|
||||
_0808BB38: .4byte gUnknown_202EDC8
|
||||
thumb_func_end sub_808BAA4
|
||||
|
||||
thumb_func_start sub_808BB3C
|
||||
sub_808BB3C:
|
||||
push {lr}
|
||||
sub sp, 0x8
|
||||
adds r3, r0, 0
|
||||
movs r0, 0
|
||||
ldrsh r1, [r3, r0]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 11
|
||||
movs r1, 0xC0
|
||||
lsls r1, 4
|
||||
adds r0, r1
|
||||
cmp r0, 0
|
||||
bge _0808BB58
|
||||
adds r0, 0xFF
|
||||
_0808BB58:
|
||||
lsls r0, 8
|
||||
lsrs r0, 16
|
||||
ldr r1, _0808BBA0
|
||||
ldr r2, [sp, 0x4]
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp, 0x4]
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r3, r0]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 11
|
||||
movs r1, 0x80
|
||||
lsls r1, 5
|
||||
adds r0, r1
|
||||
cmp r0, 0
|
||||
bge _0808BB7C
|
||||
adds r0, 0xFF
|
||||
_0808BB7C:
|
||||
lsls r0, 8
|
||||
lsrs r0, 16
|
||||
lsls r0, 16
|
||||
ldr r1, _0808BBA4
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp, 0x4]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x64
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
add r3, sp, 0x4
|
||||
bl sub_8085EC8
|
||||
add sp, 0x8
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808BBA0: .4byte 0xffff0000
|
||||
_0808BBA4: .4byte 0x0000ffff
|
||||
thumb_func_end sub_808BB3C
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -5,204 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8035D80
|
||||
sub_8035D80:
|
||||
ldr r1, _08035D90
|
||||
ldr r2, [r1]
|
||||
ldr r1, [r0, 0x4]
|
||||
ldr r0, [r0]
|
||||
str r0, [r2, 0x30]
|
||||
str r1, [r2, 0x34]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08035D90: .4byte gMainMenu
|
||||
thumb_func_end sub_8035D80
|
||||
|
||||
thumb_func_start sub_8035D94
|
||||
sub_8035D94:
|
||||
ldr r0, _08035D9C
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x30
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08035D9C: .4byte gMainMenu
|
||||
thumb_func_end sub_8035D94
|
||||
|
||||
thumb_func_start sub_8035DA0
|
||||
sub_8035DA0:
|
||||
ldr r2, _08035DB0
|
||||
ldr r0, [r2]
|
||||
adds r0, 0x30
|
||||
movs r1, 0
|
||||
strb r1, [r0]
|
||||
ldr r0, [r2]
|
||||
str r1, [r0, 0x34]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08035DB0: .4byte gMainMenu
|
||||
thumb_func_end sub_8035DA0
|
||||
|
||||
thumb_func_start sub_8035DB4
|
||||
sub_8035DB4:
|
||||
push {lr}
|
||||
movs r1, 0x8
|
||||
subs r0, 0x13
|
||||
cmp r0, 0x7
|
||||
bhi _08035E0A
|
||||
lsls r0, 2
|
||||
ldr r1, _08035DC8
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08035DC8: .4byte _08035DCC
|
||||
.align 2, 0
|
||||
_08035DCC:
|
||||
.4byte _08035DEC
|
||||
.4byte _08035DF0
|
||||
.4byte _08035DF4
|
||||
.4byte _08035DF8
|
||||
.4byte _08035DFC
|
||||
.4byte _08035E00
|
||||
.4byte _08035E04
|
||||
.4byte _08035E08
|
||||
_08035DEC:
|
||||
movs r1, 0
|
||||
b _08035E0A
|
||||
_08035DF0:
|
||||
movs r1, 0x1
|
||||
b _08035E0A
|
||||
_08035DF4:
|
||||
movs r1, 0x2
|
||||
b _08035E0A
|
||||
_08035DF8:
|
||||
movs r1, 0x3
|
||||
b _08035E0A
|
||||
_08035DFC:
|
||||
movs r1, 0x4
|
||||
b _08035E0A
|
||||
_08035E00:
|
||||
movs r1, 0x5
|
||||
b _08035E0A
|
||||
_08035E04:
|
||||
movs r1, 0x6
|
||||
b _08035E0A
|
||||
_08035E08:
|
||||
movs r1, 0x7
|
||||
_08035E0A:
|
||||
adds r0, r1, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8035DB4
|
||||
|
||||
thumb_func_start DrawMainMenu
|
||||
DrawMainMenu:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
ldr r5, _08035EB8
|
||||
ldr r0, [r5]
|
||||
cmp r0, 0
|
||||
bne _08035E34
|
||||
movs r4, 0xD4
|
||||
lsls r4, 1
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
movs r1, 0
|
||||
adds r2, r4, 0
|
||||
bl MemoryFill8
|
||||
_08035E34:
|
||||
mov r12, r5
|
||||
movs r0, 0xA2
|
||||
lsls r0, 1
|
||||
mov r8, r0
|
||||
ldr r4, _08035EBC
|
||||
movs r3, 0
|
||||
movs r2, 0x3
|
||||
_08035E42:
|
||||
mov r5, r12
|
||||
ldr r1, [r5]
|
||||
adds r1, r3
|
||||
add r1, r8
|
||||
adds r0, r4, 0
|
||||
ldm r0!, {r5-r7}
|
||||
stm r1!, {r5-r7}
|
||||
ldm r0!, {r5-r7}
|
||||
stm r1!, {r5-r7}
|
||||
adds r3, 0x18
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bge _08035E42
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r4, _08035EB8
|
||||
ldr r0, [r4]
|
||||
movs r6, 0xA2
|
||||
lsls r6, 1
|
||||
adds r0, r6
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
bl SetMainMenuItems
|
||||
ldr r0, [r4]
|
||||
movs r7, 0xD2
|
||||
lsls r7, 1
|
||||
adds r0, r7
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
bl SetMainMenuText
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08035E9A
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x4
|
||||
movs r1, 0x2
|
||||
movs r2, 0
|
||||
bl sub_8035CF4
|
||||
_08035E9A:
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x4
|
||||
movs r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8035CF4
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08035EB8: .4byte gUnknown_203B34C
|
||||
_08035EBC: .4byte gUnknown_80E59C8
|
||||
thumb_func_end DrawMainMenu
|
||||
|
||||
thumb_func_start CleanMainMenu
|
||||
CleanMainMenu:
|
||||
push {r4,lr}
|
||||
bl ResetUnusedInputStruct
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r4, _08035EE8
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _08035EE0
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_08035EE0:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08035EE8: .4byte gUnknown_203B34C
|
||||
thumb_func_end CleanMainMenu
|
||||
|
||||
thumb_func_start UpdateMainMenu
|
||||
UpdateMainMenu:
|
||||
push {r4-r6,lr}
|
||||
|
|
@ -362,458 +164,4 @@ _0803601A:
|
|||
bx r1
|
||||
thumb_func_end UpdateMainMenu
|
||||
|
||||
thumb_func_start SetMainMenuText
|
||||
SetMainMenuText:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x10
|
||||
ldr r6, _08036048
|
||||
ldr r2, [r6]
|
||||
ldr r0, [r2, 0x8]
|
||||
movs r3, 0x30
|
||||
ldrsh r1, [r2, r3]
|
||||
lsls r1, 3
|
||||
adds r1, r0
|
||||
ldr r5, [r1, 0x4]
|
||||
movs r0, 0xD2
|
||||
lsls r0, 1
|
||||
adds r1, r2, r0
|
||||
ldr r0, [r1]
|
||||
cmp r0, r5
|
||||
bne _0803604C
|
||||
movs r0, 0
|
||||
b _08036226
|
||||
.align 2, 0
|
||||
_08036048: .4byte gUnknown_203B34C
|
||||
_0803604C:
|
||||
str r5, [r1]
|
||||
movs r4, 0xA2
|
||||
lsls r4, 1
|
||||
adds r0, r2, r4
|
||||
movs r1, 0x2
|
||||
bl sub_8035CC0
|
||||
ldr r0, [r6]
|
||||
adds r0, r4
|
||||
movs r1, 0x3
|
||||
bl sub_8035CC0
|
||||
subs r0, r5, 0x3
|
||||
cmp r0, 0xD
|
||||
bls _0803606C
|
||||
b _08036224
|
||||
_0803606C:
|
||||
lsls r0, 2
|
||||
ldr r1, _08036078
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08036078: .4byte _0803607C
|
||||
.align 2, 0
|
||||
_0803607C:
|
||||
.4byte _08036114
|
||||
.4byte _08036224
|
||||
.4byte _08036224
|
||||
.4byte _080360F4
|
||||
.4byte _08036134
|
||||
.4byte _08036154
|
||||
.4byte _08036224
|
||||
.4byte _08036174
|
||||
.4byte _08036194
|
||||
.4byte _080361B4
|
||||
.4byte _080360D4
|
||||
.4byte _080361D4
|
||||
.4byte _080360B4
|
||||
.4byte _08036204
|
||||
_080360B4:
|
||||
ldr r0, _080360C8
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _080360CC
|
||||
ldr r2, _080360D0
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_080360C8: .4byte gUnknown_203B34C
|
||||
_080360CC: .4byte gUnknown_80E5CB4
|
||||
_080360D0: .4byte gUnknown_80E6030
|
||||
_080360D4:
|
||||
ldr r0, _080360E8
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r3, 0xA2
|
||||
lsls r3, 1
|
||||
adds r1, r3
|
||||
ldr r3, _080360EC
|
||||
ldr r2, _080360F0
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_080360E8: .4byte gUnknown_203B34C
|
||||
_080360EC: .4byte gUnknown_80E5CB4
|
||||
_080360F0: .4byte gUnknown_80E5F80
|
||||
_080360F4:
|
||||
ldr r0, _08036108
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _0803610C
|
||||
ldr r2, _08036110
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_08036108: .4byte gUnknown_203B34C
|
||||
_0803610C: .4byte gUnknown_80E5CB4
|
||||
_08036110: .4byte gUnknown_80E5F1C
|
||||
_08036114:
|
||||
ldr r0, _08036128
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r3, 0xA2
|
||||
lsls r3, 1
|
||||
adds r1, r3
|
||||
ldr r3, _0803612C
|
||||
ldr r2, _08036130
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_08036128: .4byte gUnknown_203B34C
|
||||
_0803612C: .4byte gUnknown_80E5CB4
|
||||
_08036130: .4byte gUnknown_80E5CCC
|
||||
_08036134:
|
||||
ldr r0, _08036148
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _0803614C
|
||||
ldr r2, _08036150
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_08036148: .4byte gUnknown_203B34C
|
||||
_0803614C: .4byte gUnknown_80E5CB4
|
||||
_08036150: .4byte gUnknown_80E5DA0
|
||||
_08036154:
|
||||
ldr r0, _08036168
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r3, 0xA2
|
||||
lsls r3, 1
|
||||
adds r1, r3
|
||||
ldr r3, _0803616C
|
||||
ldr r2, _08036170
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_08036168: .4byte gUnknown_203B34C
|
||||
_0803616C: .4byte gUnknown_80E5CB4
|
||||
_08036170: .4byte gUnknown_80E5DF0
|
||||
_08036174:
|
||||
ldr r0, _08036188
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _0803618C
|
||||
ldr r2, _08036190
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_08036188: .4byte gUnknown_203B34C
|
||||
_0803618C: .4byte gUnknown_80E5CB4
|
||||
_08036190: .4byte gUnknown_80E5D0C
|
||||
_08036194:
|
||||
ldr r0, _080361A8
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r3, 0xA2
|
||||
lsls r3, 1
|
||||
adds r1, r3
|
||||
ldr r3, _080361AC
|
||||
ldr r2, _080361B0
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_080361A8: .4byte gUnknown_203B34C
|
||||
_080361AC: .4byte gUnknown_80E5CB4
|
||||
_080361B0: .4byte gUnknown_80E5E5C
|
||||
_080361B4:
|
||||
ldr r0, _080361C8
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _080361CC
|
||||
ldr r2, _080361D0
|
||||
b _080361E4
|
||||
.align 2, 0
|
||||
_080361C8: .4byte gUnknown_203B34C
|
||||
_080361CC: .4byte gUnknown_80E5CB4
|
||||
_080361D0: .4byte gUnknown_80E5EBC
|
||||
_080361D4:
|
||||
ldr r0, _080361F8
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r3, 0xA2
|
||||
lsls r3, 1
|
||||
adds r1, r3
|
||||
ldr r3, _080361FC
|
||||
ldr r2, _08036200
|
||||
_080361E4:
|
||||
str r2, [sp]
|
||||
movs r2, 0
|
||||
str r2, [sp, 0x4]
|
||||
str r2, [sp, 0x8]
|
||||
str r2, [sp, 0xC]
|
||||
movs r2, 0x2
|
||||
bl SetMenuItems
|
||||
b _08036224
|
||||
.align 2, 0
|
||||
_080361F8: .4byte gUnknown_203B34C
|
||||
_080361FC: .4byte gUnknown_80E5CB4
|
||||
_08036200: .4byte gUnknown_80E5FCC
|
||||
_08036204:
|
||||
ldr r0, _08036230
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _08036234
|
||||
ldr r2, _08036238
|
||||
str r2, [sp]
|
||||
movs r2, 0
|
||||
str r2, [sp, 0x4]
|
||||
str r2, [sp, 0x8]
|
||||
str r2, [sp, 0xC]
|
||||
movs r2, 0x2
|
||||
bl SetMenuItems
|
||||
_08036224:
|
||||
movs r0, 0x1
|
||||
_08036226:
|
||||
add sp, 0x10
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08036230: .4byte gUnknown_203B34C
|
||||
_08036234: .4byte gUnknown_80E5CB4
|
||||
_08036238: .4byte gUnknown_80E5D48
|
||||
thumb_func_end SetMainMenuText
|
||||
|
||||
thumb_func_start sub_803623C
|
||||
sub_803623C:
|
||||
push {r4,lr}
|
||||
ldr r4, _08036288
|
||||
ldr r0, [r4]
|
||||
movs r1, 0xA2
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
bl sub_8035CC0
|
||||
bl SetMainMenuItems
|
||||
ldr r0, [r4]
|
||||
movs r1, 0xD2
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
bl SetMainMenuText
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08036276
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x4
|
||||
movs r1, 0x2
|
||||
movs r2, 0
|
||||
bl sub_8035CF4
|
||||
_08036276:
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x4
|
||||
movs r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8035CF4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08036288: .4byte gUnknown_203B34C
|
||||
thumb_func_end sub_803623C
|
||||
|
||||
thumb_func_start SetMainMenuItems
|
||||
SetMainMenuItems:
|
||||
push {r4,lr}
|
||||
sub sp, 0x10
|
||||
bl sub_8011C34
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
cmp r0, r1
|
||||
bne _0803629E
|
||||
b _080363A4
|
||||
_0803629E:
|
||||
movs r0, 0x1
|
||||
bl sub_8095324
|
||||
cmp r0, 0
|
||||
bne _08036344
|
||||
movs r0, 0x7
|
||||
bl sub_8095324
|
||||
cmp r0, 0
|
||||
beq _080362FC
|
||||
bl sub_803D0D8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080362DC
|
||||
ldr r0, _080362D0
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _080362D4
|
||||
ldr r2, _080362D8
|
||||
b _0803637C
|
||||
.align 2, 0
|
||||
_080362D0: .4byte gUnknown_203B34C
|
||||
_080362D4: .4byte gUnknown_80E5A78
|
||||
_080362D8: .4byte gUnknown_80E5C18
|
||||
_080362DC:
|
||||
ldr r0, _080362F0
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _080362F4
|
||||
ldr r2, _080362F8
|
||||
b _0803637C
|
||||
.align 2, 0
|
||||
_080362F0: .4byte gUnknown_203B34C
|
||||
_080362F4: .4byte gUnknown_80E5BC4
|
||||
_080362F8: .4byte gUnknown_80E5BDC
|
||||
_080362FC:
|
||||
bl sub_803D0D8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08036324
|
||||
ldr r0, _08036318
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _0803631C
|
||||
ldr r2, _08036320
|
||||
b _0803637C
|
||||
.align 2, 0
|
||||
_08036318: .4byte gUnknown_203B34C
|
||||
_0803631C: .4byte gUnknown_80E5A78
|
||||
_08036320: .4byte gUnknown_80E5AFC
|
||||
_08036324:
|
||||
ldr r0, _08036338
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _0803633C
|
||||
ldr r2, _08036340
|
||||
b _0803637C
|
||||
.align 2, 0
|
||||
_08036338: .4byte gUnknown_203B34C
|
||||
_0803633C: .4byte gUnknown_80E5A60
|
||||
_08036340: .4byte gUnknown_80E5A90
|
||||
_08036344:
|
||||
bl sub_803D0D8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0803636C
|
||||
ldr r0, _08036360
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _08036364
|
||||
ldr r2, _08036368
|
||||
b _0803637C
|
||||
.align 2, 0
|
||||
_08036360: .4byte gUnknown_203B34C
|
||||
_08036364: .4byte gUnknown_80E5A78
|
||||
_08036368: .4byte gUnknown_80E5B8C
|
||||
_0803636C:
|
||||
ldr r0, _08036394
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _08036398
|
||||
ldr r2, _0803639C
|
||||
_0803637C:
|
||||
str r2, [sp]
|
||||
movs r4, 0x1
|
||||
str r4, [sp, 0x4]
|
||||
ldr r2, _080363A0
|
||||
ldr r2, [r2]
|
||||
str r2, [sp, 0x8]
|
||||
str r4, [sp, 0xC]
|
||||
movs r2, 0
|
||||
bl SetMenuItems
|
||||
b _080363C8
|
||||
.align 2, 0
|
||||
_08036394: .4byte gUnknown_203B34C
|
||||
_08036398: .4byte gUnknown_80E5B34
|
||||
_0803639C: .4byte gUnknown_80E5B4C
|
||||
_080363A0: .4byte gUnknown_203B350
|
||||
_080363A4:
|
||||
ldr r0, _080363D0
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
movs r2, 0xA2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
ldr r3, _080363D4
|
||||
ldr r2, _080363D8
|
||||
str r2, [sp]
|
||||
movs r4, 0x1
|
||||
str r4, [sp, 0x4]
|
||||
ldr r2, _080363DC
|
||||
ldr r2, [r2]
|
||||
str r2, [sp, 0x8]
|
||||
str r4, [sp, 0xC]
|
||||
movs r2, 0
|
||||
bl SetMenuItems
|
||||
_080363C8:
|
||||
add sp, 0x10
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080363D0: .4byte gUnknown_203B34C
|
||||
_080363D4: .4byte gUnknown_80E59E0
|
||||
_080363D8: .4byte gUnknown_80E59F8
|
||||
_080363DC: .4byte gUnknown_203B350
|
||||
thumb_func_end SetMainMenuItems
|
||||
|
||||
thumb_func_start sub_80363E0
|
||||
sub_80363E0:
|
||||
push {lr}
|
||||
ldr r0, _080363F4
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080363F8
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0xC
|
||||
beq _080363F8
|
||||
movs r0, 0x1
|
||||
b _080363FA
|
||||
.align 2, 0
|
||||
_080363F4: .4byte gUnknown_203B34C
|
||||
_080363F8:
|
||||
movs r0, 0
|
||||
_080363FA:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80363E0
|
||||
|
||||
.align 2,0
|
||||
|
|
|
|||
13845
asm/wonder_mail_1.s
13845
asm/wonder_mail_1.s
File diff suppressed because it is too large
Load Diff
9897
asm/wonder_mail_3.s
Normal file
9897
asm/wonder_mail_3.s
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -6,17 +6,39 @@ struct subStruct_8048524
|
|||
u8 fill0[0x6];
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u8 fill8[0xAC - 0x8];
|
||||
u8 fill8[0xE - 0x8];
|
||||
s16 unkE; // HP??
|
||||
s16 unk10;
|
||||
u8 fill12[0x46 - 0x12];
|
||||
u8 unk46;
|
||||
u8 fill47[0xA4 - 0x47];
|
||||
u8 unkA4;
|
||||
u8 fillA5[0xAC - 0xA5];
|
||||
u8 unkAC;
|
||||
u8 fillAD[0x112 - 0xAD];
|
||||
u8 fillAD[0xFB - 0xAD];
|
||||
u8 unkFB;
|
||||
u8 fillFC[0x112 - 0xFC];
|
||||
u8 unk112;
|
||||
u8 fill113[0x13C - 0x113];
|
||||
u32 unk13C;
|
||||
u8 fill140[0x15C - 0x140];
|
||||
u8 unk15C;
|
||||
u8 unk15D;
|
||||
u8 unk15E;
|
||||
u8 unk15F;
|
||||
u8 fill160[0x174 - 0x160];
|
||||
u32 unk174;
|
||||
};
|
||||
|
||||
struct unkDungeon_8041D5C
|
||||
{
|
||||
u8 padding[0x70];
|
||||
u8 fill0[4];
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
u32 unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
u8 fill14[0x70 - 0x14];
|
||||
struct subStruct_8048524 *unk70;
|
||||
};
|
||||
|
||||
|
|
|
|||
36
include/gUnknown_203B418.h
Normal file
36
include/gUnknown_203B418.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#include "code_8041D5C.h"
|
||||
|
||||
struct unkStruct_203B418
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 fill5[2];
|
||||
u8 unk7;
|
||||
u8 fill8[0x11 - 8];
|
||||
u8 unk11;
|
||||
u8 fill12[0xE23C - 0x12];
|
||||
s16 unkE23C;
|
||||
s16 unkE23E;
|
||||
u8 fillE240[0xE265 - 0xE240];
|
||||
u8 unkE265;
|
||||
u8 fillE266[0xE26B - 0xE266];
|
||||
u8 unkE26B;
|
||||
u8 unkE26C;
|
||||
u8 fillE26D[0x1356C - 0xE26D];
|
||||
u8 unk1356C;
|
||||
u8 fill1356D[0x1358C - 0x1356D];
|
||||
struct unkDungeon_8041D5C *unk1358C[0x10];
|
||||
u8 fill135CC[0x181FC - 0x135CC];
|
||||
u32 unk181FC;
|
||||
u32 unk18200;
|
||||
u32 unk18204;
|
||||
u8 unk18208[3];
|
||||
u8 unk1820B;
|
||||
u32 unk1820C;
|
||||
u32 unk18210;
|
||||
u8 padding2[3];
|
||||
u8 unk18217;
|
||||
};
|
||||
|
|
@ -597,6 +597,9 @@
|
|||
// BLDALPHA
|
||||
#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
|
||||
|
||||
// There is one time that we need to reverse the OR to match in PMD
|
||||
#define BLDALPHA_BLEND1(target1, target2) ((target1) | ((target2) << 8))
|
||||
|
||||
// SOUNDCNT_H
|
||||
#define SOUND_CGB_MIX_QUARTER 0x0000
|
||||
#define SOUND_CGB_MIX_HALF 0x0001
|
||||
|
|
|
|||
|
|
@ -4,12 +4,16 @@
|
|||
enum MainMenuScreens
|
||||
{
|
||||
MENU_MAIN_SCREEN = 1,
|
||||
MENU_NEW_GAME = 3,
|
||||
MENU_AWAITING_RESCUE = 6,
|
||||
MENU_CONTINUE = 7,
|
||||
MENU_DELETE_SAVE_PROMPT,
|
||||
MENU_ADVENTURE_LOG = 10,
|
||||
MENU_FRIEND_RESCUE,
|
||||
MENU_TRADE_ITEMS,
|
||||
MENU_WONDER_MAIL,
|
||||
MENU_DUAL_SLOT,
|
||||
MENU_WIRELESS_COMMS,
|
||||
MENU_DEBUG = 16,
|
||||
MENU_COMMUNICATION_1 = 19,
|
||||
MENU_COMMUNICATION_2,
|
||||
|
|
@ -39,7 +43,7 @@ struct MainMenu
|
|||
/* 0x8 */ s32 lastMenu;
|
||||
u8 padding[0x20];
|
||||
/* 0x2C */ struct MainMenuSub sub;
|
||||
u32 unk30;
|
||||
u8 unk30;
|
||||
u32 unk34;
|
||||
s16 unk38;
|
||||
u8 unk3A;
|
||||
|
|
|
|||
|
|
@ -93,6 +93,10 @@ SECTIONS {
|
|||
asm/wonder_mail.o(.text);
|
||||
src/wonder_mail.o(.text);
|
||||
asm/wonder_mail_1.o(.text);
|
||||
src/wonder_mail_2.o(.text);
|
||||
asm/code_802B640.o(.text);
|
||||
src/wonder_mail_3.o(.text);
|
||||
asm/wonder_mail_3.o(.text);
|
||||
src/adventure_log.o(.text);
|
||||
src/friend_rescue.o(.text);
|
||||
asm/friend_rescue.o(.text);
|
||||
|
|
@ -103,6 +107,7 @@ SECTIONS {
|
|||
asm/main_menu.o(.text);
|
||||
src/main_menu_mid.o(.text);
|
||||
asm/main_menu_1.o(.text);
|
||||
src/main_menu_1.o(.text);
|
||||
src/trade_items_menu.o(.text);
|
||||
src/other_menus.o(.text);
|
||||
asm/other_menus.o(.text);
|
||||
|
|
@ -115,9 +120,9 @@ SECTIONS {
|
|||
asm/rescue_password_menu.o(.text);
|
||||
asm/load_screen.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);
|
||||
asm/wonder_mail_main_menu.o(.text);
|
||||
src/ds_menus.o(.text);
|
||||
src/debug_menu.o(.text);
|
||||
asm/debug_menu.o(.text);
|
||||
src/debug_menu_mid.o(.text);
|
||||
|
|
@ -140,6 +145,10 @@ SECTIONS {
|
|||
asm/code_8048480.o(.text);
|
||||
src/code_80521D0.o(.text);
|
||||
asm/code_80521D0.o(.text);
|
||||
src/code_8057824.o(.text);
|
||||
asm/code_8057824.o(.text);
|
||||
src/code_8057824_1.o(.text);
|
||||
asm/jirachi_wish.o(.text);
|
||||
src/code_80521D0_1.o(.text);
|
||||
src/pokemon.o(.text);
|
||||
asm/pokemon.o(.text);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ 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 void xxx_call_draw_string(s32, u32, u8 *, u32, u32);
|
||||
extern u32 gUnknown_202DE30;
|
||||
|
||||
u32 CreateAdventureLogScreen(u32 param_1)
|
||||
|
|
@ -227,7 +227,7 @@ void DisplayAdventureLog(void)
|
|||
iVar5 = gAdventureLog->currPage * 8;
|
||||
iVar5 += 10;
|
||||
// Draw Header
|
||||
xxx_call_draw_string(iVar5, 0, &gAdventureLogHeaderText, gAdventureLog->unk34, 0);
|
||||
xxx_call_draw_string(iVar5, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0);
|
||||
iVar5 += 4;
|
||||
iVar5 += gAdventureLog->unk9E * 8;
|
||||
// Draw Page #
|
||||
|
|
@ -264,7 +264,7 @@ void DisplayAdventureLog(void)
|
|||
else
|
||||
{
|
||||
// Draw the ?????????? across the row
|
||||
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), &gUnknown_80E2030, gAdventureLog->unk34, 0);
|
||||
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), gUnknown_80E2030, gAdventureLog->unk34, 0);
|
||||
}
|
||||
counter++;
|
||||
} while(counter < gAdventureLog->unk1A);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,6 @@ void sub_80060EC(void)
|
|||
gUnknown_2026E3C = gUnknown_2026E58;
|
||||
gUnknown_2026E54 = !gUnknown_2026E54;
|
||||
gUnknown_2026E50 = !gUnknown_2026E50;
|
||||
sub_800CC44((gUnknown_2026E4E & (0xF8 << 5)) >> 8, gUnknown_2026E4E & 0x1F);
|
||||
sub_800CC44((gUnknown_2026E4E & 0x1F00) >> 8, gUnknown_2026E4E & 0x1F);
|
||||
gUnknown_2026E38 = TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
extern u16 gRawKeyInput;
|
||||
extern u8 gUnknown_202D6B8;
|
||||
extern u8 gUnknown_202D6B9;
|
||||
extern u16 gUnknown_202D7FA;
|
||||
extern u16 gBldAlpha;
|
||||
extern u8 gUnknown_202D7FE;
|
||||
|
||||
extern struct BGControlStruct gBG0Control;
|
||||
|
|
@ -53,10 +53,6 @@ void ReadKeyInput(struct Inputs *r0)
|
|||
|
||||
void sub_800CC44(s32 r0, s32 r1)
|
||||
{
|
||||
u32 preload1;
|
||||
u8 preload2;
|
||||
u8 preload3;
|
||||
|
||||
if(r0 < 0)
|
||||
{
|
||||
r0 = 0;
|
||||
|
|
@ -82,13 +78,7 @@ void sub_800CC44(s32 r0, s32 r1)
|
|||
gUnknown_202D6B8 = r0;
|
||||
gUnknown_202D6B9 = r1;
|
||||
|
||||
// Forcing the correct loads
|
||||
preload1 = gUnknown_202D7FA;
|
||||
preload2 = gUnknown_202D6B8;
|
||||
preload3 = gUnknown_202D6B9;
|
||||
|
||||
gUnknown_202D7FA = (gUnknown_202D6B9 << 8) | gUnknown_202D6B8;
|
||||
|
||||
gBldAlpha = BLDALPHA_BLEND1(gUnknown_202D6B8, gUnknown_202D6B9);
|
||||
}
|
||||
|
||||
void SetBG0RegOffsets(s32 xoffset, s32 yoffset)
|
||||
|
|
|
|||
|
|
@ -1,20 +1,7 @@
|
|||
#include "global.h"
|
||||
#include "play_time.h"
|
||||
#include "file_system.h"
|
||||
|
||||
struct unkStruct_203B418
|
||||
{
|
||||
u8 fill0[0x181FC];
|
||||
u32 unk181FC;
|
||||
u32 unk18200;
|
||||
u32 unk18204;
|
||||
u8 unk18208[3];
|
||||
u8 unk1820B;
|
||||
u32 unk1820C;
|
||||
u32 unk18210;
|
||||
u8 padding2[3];
|
||||
u8 unk18217;
|
||||
};
|
||||
#include "gUnknown_203B418.h"
|
||||
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
extern struct unkStruct_203B418 *gUnknown_203B418;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "code_8041D5C.h"
|
||||
|
||||
struct unk_struct_8041F08
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
};
|
||||
|
||||
struct unkStruct_80420E8
|
||||
{
|
||||
u32 unk0;
|
||||
|
|
|
|||
|
|
@ -10,77 +10,77 @@ extern s16 gUnknown_80F4FBA;
|
|||
extern s16 gUnknown_80F4FBC;
|
||||
extern s16 gUnknown_80F4FBE;
|
||||
|
||||
extern void sub_807D148(u32 r0, struct unkDungeon_8041D5C *r1, u32 r2, u32 r3);
|
||||
extern void sub_8075FCC(u32 r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8077AE4(u32 r0, struct unkDungeon_8041D5C *r1, u32 r2);
|
||||
extern void sub_8072008(u32 r0, struct unkDungeon_8041D5C *r1, u32 r2, u8 r3, u32);
|
||||
extern void sub_8076D10(u32 r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_807232C(u32 r0, struct unkDungeon_8041D5C *r1, u32 r2);
|
||||
extern void sub_807D148(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2, u32 r3);
|
||||
extern void sub_8075FCC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8077AE4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2);
|
||||
extern void sub_8072008(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2, u8 r3, u32);
|
||||
extern void sub_8076D10(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_807232C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2);
|
||||
|
||||
extern void sub_8045B94(u8 *r0, struct unkDungeon_8041D5C *r1, u32);
|
||||
extern void sub_807A290(u32, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_80522F4(u32 r0, struct unkDungeon_8041D5C *r1, u32);
|
||||
extern void sub_8079270(u32 r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8077910(u32, struct unkDungeon_8041D5C *r1, u32, u32);
|
||||
extern void sub_80791D8(u32, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8079140(u32, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8077C44(u32, struct unkDungeon_8041D5C *r1, s16, s16, u32);
|
||||
extern void sub_80792F8(u32, struct unkDungeon_8041D5C *r1, u32);
|
||||
extern void sub_8079F20(u32, struct unkDungeon_8041D5C *r1, u32, u8);
|
||||
extern void sub_806F370(u32, struct unkDungeon_8041D5C *r1, u32, u32, u32, u32, u32, u32, u32, u32);
|
||||
extern void sub_807A290(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_80522F4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32);
|
||||
extern void sub_8079270(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8077910(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32);
|
||||
extern void sub_80791D8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8079140(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8077C44(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, s16, s16, u32);
|
||||
extern void sub_80792F8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32);
|
||||
extern void sub_8079F20(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u8);
|
||||
extern void sub_806F370(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32, u32, u32, u32, u32, u32, u32);
|
||||
|
||||
void sub_8048340(u32 r0, struct unkDungeon_8041D5C *r1, u32 r2)
|
||||
void sub_8048340(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2)
|
||||
{
|
||||
sub_806F370(r0, r1, r2, 1, 0, 0, 528, 0, 0, 0);
|
||||
}
|
||||
|
||||
void sub_8048364(u32 r0, struct unkDungeon_8041D5C *r1, u8 r2)
|
||||
void sub_8048364(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u8 r2)
|
||||
{
|
||||
sub_8079F20(r0, r1, 1, r2);
|
||||
}
|
||||
|
||||
void sub_8048374(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_8048374(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8077C44(r0, r1, gUnknown_80F4FB6, gUnknown_80F4FB8, 1);
|
||||
}
|
||||
|
||||
|
||||
void sub_804839C(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_804839C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8077C44(r0, r1, gUnknown_80F4FBA, gUnknown_80F4FBC, 1);
|
||||
}
|
||||
|
||||
void sub_80483C4(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_80483C4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_80792F8(r0, r1, 999);
|
||||
}
|
||||
|
||||
void sub_80483D4(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_80483D4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8077C44(r0, r1, 0, gUnknown_80F4FBE, 1);
|
||||
}
|
||||
|
||||
void sub_80483F4(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_80483F4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8079140(r0, r1);
|
||||
}
|
||||
|
||||
void sub_8048400(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_8048400(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_80791D8(r0, r1);
|
||||
}
|
||||
|
||||
void sub_804840C(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_804840C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8077910(r0, r1, 0, 1);
|
||||
}
|
||||
|
||||
void sub_804841C(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_804841C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8079270(r0, r1);
|
||||
}
|
||||
|
||||
void sub_8048428(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_8048428(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
if(r1->unk70->unkAC == 4)
|
||||
sub_807A290(r0, r1);
|
||||
|
|
@ -89,7 +89,7 @@ void sub_8048428(u32 r0, struct unkDungeon_8041D5C *r1)
|
|||
sub_80522F4(r0, r1, gUnknown_80F89F4);
|
||||
}
|
||||
|
||||
void sub_8048450(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_8048450(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
if((u8)(r1->unk70->unkAC - 2) <= 1)
|
||||
sub_807A290(r0, r1);
|
||||
|
|
@ -98,43 +98,43 @@ void sub_8048450(u32 r0, struct unkDungeon_8041D5C *r1)
|
|||
sub_80522F4(r0, r1, gUnknown_80F89F4);
|
||||
}
|
||||
|
||||
void sub_8048480(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_8048480(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_807D148(r0, r1, 0, 0);
|
||||
}
|
||||
|
||||
void sub_8048490(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_8048490(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8075FCC(r0, r1);
|
||||
}
|
||||
|
||||
void sub_804849C(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_804849C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8077AE4(r0, r1, 1);
|
||||
}
|
||||
|
||||
void sub_80484A8(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_80484A8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8072008(r0, r1, 1, 1, 1);
|
||||
}
|
||||
|
||||
void sub_80484BC(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_80484BC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8076D10(r0, r1);
|
||||
}
|
||||
|
||||
void sub_80484C8(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_80484C8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
// Pointer to "But nothing happened!"
|
||||
sub_80522F4(r0, r1, gUnknown_80F89F4);
|
||||
}
|
||||
|
||||
void sub_80484DC(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_80484DC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_807232C(r0, r1, 1);
|
||||
}
|
||||
|
||||
void sub_80484E8(u32 r0, struct unkDungeon_8041D5C *r1)
|
||||
void sub_80484E8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
if(r1->unk70->unkAC == 1)
|
||||
sub_807A290(r0, r1);
|
||||
|
|
|
|||
1197
src/code_80521D0_1.c
1197
src/code_80521D0_1.c
File diff suppressed because it is too large
Load Diff
118
src/code_8057824.c
Normal file
118
src/code_8057824.c
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
#include "global.h"
|
||||
#include "gUnknown_203B418.h"
|
||||
#include "code_8041D5C.h"
|
||||
|
||||
extern struct unkStruct_203B418 *gUnknown_203B418;
|
||||
|
||||
extern u32 gUnknown_80FCF74;
|
||||
extern u32 gUnknown_80FCF80;
|
||||
extern u16 gUnknown_80F4F42;
|
||||
|
||||
extern u32 gUnknown_8106A50;
|
||||
extern u32 gUnknown_8106A4C;
|
||||
extern s16 gUnknown_80F4DB6;
|
||||
extern u32 gUnknown_80FAC88;
|
||||
|
||||
extern void sub_80775DC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32);
|
||||
extern void sub_80772C0(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32, u32);
|
||||
extern u8 sub_807EAA0(u32, u32);
|
||||
extern void sub_80522F4(struct unkDungeon_8041D5C *r1, struct unkDungeon_8041D5C *r2, u32);
|
||||
extern void sub_8079F20(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32);
|
||||
|
||||
extern u8 sub_805727C(u32, u32, s16);
|
||||
extern u32 sub_8055640(u32, u32, u32, u32, u32);
|
||||
extern void sub_80779F0(u32, u32, u32, u32);
|
||||
extern void sub_8078968();
|
||||
extern void sub_8079618(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32, u32);
|
||||
|
||||
extern void sub_806F370(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
|
||||
|
||||
|
||||
extern u32 gUnknown_80FD018;
|
||||
extern s16 sub_8057600(u32, u32);
|
||||
extern u32 sub_8092B00(u32);
|
||||
|
||||
u32 sub_8057824(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
sub_80775DC(param_1,param_2,gUnknown_8106A50,1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_805783C(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
sub_80772C0(param_1,param_2,gUnknown_8106A4C,0x80,1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_805785C(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
gUnknown_203B418->unkE26B = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == '\0') {
|
||||
// The weather remains unchanged
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FCF74);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_80578A4(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
gUnknown_203B418->unkE26C = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == '\0') {
|
||||
// The weather remains unchanged
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FCF80);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_80578EC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8079F20(r0, r1, 1, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_80578FC(u32 param_1, u32 param_2, u32 param_3, u32 param_4)
|
||||
{
|
||||
u32 uVar3;
|
||||
|
||||
uVar3 = 0;
|
||||
if (sub_8055640(param_1, param_2, param_3, 0x80 << 1, param_4) != 0) {
|
||||
uVar3 = 1;
|
||||
if (sub_805727C(param_1,param_2, gUnknown_80F4DB6) != '\0') {
|
||||
sub_80779F0(param_1, param_2, 1, 0);
|
||||
}
|
||||
}
|
||||
return uVar3;
|
||||
}
|
||||
|
||||
u32 sub_8057948(void)
|
||||
{
|
||||
sub_8078968();
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_8057954(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, u32 param_3)
|
||||
{
|
||||
// $m0 is enraged
|
||||
sub_8079618(param_1,param_2,0xc,param_3,gUnknown_80FAC88);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 sub_8057974(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, u32 param_3, u32 param_4)
|
||||
{
|
||||
s32 newHP;
|
||||
u8 local_24;
|
||||
|
||||
newHP = param_2->unk70->unkE / 2;
|
||||
local_24 = 0;
|
||||
if (newHP != 0) {
|
||||
sub_806F370(param_1,param_2,newHP,1,&local_24,sub_8092B00(param_3),sub_8057600(param_3,param_4),0,1,0);
|
||||
local_24 = local_24 == 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// The target's HP can't be halved anymore
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FD018);
|
||||
}
|
||||
return local_24;
|
||||
}
|
||||
2661
src/code_8057824_1.c
Normal file
2661
src/code_8057824_1.c
Normal file
File diff suppressed because it is too large
Load Diff
16
src/cpu.c
16
src/cpu.c
|
|
@ -1,13 +1,13 @@
|
|||
#include "global.h"
|
||||
|
||||
extern u32 gUnknown_202D800;
|
||||
extern u16 gUnknown_202D7FC; // used to update Blend Count Reg
|
||||
extern u16 gBldCnt; // used to update Blend Count Reg
|
||||
extern u16 gUnknown_203B0BE[];
|
||||
|
||||
void sub_800CDA8(u32 r0)
|
||||
{
|
||||
gUnknown_202D800 = r0;
|
||||
gUnknown_202D7FC = gUnknown_203B0BE[r0];
|
||||
gBldCnt = gUnknown_203B0BE[r0];
|
||||
}
|
||||
|
||||
u32 sub_800CDC8(void)
|
||||
|
|
@ -48,7 +48,7 @@ void CpuFill(void* src, void *dest, s32 size)
|
|||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_800CE54(void)
|
||||
void VBlank_CB(void)
|
||||
{
|
||||
// TODO this is so gross.. looks like a macro or something else but I don't want to deal with this rn
|
||||
REG_DMA0CNT_H = (REG_DMA0CNT_H | DMA_ENABLE) & 0xcdff;
|
||||
|
|
@ -62,8 +62,8 @@ void sub_800CE54(void)
|
|||
|
||||
REG_WININ = WININ_WIN0_ALL | WININ_WIN1_ALL;
|
||||
REG_WINOUT = WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WIN01_BG3 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG0;
|
||||
REG_BLDCNT = gUnknown_202D7FC;
|
||||
REG_BLDALPHA = gUnknown_202D7FA;
|
||||
REG_BLDCNT = gBldCnt;
|
||||
REG_BLDALPHA = gBldAlpha;
|
||||
if(gUnknown_2026E38 != 0)
|
||||
{
|
||||
DmaSet(0, &gUnknown_2026E3C[2], REG_ADDR_WIN0H, 0xa2600002);
|
||||
|
|
@ -82,7 +82,7 @@ void sub_800CE54(void)
|
|||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_800CE54(void)
|
||||
void VBlank_CB(void)
|
||||
{
|
||||
asm_unified("\tpush {lr}\n"
|
||||
"\tldr r2, _0800CEC0\n"
|
||||
|
|
@ -144,8 +144,8 @@ void sub_800CE54(void)
|
|||
"_0800CEC8: .4byte 0x00007fff\n"
|
||||
"_0800CECC: .4byte 0x04000048\n"
|
||||
"_0800CED0: .4byte 0x00003f3f\n"
|
||||
"_0800CED4: .4byte gUnknown_202D7FC\n"
|
||||
"_0800CED8: .4byte gUnknown_202D7FA\n"
|
||||
"_0800CED4: .4byte gBldCnt\n"
|
||||
"_0800CED8: .4byte gBldAlpha\n"
|
||||
"_0800CEDC: .4byte gUnknown_2026E38\n"
|
||||
"_0800CEE0: .4byte 0x040000b0\n"
|
||||
"_0800CEE4: .4byte gUnknown_2026E3C\n"
|
||||
|
|
|
|||
44
src/ds_menus.c
Normal file
44
src/ds_menus.c
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#include "global.h"
|
||||
#include "input.h"
|
||||
|
||||
extern u8 *gUnknown_203B3E8;
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
extern void nullsub_54();
|
||||
extern void sub_8039E18();
|
||||
|
||||
void sub_803A1C0(u8 r0)
|
||||
{
|
||||
*gUnknown_203B3E8 = r0;
|
||||
nullsub_54();
|
||||
sub_8039E18();
|
||||
}
|
||||
|
||||
u32 CreateDualSlotMenu(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 UpdateDualSlotMenu(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CleanDualSlotMenu()
|
||||
{
|
||||
}
|
||||
|
||||
u32 CreateWirelessCommsMenu(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 UpdateWirelessCommsMenu(void)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
void CleanWirelessCommsMenu(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(NULL, 1, 1);
|
||||
}
|
||||
75
src/m4a.c
75
src/m4a.c
|
|
@ -835,92 +835,25 @@ static inline int CgbPan(struct CgbChannel *chan)
|
|||
|
||||
return 0;
|
||||
}
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
#endif
|
||||
|
||||
void CgbModVol(struct CgbChannel *chan)
|
||||
{
|
||||
#ifdef NONMATCHING
|
||||
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
|
||||
|
||||
if ((soundInfo->mode & 1) || !CgbPan(chan))
|
||||
if (!CgbPan(chan))
|
||||
{
|
||||
chan->pan = 0xFF;
|
||||
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
|
||||
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) / 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Force chan->rightVolume and chan->leftVolume to be read from memory again,
|
||||
// even though there is no reason to do so.
|
||||
// The command line option "-fno-gcse" achieves the same result as this.
|
||||
asm("" : : : "memory");
|
||||
|
||||
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
|
||||
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) / 16;
|
||||
if (chan->eg > 15)
|
||||
chan->eg = 15;
|
||||
}
|
||||
|
||||
chan->sg = (chan->eg * chan->su + 15) >> 4;
|
||||
chan->pan &= chan->panMask;
|
||||
#else
|
||||
asm_unified("\tpush {r4,lr}\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tldrb r0, [r1, 0x2]\n"
|
||||
"\tlsls r2, r0, 24\n"
|
||||
"\tlsrs r4, r2, 24\n"
|
||||
"\tldrb r3, [r1, 0x3]\n"
|
||||
"\tlsls r0, r3, 24\n"
|
||||
"\tlsrs r3, r0, 24\n"
|
||||
"\tcmp r4, r3\n"
|
||||
"\tbcc _080AFA94\n"
|
||||
"\tlsrs r0, r2, 25\n"
|
||||
"\tcmp r0, r3\n"
|
||||
"\tbcc _080AFAA0\n"
|
||||
"\tmovs r0, 0xF\n"
|
||||
"\tstrb r0, [r1, 0x1B]\n"
|
||||
"\tb _080AFAAE\n"
|
||||
"_080AFA94:\n"
|
||||
"\tlsrs r0, 25\n"
|
||||
"\tcmp r0, r4\n"
|
||||
"\tbcc _080AFAA0\n"
|
||||
"\tmovs r0, 0xF0\n"
|
||||
"\tstrb r0, [r1, 0x1B]\n"
|
||||
"\tb _080AFAAE\n"
|
||||
"_080AFAA0:\n"
|
||||
"\tmovs r0, 0xFF\n"
|
||||
"\tstrb r0, [r1, 0x1B]\n"
|
||||
"\tldrb r2, [r1, 0x3]\n"
|
||||
"\tldrb r3, [r1, 0x2]\n"
|
||||
"\tadds r0, r2, r3\n"
|
||||
"\tlsrs r0, 4\n"
|
||||
"\tb _080AFABE\n"
|
||||
"_080AFAAE:\n"
|
||||
"\tldrb r2, [r1, 0x3]\n"
|
||||
"\tldrb r3, [r1, 0x2]\n"
|
||||
"\tadds r0, r2, r3\n"
|
||||
"\tlsrs r0, 4\n"
|
||||
"\tstrb r0, [r1, 0xA]\n"
|
||||
"\tcmp r0, 0xF\n"
|
||||
"\tbls _080AFAC0\n"
|
||||
"\tmovs r0, 0xF\n"
|
||||
"_080AFABE:\n"
|
||||
"\tstrb r0, [r1, 0xA]\n"
|
||||
"_080AFAC0:\n"
|
||||
"\tldrb r2, [r1, 0x6]\n"
|
||||
"\tldrb r3, [r1, 0xA]\n"
|
||||
"\tadds r0, r2, 0\n"
|
||||
"\tmuls r0, r3\n"
|
||||
"\tadds r0, 0xF\n"
|
||||
"\tasrs r0, 4\n"
|
||||
"\tstrb r0, [r1, 0x19]\n"
|
||||
"\tldrb r0, [r1, 0x1C]\n"
|
||||
"\tldrb r2, [r1, 0x1B]\n"
|
||||
"\tands r0, r2\n"
|
||||
"\tstrb r0, [r1, 0x1B]\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
void CgbSound(void)
|
||||
|
|
|
|||
22
src/main.c
22
src/main.c
|
|
@ -9,8 +9,8 @@ extern char ewram_start[];
|
|||
typedef void (*IntrCallback)(void);
|
||||
|
||||
extern u8 IntrMain_Buffer[0x120];
|
||||
extern IntrCallback gUnknown_202D5F0[6];
|
||||
extern u16 gUnknown_202D7FC;
|
||||
extern IntrCallback gIntrCallbacks[6];
|
||||
extern u16 gBldCnt;
|
||||
extern u8 gUnknown_202D7FE;
|
||||
extern u8 gInterruptsEnabled;
|
||||
extern u16 gUnknown_203B0AC;
|
||||
|
|
@ -50,7 +50,7 @@ extern void sub_80098A0(void);
|
|||
extern void InitGraphics(void);
|
||||
extern void GameLoop(void);
|
||||
extern void Hang(void);
|
||||
extern void sub_800CE54(void);
|
||||
extern void VBlank_CB(void);
|
||||
|
||||
extern void nullsub_17(void);
|
||||
extern void sub_800BD08(void); // music initializer
|
||||
|
|
@ -59,7 +59,7 @@ extern void sub_800D7D0(void);
|
|||
|
||||
bool8 EnableInterrupts(void);
|
||||
void InitIntrTable(const u32 *interrupt_table);
|
||||
void *sub_800B6F4(u32 index, void * new_callback);
|
||||
void *SetInterruptCallback(u32 index, void * new_callback);
|
||||
|
||||
|
||||
void AgbMain(void)
|
||||
|
|
@ -98,7 +98,7 @@ void AgbMain(void)
|
|||
REG_WIN1V = 0;
|
||||
REG_WININ = WININ_WIN0_ALL | WININ_WIN1_ALL; // 16191
|
||||
REG_WINOUT = WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR; // 61
|
||||
gUnknown_202D7FC = REG_BLDCNT = BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_BD | BLDCNT_TGT2_OBJ; // 15426
|
||||
gBldCnt = REG_BLDCNT = BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_BD | BLDCNT_TGT2_OBJ; // 15426
|
||||
REG_BLDALPHA = BLDALPHA_BLEND(10, 6); // 1546
|
||||
gUnknown_202D7FE = 0;
|
||||
REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_WRAP | BGCNT_SCREENBASE(12); // 11264
|
||||
|
|
@ -121,7 +121,7 @@ void AgbMain(void)
|
|||
LoadCharmaps();
|
||||
sub_80098A0();
|
||||
InitGraphics();
|
||||
sub_800B6F4(1, sub_800CE54);
|
||||
SetInterruptCallback(1, VBlank_CB);
|
||||
REG_DISPCNT = DISPCNT_WIN1_ON | DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; // 32576
|
||||
GameLoop();
|
||||
Hang();
|
||||
|
|
@ -131,7 +131,7 @@ void sub_800B540(void)
|
|||
{
|
||||
s32 i;
|
||||
for (i = 0; i < 6; i++) {
|
||||
gUnknown_202D5F0[i] = NULL;
|
||||
gIntrCallbacks[i] = NULL;
|
||||
}
|
||||
|
||||
nullsub_17();
|
||||
|
|
@ -213,7 +213,7 @@ bool8 sub_800B650(void)
|
|||
}
|
||||
}
|
||||
|
||||
void SetInterruptFlag(u16 flag)
|
||||
void AckInterrupt(u16 flag)
|
||||
{
|
||||
if(!gInterruptsEnabled)
|
||||
{
|
||||
|
|
@ -237,14 +237,14 @@ u32 *sub_800B6E8(u32 r0)
|
|||
return &gIntrTable[r0];
|
||||
}
|
||||
|
||||
void *sub_800B6F4(u32 index, void * new_callback)
|
||||
void *SetInterruptCallback(u32 index, void * new_callback)
|
||||
{
|
||||
void *old_callback;
|
||||
u32 interrupt_var;
|
||||
|
||||
interrupt_var = DisableInterrupts();
|
||||
old_callback = gUnknown_202D5F0[index];
|
||||
gUnknown_202D5F0[index] = new_callback;
|
||||
old_callback = gIntrCallbacks[index];
|
||||
gIntrCallbacks[index] = new_callback;
|
||||
if(interrupt_var){
|
||||
EnableInterrupts();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@ extern void sub_8099690(u32);
|
|||
extern void DrawMainMenu(void);
|
||||
extern void CreateTradeItemsMenu(void);
|
||||
extern void sub_8036FDC(s32);
|
||||
extern void sub_803A1E4(void);
|
||||
extern void CreateWirelessCommsMenu(void);
|
||||
extern void CreateFriendRescueMenu(void);
|
||||
extern void sub_803A1D8(void);
|
||||
extern void CreateDualSlotMenu(void);
|
||||
extern void CreateWonderMailMenu(void);
|
||||
extern void CreateLoadScreen(u32);
|
||||
extern s32 sub_8035DB4(u32);
|
||||
|
|
@ -41,8 +41,8 @@ extern s32 sub_803941C(void);
|
|||
extern s32 UpdateTradeItemsMenu(void);
|
||||
extern s32 UpdateFriendRescueMenu(void);
|
||||
extern s32 UpdateWonderMailMenu(void);
|
||||
extern s32 sub_803A1DC(void);
|
||||
extern s32 sub_803A1E8(void);
|
||||
extern s32 UpdateDualSlotMenu(void);
|
||||
extern s32 UpdateWirelessCommsMenu(void);
|
||||
extern s32 UpdateRescuePasswordMenu(void);
|
||||
extern s32 sub_80383D4(void);
|
||||
extern s32 sub_8038630(void);
|
||||
|
|
@ -53,8 +53,8 @@ extern void CleanTradeItemsMenu(void);
|
|||
extern void sub_80370D4(void);
|
||||
extern void CleanFriendRescueMenu(void);
|
||||
extern void CleanWonderMailMenu(void);
|
||||
extern void nullsub_55(void);
|
||||
extern void sub_803A1EC(void);
|
||||
extern void CleanDualSlotMenu(void);
|
||||
extern void CleanWirelessCommsMenu(void);
|
||||
extern void CleanRescuePasswordMenu(void);
|
||||
extern void sub_80383A8(void);
|
||||
extern void sub_8038604(void);
|
||||
|
|
@ -94,7 +94,7 @@ void SetUpMenu(void)
|
|||
sub_8099690(0);
|
||||
DrawMainMenu();
|
||||
break;
|
||||
case 6:
|
||||
case MENU_AWAITING_RESCUE:
|
||||
case MENU_CONTINUE:
|
||||
case MENU_DELETE_SAVE_PROMPT:
|
||||
case 9:
|
||||
|
|
@ -113,11 +113,11 @@ void SetUpMenu(void)
|
|||
case MENU_WONDER_MAIL:
|
||||
CreateWonderMailMenu();
|
||||
break;
|
||||
case 0xe:
|
||||
sub_803A1D8();
|
||||
case MENU_DUAL_SLOT:
|
||||
CreateDualSlotMenu();
|
||||
break;
|
||||
case 0xf:
|
||||
sub_803A1E4();
|
||||
case MENU_WIRELESS_COMMS:
|
||||
CreateWirelessCommsMenu();
|
||||
break;
|
||||
case MENU_DISPLAY_RESCUE_PASSWORD:
|
||||
case MENU_RESCUE_PASSWORD_ENTRY:
|
||||
|
|
@ -152,7 +152,7 @@ s32 UpdateMenu(void)
|
|||
case MENU_MAIN_SCREEN:
|
||||
nextMenu = UpdateMainMenu();
|
||||
break;
|
||||
case 6:
|
||||
case MENU_AWAITING_RESCUE:
|
||||
case MENU_CONTINUE:
|
||||
case MENU_DELETE_SAVE_PROMPT:
|
||||
case 9:
|
||||
|
|
@ -179,15 +179,15 @@ s32 UpdateMenu(void)
|
|||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
}
|
||||
break;
|
||||
case 0xe:
|
||||
iVar1 = sub_803A1DC();
|
||||
case MENU_DUAL_SLOT:
|
||||
iVar1 = UpdateDualSlotMenu();
|
||||
nextMenu = MENU_MAIN_SCREEN;
|
||||
if (iVar1 != 3) {
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
}
|
||||
break;
|
||||
case 0xf:
|
||||
iVar1 = sub_803A1E8();
|
||||
case MENU_WIRELESS_COMMS:
|
||||
iVar1 = UpdateWirelessCommsMenu();
|
||||
nextMenu = 5;
|
||||
if ((iVar1 != 3) && (nextMenu = MENU_NO_SCREEN_CHANGE, iVar1 == 2)) {
|
||||
nextMenu = MENU_MAIN_SCREEN;
|
||||
|
|
@ -232,7 +232,7 @@ void CleanUpMenu(void)
|
|||
case MENU_MAIN_SCREEN:
|
||||
CleanMainMenu();
|
||||
break;
|
||||
case 6:
|
||||
case MENU_AWAITING_RESCUE:
|
||||
case MENU_CONTINUE:
|
||||
case MENU_DELETE_SAVE_PROMPT:
|
||||
case 9:
|
||||
|
|
@ -251,11 +251,11 @@ void CleanUpMenu(void)
|
|||
case MENU_WONDER_MAIL:
|
||||
CleanWonderMailMenu();
|
||||
break;
|
||||
case 0xe:
|
||||
nullsub_55();
|
||||
case MENU_DUAL_SLOT:
|
||||
CleanDualSlotMenu();
|
||||
break;
|
||||
case 0xf:
|
||||
sub_803A1EC();
|
||||
case MENU_WIRELESS_COMMS:
|
||||
CleanWirelessCommsMenu();
|
||||
break;
|
||||
case MENU_DISPLAY_RESCUE_PASSWORD:
|
||||
case MENU_RESCUE_PASSWORD_ENTRY:
|
||||
|
|
|
|||
225
src/main_menu_1.c
Normal file
225
src/main_menu_1.c
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
#include "global.h"
|
||||
#include "main_menu.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
u8 unk0[24];
|
||||
};
|
||||
|
||||
struct unkSubStruct
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
};
|
||||
|
||||
struct unkStruct_203B34C
|
||||
{
|
||||
// size: 0x1A8
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
struct unkSubStruct *unk8; // Array of menu choices??
|
||||
u8 fillC[0x30 - 0xC];
|
||||
s16 unk30;
|
||||
u8 fill32[0x144 - 0x32];
|
||||
struct unkData unk144[4];
|
||||
/* 0x1A4 */ u32 currMenuChoice;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B34C *gUnknown_203B34C;
|
||||
|
||||
|
||||
extern u32 gUnknown_80E59E0;
|
||||
extern u32 gUnknown_203B350;
|
||||
extern u32 gUnknown_80E59F8;
|
||||
extern u32 gUnknown_80E5A78;
|
||||
extern u32 gUnknown_80E5B34;
|
||||
extern u32 gUnknown_80E5A90;
|
||||
extern u32 gUnknown_80E5A60;
|
||||
extern u32 gUnknown_80E5AFC;
|
||||
extern u32 gUnknown_80E5B8C;
|
||||
extern u32 gUnknown_80E5B4C;
|
||||
extern u32 gUnknown_80E5BC4;
|
||||
extern u32 gUnknown_80E5BDC;
|
||||
extern u32 gUnknown_80E5C18;
|
||||
|
||||
extern u32 gUnknown_80E5CB4;
|
||||
extern u32 gUnknown_80E5D48;
|
||||
extern u32 gUnknown_80E5CCC;
|
||||
extern u32 gUnknown_80E5F1C;
|
||||
extern u32 gUnknown_80E5DA0;
|
||||
extern u32 gUnknown_80E5DF0;
|
||||
extern u32 gUnknown_80E5D0C;
|
||||
extern u32 gUnknown_80E6030;
|
||||
extern u32 gUnknown_80E5FCC;
|
||||
extern u32 gUnknown_80E5F80;
|
||||
extern u32 gUnknown_80E5EBC;
|
||||
extern u32 gUnknown_80E5E5C;
|
||||
|
||||
extern u8 sub_803D0D8();
|
||||
extern s32 sub_8011C34();
|
||||
extern s32 sub_8095324(u32);
|
||||
extern void SetMenuItems(u32 *, struct unkData *, u32, u32 *, u32 *, u32, u32, u32);
|
||||
void SetMainMenuItems(void);
|
||||
extern u8 SetMainMenuText();
|
||||
extern void sub_8035CF4(u32 *, u32, u32);
|
||||
extern void sub_8035CC0(struct unkData *, u32);
|
||||
|
||||
u8 SetMainMenuText(void)
|
||||
{
|
||||
u32 menuChoice;
|
||||
struct unkSubStruct *preload;
|
||||
|
||||
// Have to load the pointer before the index
|
||||
preload = gUnknown_203B34C->unk8;
|
||||
menuChoice = preload[gUnknown_203B34C->unk30].unk4; // chosen menu action?
|
||||
if (gUnknown_203B34C->currMenuChoice == menuChoice) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
gUnknown_203B34C->currMenuChoice = menuChoice;
|
||||
sub_8035CC0(gUnknown_203B34C->unk144,2);
|
||||
sub_8035CC0(gUnknown_203B34C->unk144,3);
|
||||
switch(menuChoice) {
|
||||
case MENU_WIRELESS_COMMS:
|
||||
// Using wireless communications, you can go on an adventure to unknown worlds.
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E6030,0,0,0);
|
||||
break;
|
||||
case MENU_WONDER_MAIL:
|
||||
// Using passwords, you can receive Wonder Mail
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5F80,0,0,0);
|
||||
break;
|
||||
case MENU_AWAITING_RESCUE:
|
||||
// You are awaiting resuce by a friend
|
||||
// You can give up waiting for rescue
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5F1C,0,0,0);
|
||||
break;
|
||||
case MENU_NEW_GAME:
|
||||
// Start an entirely new adventure
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5CCC,0,0,0);
|
||||
break;
|
||||
case MENU_CONTINUE:
|
||||
// Resume your adventure from where you last saved
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5DA0,0,0,0);
|
||||
break;
|
||||
case MENU_DELETE_SAVE_PROMPT:
|
||||
// This will delete your saved game data.
|
||||
// Beware! This will delete it forever
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5DF0,0,0,0);
|
||||
break;
|
||||
case MENU_ADVENTURE_LOG:
|
||||
// Check your career as an adventurer
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5D0C,0,0,0);
|
||||
break;
|
||||
case MENU_FRIEND_RESCUE:
|
||||
// Using a Game Link cable or passwords, friends may rescue each other
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5E5C,0,0,0);
|
||||
break;
|
||||
case MENU_TRADE_ITEMS:
|
||||
// Using a Game Link cable you can trade stored items with a friend
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5EBC,0,0,0);
|
||||
break;
|
||||
case MENU_DUAL_SLOT:
|
||||
// Using Dual Slot function, you can receive teams from your friends
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5FCC,0,0,0);
|
||||
break;
|
||||
case MENU_DEBUG:
|
||||
// This is the Debug Mode.
|
||||
// It won't be in the release version
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5D48,0,0,0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_803623C(void)
|
||||
{
|
||||
sub_8035CC0(gUnknown_203B34C->unk144,1);
|
||||
SetMainMenuItems();
|
||||
gUnknown_203B34C->currMenuChoice = -1;
|
||||
if (SetMainMenuText() != 0) {
|
||||
sub_8035CF4(&gUnknown_203B34C->unk4,2,0);
|
||||
}
|
||||
sub_8035CF4(&gUnknown_203B34C->unk4,0,1);
|
||||
}
|
||||
|
||||
void SetMainMenuItems(void)
|
||||
{
|
||||
if (sub_8011C34() != -1) {
|
||||
if (sub_8095324(1) == 0) {
|
||||
if (sub_8095324(7) != 0) {
|
||||
if (sub_803D0D8() != 0) {
|
||||
// Revive Team
|
||||
// Delete Save Data
|
||||
// Adventure Log
|
||||
// Friend Rescue
|
||||
// Trade Items
|
||||
// Wonder Mail
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,&gUnknown_80E5C18,1,gUnknown_203B350,1);
|
||||
}
|
||||
else {
|
||||
// Revive Team
|
||||
// Delete Save Data
|
||||
// Adventure Log
|
||||
// Friend Rescue
|
||||
// Trade Items
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,&gUnknown_80E5BDC,1,gUnknown_203B350,1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (sub_803D0D8() != 0) {
|
||||
// Continue
|
||||
// Delete Save Data
|
||||
// Adventure Log
|
||||
// Friend Rescue
|
||||
// Trade Items
|
||||
// Wonder Mail
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,&gUnknown_80E5AFC,1,gUnknown_203B350,1);
|
||||
}
|
||||
else {
|
||||
// Continue
|
||||
// Delete Save Data
|
||||
// Adventure Log
|
||||
// Friend Rescue
|
||||
// Trade Items
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,&gUnknown_80E5A90,1,gUnknown_203B350,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (sub_803D0D8() != 0) {
|
||||
// Awaiting Rescue
|
||||
// Delete Save Data
|
||||
// Adventure Log
|
||||
// Friend Rescue
|
||||
// Trade Items
|
||||
// Wonder Mail
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,&gUnknown_80E5B8C,1,gUnknown_203B350,1);
|
||||
}
|
||||
else {
|
||||
// Awaiting Rescue
|
||||
// Delete Save Data
|
||||
// Adventure Log
|
||||
// Friend Rescue
|
||||
// Trade Items
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,&gUnknown_80E5B4C,1,gUnknown_203B350,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// New Game
|
||||
// Adventure Log
|
||||
SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,&gUnknown_80E59F8,1,gUnknown_203B350,1);
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_80363E0(void)
|
||||
{
|
||||
if(gUnknown_203B34C == NULL)
|
||||
return 0;
|
||||
if(gUnknown_203B34C->unk0 == 0xC)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -7,11 +7,40 @@ struct unkData
|
|||
u8 unk0[24];
|
||||
};
|
||||
|
||||
struct unkSubStruct
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
};
|
||||
|
||||
struct unkStruct_203B34C
|
||||
{
|
||||
// size: 0x1A8
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
struct unkSubStruct *unk8; // Array of menu choices??
|
||||
u8 fillC[0x30 - 0xC];
|
||||
s16 unk30;
|
||||
u8 fill32[0x144 - 0x32];
|
||||
struct unkData unk144[4];
|
||||
/* 0x1A4 */ u32 currMenuChoice;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B34C *gUnknown_203B34C;
|
||||
|
||||
|
||||
|
||||
extern struct MainMenu *gMainMenu;
|
||||
extern struct unkData gUnknown_80E59A8;
|
||||
extern struct unkData gUnknown_80E59C8;
|
||||
extern void sub_8006518(struct unkData *);
|
||||
extern void sub_800641C(struct unkData *, u32, u32);
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFill8(u8*, u8, s32);
|
||||
extern void MemoryFree(void *);
|
||||
|
||||
extern u8 SetMainMenuText();
|
||||
extern void SetMainMenuItems();
|
||||
|
||||
void sub_8035CC0(struct unkData *dataArray, u32 index)
|
||||
{
|
||||
|
|
@ -78,3 +107,102 @@ s32 sub_8035D74(void)
|
|||
{
|
||||
return gMainMenu->unk3C;
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_8035D80(void *r0)
|
||||
{
|
||||
asm_unified(
|
||||
"\tldr r1, _08035D90\n"
|
||||
"\tldr r2, [r1]\n"
|
||||
"\tldr r1, [r0, 0x4]\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tstr r0, [r2, 0x30]\n"
|
||||
"\tstr r1, [r2, 0x34]\n"
|
||||
"\tbx lr\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08035D90: .4byte gMainMenu");
|
||||
}
|
||||
|
||||
u8 *sub_8035D94(void)
|
||||
{
|
||||
return &gMainMenu->unk30;
|
||||
}
|
||||
|
||||
|
||||
void sub_8035DA0(void)
|
||||
{
|
||||
gMainMenu->unk30 = 0;
|
||||
gMainMenu->unk34 = 0;
|
||||
}
|
||||
|
||||
u32 sub_8035DB4(u32 r0)
|
||||
{
|
||||
u32 returnVar = 8;
|
||||
switch(r0)
|
||||
{
|
||||
case MENU_COMMUNICATION_1:
|
||||
returnVar = 0;
|
||||
break;
|
||||
case MENU_COMMUNICATION_2:
|
||||
returnVar = 1;
|
||||
break;
|
||||
case 0x15:
|
||||
returnVar = 2;
|
||||
break;
|
||||
case 0x16:
|
||||
returnVar = 3;
|
||||
break;
|
||||
case 0x17:
|
||||
returnVar = 4;
|
||||
break;
|
||||
case 0x18:
|
||||
returnVar = 5;
|
||||
break;
|
||||
case 0x19:
|
||||
returnVar = 6;
|
||||
break;
|
||||
case 0x1a:
|
||||
returnVar = 7;
|
||||
}
|
||||
return returnVar;
|
||||
}
|
||||
|
||||
void DrawMainMenu(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
|
||||
if(gUnknown_203B34C == NULL)
|
||||
{
|
||||
gUnknown_203B34C = MemoryAlloc(0x1A8, 8);
|
||||
MemoryFill8((u8 *)gUnknown_203B34C, 0, 0x1A8);
|
||||
}
|
||||
|
||||
for(iVar3 = 0; iVar3 < 4; iVar3++)
|
||||
{
|
||||
gUnknown_203B34C->unk144[iVar3] = gUnknown_80E59C8;
|
||||
}
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B34C->unk144, 1, 1);
|
||||
SetMainMenuItems();
|
||||
gUnknown_203B34C->currMenuChoice = -1;
|
||||
|
||||
if(SetMainMenuText() != 0)
|
||||
{
|
||||
sub_8035CF4(&gUnknown_203B34C->unk4,2,0);
|
||||
}
|
||||
|
||||
sub_8035CF4(&gUnknown_203B34C->unk4,0,1);
|
||||
gUnknown_203B34C->unk0 = 1;
|
||||
}
|
||||
|
||||
void CleanMainMenu(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(NULL, 1, 1);
|
||||
if(gUnknown_203B34C != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B34C);
|
||||
gUnknown_203B34C = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ extern bool8 EnableInterrupts(void);
|
|||
extern bool8 DisableInterrupts(void);
|
||||
extern void SoundBiasReset();
|
||||
extern void SoundBiasSet();
|
||||
extern void SetInterruptFlag(u16);
|
||||
extern void AckInterrupt(u16);
|
||||
extern void nullsub_25();
|
||||
extern void nullsub_18();
|
||||
extern void UpdateSound();
|
||||
|
|
@ -17,7 +17,7 @@ extern void UpdateInput();
|
|||
extern void sub_800C298(u16 r0);
|
||||
|
||||
typedef void (*IntrCallback)(void);
|
||||
extern IntrCallback gUnknown_202D5F0[];
|
||||
extern IntrCallback gIntrCallbacks[];
|
||||
|
||||
struct unkStruct_202D648
|
||||
{
|
||||
|
|
@ -61,7 +61,7 @@ struct unkStruct_3000FD8
|
|||
extern struct unkStruct_3000FD8 gUnknown_3000FD8[8];
|
||||
|
||||
extern u8 gUnknown_202D7FE;
|
||||
extern u16 gUnknown_202D7FC;
|
||||
extern u16 gBldCnt;
|
||||
extern struct BGControlStruct gBG0Control;
|
||||
extern struct BGControlStruct gBG1Control;
|
||||
extern struct BGControlStruct gBG2Control;
|
||||
|
|
@ -84,8 +84,8 @@ void VBlankIntr(void)
|
|||
gUnknown_203B0A0++;
|
||||
SoundVSync();
|
||||
BlinkSavingIcon();
|
||||
if (gUnknown_202D5F0[1] != NULL) {
|
||||
gUnknown_202D5F0[1]();
|
||||
if (gIntrCallbacks[1] != NULL) {
|
||||
gIntrCallbacks[1]();
|
||||
}
|
||||
index = 0;
|
||||
while (index < gUnknown_203B0AA) {
|
||||
|
|
@ -100,7 +100,7 @@ void VBlankIntr(void)
|
|||
if (gUnknown_203B099 == 0) {
|
||||
UpdateSound();
|
||||
}
|
||||
SetInterruptFlag(INTR_FLAG_VBLANK);
|
||||
AckInterrupt(INTR_FLAG_VBLANK);
|
||||
}
|
||||
|
||||
// Registers are a little off.. seems to be around the while loop
|
||||
|
|
@ -115,8 +115,8 @@ void VCountIntr(void)
|
|||
sVar2 = sVar2 >> 16;
|
||||
|
||||
if (gUnknown_203B0AE < 0) {
|
||||
if (gUnknown_202D5F0[2] != 0) {
|
||||
gUnknown_202D5F0[2]();
|
||||
if (gIntrCallbacks[2] != 0) {
|
||||
gIntrCallbacks[2]();
|
||||
}
|
||||
gUnknown_203B0AE = 0;
|
||||
}
|
||||
|
|
@ -134,7 +134,7 @@ void VCountIntr(void)
|
|||
REG_DISPSTAT = gUnknown_202D648[gUnknown_203B0AE].unk2 << 8 | DISPSTAT_VBLANK_INTR | DISPSTAT_VCOUNT_INTR;
|
||||
}
|
||||
}
|
||||
SetInterruptFlag(INTR_FLAG_VCOUNT);
|
||||
AckInterrupt(INTR_FLAG_VCOUNT);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
|
|
@ -232,7 +232,7 @@ void VCountIntr(void)
|
|||
"\tstrh r0, [r2]\n"
|
||||
"_0800BA34:\n"
|
||||
"\tmovs r0, 0x4\n"
|
||||
"\tbl SetInterruptFlag\n"
|
||||
"\tbl AckInterrupt\n"
|
||||
"\tpop {r3}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
|
|
@ -241,7 +241,7 @@ void VCountIntr(void)
|
|||
"\t.align 2, 0\n"
|
||||
"_0800BA44: .4byte 0x04000006\n"
|
||||
"_0800BA48: .4byte gUnknown_203B0AE\n"
|
||||
"_0800BA4C: .4byte gUnknown_202D5F0\n"
|
||||
"_0800BA4C: .4byte gIntrCallbacks\n"
|
||||
"_0800BA50: .4byte gUnknown_203B0AC\n"
|
||||
"_0800BA54: .4byte gUnknown_202D648\n"
|
||||
"_0800BA58: .4byte 0x04000004"
|
||||
|
|
@ -290,9 +290,9 @@ void xxx_update_bg_sound_input(void)
|
|||
|
||||
void Timer3Intr(void)
|
||||
{
|
||||
if(gUnknown_202D5F0[4])
|
||||
gUnknown_202D5F0[4]();
|
||||
SetInterruptFlag(INTR_FLAG_TIMER3);
|
||||
if(gIntrCallbacks[4])
|
||||
gIntrCallbacks[4]();
|
||||
AckInterrupt(INTR_FLAG_TIMER3);
|
||||
}
|
||||
|
||||
// Unused
|
||||
|
|
@ -388,7 +388,7 @@ void UpdateBGControlRegisters(void)
|
|||
}
|
||||
|
||||
REG_BG3CNT = BG[3] | 0x2f08;
|
||||
REG_BLDCNT = gUnknown_202D7FC;
|
||||
REG_BLDCNT = gBldCnt;
|
||||
}
|
||||
|
||||
// Some kind of initializer for music?
|
||||
|
|
|
|||
|
|
@ -323,6 +323,9 @@ void sub_80371B8(void)
|
|||
if (sub_8037C10(0) != 0) {
|
||||
sub_80376CC();
|
||||
sub_8035CC0(&gUnknown_203B35C->unk15C,0);
|
||||
// Success!
|
||||
// The item exchange with your friend
|
||||
// went through successfully
|
||||
SetMenuItems(&gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, &gUnknown_80E6C50,
|
||||
&gUnknown_80E6C68, 0, 6, 0);
|
||||
sub_8035CF4(&gUnknown_203B35C->unk1C, 0, 1);
|
||||
|
|
@ -375,10 +378,12 @@ void sub_80371B8(void)
|
|||
break;
|
||||
case 0xe:
|
||||
puVar5 = &gUnknown_80E6B78;
|
||||
// Error, there was a problem on your friend's end
|
||||
ppuVar4 = &gUnknown_80E6B90;
|
||||
break;
|
||||
case 0xf:
|
||||
puVar5 = &gUnknown_80E6BF4;
|
||||
// Error, your friend is not responding
|
||||
ppuVar4 = &gUnknown_80E6C0C;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,22 +10,6 @@ extern struct OpenedFile *gMonsterParametersFile;
|
|||
extern u16 gLevelCurrentPokeId;
|
||||
extern struct gPokemon *gMonsterParameters;
|
||||
|
||||
extern u64 gUnknown_8107544[];
|
||||
extern u32 gUnknown_810697C;
|
||||
extern void sub_8086448();
|
||||
extern void sub_80866C4(u32 *r0);
|
||||
|
||||
void sub_808CD9C(u8 r0)
|
||||
{
|
||||
sub_8086448();
|
||||
sub_80866C4(&gUnknown_810697C);
|
||||
}
|
||||
|
||||
u64 *sub_808CDB0(u8 r0)
|
||||
{
|
||||
return &gUnknown_8107544[r0];
|
||||
}
|
||||
|
||||
void LoadMonsterParameters(void)
|
||||
{
|
||||
gUnknown_203B45C = &gUnknown_202F400;
|
||||
|
|
@ -37,6 +21,5 @@ void LoadMonsterParameters(void)
|
|||
u32 *sub_808CE00(void)
|
||||
{
|
||||
return &gUnknown_202F400;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,9 @@ void sub_80382E4(s32 param_1)
|
|||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B360->unk148,1,1);
|
||||
if (param_1 == 0x25) {
|
||||
// Caution!
|
||||
// The storage space is empty!
|
||||
// Please check again.
|
||||
SetMenuItems(&gUnknown_203B360->unk8,gUnknown_203B360->unk148,0,&gUnknown_80E6E94,&gUnknown_80E6EAC,
|
||||
0,4,0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,11 +10,17 @@ extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
|
|||
|
||||
struct unkStruct_8095228
|
||||
{
|
||||
u8 unkArray[0x10];
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 padding[0x10 - 0x5];
|
||||
u32 unk10;
|
||||
u8 padding2[0x20 - 0x14];
|
||||
struct unkStruct_41C unk20;
|
||||
u8 padding3[0x2C - 0x24];
|
||||
u8 padding3[0x28 - 0x24];
|
||||
u32 unk28;
|
||||
s8 unk2C;
|
||||
u8 padding4[0x30 - 0x2D];
|
||||
};
|
||||
|
|
@ -603,7 +609,7 @@ void sub_8028FDC(void)
|
|||
{
|
||||
case 8:
|
||||
return_var = sub_8095228(gUnknown_203B2C0->unk218);
|
||||
if(sub_80A2824(return_var->unkArray[4]) == 0)
|
||||
if(sub_80A2824(return_var->unk4) == 0)
|
||||
{
|
||||
sub_8028B04(0x1C);
|
||||
}
|
||||
|
|
@ -891,7 +897,7 @@ void sub_80293F4(void)
|
|||
switch(return_var)
|
||||
{
|
||||
case 3:
|
||||
switch(sub_8039068(0x1C, (gUnknown_203B2C0->unk8), temp.unkArray))
|
||||
switch(sub_8039068(0x1C, (gUnknown_203B2C0->unk8), &temp.unk0))
|
||||
{
|
||||
case 8:
|
||||
case 9:
|
||||
|
|
@ -921,8 +927,8 @@ void sub_80293F4(void)
|
|||
break;
|
||||
case 22:
|
||||
sub_8095274(temp.unk10);
|
||||
temp.unkArray[0] = 2; // Some sort of Ack?
|
||||
sub_80951BC(temp.unkArray);
|
||||
temp.unk0 = 2; // Some sort of Ack?
|
||||
sub_80951BC(&temp.unk0);
|
||||
sub_80141B4(gWonderMailAOKMailReceivedText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x101);
|
||||
sub_8028B04(35);
|
||||
break;
|
||||
|
|
@ -1912,7 +1918,7 @@ void sub_802A50C(void)
|
|||
switch(return_var)
|
||||
{
|
||||
case 3:
|
||||
switch(sub_8039068(0x20,gUnknown_203B2C4->unk8,temp.unkArray))
|
||||
switch(sub_8039068(0x20,gUnknown_203B2C4->unk8,&temp.unk0))
|
||||
{
|
||||
case 7:
|
||||
case 8:
|
||||
|
|
@ -1943,7 +1949,7 @@ void sub_802A50C(void)
|
|||
uVar1 = sub_809539C(4,temp.unk10);
|
||||
puVar5 = sub_8095228(uVar1);
|
||||
*puVar5 = temp;
|
||||
puVar5->unkArray[0] = 6;
|
||||
puVar5->unk0 = 6;
|
||||
gUnknown_203B2C4->unk430 = temp.unk10;
|
||||
sub_802B2BC(0x21);
|
||||
break;
|
||||
|
|
|
|||
290
src/wonder_mail_2.c
Normal file
290
src/wonder_mail_2.c
Normal file
|
|
@ -0,0 +1,290 @@
|
|||
#include "global.h"
|
||||
#include "file_system.h"
|
||||
#include "input.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
struct unkStruct_203B2C8
|
||||
{
|
||||
// size: 0x140
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
/* 0x4 */ struct OpenedFile *faceFile;
|
||||
/* 0x8 */ u8 *faceData;
|
||||
/* 0xC */ u16 unkC;
|
||||
/* 0xE */ u16 unkE;
|
||||
/* 0x10 */ u8 unk10;
|
||||
/* 0x11 */ u8 unk11;
|
||||
/* 0x12 */ u8 unk12;
|
||||
/* 0x13 */ u8 unk13;
|
||||
/* 0x14 */ u8 unk14[4]; // Figure out size of this buffer
|
||||
u8 fill18[0x114 - 0x18];
|
||||
u8 unk114[0xA]; // holds species name
|
||||
u8 fill118[0x128 - 0x11E];
|
||||
u16 unk128;
|
||||
u8 unk12A;
|
||||
u8 unk12B;
|
||||
u32 unk12C;
|
||||
u8 unk130;
|
||||
u8 unk131;
|
||||
u8 unk132;
|
||||
u8 unk133;
|
||||
u8 unk134;
|
||||
u8 fill135[0x3];
|
||||
u32 unk138;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
|
||||
|
||||
struct unkStruct_41C
|
||||
{
|
||||
u8 unk41C;
|
||||
u8 unk41D;
|
||||
u8 unk41E;
|
||||
u8 unk41F;
|
||||
};
|
||||
|
||||
|
||||
struct unkStruct_8095228
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 padding[0x10 - 0x5];
|
||||
u32 unk10;
|
||||
u8 padding2[0x20 - 0x14];
|
||||
u32 unk20;
|
||||
u8 padding3[0x28 - 0x24];
|
||||
u32 unk28;
|
||||
s8 unk2C;
|
||||
u8 padding4[0x30 - 0x2D];
|
||||
};
|
||||
|
||||
extern void sub_80920D8(u8 *buffer);
|
||||
extern void sub_8097790();
|
||||
extern struct unkStruct_8095228 *sub_8095228(u8);
|
||||
extern char gUnknown_202E5D8[0x50];
|
||||
extern char gAvailablePokemonNames[0x50];
|
||||
void sub_808D8E0(u8 *, u32);
|
||||
extern u32 sub_802F298();
|
||||
extern void sub_802F2C0();
|
||||
extern u32 sub_8011C34();
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFill8(u8 *, u8, s32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
extern u8 sub_8099394(u8 *);
|
||||
extern void sub_802B548(u32);
|
||||
extern u32 sub_80144A4(s32 *);
|
||||
extern void sub_8011C28(u32);
|
||||
extern void sub_8012574(u32);
|
||||
extern void sub_8012750();
|
||||
extern bool8 sub_8012600();
|
||||
|
||||
|
||||
extern void sub_802B560();
|
||||
extern void sub_802B57C();
|
||||
extern void sub_802B5B8();
|
||||
extern void sub_802B5FC();
|
||||
extern void sub_802B624();
|
||||
|
||||
void sub_800D158(u8 *buffer, const char *text, ...);
|
||||
extern void sub_802F204(u8 *, u32);
|
||||
extern void sub_803C37C(u8 *, u32, u8 *);
|
||||
extern u32 sub_803C200(u8 *, u32);
|
||||
extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
|
||||
extern const char gUnknown_80DFAA8[];
|
||||
extern const char gUnknown_80DFB14[];
|
||||
extern const char gUnknown_80DF9F0[];
|
||||
extern const char gUnknown_80DF9F8[];
|
||||
extern u8 sub_80023E4(u32);
|
||||
extern char * GetMonSpecies(u32);
|
||||
|
||||
u32 sub_802B2D4(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
struct OpenedFile *faceFile;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B2C8 = MemoryAlloc(0x140,8);
|
||||
MemoryFill8((u8 *)gUnknown_203B2C8,0,0x140);
|
||||
gUnknown_203B2C8->unk1 = -1;
|
||||
sub_808D8E0(gUnknown_202E5D8, SPECIES_PELIPPER);
|
||||
faceFile = GetDialogueSpriteDataPtr(SPECIES_PELIPPER);
|
||||
gUnknown_203B2C8->faceFile = faceFile;
|
||||
gUnknown_203B2C8->faceData = faceFile->data;
|
||||
gUnknown_203B2C8->unk10 = 0;
|
||||
gUnknown_203B2C8->unk11 = 0;
|
||||
gUnknown_203B2C8->unk12 = 0;
|
||||
gUnknown_203B2C8->unkC = 2;
|
||||
gUnknown_203B2C8->unkE = 8;
|
||||
if (sub_8099394(&gUnknown_203B2C8->unk1) == 1) {
|
||||
sub_802B548(0);
|
||||
iVar1 = 1;
|
||||
}
|
||||
else
|
||||
iVar1 = 0;
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
u32 sub_802B358(void)
|
||||
{
|
||||
switch(gUnknown_203B2C8->unk0) {
|
||||
case 0:
|
||||
sub_802B560();
|
||||
break;
|
||||
case 1:
|
||||
sub_802B57C();
|
||||
break;
|
||||
case 2:
|
||||
sub_802B5B8();
|
||||
break;
|
||||
case 3:
|
||||
sub_802B5FC();
|
||||
break;
|
||||
case 4:
|
||||
sub_802B624();
|
||||
break;
|
||||
case 5:
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_802B3B8(void)
|
||||
{
|
||||
if(gUnknown_203B2C8 != NULL)
|
||||
{
|
||||
CloseFile(gUnknown_203B2C8->faceFile);
|
||||
MemoryFree(gUnknown_203B2C8);
|
||||
gUnknown_203B2C8 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_132(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_802B3E0(void)
|
||||
{
|
||||
struct unkStruct_8095228 *iVar3;
|
||||
char *monName;
|
||||
char teamNameBuffer[40];
|
||||
|
||||
switch(gUnknown_203B2C8->unk0) {
|
||||
case 0:
|
||||
if (sub_80023E4(0) != '\0') {
|
||||
// Copy Team Name to buffer
|
||||
sub_80920D8(teamNameBuffer);
|
||||
}
|
||||
else {
|
||||
// Copy "????" to buffer
|
||||
strcpy(teamNameBuffer,gUnknown_80DF9F0);
|
||||
}
|
||||
// Print and expand placeholders?
|
||||
sub_800D158(gUnknown_203B2C8->unk14,gUnknown_80DF9F8,teamNameBuffer);
|
||||
// Display to screen with Pelliper face
|
||||
sub_80141B4(gUnknown_203B2C8->unk14, 0, (u32 *)&gUnknown_203B2C8->faceFile, 0x10d);
|
||||
break;
|
||||
case 1:
|
||||
monName = GetMonSpecies(SPECIES_PELIPPER);
|
||||
strcpy(gUnknown_203B2C8->unk114, monName);
|
||||
gUnknown_203B2C8->unk128 = 0x130;
|
||||
gUnknown_203B2C8->unk12A = 2;
|
||||
gUnknown_203B2C8->unk12C = 0;
|
||||
sub_8097790();
|
||||
iVar3 = sub_8095228(gUnknown_203B2C8->unk1);
|
||||
sub_803C37C(&iVar3->unk4, 0, &gUnknown_203B2C8->unk130);
|
||||
gUnknown_203B2C8->unk138 = sub_803C200(&iVar3->unk4, 0);
|
||||
gUnknown_203B2C8->unk131 = 0;
|
||||
gUnknown_203B2C8->unk132 = 0;
|
||||
gUnknown_203B2C8->unk133 = 10;
|
||||
gUnknown_203B2C8->unk134 = 0;
|
||||
sub_802F204(gUnknown_203B2C8->unk114, 0);
|
||||
break;
|
||||
case 2:
|
||||
// I hope you will keep on rescuing your friends
|
||||
// I must save your adventure
|
||||
sub_80141B4(gUnknown_80DFAA8, 0, (u32 *)&gUnknown_203B2C8->faceFile, 0x10d);
|
||||
break;
|
||||
case 4:
|
||||
// Oh yes, that's right. Please don't forget to send an A-OK Mail
|
||||
// to the friend you just rescued
|
||||
sub_80141B4(gUnknown_80DFB14, 0, (u32 *)&gUnknown_203B2C8->faceFile, 0x10d);
|
||||
case 3:
|
||||
case 5:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802B548(u32 newState)
|
||||
{
|
||||
gUnknown_203B2C8->unk0 = newState;
|
||||
nullsub_132();
|
||||
sub_802B3E0();
|
||||
}
|
||||
|
||||
void sub_802B560(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_802B548(1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802B57C(void)
|
||||
{
|
||||
char *monName;
|
||||
|
||||
if (sub_802F298() == 3) {
|
||||
sub_802F2C0();
|
||||
sub_808D8E0(gUnknown_202E5D8, SPECIES_PELIPPER);
|
||||
monName = GetMonSpecies(SPECIES_PELIPPER);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sub_802B548(2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802B5B8(void)
|
||||
{
|
||||
u32 uVar2;
|
||||
struct unkStruct_8095228 *puVar3;
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
uVar2 = sub_8011C34();
|
||||
puVar3 = sub_8095228(gUnknown_203B2C8->unk1);
|
||||
puVar3->unk0 = 4;
|
||||
puVar3->unk28 = uVar2;
|
||||
sub_802B548(3);
|
||||
sub_8011C28(1);
|
||||
sub_8012574(0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802B5FC(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
if (sub_8012600() == '\0') {
|
||||
sub_8012750();
|
||||
sub_802B548(4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_802B624(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_802B548(5);
|
||||
}
|
||||
}
|
||||
106
src/wonder_mail_3.c
Normal file
106
src/wonder_mail_3.c
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
#include "global.h"
|
||||
|
||||
struct unkStruct_203B2F8
|
||||
{
|
||||
// size: 0x208
|
||||
u32 unk0; // state
|
||||
u32 unk4;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u32 unkC;
|
||||
u8 fill10[0x6C - 0x10];
|
||||
u32 unk6C;
|
||||
u32 unk70;
|
||||
u32 unk74;
|
||||
};
|
||||
extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern u8 sub_8099328(u8 *);
|
||||
extern u32 sub_8011C1C();
|
||||
extern void sub_802D1A0(u32);
|
||||
|
||||
extern void sub_802D7D0();
|
||||
extern void sub_802D8CC();
|
||||
extern void sub_802D940();
|
||||
extern void sub_802D9F0();
|
||||
extern void sub_802DA60();
|
||||
extern void sub_802D82C();
|
||||
extern void sub_802DA84();
|
||||
extern void sub_802D1B8();
|
||||
extern void sub_802D2A8();
|
||||
|
||||
|
||||
u32 sub_802D098(u32 param_1)
|
||||
{
|
||||
gUnknown_203B2F8 = MemoryAlloc(0x208,8);
|
||||
gUnknown_203B2F8->unk6C = 0;
|
||||
gUnknown_203B2F8->unk70 = 0;
|
||||
gUnknown_203B2F8->unk74 = 0;
|
||||
gUnknown_203B2F8->unkC = param_1;
|
||||
gUnknown_203B2F8->unk8 = 0;
|
||||
gUnknown_203B2F8->unk9 = sub_8099328(&gUnknown_203B2F8->unkA);
|
||||
if (sub_8011C1C() != 2) {
|
||||
gUnknown_203B2F8->unk9 = 0;
|
||||
}
|
||||
sub_802D1A0(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802D0E0(void)
|
||||
{
|
||||
switch(gUnknown_203B2F8->unk0) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
sub_802D7D0();
|
||||
break;
|
||||
case 0xb:
|
||||
case 0xc:
|
||||
sub_802D8CC();
|
||||
break;
|
||||
case 0xd:
|
||||
sub_802D940();
|
||||
break;
|
||||
case 0xe:
|
||||
sub_802D9F0();
|
||||
break;
|
||||
case 0xf:
|
||||
case 0x10:
|
||||
sub_802DA60();
|
||||
break;
|
||||
case 9:
|
||||
sub_802D82C();
|
||||
break;
|
||||
case 2:
|
||||
return 3;
|
||||
default:
|
||||
sub_802DA84();
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 sub_802D178(void)
|
||||
{
|
||||
return gUnknown_203B2F8->unk8;
|
||||
}
|
||||
|
||||
void sub_802D184(void)
|
||||
{
|
||||
if(gUnknown_203B2F8 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B2F8);
|
||||
gUnknown_203B2F8 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802D1A0(u32 newState)
|
||||
{
|
||||
gUnknown_203B2F8->unk0 = newState;
|
||||
sub_802D1B8();
|
||||
sub_802D2A8();
|
||||
}
|
||||
|
|
@ -1,44 +1,442 @@
|
|||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "save.h"
|
||||
|
||||
extern u8 *gUnknown_203B3E8;
|
||||
#define EXIT_TO_MAIN_MENU 5
|
||||
#define PASSWORD_SUCCESS 13
|
||||
#define PASSWORD_INVALID 19
|
||||
#define PASSWORD_ENTRY_SCREEN 18
|
||||
|
||||
struct unkWonderMailData
|
||||
{
|
||||
u8 unk0[20];
|
||||
};
|
||||
|
||||
struct unkStruct_203B3E8
|
||||
{
|
||||
// size: 0x49C
|
||||
u8 unk0; // state variable?
|
||||
u8 PasswordEntryBuffer[0x36]; // Wonder Mail Buffer...
|
||||
struct unkWonderMailData unk38; // 0x30 - 0x14
|
||||
u8 unk38_1[0x30 - 20]; // TODO: split for the ldm/stm stuff (fix dumb hack)
|
||||
u8 fill68[0x1EC - 0x68];
|
||||
u32 unk1EC;
|
||||
u8 fill1F0[0x24C - 0x1F0];
|
||||
u32 unk24C;
|
||||
u32 unk250;
|
||||
u8 fill254[0x3C0 - 0x254];
|
||||
struct unkWonderMailData unk3C0; // 0x3C0 + 0x14
|
||||
u8 fill3D0[0x490 - 0x3D4];
|
||||
u32 unk490;
|
||||
u32 unk494;
|
||||
u8 unk498;
|
||||
u8 unk499;
|
||||
u8 unk49A;
|
||||
u8 unk49B;
|
||||
};
|
||||
|
||||
extern u32 sub_8095324(u32);
|
||||
extern u32 sub_80144A4(s32 *);
|
||||
extern u32 sub_8011C1C(void);
|
||||
extern struct unkStruct_203B3E8 *gUnknown_203B3E8;
|
||||
extern void* MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
extern void sub_803A1C0(u8);
|
||||
extern void ResetUnusedInputStruct(void);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
extern void nullsub_54();
|
||||
extern void sub_8039E18();
|
||||
extern void sub_8030DE4(void);
|
||||
extern void sub_801B450(void);
|
||||
extern void sub_803084C(void);
|
||||
extern void sub_801CBB8(void);
|
||||
extern void sub_80155F0(void);
|
||||
extern void sub_8031E10(void);
|
||||
|
||||
void sub_803A1C0(u8 r0)
|
||||
extern u32 sub_802D0E0();
|
||||
extern u8 sub_802D178();
|
||||
extern void sub_802D184();
|
||||
|
||||
extern s32 sub_80154F0();
|
||||
extern bool8 sub_803D358(u8 *, void *);
|
||||
extern bool8 sub_80959C0(void *);
|
||||
extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32);
|
||||
|
||||
void sub_8039BAC(u32);
|
||||
void sub_8039A18(void);
|
||||
void sub_8039AA8(void);
|
||||
void sub_8039B14(void);
|
||||
void sub_8039B20(void);
|
||||
void sub_8039B58(void);
|
||||
void sub_8039D88(void);
|
||||
void sub_8039D28(void);
|
||||
void sub_8039D68(void);
|
||||
void sub_8039DA4(void);
|
||||
void sub_8039DCC(void);
|
||||
void sub_8039B3C(void);
|
||||
void sub_8039D0C(void);
|
||||
void sub_8039C60(void);
|
||||
void sub_8039DE8(void);
|
||||
|
||||
|
||||
extern u32 gUnknown_80E7914;
|
||||
extern u32 gUnknown_80E7938;
|
||||
extern u32 gUnknown_80E7994;
|
||||
extern u32 gUnknown_80E79E4;
|
||||
extern u32 gUnknown_80E7A48;
|
||||
|
||||
bool8 sub_8039880(void)
|
||||
{
|
||||
*gUnknown_203B3E8 = r0;
|
||||
nullsub_54();
|
||||
sub_8039E18();
|
||||
return (sub_8095324(1) != 0 || sub_8095324(7) != 0 || sub_8011C1C() == 2);
|
||||
}
|
||||
|
||||
u32 sub_803A1D8(void)
|
||||
bool8 CreateWonderMailMenu(void)
|
||||
{
|
||||
return 1;
|
||||
int iVar2;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
|
||||
gUnknown_203B3E8 = MemoryAlloc(sizeof(struct unkStruct_203B3E8), 8);
|
||||
MemoryFill8((u8 *)gUnknown_203B3E8, 0, sizeof(struct unkStruct_203B3E8));
|
||||
|
||||
for(iVar2 = 0; iVar2 < 0x36; iVar2++){
|
||||
gUnknown_203B3E8->PasswordEntryBuffer[iVar2] = 0;
|
||||
}
|
||||
|
||||
gUnknown_203B3E8->unk490 = 3;
|
||||
gUnknown_203B3E8->unk494 = 2;
|
||||
gUnknown_203B3E8->unk498 = 1;
|
||||
gUnknown_203B3E8->unk490 = 5; // ??? Why?
|
||||
sub_803A1C0(0x11); // 0x11 -> Display "Enter Wonder Mail Password"
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_803A1DC(void)
|
||||
u8 UpdateWonderMailMenu(void)
|
||||
{
|
||||
return 0;
|
||||
switch(gUnknown_203B3E8->unk0) {
|
||||
case 4:
|
||||
sub_8039A18();
|
||||
break;
|
||||
case EXIT_TO_MAIN_MENU: // When you exit out of the menu
|
||||
return 3;
|
||||
case 8:
|
||||
sub_8039AA8();
|
||||
break;
|
||||
case 11:
|
||||
break;
|
||||
case 12:
|
||||
sub_8039B14();
|
||||
break;
|
||||
case 6:
|
||||
sub_8039B20();
|
||||
break;
|
||||
case 9:
|
||||
sub_8039B58();
|
||||
break;
|
||||
case 7:
|
||||
sub_8039D88();
|
||||
break;
|
||||
case PASSWORD_SUCCESS:
|
||||
sub_8039D28();
|
||||
break;
|
||||
case 14:
|
||||
sub_8039D68();
|
||||
break;
|
||||
case 15: // Saving adventure
|
||||
sub_8039DA4();
|
||||
break;
|
||||
case 16: // Display "Recieved Wonder Mail was added" and go back to main menu
|
||||
sub_8039DCC();
|
||||
break;
|
||||
case 10:
|
||||
sub_8039B3C();
|
||||
break;
|
||||
case 17: // "Please enter the Wonder Mail Password" Screen
|
||||
sub_8039D0C();
|
||||
break;
|
||||
case PASSWORD_ENTRY_SCREEN: // Password Entry
|
||||
sub_8039C60();
|
||||
break;
|
||||
case PASSWORD_INVALID:
|
||||
sub_8039DE8();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void nullsub_55()
|
||||
void CleanWonderMailMenu(void)
|
||||
{
|
||||
if (gUnknown_203B3E8 != NULL) {
|
||||
MemoryFree(gUnknown_203B3E8);
|
||||
gUnknown_203B3E8 = NULL;
|
||||
sub_8030DE4(); // Frees 203B324
|
||||
sub_801B450(); // Frees 203B230
|
||||
sub_803084C(); // Frees 203B320
|
||||
sub_801CBB8(); // Frees 203B244
|
||||
sub_80155F0(); // Frees 203B1FC
|
||||
sub_8031E10(); // Frees 203B334
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_803A1E4(void)
|
||||
void sub_8039A18(void)
|
||||
{
|
||||
return 1;
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
gUnknown_203B3E8->unk24C = 10;
|
||||
switch(local_8) {
|
||||
case 3:
|
||||
case 4:
|
||||
gUnknown_203B3E8->unk490 = 3;
|
||||
sub_803A1C0(8);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B3E8->unk490 = 5;
|
||||
sub_803A1C0(17);
|
||||
break;
|
||||
case 0:
|
||||
case 8:
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_803A1E8(void)
|
||||
void sub_8039AA8(void)
|
||||
{
|
||||
return 2;
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
switch(local_8){
|
||||
case 6:
|
||||
if (gUnknown_203B3E8->unk494 == 1) {
|
||||
sub_803A1C0(2);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(12);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
if (gUnknown_203B3E8->unk494 == 1) {
|
||||
sub_803A1C0(1);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_803A1EC(void)
|
||||
void sub_8039B14(void)
|
||||
{
|
||||
sub_803A1C0(6);
|
||||
}
|
||||
|
||||
void sub_8039B20(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
sub_803A1C0(9);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039B3C(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
sub_803A1C0(4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039B58(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
if (gUnknown_203B3E8->unk250 == 0) {
|
||||
switch(gUnknown_203B3E8->unk24C){
|
||||
case 9:
|
||||
sub_803A1C0(7);
|
||||
break;
|
||||
case 10:
|
||||
sub_803A1C0(PASSWORD_SUCCESS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
sub_8039BAC(gUnknown_203B3E8->unk250);
|
||||
sub_803A1C0(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039BAC(u32 arg)
|
||||
{
|
||||
switch(arg)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 3:
|
||||
// Incorrect number of GBA Systems
|
||||
sub_80141B4(&gUnknown_80E7938, 0, 0, 0x101);
|
||||
break;
|
||||
case 2:
|
||||
// No response from friend. Redo from start
|
||||
sub_80141B4(&gUnknown_80E7994, 0, 0, 0x101);
|
||||
break;
|
||||
case 4:
|
||||
// Sender and receiver in different modes
|
||||
sub_80141B4(&gUnknown_80E79E4, 0, 0, 0x101);
|
||||
break;
|
||||
case 5:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 14:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 15: // "No response from your friend. Make sure sender and receiver are ready"
|
||||
sub_80141B4(&gUnknown_80E7A48, 0, 0, 0x101);
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case PASSWORD_SUCCESS:
|
||||
default:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039C60(void)
|
||||
{
|
||||
int iVar2;
|
||||
|
||||
iVar2 = sub_80154F0();
|
||||
MemoryFill8((u8 *)&gUnknown_203B3E8->unk38, 0, 0x30);
|
||||
switch(iVar2){
|
||||
case 3:
|
||||
sub_80155F0();
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(&gUnknown_203B3E8->unk1EC,1,1);
|
||||
if ( !sub_803D358(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->unk38) || !sub_80959C0(&gUnknown_203B3E8->unk38) )
|
||||
{
|
||||
// Invalid password
|
||||
sub_803A1C0(PASSWORD_INVALID);
|
||||
}
|
||||
else {
|
||||
// Successful password
|
||||
// Copy the decoded data to another buffer?
|
||||
gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk38;
|
||||
|
||||
gUnknown_203B3E8->unk498 = 1;
|
||||
sub_803A1C0(PASSWORD_SUCCESS);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sub_80155F0();
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(&gUnknown_203B3E8->unk1EC,1,1);
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D0C(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(PASSWORD_ENTRY_SCREEN);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D28(void)
|
||||
{
|
||||
if (sub_802D0E0() == 3) {
|
||||
gUnknown_203B3E8->unk498 = sub_802D178();
|
||||
sub_802D184();
|
||||
if (gUnknown_203B3E8->unk498 != 0) {
|
||||
sub_803A1C0(0xe);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(0x10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D68(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(0xF);
|
||||
sub_8012574(0); // "Saving Adventure.."
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D88(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(8);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DA4(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
if(!sub_8012600())
|
||||
{
|
||||
sub_8012750();
|
||||
sub_803A1C0(0x10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DCC(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DE8(void)
|
||||
{
|
||||
int iVar2;
|
||||
|
||||
// Prompt to re-enter password
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
switch(iVar2)
|
||||
{
|
||||
case 6: // Yes
|
||||
sub_803A1C0(0x11);
|
||||
break;
|
||||
case 0: // No
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_54(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(NULL, 1, 1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,442 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "save.h"
|
||||
|
||||
#define EXIT_TO_MAIN_MENU 5
|
||||
#define PASSWORD_SUCCESS 13
|
||||
#define PASSWORD_INVALID 19
|
||||
#define PASSWORD_ENTRY_SCREEN 18
|
||||
|
||||
struct unkWonderMailData
|
||||
{
|
||||
u8 unk0[20];
|
||||
};
|
||||
|
||||
struct unkStruct_203B3E8
|
||||
{
|
||||
// size: 0x49C
|
||||
u8 unk0; // state variable?
|
||||
u8 PasswordEntryBuffer[0x36]; // Wonder Mail Buffer...
|
||||
struct unkWonderMailData unk38; // 0x30 - 0x14
|
||||
u8 unk38_1[0x30 - 20]; // TODO: split for the ldm/stm stuff (fix dumb hack)
|
||||
u8 fill68[0x1EC - 0x68];
|
||||
u32 unk1EC;
|
||||
u8 fill1F0[0x24C - 0x1F0];
|
||||
u32 unk24C;
|
||||
u32 unk250;
|
||||
u8 fill254[0x3C0 - 0x254];
|
||||
struct unkWonderMailData unk3C0; // 0x3C0 + 0x14
|
||||
u8 fill3D0[0x490 - 0x3D4];
|
||||
u32 unk490;
|
||||
u32 unk494;
|
||||
u8 unk498;
|
||||
u8 unk499;
|
||||
u8 unk49A;
|
||||
u8 unk49B;
|
||||
};
|
||||
|
||||
extern u32 sub_8095324(u32);
|
||||
extern u32 sub_80144A4(s32 *);
|
||||
extern u32 sub_8011C1C(void);
|
||||
extern struct unkStruct_203B3E8 *gUnknown_203B3E8;
|
||||
extern void* MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
extern void sub_803A1C0(u8);
|
||||
extern void ResetUnusedInputStruct(void);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
extern void sub_8030DE4(void);
|
||||
extern void sub_801B450(void);
|
||||
extern void sub_803084C(void);
|
||||
extern void sub_801CBB8(void);
|
||||
extern void sub_80155F0(void);
|
||||
extern void sub_8031E10(void);
|
||||
|
||||
extern u32 sub_802D0E0();
|
||||
extern u8 sub_802D178();
|
||||
extern void sub_802D184();
|
||||
|
||||
extern s32 sub_80154F0();
|
||||
extern bool8 sub_803D358(u8 *, void *);
|
||||
extern bool8 sub_80959C0(void *);
|
||||
extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32);
|
||||
|
||||
void sub_8039BAC(u32);
|
||||
void sub_8039A18(void);
|
||||
void sub_8039AA8(void);
|
||||
void sub_8039B14(void);
|
||||
void sub_8039B20(void);
|
||||
void sub_8039B58(void);
|
||||
void sub_8039D88(void);
|
||||
void sub_8039D28(void);
|
||||
void sub_8039D68(void);
|
||||
void sub_8039DA4(void);
|
||||
void sub_8039DCC(void);
|
||||
void sub_8039B3C(void);
|
||||
void sub_8039D0C(void);
|
||||
void sub_8039C60(void);
|
||||
void sub_8039DE8(void);
|
||||
|
||||
|
||||
extern u32 gUnknown_80E7914;
|
||||
extern u32 gUnknown_80E7938;
|
||||
extern u32 gUnknown_80E7994;
|
||||
extern u32 gUnknown_80E79E4;
|
||||
extern u32 gUnknown_80E7A48;
|
||||
|
||||
bool8 sub_8039880(void)
|
||||
{
|
||||
return (sub_8095324(1) != 0 || sub_8095324(7) != 0 || sub_8011C1C() == 2);
|
||||
}
|
||||
|
||||
bool8 CreateWonderMailMenu(void)
|
||||
{
|
||||
int iVar2;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
|
||||
gUnknown_203B3E8 = MemoryAlloc(sizeof(struct unkStruct_203B3E8), 8);
|
||||
MemoryFill8((u8 *)gUnknown_203B3E8, 0, sizeof(struct unkStruct_203B3E8));
|
||||
|
||||
for(iVar2 = 0; iVar2 < 0x36; iVar2++){
|
||||
gUnknown_203B3E8->PasswordEntryBuffer[iVar2] = 0;
|
||||
}
|
||||
|
||||
gUnknown_203B3E8->unk490 = 3;
|
||||
gUnknown_203B3E8->unk494 = 2;
|
||||
gUnknown_203B3E8->unk498 = 1;
|
||||
gUnknown_203B3E8->unk490 = 5; // ??? Why?
|
||||
sub_803A1C0(0x11); // 0x11 -> Display "Enter Wonder Mail Password"
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 UpdateWonderMailMenu(void)
|
||||
{
|
||||
switch(gUnknown_203B3E8->unk0) {
|
||||
case 4:
|
||||
sub_8039A18();
|
||||
break;
|
||||
case EXIT_TO_MAIN_MENU: // When you exit out of the menu
|
||||
return 3;
|
||||
case 8:
|
||||
sub_8039AA8();
|
||||
break;
|
||||
case 11:
|
||||
break;
|
||||
case 12:
|
||||
sub_8039B14();
|
||||
break;
|
||||
case 6:
|
||||
sub_8039B20();
|
||||
break;
|
||||
case 9:
|
||||
sub_8039B58();
|
||||
break;
|
||||
case 7:
|
||||
sub_8039D88();
|
||||
break;
|
||||
case PASSWORD_SUCCESS:
|
||||
sub_8039D28();
|
||||
break;
|
||||
case 14:
|
||||
sub_8039D68();
|
||||
break;
|
||||
case 15: // Saving adventure
|
||||
sub_8039DA4();
|
||||
break;
|
||||
case 16: // Display "Recieved Wonder Mail was added" and go back to main menu
|
||||
sub_8039DCC();
|
||||
break;
|
||||
case 10:
|
||||
sub_8039B3C();
|
||||
break;
|
||||
case 17: // "Please enter the Wonder Mail Password" Screen
|
||||
sub_8039D0C();
|
||||
break;
|
||||
case PASSWORD_ENTRY_SCREEN: // Password Entry
|
||||
sub_8039C60();
|
||||
break;
|
||||
case PASSWORD_INVALID:
|
||||
sub_8039DE8();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CleanWonderMailMenu(void)
|
||||
{
|
||||
if (gUnknown_203B3E8 != NULL) {
|
||||
MemoryFree(gUnknown_203B3E8);
|
||||
gUnknown_203B3E8 = NULL;
|
||||
sub_8030DE4(); // Frees 203B324
|
||||
sub_801B450(); // Frees 203B230
|
||||
sub_803084C(); // Frees 203B320
|
||||
sub_801CBB8(); // Frees 203B244
|
||||
sub_80155F0(); // Frees 203B1FC
|
||||
sub_8031E10(); // Frees 203B334
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039A18(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
gUnknown_203B3E8->unk24C = 10;
|
||||
switch(local_8) {
|
||||
case 3:
|
||||
case 4:
|
||||
gUnknown_203B3E8->unk490 = 3;
|
||||
sub_803A1C0(8);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B3E8->unk490 = 5;
|
||||
sub_803A1C0(17);
|
||||
break;
|
||||
case 0:
|
||||
case 8:
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039AA8(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
switch(local_8){
|
||||
case 6:
|
||||
if (gUnknown_203B3E8->unk494 == 1) {
|
||||
sub_803A1C0(2);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(12);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
if (gUnknown_203B3E8->unk494 == 1) {
|
||||
sub_803A1C0(1);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039B14(void)
|
||||
{
|
||||
sub_803A1C0(6);
|
||||
}
|
||||
|
||||
void sub_8039B20(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
sub_803A1C0(9);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039B3C(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
sub_803A1C0(4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039B58(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
if (gUnknown_203B3E8->unk250 == 0) {
|
||||
switch(gUnknown_203B3E8->unk24C){
|
||||
case 9:
|
||||
sub_803A1C0(7);
|
||||
break;
|
||||
case 10:
|
||||
sub_803A1C0(PASSWORD_SUCCESS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
sub_8039BAC(gUnknown_203B3E8->unk250);
|
||||
sub_803A1C0(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039BAC(u32 arg)
|
||||
{
|
||||
switch(arg)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 3:
|
||||
// Incorrect number of GBA Systems
|
||||
sub_80141B4(&gUnknown_80E7938, 0, 0, 0x101);
|
||||
break;
|
||||
case 2:
|
||||
// No response from friend. Redo from start
|
||||
sub_80141B4(&gUnknown_80E7994, 0, 0, 0x101);
|
||||
break;
|
||||
case 4:
|
||||
// Sender and receiver in different modes
|
||||
sub_80141B4(&gUnknown_80E79E4, 0, 0, 0x101);
|
||||
break;
|
||||
case 5:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 14:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 15: // "No response from your friend. Make sure sender and receiver are ready"
|
||||
sub_80141B4(&gUnknown_80E7A48, 0, 0, 0x101);
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case PASSWORD_SUCCESS:
|
||||
default:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039C60(void)
|
||||
{
|
||||
int iVar2;
|
||||
|
||||
iVar2 = sub_80154F0();
|
||||
MemoryFill8((u8 *)&gUnknown_203B3E8->unk38, 0, 0x30);
|
||||
switch(iVar2){
|
||||
case 3:
|
||||
sub_80155F0();
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(&gUnknown_203B3E8->unk1EC,1,1);
|
||||
if ( !sub_803D358(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->unk38) || !sub_80959C0(&gUnknown_203B3E8->unk38) )
|
||||
{
|
||||
// Invalid password
|
||||
sub_803A1C0(PASSWORD_INVALID);
|
||||
}
|
||||
else {
|
||||
// Successful password
|
||||
// Copy the decoded data to another buffer?
|
||||
gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk38;
|
||||
|
||||
gUnknown_203B3E8->unk498 = 1;
|
||||
sub_803A1C0(PASSWORD_SUCCESS);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sub_80155F0();
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(&gUnknown_203B3E8->unk1EC,1,1);
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D0C(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(PASSWORD_ENTRY_SCREEN);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D28(void)
|
||||
{
|
||||
if (sub_802D0E0() == 3) {
|
||||
gUnknown_203B3E8->unk498 = sub_802D178();
|
||||
sub_802D184();
|
||||
if (gUnknown_203B3E8->unk498 != 0) {
|
||||
sub_803A1C0(0xe);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(0x10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D68(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(0xF);
|
||||
sub_8012574(0); // "Saving Adventure.."
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D88(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(8);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DA4(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
if(!sub_8012600())
|
||||
{
|
||||
sub_8012750();
|
||||
sub_803A1C0(0x10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DCC(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DE8(void)
|
||||
{
|
||||
int iVar2;
|
||||
|
||||
// Prompt to re-enter password
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
switch(iVar2)
|
||||
{
|
||||
case 6: // Yes
|
||||
sub_803A1C0(0x11);
|
||||
break;
|
||||
case 0: // No
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_54(void)
|
||||
{
|
||||
}
|
||||
|
|
@ -287,7 +287,7 @@ IntrMain_Buffer = .; /* 202D4B8 */
|
|||
gIntrTable = .; /* 202D5D8 */
|
||||
. += 0x18;
|
||||
|
||||
gUnknown_202D5F0 = .; /* 202D5F0 */
|
||||
gIntrCallbacks = .; /* 202D5F0 */
|
||||
. += 0x18;
|
||||
|
||||
gUnknown_202D608 = .; /* 202D608 */
|
||||
|
|
@ -335,10 +335,10 @@ gUnknown_202D6B8 = .; /* 202D6B8 */
|
|||
gUnknown_202D6B9 = .; /* 202D6B9 */
|
||||
. += 0x141;
|
||||
|
||||
gUnknown_202D7FA = .; /* 202D7FA */
|
||||
gBldAlpha = .; /* 202D7FA */
|
||||
. += 0x2;
|
||||
|
||||
gUnknown_202D7FC = .; /* 202D7FC */
|
||||
gBldCnt = .; /* 202D7FC */
|
||||
. += 0x2;
|
||||
|
||||
gUnknown_202D7FE = .; /* 202D7FE */
|
||||
|
|
@ -429,10 +429,10 @@ gAvailablePokemonNames = .; /* 202DF98 */
|
|||
gUnknown_202DFE8 = .; /* 202DFE8 */
|
||||
. += 0x50;
|
||||
|
||||
gUnknown_202E038 = .; /* 202E038 */
|
||||
gUnknown_202E038 = .; /* 202E038 ($m2) */
|
||||
. += 0x50;
|
||||
|
||||
gUnknown_202E088 = .; /* 202E088 */
|
||||
gUnknown_202E088 = .; /* 202E088 ($m3)? */
|
||||
. += 0xA0;
|
||||
|
||||
gUnknown_202E128 = .; /* 202E128 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user