mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-27 03:07:22 -05:00
more splitting and labeling with some decomp
This commit is contained in:
2322
asm/code_801AFA4.s
2322
asm/code_801AFA4.s
File diff suppressed because it is too large
Load Diff
2024
asm/code_801B3C0.s
Normal file
2024
asm/code_801B3C0.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -314,8 +314,8 @@ _0803D32A:
|
||||
_0803D354: .4byte gUnknown_80F43F0
|
||||
thumb_func_end sub_803D2C0
|
||||
|
||||
thumb_func_start sub_803D358
|
||||
sub_803D358:
|
||||
thumb_func_start DecodeWonderMailPassword
|
||||
DecodeWonderMailPassword:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
@@ -409,7 +409,7 @@ _0803D402:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_803D358
|
||||
thumb_func_end DecodeWonderMailPassword
|
||||
|
||||
thumb_func_start sub_803D414
|
||||
sub_803D414:
|
||||
|
||||
@@ -8771,7 +8771,7 @@ sub_8046F00:
|
||||
cmp r0, 0x5
|
||||
bne _08046F7C
|
||||
ldrb r0, [r4, 0x2]
|
||||
bl sub_80913CC
|
||||
bl GetItemMove
|
||||
lsls r0, 16
|
||||
lsrs r7, r0, 16
|
||||
ldrb r0, [r4, 0x2]
|
||||
|
||||
@@ -562,7 +562,7 @@ sub_8048950:
|
||||
mov r10, r0
|
||||
mov r8, r1
|
||||
ldrb r0, [r1, 0x2]
|
||||
bl sub_80913CC
|
||||
bl GetItemMove
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
mov r9, r0
|
||||
|
||||
@@ -25994,7 +25994,7 @@ _0807CBAC:
|
||||
add r4, sp, 0x20
|
||||
lsls r5, 8
|
||||
lsrs r0, r5, 24
|
||||
bl sub_80913CC
|
||||
bl GetItemMove
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
|
||||
3785
asm/code_8095014.s
3785
asm/code_8095014.s
File diff suppressed because it is too large
Load Diff
3495
asm/code_80958E8.s
Normal file
3495
asm/code_80958E8.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -797,8 +797,8 @@ _080913C4: .4byte gUnknown_203B460
|
||||
_080913C8: .4byte 0x0001869f
|
||||
thumb_func_end sub_80913A0
|
||||
|
||||
thumb_func_start sub_80913CC
|
||||
sub_80913CC:
|
||||
thumb_func_start GetItemMove
|
||||
GetItemMove:
|
||||
lsls r0, 24
|
||||
ldr r1, _080913DC
|
||||
ldr r1, [r1]
|
||||
@@ -808,7 +808,7 @@ sub_80913CC:
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080913DC: .4byte gItemParametersData
|
||||
thumb_func_end sub_80913CC
|
||||
thumb_func_end GetItemMove
|
||||
|
||||
thumb_func_start sub_80913E0
|
||||
sub_80913E0:
|
||||
@@ -861,7 +861,7 @@ _08091414:
|
||||
bne _080914B6
|
||||
add r4, sp, 0x54
|
||||
ldrb r0, [r6, 0x2]
|
||||
bl sub_80913CC
|
||||
bl GetItemMove
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8018E88
|
||||
sub_8018E88:
|
||||
thumb_func_start UpdateKecleonStoreDialogue
|
||||
UpdateKecleonStoreDialogue:
|
||||
push {r4,lr}
|
||||
sub sp, 0x14
|
||||
ldr r1, _08018EA4
|
||||
@@ -753,7 +753,7 @@ _080194E8:
|
||||
.align 2, 0
|
||||
_080194F0: .4byte gKecleonShopDialogue
|
||||
_080194F4: .4byte 0x0000010d
|
||||
thumb_func_end sub_8018E88
|
||||
thumb_func_end UpdateKecleonStoreDialogue
|
||||
|
||||
thumb_func_start sub_80194F8
|
||||
sub_80194F8:
|
||||
|
||||
@@ -5,626 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_802A75C
|
||||
sub_802A75C:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A792
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0
|
||||
beq _0802A78C
|
||||
cmp r0, 0x7
|
||||
bne _0802A792
|
||||
ldr r0, _0802A788
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xA7
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
movs r0, 0x16
|
||||
bl sub_802B2BC
|
||||
b _0802A792
|
||||
.align 2, 0
|
||||
_0802A788: .4byte gUnknown_203B2C4
|
||||
_0802A78C:
|
||||
movs r0, 0x1
|
||||
bl sub_802B2BC
|
||||
_0802A792:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A75C
|
||||
|
||||
thumb_func_start sub_802A798
|
||||
sub_802A798:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A81E
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x7
|
||||
beq _0802A7BC
|
||||
cmp r0, 0x7
|
||||
bgt _0802A7B6
|
||||
cmp r0, 0
|
||||
beq _0802A818
|
||||
b _0802A81E
|
||||
_0802A7B6:
|
||||
cmp r0, 0x8
|
||||
beq _0802A810
|
||||
b _0802A81E
|
||||
_0802A7BC:
|
||||
ldr r4, _0802A800
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x86
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
bl sub_8095228
|
||||
adds r2, r0, 0
|
||||
ldr r1, [r4]
|
||||
ldr r3, _0802A804
|
||||
adds r0, r1, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0802A7E2
|
||||
ldr r5, _0802A808
|
||||
adds r0, r1, r5
|
||||
ldr r0, [r0]
|
||||
str r0, [r2, 0x20]
|
||||
_0802A7E2:
|
||||
ldr r0, _0802A80C
|
||||
ldr r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 1
|
||||
adds r1, 0x50
|
||||
adds r1, r0
|
||||
ldrh r0, [r1]
|
||||
subs r0, 0x1
|
||||
strh r0, [r1]
|
||||
movs r0, 0x29
|
||||
bl sub_802B2BC
|
||||
b _0802A81E
|
||||
.align 2, 0
|
||||
_0802A800: .4byte gUnknown_203B2C4
|
||||
_0802A804: .4byte 0x0000041e
|
||||
_0802A808: .4byte 0x0000041c
|
||||
_0802A80C: .4byte gUnknown_203B460
|
||||
_0802A810:
|
||||
movs r0, 0xB
|
||||
bl sub_802B2BC
|
||||
b _0802A81E
|
||||
_0802A818:
|
||||
movs r0, 0x1
|
||||
bl sub_802B2BC
|
||||
_0802A81E:
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A798
|
||||
|
||||
thumb_func_start sub_802A828
|
||||
sub_802A828:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A848
|
||||
movs r0, 0x2A
|
||||
bl sub_802B2BC
|
||||
movs r0, 0x1
|
||||
bl sub_8011C28
|
||||
movs r0, 0
|
||||
bl PrepareSavePakWrite
|
||||
_0802A848:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A828
|
||||
|
||||
thumb_func_start sub_802A850
|
||||
sub_802A850:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A89A
|
||||
bl WriteSavePak
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802A89A
|
||||
bl FinishWriteSavePak
|
||||
ldr r0, _0802A884
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0802A888
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x3
|
||||
blt _0802A89A
|
||||
cmp r0, 0x4
|
||||
ble _0802A88C
|
||||
cmp r0, 0x5
|
||||
beq _0802A894
|
||||
b _0802A89A
|
||||
.align 2, 0
|
||||
_0802A884: .4byte gUnknown_203B2C4
|
||||
_0802A888: .4byte 0x00000534
|
||||
_0802A88C:
|
||||
movs r0, 0x1D
|
||||
bl sub_802B2BC
|
||||
b _0802A89A
|
||||
_0802A894:
|
||||
movs r0, 0x19
|
||||
bl sub_802B2BC
|
||||
_0802A89A:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A850
|
||||
|
||||
thumb_func_start sub_802A8A0
|
||||
sub_802A8A0:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A8B4
|
||||
movs r0, 0x13
|
||||
bl sub_802B2BC
|
||||
_0802A8B4:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A8A0
|
||||
|
||||
thumb_func_start sub_802A8BC
|
||||
sub_802A8BC:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A90A
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0
|
||||
beq _0802A904
|
||||
cmp r0, 0xA
|
||||
bne _0802A90A
|
||||
ldr r0, _0802A8EC
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0802A8F0
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x3
|
||||
blt _0802A90A
|
||||
cmp r0, 0x4
|
||||
ble _0802A8F4
|
||||
cmp r0, 0x5
|
||||
beq _0802A8FC
|
||||
b _0802A90A
|
||||
.align 2, 0
|
||||
_0802A8EC: .4byte gUnknown_203B2C4
|
||||
_0802A8F0: .4byte 0x00000534
|
||||
_0802A8F4:
|
||||
movs r0, 0x1D
|
||||
bl sub_802B2BC
|
||||
b _0802A90A
|
||||
_0802A8FC:
|
||||
movs r0, 0x19
|
||||
bl sub_802B2BC
|
||||
b _0802A90A
|
||||
_0802A904:
|
||||
movs r0, 0x1
|
||||
bl sub_802B2BC
|
||||
_0802A90A:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A8BC
|
||||
|
||||
thumb_func_start sub_802A910
|
||||
sub_802A910:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A986
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x9
|
||||
beq _0802A934
|
||||
cmp r0, 0x9
|
||||
bgt _0802A92E
|
||||
cmp r0, 0
|
||||
beq _0802A980
|
||||
b _0802A986
|
||||
_0802A92E:
|
||||
cmp r0, 0xA
|
||||
beq _0802A950
|
||||
b _0802A986
|
||||
_0802A934:
|
||||
movs r0, 0
|
||||
bl sub_801CF14
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802A948
|
||||
movs r0, 0xA
|
||||
bl sub_802B2BC
|
||||
b _0802A986
|
||||
_0802A948:
|
||||
movs r0, 0xB
|
||||
bl sub_802B2BC
|
||||
b _0802A986
|
||||
_0802A950:
|
||||
ldr r0, _0802A968
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0802A96C
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x3
|
||||
blt _0802A986
|
||||
cmp r0, 0x4
|
||||
ble _0802A970
|
||||
cmp r0, 0x5
|
||||
beq _0802A978
|
||||
b _0802A986
|
||||
.align 2, 0
|
||||
_0802A968: .4byte gUnknown_203B2C4
|
||||
_0802A96C: .4byte 0x00000534
|
||||
_0802A970:
|
||||
movs r0, 0x1D
|
||||
bl sub_802B2BC
|
||||
b _0802A986
|
||||
_0802A978:
|
||||
movs r0, 0x19
|
||||
bl sub_802B2BC
|
||||
b _0802A986
|
||||
_0802A980:
|
||||
movs r0, 0x1
|
||||
bl sub_802B2BC
|
||||
_0802A986:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A910
|
||||
|
||||
thumb_func_start sub_802A98C
|
||||
sub_802A98C:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A9A0
|
||||
movs r0, 0x8
|
||||
bl sub_802B2BC
|
||||
_0802A9A0:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A98C
|
||||
|
||||
thumb_func_start sub_802A9A8
|
||||
sub_802A9A8:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802A9F6
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0
|
||||
beq _0802A9F0
|
||||
cmp r0, 0x7
|
||||
bne _0802A9F6
|
||||
ldr r0, _0802A9D8
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0802A9DC
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x3
|
||||
blt _0802A9F6
|
||||
cmp r0, 0x4
|
||||
ble _0802A9E0
|
||||
cmp r0, 0x5
|
||||
beq _0802A9E8
|
||||
b _0802A9F6
|
||||
.align 2, 0
|
||||
_0802A9D8: .4byte gUnknown_203B2C4
|
||||
_0802A9DC: .4byte 0x00000534
|
||||
_0802A9E0:
|
||||
movs r0, 0x1D
|
||||
bl sub_802B2BC
|
||||
b _0802A9F6
|
||||
_0802A9E8:
|
||||
movs r0, 0x19
|
||||
bl sub_802B2BC
|
||||
b _0802A9F6
|
||||
_0802A9F0:
|
||||
movs r0, 0x1
|
||||
bl sub_802B2BC
|
||||
_0802A9F6:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A9A8
|
||||
|
||||
thumb_func_start sub_802A9FC
|
||||
sub_802A9FC:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802AA22
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0
|
||||
beq _0802AA1C
|
||||
cmp r0, 0x7
|
||||
bne _0802AA22
|
||||
movs r0, 0x26
|
||||
bl sub_802B2BC
|
||||
b _0802AA22
|
||||
_0802AA1C:
|
||||
movs r0, 0x1
|
||||
bl sub_802B2BC
|
||||
_0802AA22:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802A9FC
|
||||
|
||||
thumb_func_start sub_802AA28
|
||||
sub_802AA28:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802AAA6
|
||||
ldr r2, [sp]
|
||||
cmp r2, 0
|
||||
beq _0802AAA0
|
||||
cmp r2, 0
|
||||
blt _0802AAA6
|
||||
cmp r2, 0x5
|
||||
bgt _0802AAA6
|
||||
cmp r2, 0x3
|
||||
blt _0802AAA6
|
||||
ldr r0, _0802AA7C
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0802AA80
|
||||
adds r1, r0, r3
|
||||
str r2, [r1]
|
||||
movs r1, 0xA7
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _0802AA8C
|
||||
movs r0, 0x5
|
||||
bl sub_80953D4
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8095228
|
||||
adds r0, 0x22
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0802AA84
|
||||
movs r0, 0x7
|
||||
bl sub_802B2BC
|
||||
b _0802AAA6
|
||||
.align 2, 0
|
||||
_0802AA7C: .4byte gUnknown_203B2C4
|
||||
_0802AA80: .4byte 0x00000534
|
||||
_0802AA84:
|
||||
movs r0, 0x9
|
||||
bl sub_802B2BC
|
||||
b _0802AAA6
|
||||
_0802AA8C:
|
||||
cmp r2, 0x5
|
||||
bne _0802AA98
|
||||
movs r0, 0x26
|
||||
bl sub_802B2BC
|
||||
b _0802AAA6
|
||||
_0802AA98:
|
||||
movs r0, 0x1D
|
||||
bl sub_802B2BC
|
||||
b _0802AAA6
|
||||
_0802AAA0:
|
||||
movs r0, 0x1
|
||||
bl sub_802B2BC
|
||||
_0802AAA6:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802AA28
|
||||
|
||||
thumb_func_start sub_802AAAC
|
||||
sub_802AAAC:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802AAC0
|
||||
movs r0, 0x1
|
||||
bl sub_802B2BC
|
||||
_0802AAC0:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802AAAC
|
||||
|
||||
thumb_func_start sub_802AAC8
|
||||
sub_802AAC8:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802AADC
|
||||
movs r0, 0x3
|
||||
bl sub_802B2BC
|
||||
_0802AADC:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802AAC8
|
||||
|
||||
thumb_func_start sub_802AAE4
|
||||
sub_802AAE4:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802AB5A
|
||||
ldr r2, [sp]
|
||||
cmp r2, 0x1
|
||||
beq _0802AB08
|
||||
cmp r2, 0x1
|
||||
bgt _0802AB02
|
||||
cmp r2, 0
|
||||
beq _0802AB54
|
||||
b _0802AB5A
|
||||
_0802AB02:
|
||||
cmp r2, 0x2
|
||||
beq _0802AB38
|
||||
b _0802AB5A
|
||||
_0802AB08:
|
||||
ldr r0, _0802AB2C
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x6
|
||||
str r1, [r0, 0x40]
|
||||
movs r1, 0xA7
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
str r2, [r0]
|
||||
movs r0, 0x5
|
||||
bl sub_8095324
|
||||
cmp r0, 0
|
||||
bne _0802AB30
|
||||
movs r0, 0x4
|
||||
bl sub_802B2BC
|
||||
b _0802AB5A
|
||||
.align 2, 0
|
||||
_0802AB2C: .4byte gUnknown_203B2C4
|
||||
_0802AB30:
|
||||
movs r0, 0xF
|
||||
bl sub_802B2BC
|
||||
b _0802AB5A
|
||||
_0802AB38:
|
||||
ldr r0, _0802AB50
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x7
|
||||
str r1, [r0, 0x40]
|
||||
movs r1, 0xA7
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
str r2, [r0]
|
||||
movs r0, 0x6
|
||||
bl sub_802B2BC
|
||||
b _0802AB5A
|
||||
.align 2, 0
|
||||
_0802AB50: .4byte gUnknown_203B2C4
|
||||
_0802AB54:
|
||||
movs r0, 0x2
|
||||
bl sub_802B2BC
|
||||
_0802AB5A:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802AAE4
|
||||
|
||||
thumb_func_start sub_802AB60
|
||||
sub_802AB60:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802AB74
|
||||
movs r0, 0x22
|
||||
bl sub_802B2BC
|
||||
_0802AB74:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802AB60
|
||||
|
||||
thumb_func_start sub_802AB7C
|
||||
sub_802AB7C:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802AB90
|
||||
movs r0, 0x22
|
||||
bl sub_802B2BC
|
||||
_0802AB90:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802AB7C
|
||||
|
||||
thumb_func_start sub_802AB98
|
||||
sub_802AB98:
|
||||
push {r4,lr}
|
||||
bl sub_802F298
|
||||
cmp r0, 0x3
|
||||
bne _0802ABE0
|
||||
bl sub_802F2C0
|
||||
ldr r0, _0802ABE8
|
||||
movs r4, 0x98
|
||||
lsls r4, 1
|
||||
adds r1, r4, 0
|
||||
bl CopyYellowSpeciesNametoBuffer
|
||||
adds r0, r4, 0
|
||||
bl GetMonSpecies
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0802ABEC
|
||||
bl strcpy
|
||||
ldr r0, _0802ABF0
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x86
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x6
|
||||
bl sub_809539C
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8095240
|
||||
movs r0, 0x24
|
||||
bl sub_802B2BC
|
||||
_0802ABE0:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802ABE8: .4byte gUnknown_202E5D8
|
||||
_0802ABEC: .4byte gAvailablePokemonNames
|
||||
_0802ABF0: .4byte gUnknown_203B2C4
|
||||
thumb_func_end sub_802AB98
|
||||
|
||||
thumb_func_start nullsub_131
|
||||
nullsub_131:
|
||||
bx lr
|
||||
thumb_func_end nullsub_131
|
||||
|
||||
thumb_func_start sub_802ABF8
|
||||
sub_802ABF8:
|
||||
push {r4-r6,lr}
|
||||
@@ -1423,18 +803,4 @@ _0802B2B4: .4byte gUnknown_80DF9A4
|
||||
_0802B2B8: .4byte gUnknown_80DEE08
|
||||
thumb_func_end sub_802ABF8
|
||||
|
||||
thumb_func_start sub_802B2BC
|
||||
sub_802B2BC:
|
||||
push {lr}
|
||||
ldr r1, _0802B2D0
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1]
|
||||
bl nullsub_131
|
||||
bl sub_802ABF8
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802B2D0: .4byte gUnknown_203B2C4
|
||||
thumb_func_end sub_802B2BC
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -5,125 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_802D1B8
|
||||
sub_802D1B8:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
ldr r4, _0802D1E0
|
||||
ldr r0, [r4]
|
||||
movs r1, 0xD4
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
bl sub_8006518
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0xD
|
||||
beq _0802D1EA
|
||||
cmp r0, 0xD
|
||||
bgt _0802D1E4
|
||||
cmp r0, 0x2
|
||||
beq _0802D27E
|
||||
b _0802D254
|
||||
.align 2, 0
|
||||
_0802D1E0: .4byte gUnknown_203B2F8
|
||||
_0802D1E4:
|
||||
cmp r0, 0xE
|
||||
beq _0802D21C
|
||||
b _0802D254
|
||||
_0802D1EA:
|
||||
bl sub_802D5A4
|
||||
ldr r2, [r4]
|
||||
movs r0, 0xEC
|
||||
lsls r0, 1
|
||||
adds r2, r0
|
||||
ldr r1, _0802D218
|
||||
ldm r1!, {r3,r5,r6}
|
||||
stm r2!, {r3,r5,r6}
|
||||
ldm r1!, {r3,r5,r7}
|
||||
stm r2!, {r3,r5,r7}
|
||||
ldr r1, [r4]
|
||||
adds r0, r1, r0
|
||||
movs r6, 0x8C
|
||||
lsls r6, 1
|
||||
adds r1, r6
|
||||
bl sub_8012CAC
|
||||
ldr r0, [r4]
|
||||
movs r7, 0xF2
|
||||
lsls r7, 1
|
||||
b _0802D246
|
||||
.align 2, 0
|
||||
_0802D218: .4byte gUnknown_80DFE04
|
||||
_0802D21C:
|
||||
bl sub_802D63C
|
||||
ldr r2, [r4]
|
||||
movs r0, 0xF8
|
||||
lsls r0, 1
|
||||
adds r2, r0
|
||||
ldr r1, _0802D250
|
||||
ldm r1!, {r3,r5,r6}
|
||||
stm r2!, {r3,r5,r6}
|
||||
ldm r1!, {r3,r5,r7}
|
||||
stm r2!, {r3,r5,r7}
|
||||
ldr r1, [r4]
|
||||
adds r0, r1, r0
|
||||
movs r6, 0xAC
|
||||
lsls r6, 1
|
||||
adds r1, r6
|
||||
bl sub_8012CAC
|
||||
ldr r0, [r4]
|
||||
movs r7, 0xFE
|
||||
lsls r7, 1
|
||||
_0802D246:
|
||||
adds r0, r7
|
||||
movs r1, 0x6
|
||||
strh r1, [r0]
|
||||
b _0802D27E
|
||||
.align 2, 0
|
||||
_0802D250: .4byte gUnknown_80DFE1C
|
||||
_0802D254:
|
||||
ldr r0, _0802D2A0
|
||||
mov r12, r0
|
||||
movs r1, 0xD4
|
||||
lsls r1, 1
|
||||
mov r8, r1
|
||||
ldr r4, _0802D2A4
|
||||
movs r3, 0
|
||||
movs r2, 0x3
|
||||
_0802D264:
|
||||
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 _0802D264
|
||||
_0802D27E:
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, _0802D2A0
|
||||
ldr r0, [r0]
|
||||
movs r6, 0xD4
|
||||
lsls r6, 1
|
||||
adds r0, r6
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802D2A0: .4byte gUnknown_203B2F8
|
||||
_0802D2A4: .4byte gUnknown_80DFDD4
|
||||
thumb_func_end sub_802D1B8
|
||||
|
||||
thumb_func_start sub_802D2A8
|
||||
sub_802D2A8:
|
||||
push {r4,lr}
|
||||
|
||||
@@ -1412,7 +1412,19 @@ gUnknown_80E6DDC: @ 80E6DDC
|
||||
gUnknown_80E6DF4: @ 80E6DF4
|
||||
.incbin "baserom.gba", 0xE6DF4, 0x5C
|
||||
|
||||
.include "data/text/chunsoft.inc"
|
||||
.global gUnknown_80E6E50
|
||||
gUnknown_80E6E50:: @ 80E6E50
|
||||
.string "CHUNSOFT\0"
|
||||
.align 2,0
|
||||
|
||||
.string "pksdir0\0"
|
||||
|
||||
.string "pksdir0\0"
|
||||
|
||||
.string "pksdir0\0"
|
||||
|
||||
.string "pksdir0\0"
|
||||
|
||||
|
||||
.global gUnknown_80E6E7C
|
||||
gUnknown_80E6E7C: @ 80E6E7C
|
||||
|
||||
@@ -8224,7 +8224,7 @@ gUnknown_810A350: @ 810A350
|
||||
.byte 0x18, 0x19, 0x1e, 0x27, 0x31, 0x32, 0x33, 0x36, 0x37, 0x3d, 0x3f
|
||||
|
||||
.global gUnknown_810A35B
|
||||
gUnknown_810A35B: @ 810A35B
|
||||
gUnknown_810A35B: @ 810A35B (item related)
|
||||
@ replacing .incbin "baserom.gba", 0x0010a35b, 0x10
|
||||
.byte 0xed, 0xee, 0xef, 0xb1, 0xe9, 0x24, 0xd8, 0xd2, 0xb0, 0xdc, 0x32, 0x33, 0x34, 0xc2, 0xec, 0xf0
|
||||
|
||||
@@ -8248,18 +8248,18 @@ gUnknown_810A36B: @ 810A36B
|
||||
.global gUnknown_810A378
|
||||
gUnknown_810A378: @ 810A378
|
||||
@ replacing .incbin "baserom.gba", 0x0010a378, 0x18
|
||||
.byte 0x01, 0x00
|
||||
.byte 0x19, 0x00
|
||||
.byte 0x01, 0x00
|
||||
.byte 0x01, 0x00
|
||||
.byte 0xe7, 0x03
|
||||
.byte 0xe7, 0x03
|
||||
.byte 0x23, 0x00
|
||||
.byte 0x28, 0x00
|
||||
.byte 0x14, 0x00
|
||||
.byte 0x0f, 0x00
|
||||
.byte 0x0a, 0x00
|
||||
.byte 0xe7, 0x03
|
||||
.2byte 0x01
|
||||
.2byte 0x19
|
||||
.2byte 0x01
|
||||
.2byte 0x01
|
||||
.2byte 0x3e7
|
||||
.2byte 0x3e7
|
||||
.2byte 0x23
|
||||
.2byte 0x28
|
||||
.2byte 0x14
|
||||
.2byte 0x0f
|
||||
.2byte 0x0a
|
||||
.2byte 0x3e7
|
||||
|
||||
.global gUnknown_810A390
|
||||
gUnknown_810A390: @ 810A390
|
||||
|
||||
@@ -888,7 +888,7 @@ gUnknown_8116258: @ 8116258
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.4byte CleanHelperPelipper
|
||||
.4byte sub_8031540
|
||||
.4byte HelperPelliperCallback
|
||||
|
||||
.global gUnknown_8116268
|
||||
gUnknown_8116268: @ 8116268
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
gUnknown_80E6E50:: @ 80E6E50
|
||||
.string "CHUNSOFT\0"
|
||||
.align 2,0
|
||||
|
||||
.string "pksdir0\0"
|
||||
|
||||
.string "pksdir0\0"
|
||||
|
||||
.string "pksdir0\0"
|
||||
|
||||
.string "pksdir0\0"
|
||||
28
include/constants/wonder_mail.h
Normal file
28
include/constants/wonder_mail.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef GUARD_CONSTANTS_WONDER_MAIL_H
|
||||
#define GUARD_CONSTANTS_WONDER_MAIL_H
|
||||
|
||||
enum MissionType
|
||||
{
|
||||
HELP_POKE,
|
||||
FIND_POKE,
|
||||
ESCORT,
|
||||
FIND_ITEM,
|
||||
DELIVER_ITEM
|
||||
};
|
||||
|
||||
enum RewardType
|
||||
{
|
||||
MONEY,
|
||||
MONEY_EXTRA,
|
||||
ITEM,
|
||||
ITEM_EXTRA,
|
||||
BLANK_4,
|
||||
MONEY1,
|
||||
MONEY1_EXTRA,
|
||||
ITEM1,
|
||||
ITEM1_EXTRA,
|
||||
FRIEND_AREA,
|
||||
END_REWARDS
|
||||
};
|
||||
|
||||
#endif //GUARD_CONSTANTS_WONDER_MAIL_H
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "file_system.h"
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
|
||||
struct unkStruct_203B204
|
||||
{
|
||||
@@ -12,7 +13,9 @@ struct unkStruct_203B204
|
||||
u32 unk8;
|
||||
u32 chosenAmount;
|
||||
u32 unk10;
|
||||
u8 fill14[0x64 - 0x14];
|
||||
struct MenuItem unk14[5];
|
||||
u8 fill3C[0x54 - 0x3C];
|
||||
u16 unk54[8];
|
||||
u32 unk64;
|
||||
u8 fill68[0x78 - 0x68];
|
||||
u32 unk78;
|
||||
|
||||
@@ -17,8 +17,7 @@ struct subStruct_203B460
|
||||
struct unkStruct_203B460
|
||||
{
|
||||
struct ItemStruct_203B460 fill0[20];
|
||||
u16 unk50[0x10];
|
||||
u8 fill70[0x230 - 0x70];
|
||||
u16 unk50[0xF0];
|
||||
struct subStruct_203B460 unk230[8];
|
||||
struct subStruct_203B460 unk250[4]; // TODO: idk if this is identical struct or not.. Ghidra says sizes are same
|
||||
/* 0x260 */ s32 teamMoney;
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "config.h" // We need to define config before gba headers as print stuff needs the functions nulled before defines.
|
||||
#include "gba/gba.h"
|
||||
|
||||
#include "constants/species.h"
|
||||
|
||||
// IDE support
|
||||
#if defined(__APPLE__) || defined(__CYGWIN__)
|
||||
#define _(x) x
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define KANGASKHAN_STORAGE_H
|
||||
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
|
||||
struct unkStruct_203B208
|
||||
{
|
||||
@@ -17,7 +18,7 @@ struct unkStruct_203B208
|
||||
u32 unk18;
|
||||
u32 unk1C;
|
||||
u32 unk20;
|
||||
u8 fill24[0x4C - 0x24];
|
||||
struct MenuItem unk24[5];
|
||||
u16 unk4C[5];
|
||||
u32 unk58;
|
||||
u8 unk5C[0xA8 - 0x5C];
|
||||
|
||||
@@ -3,25 +3,31 @@
|
||||
|
||||
#include "gUnknown_203B460.h"
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
|
||||
struct unkStruct_203B210
|
||||
{
|
||||
// size: 0x148
|
||||
u32 unk0;
|
||||
u8 unk4;
|
||||
bool8 unk4;
|
||||
u8 fill5[3];
|
||||
u32 currState;
|
||||
u32 unkC;
|
||||
s32 unk10;
|
||||
s32 itemSellPrice;
|
||||
u32 unk14;
|
||||
u32 unk18;
|
||||
struct ItemStruct_203B460 unk1C;
|
||||
u32 unk20;
|
||||
u8 unk20;
|
||||
u8 unk21;
|
||||
u8 unk22;
|
||||
u8 unk23;
|
||||
u32 unk24;
|
||||
u32 unk28;
|
||||
u32 unk2C;
|
||||
u32 unk30;
|
||||
u8 fill34[0x84 - 0x34];
|
||||
struct MenuItem unk34[3];
|
||||
u8 fill4C[0x74 - 0x4C];
|
||||
u16 unk74[8];
|
||||
u32 unk84;
|
||||
u8 fill88[0xD4 - 0x88];
|
||||
struct OpenedFile *faceFile;
|
||||
|
||||
@@ -4,7 +4,24 @@
|
||||
#include "file_system.h"
|
||||
#include "text.h"
|
||||
|
||||
#define PASSWORD_BUFFER_SIZE 0x36
|
||||
#define PASSWORD_BUFFER_SIZE 54
|
||||
|
||||
struct WonderMail
|
||||
{
|
||||
/* 0x0 */ u8 mailType; // mail type
|
||||
/* 0x1 */ u8 missionType; // mission type
|
||||
/* 0x2 */ u8 unk2;
|
||||
/* 0x3 */ u8 unk3;
|
||||
/* 0x4 */ u8 dungeon; // dungeon
|
||||
/* 0x5 */ u8 floor; // floor
|
||||
/* 0x8 */ u32 unk8;
|
||||
/* 0xC */ s16 clientPoke; // client pokemon
|
||||
/* 0xE */ s16 targetPoke; // target
|
||||
/* 0x10 */ u8 targetItem; // item to find/deliver
|
||||
/* 0x11 */ u8 rewardType; // reward type
|
||||
/* 0x12 */ u8 itemReward; // item reward
|
||||
/* 0x13 */ u8 friendAreaReward; // friend area
|
||||
};
|
||||
|
||||
|
||||
struct WonderMailStruct_203B2C0
|
||||
|
||||
@@ -104,6 +104,8 @@ SECTIONS {
|
||||
asm/pokemon_square.o(.text);
|
||||
src/code_801AFA4.o(.text);
|
||||
asm/code_801AFA4.o(.text);
|
||||
src/code_801B3C0.o(.text);
|
||||
asm/code_801B3C0.o(.text);
|
||||
src/code_801C620.o(.text);
|
||||
asm/code_801C620.o(.text);
|
||||
src/code_801D760.o(.text);
|
||||
@@ -188,8 +190,8 @@ SECTIONS {
|
||||
asm/pokemon_1.o(.text);
|
||||
src/pokemon_1.o(.text);
|
||||
asm/pokemon_2.o(.text);
|
||||
src/code_808EAB0.o(.text);
|
||||
asm/code_808EAB0.o(.text);
|
||||
src/pokemon_3.o(.text);
|
||||
asm/pokemon_3.o(.text);
|
||||
src/dungeon.o(.text);
|
||||
asm/code_809017C.o(.text);
|
||||
src/items.o(.text);
|
||||
@@ -205,6 +207,8 @@ SECTIONS {
|
||||
src/play_time.o(.text);
|
||||
src/code_8094F88.o(.text);
|
||||
asm/code_8095014.o(.text);
|
||||
src/code_80958E8.o(.text);
|
||||
asm/code_80958E8.o(.text);
|
||||
src/code_809747C.o(.text);
|
||||
asm/code_809747C.o(.text);
|
||||
src/code_809747C_1.o(.text);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
extern struct unkStruct_203B460 *gUnknown_203B460;
|
||||
|
||||
extern u16 sub_80913CC(u8);
|
||||
extern u16 GetItemMove(u8);
|
||||
extern void sub_8092C84(u8 *, u16);
|
||||
extern void sub_8099690(u32);
|
||||
extern u32 sub_801B2F4(void);
|
||||
@@ -60,7 +60,7 @@ u32 sub_801AFA4(u32 r0)
|
||||
gUnknown_203B22C = MemoryAlloc(0xA4, 8);
|
||||
gUnknown_203B22C->unk4 = r0;
|
||||
gUnknown_203B22C->unk8 = gUnknown_203B460->fill0[r0].itemIndex;
|
||||
gUnknown_203B22C->unkA = sub_80913CC(gUnknown_203B22C->unk8);
|
||||
gUnknown_203B22C->unkA = GetItemMove(gUnknown_203B22C->unk8);
|
||||
sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->unkA);
|
||||
sub_8099690(0);
|
||||
if(sub_801B2F4() == 0)
|
||||
|
||||
189
src/code_801B3C0.c
Normal file
189
src/code_801B3C0.c
Normal file
@@ -0,0 +1,189 @@
|
||||
#include "global.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct subStruct_203B240
|
||||
{
|
||||
char * unk0;
|
||||
char * unk4;
|
||||
};
|
||||
|
||||
struct unkStruct_41C
|
||||
{
|
||||
u8 unk41C;
|
||||
u8 unk41D;
|
||||
u8 unk41E;
|
||||
u8 unk41F;
|
||||
};
|
||||
|
||||
// based off of 203B240..
|
||||
struct unkStruct_203B230
|
||||
{
|
||||
// size: 0x94
|
||||
s32 state;
|
||||
struct unkStruct_41C unk4;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
struct subStruct_203B240 *unk10[2];
|
||||
u8 fill14[0x20 - 0x18];
|
||||
u32 unk20;
|
||||
u32 unk24;
|
||||
struct UnkTextStruct2 unk28[4];
|
||||
u32 unk88;
|
||||
u32 unk8C;
|
||||
u32 unk90;
|
||||
};
|
||||
extern struct unkStruct_203B230 *gUnknown_203B230;
|
||||
|
||||
extern u8 gAvailablePokemonNames[0x58];
|
||||
extern u8 gUnknown_80DBA4C[];
|
||||
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_8014FF0(u32, u32, u8 *, u32, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013F84(void);
|
||||
extern u32 sub_8012A64(u32 *, u32);
|
||||
extern s32 sub_80913E0(struct unkStruct_41C *, u32, struct subStruct_203B240 **);
|
||||
|
||||
extern void sub_801317C(u32 *);
|
||||
extern void sub_80140B4(struct UnkTextStruct2 *);
|
||||
extern void sub_801B46C(u32);
|
||||
extern void ResetSprites(u32);
|
||||
|
||||
void sub_801B51C();
|
||||
void sub_801B590();
|
||||
void sub_801B480();
|
||||
|
||||
|
||||
u32 sub_801B3C0(struct unkStruct_41C *param_1)
|
||||
{
|
||||
ResetSprites(1);
|
||||
gUnknown_203B230 = MemoryAlloc(sizeof(struct unkStruct_203B230),8);
|
||||
gUnknown_203B230->unk4 = *param_1;
|
||||
sub_801317C(&gUnknown_203B230->unk88);
|
||||
gUnknown_203B230->unk24 = 0;
|
||||
sub_80140B4(gUnknown_203B230->unk28);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B230->unk28,1,1);
|
||||
sub_801B46C(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_801B410(void)
|
||||
{
|
||||
switch(gUnknown_203B230->state)
|
||||
{
|
||||
case 0:
|
||||
sub_801B51C();
|
||||
break;
|
||||
case 1:
|
||||
sub_801B590();
|
||||
break;
|
||||
case 3:
|
||||
return 3;
|
||||
case 2:
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_801B450(void)
|
||||
{
|
||||
if(gUnknown_203B230 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B230);
|
||||
gUnknown_203B230 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801B46C(u32 newState)
|
||||
{
|
||||
gUnknown_203B230->state = newState;
|
||||
sub_801B480();
|
||||
}
|
||||
|
||||
void sub_801B480(void)
|
||||
{
|
||||
struct subStruct_203B240 *preload;
|
||||
switch(gUnknown_203B230->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8008C54(gUnknown_203B230->unk24);
|
||||
gUnknown_203B230->unkC = sub_80913E0(&gUnknown_203B230->unk4, gUnknown_203B230->unk24, gUnknown_203B230->unk10);
|
||||
gUnknown_203B230->unk20 = 0;
|
||||
break;
|
||||
case 1:
|
||||
sub_8008C54(gUnknown_203B230->unk24);
|
||||
sub_80073B8(gUnknown_203B230->unk24);
|
||||
preload = gUnknown_203B230->unk10[gUnknown_203B230->unk8];
|
||||
strcpy(gAvailablePokemonNames, preload->unk0);
|
||||
sub_8014FF0(16, 0, gUnknown_80DBA4C, gUnknown_203B230->unk24, 0); // $m0
|
||||
sub_8014FF0(4, 16, gUnknown_203B230->unk10[gUnknown_203B230->unk8]->unk4, gUnknown_203B230->unk24, 0);
|
||||
sub_80073E0(gUnknown_203B230->unk24);
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801B51C(void)
|
||||
{
|
||||
if(gUnknown_203B230->unkC != 0)
|
||||
{
|
||||
if(gUnknown_203B230->unk20 & 8)
|
||||
sub_8013F84();
|
||||
gUnknown_203B230->unk20++;
|
||||
}
|
||||
switch(sub_8012A64(&gUnknown_203B230->unk88, gUnknown_203B230->unk24))
|
||||
{
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
if(gUnknown_203B230->unkC != 0)
|
||||
{
|
||||
gUnknown_203B230->unk8 = 0;
|
||||
sub_801B46C(1);
|
||||
}
|
||||
else
|
||||
sub_801B46C(3);
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_801B46C(2);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801B590(void)
|
||||
{
|
||||
|
||||
if (gUnknown_203B230->unk8 < (gUnknown_203B230->unkC - 1)) {
|
||||
if ((gUnknown_203B230->unk20 & 8)) {
|
||||
sub_8013F84();
|
||||
}
|
||||
gUnknown_203B230->unk20++;
|
||||
}
|
||||
switch(sub_8012A64(&gUnknown_203B230->unk88,gUnknown_203B230->unk24))
|
||||
{
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
gUnknown_203B230->unk8++;
|
||||
if (gUnknown_203B230->unk8 < gUnknown_203B230->unkC) {
|
||||
sub_801B46C(1);
|
||||
}
|
||||
else {
|
||||
sub_801B46C(0);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_801B46C(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ struct subStruct_203B240
|
||||
struct unkStruct_203B240
|
||||
{
|
||||
// size: 0x94
|
||||
s32 unk0;
|
||||
s32 state;
|
||||
u8 unk4;
|
||||
u8 fill5[3];
|
||||
s32 unk8;
|
||||
@@ -72,7 +72,7 @@ u32 sub_801C620(u8 param_1)
|
||||
|
||||
u32 sub_801C674(void)
|
||||
{
|
||||
switch(gUnknown_203B240->unk0)
|
||||
switch(gUnknown_203B240->state)
|
||||
{
|
||||
case 0:
|
||||
sub_801C7D4();
|
||||
@@ -98,9 +98,9 @@ void sub_801C6B4(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801C6D0(s32 unk0)
|
||||
void sub_801C6D0(s32 newState)
|
||||
{
|
||||
gUnknown_203B240->unk0 = unk0;
|
||||
gUnknown_203B240->state = newState;
|
||||
sub_801C6E4();
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ void sub_801C6E4(void)
|
||||
char *skillName;
|
||||
struct subStruct_203B240 *preload;
|
||||
|
||||
switch(gUnknown_203B240->unk0)
|
||||
switch(gUnknown_203B240->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8008C54(gUnknown_203B240->unk24);
|
||||
@@ -139,9 +139,8 @@ void sub_801C6E4(void)
|
||||
|
||||
void sub_801C7D4(void)
|
||||
{
|
||||
|
||||
if (gUnknown_203B240->unkC != 0) {
|
||||
if ((gUnknown_203B240->unk20 & 8) != 0) {
|
||||
if ((gUnknown_203B240->unk20 & 8)) {
|
||||
sub_8013F84();
|
||||
}
|
||||
gUnknown_203B240->unk20++;
|
||||
@@ -169,7 +168,7 @@ void sub_801C848(void)
|
||||
{
|
||||
|
||||
if (gUnknown_203B240->unk8 < (gUnknown_203B240->unkC - 1)) {
|
||||
if ((gUnknown_203B240->unk20 & 8) != 0) {
|
||||
if ((gUnknown_203B240->unk20 & 8)) {
|
||||
sub_8013F84();
|
||||
}
|
||||
gUnknown_203B240->unk20++;
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
#include "global.h"
|
||||
#include "friend_area.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "file_system.h"
|
||||
#include "gUnknown_203B460.h"
|
||||
#include "memory.h"
|
||||
#include "input.h"
|
||||
#include "text.h"
|
||||
#include "rescue_team_info.h"
|
||||
|
||||
struct unkStruct_203B258
|
||||
{
|
||||
@@ -57,10 +59,6 @@ extern const char *sub_8098FB4();
|
||||
extern void xxx_format_string(const char *, u8 *, u32 **, u32);
|
||||
extern s32 sub_8008ED0(u8 *);
|
||||
extern void xxx_call_draw_string(s32 size, u32, u8 *, u32, u32);
|
||||
extern const char *GetFriendAreaName(u8);
|
||||
extern u8 GetRescueTeamRank();
|
||||
extern const char *GetTeamRankString(u8);
|
||||
extern s32 GetTeamRankPts();
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "constants/species.h"
|
||||
#include "gUnknown_203B418.h"
|
||||
#include "code_8041D5C.h"
|
||||
#include "friend_area.h"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "gUnknown_203B418.h"
|
||||
#include "code_8041D5C.h"
|
||||
#include "constants/species.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
extern struct unkStruct_203B418 *gUnknown_203B418;
|
||||
|
||||
178
src/code_80958E8.c
Normal file
178
src/code_80958E8.c
Normal file
@@ -0,0 +1,178 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "friend_area.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
|
||||
struct subStruct_203B490
|
||||
{
|
||||
// size: 0xC
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 fill2[2];
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
};
|
||||
|
||||
|
||||
struct unkStruct_203B490
|
||||
{
|
||||
// size: 0x330?
|
||||
|
||||
u8 fill0[0x190];
|
||||
u8 unk190[0x28];
|
||||
u8 unk1B8[0x78];
|
||||
struct subStruct_203B490 unk230[16];
|
||||
u8 unk2F0[0x38];
|
||||
u8 unk328;
|
||||
};
|
||||
|
||||
|
||||
extern u8 sub_809095C(u8);
|
||||
extern s32 sub_8090298(u8);
|
||||
extern u8 sub_809017C(u8 *);
|
||||
extern s16 sub_808E770(s16);
|
||||
extern u8 sub_8092040(u8);
|
||||
extern u8 sub_803C1D0(u8 *, u8);
|
||||
extern u8 sub_8090A60(u8);
|
||||
extern u8 sub_8091524(u8);
|
||||
extern u8 sub_8091E60(u8 ,u8 );
|
||||
extern u32 GetMaxItemCount(u8);
|
||||
extern u8 sub_803C0DC(s16);
|
||||
extern void sub_8096040(u8);
|
||||
extern void sub_80965B8(u8);
|
||||
extern void sub_8096C3C(u8);
|
||||
extern bool8 ValidateWonderMail(struct WonderMail *);
|
||||
|
||||
extern struct unkStruct_203B490 *gUnknown_203B490;
|
||||
extern struct unkStruct_203B490 gUnknown_2039448;
|
||||
|
||||
void sub_80958E8()
|
||||
{
|
||||
gUnknown_203B490 = &gUnknown_2039448;
|
||||
}
|
||||
|
||||
struct unkStruct_203B490 *sub_80958F8(void)
|
||||
{
|
||||
return &gUnknown_2039448;
|
||||
}
|
||||
|
||||
void sub_8095900(void)
|
||||
{
|
||||
s32 iVar2;
|
||||
for(iVar2 = 0; iVar2 < 4; iVar2++)
|
||||
{
|
||||
sub_8096040(iVar2);
|
||||
}
|
||||
for(iVar2 = 0; iVar2 < 8; iVar2++)
|
||||
{
|
||||
sub_80965B8(iVar2);
|
||||
}
|
||||
for(iVar2 = 0; iVar2 < 8; iVar2++)
|
||||
{
|
||||
sub_8096C3C(iVar2);
|
||||
}
|
||||
for(iVar2 = 0; iVar2 < 0x38; iVar2++)
|
||||
{
|
||||
gUnknown_203B490->unk2F0[iVar2] = 0;
|
||||
}
|
||||
gUnknown_203B490->unk328 = 0;
|
||||
MemoryClear8(gUnknown_203B490->unk190, sizeof(gUnknown_203B490->unk190));
|
||||
MemoryClear8(gUnknown_203B490->unk1B8, sizeof(gUnknown_203B490->unk1B8));
|
||||
for(iVar2 = 0; iVar2 < 16; iVar2++)
|
||||
{
|
||||
gUnknown_203B490->unk230[iVar2].unk0 = 0x63;
|
||||
gUnknown_203B490->unk230[iVar2].unk1 = 1;
|
||||
gUnknown_203B490->unk230[iVar2].unk4 = 0;
|
||||
gUnknown_203B490->unk230[iVar2].unk8 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 IsValidWonderMail(struct WonderMail *WonderMailData)
|
||||
{
|
||||
// Has to equal 5 for Wonder Mail
|
||||
// https://web.archive.org/web/20080913124416/http://www.upokecenter.com/games/dungeon/guides/passwords.html
|
||||
//
|
||||
if(WonderMailData->mailType != 5)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ValidateWonderMail(WonderMailData);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 ValidateWonderMail(struct WonderMail *data)
|
||||
{
|
||||
|
||||
if(data->missionType > DELIVER_ITEM)
|
||||
return FALSE;
|
||||
else
|
||||
{
|
||||
if(data->missionType == DELIVER_ITEM && GetMaxItemCount(data->dungeon) == 0)
|
||||
return FALSE;
|
||||
|
||||
if(data->unk2 > 9)
|
||||
return FALSE;
|
||||
|
||||
if(sub_809095C(data->dungeon) != 0)
|
||||
return FALSE;
|
||||
if(data->floor >= sub_8090298(data->dungeon))
|
||||
return FALSE;
|
||||
if(sub_809017C(&(data->dungeon)) != 0)
|
||||
return FALSE;
|
||||
|
||||
if(data->clientPoke == SPECIES_NONE)
|
||||
return FALSE;
|
||||
if(data->clientPoke > SPECIES_RAYQUAZA_CUTSCENE)
|
||||
return FALSE;
|
||||
if(data->clientPoke != sub_808E770(data->clientPoke))
|
||||
return FALSE;
|
||||
if(sub_803C0DC(data->clientPoke) == 0)
|
||||
return FALSE;
|
||||
|
||||
if(data->targetPoke > SPECIES_RAYQUAZA_CUTSCENE)
|
||||
return FALSE;
|
||||
if(data->targetPoke != sub_808E770(data->targetPoke))
|
||||
return FALSE;
|
||||
if(sub_803C0DC(data->targetPoke) == 0)
|
||||
return FALSE;
|
||||
|
||||
// Item Delivery/Finding
|
||||
if((u8)(data->missionType - 1) > FIND_POKE)
|
||||
if(data->targetPoke != data->clientPoke)
|
||||
return FALSE;
|
||||
|
||||
if(sub_8092040(data->targetItem) != 0)
|
||||
return FALSE;
|
||||
if(sub_8090A60(data->targetItem) != 0)
|
||||
return FALSE;
|
||||
if(sub_8091524(data->targetItem) == 0)
|
||||
return FALSE;
|
||||
|
||||
// Item finding
|
||||
if(data->missionType == FIND_ITEM && sub_8091E60(data->dungeon, data->targetItem) == 0)
|
||||
return FALSE;
|
||||
|
||||
if(data->rewardType == BLANK_4 || data->rewardType == END_REWARDS || data->rewardType > END_REWARDS)
|
||||
return FALSE;
|
||||
|
||||
if(sub_8092040(data->itemReward) != 0)
|
||||
return FALSE;
|
||||
|
||||
// Friend Area Reward
|
||||
if(data->friendAreaReward > FINAL_ISLAND)
|
||||
return FALSE;
|
||||
|
||||
if(data->rewardType == FRIEND_AREA)
|
||||
{
|
||||
if(GetFriendAreaUnlockCondition(data->friendAreaReward) != UNLOCK_WONDER_MAIL)
|
||||
return FALSE;
|
||||
if(sub_803C1D0(&(data->dungeon), data->missionType) == 0)
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ extern u8 *gUnknown_203B3E8;
|
||||
extern void nullsub_54();
|
||||
extern void sub_8039E18();
|
||||
|
||||
void sub_803A1C0(u8 r0)
|
||||
void SetWonderMailMainMenuState(u8 r0)
|
||||
{
|
||||
*gUnknown_203B3E8 = r0;
|
||||
nullsub_54();
|
||||
|
||||
@@ -9,6 +9,7 @@ extern u8 sub_8002658(s16);
|
||||
|
||||
struct unkEventStruct
|
||||
{
|
||||
// size: 0x4
|
||||
s16 unk0;
|
||||
u8 unk2; // Seems like friend area number
|
||||
};
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "constants/species.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
|
||||
const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON] = {
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "pokemon.h"
|
||||
#include "file_system.h"
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "felicity_bank.h"
|
||||
#include "memory.h"
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "friend_rescue.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "friend_rescue.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern void sub_80338C4(u32);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "file_system.h"
|
||||
#include "pokemon.h"
|
||||
#include "memory.h"
|
||||
#include "constants/species.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ extern void sub_8091840(u8);
|
||||
extern u8 GetItemType(u8);
|
||||
extern u32 GetItemUnkThrow(u8, u32);
|
||||
extern s32 sub_80915D4(struct ItemStruct_203B460 *);
|
||||
extern u8 sub_80914E4(u8);
|
||||
extern bool8 sub_80914E4(u8);
|
||||
extern void sub_8090F58(u32, u8 *, struct ItemStruct_203B460 *, u32);
|
||||
|
||||
void LoadItemParameters(void)
|
||||
@@ -230,7 +230,7 @@ s32 sub_8090C30(struct ItemStruct_203B460 *param_1)
|
||||
|
||||
s32 sub_8090C7C(struct ItemStruct_203B460 *param_1)
|
||||
{
|
||||
if (sub_80914E4(param_1->itemIndex) == 0) {
|
||||
if (!sub_80914E4(param_1->itemIndex)) {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
@@ -245,7 +245,7 @@ s32 sub_8090C7C(struct ItemStruct_203B460 *param_1)
|
||||
|
||||
s32 sub_8090CCC(struct ItemStruct_203B460 *param_1)
|
||||
{
|
||||
if (sub_80914E4(param_1->itemIndex) == 0) {
|
||||
if (!sub_80914E4(param_1->itemIndex)) {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "file_system.h"
|
||||
#include "pokemon.h"
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "kangaskhan_storage.h"
|
||||
#include "memory.h"
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "file_system.h"
|
||||
#include "pokemon.h"
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "kangaskhan_storage.h"
|
||||
|
||||
extern struct unkStruct_203B208 *gUnknown_203B208;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "file_system.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "input.h"
|
||||
#include "kecleon_items.h"
|
||||
#include "memory.h"
|
||||
@@ -28,7 +27,7 @@ extern void sub_8019D30();
|
||||
extern void sub_8019D4C();
|
||||
extern void sub_8019D68();
|
||||
extern void sub_8018D30();
|
||||
extern void sub_8018E88();
|
||||
extern void UpdateKecleonStoreDialogue();
|
||||
|
||||
u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
||||
{
|
||||
@@ -43,7 +42,7 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
||||
switch(param_1)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B210->unk4 = 1;
|
||||
gUnknown_203B210->unk4 = TRUE;
|
||||
gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile;
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
|
||||
@@ -51,15 +50,15 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
||||
strcpy(gUnknown_202E1C8 - 0x50, monName);
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_203B210->unk4 = 1;
|
||||
gUnknown_203B210->unkE4 = 0;
|
||||
gUnknown_203B210->unk4 = TRUE;
|
||||
gUnknown_203B210->unkE4 = NULL;
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
|
||||
monName = GetMonSpecies( SPECIES_KECLEON);
|
||||
strcpy(gUnknown_202E1C8 - 0x50, monName);
|
||||
break;
|
||||
case 2:
|
||||
gUnknown_203B210->unk4 = 0;
|
||||
gUnknown_203B210->unk4 = FALSE;
|
||||
gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile;
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
|
||||
@@ -67,8 +66,8 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
||||
strcpy(gUnknown_202E1C8 - 0x50, monName);
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B210->unk4 = 0;
|
||||
gUnknown_203B210->unkE4 = 0;
|
||||
gUnknown_203B210->unk4 = FALSE;
|
||||
gUnknown_203B210->unkE4 = NULL;
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
|
||||
monName = GetMonSpecies( SPECIES_KECLEON);
|
||||
@@ -148,7 +147,7 @@ void UpdateKecleonStoreState(u32 newState)
|
||||
{
|
||||
gUnknown_203B210->currState = newState;
|
||||
sub_8018D30();
|
||||
sub_8018E88();
|
||||
UpdateKecleonStoreDialogue();
|
||||
}
|
||||
|
||||
void sub_8018D30(void)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "file_system.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "input.h"
|
||||
#include "kecleon_items.h"
|
||||
#include "gUnknown_203B460.h"
|
||||
@@ -10,7 +9,7 @@ extern struct unkStruct_203B210 *gUnknown_203B210;
|
||||
extern struct unkStruct_203B460 *gUnknown_203B460;
|
||||
|
||||
extern u32 sub_8090CCC(struct ItemStruct_203B460 *);
|
||||
extern u8 sub_80914E4(u8);
|
||||
extern bool8 sub_80914E4(u8);
|
||||
extern u32 sub_8091814(void);
|
||||
extern u32 sub_8091A48(void);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
@@ -37,13 +36,13 @@ void sub_8019B08(void)
|
||||
case 3:
|
||||
gUnknown_203B210->unk24 = sub_801A8AC();
|
||||
gUnknown_203B210->unk1C = gUnknown_203B460->fill0[gUnknown_203B210->unk24];
|
||||
gUnknown_203B210->unk10 = sub_8090CCC(&gUnknown_203B210->unk1C);
|
||||
gUnknown_203B210->itemSellPrice = sub_8090CCC(&gUnknown_203B210->unk1C);
|
||||
UpdateKecleonStoreState(0x1c);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B210->unk24 = sub_801A8AC();
|
||||
gUnknown_203B210->unk1C = gUnknown_203B460->fill0[gUnknown_203B210->unk24];
|
||||
gUnknown_203B210->unk10 = sub_8090CCC(&gUnknown_203B210->unk1C);
|
||||
gUnknown_203B210->itemSellPrice = sub_8090CCC(&gUnknown_203B210->unk1C);
|
||||
sub_8099690(0);
|
||||
UpdateKecleonStoreState(0x1d);
|
||||
break;
|
||||
@@ -63,7 +62,7 @@ void sub_8019BBC(void)
|
||||
int menuAction;
|
||||
|
||||
menuAction = 0;
|
||||
if (gUnknown_203B210->unk4 != 0) {
|
||||
if (gUnknown_203B210->unk4) {
|
||||
sub_8019EDC(0);
|
||||
}
|
||||
else {
|
||||
@@ -77,13 +76,11 @@ void sub_8019BBC(void)
|
||||
if (gUnknown_203B460->teamMoney == 0) {
|
||||
UpdateKecleonStoreState(0x6);
|
||||
}
|
||||
else if (gUnknown_203B210->itemSellPrice > gUnknown_203B460->teamMoney) {
|
||||
UpdateKecleonStoreState(0xC);
|
||||
}
|
||||
else {
|
||||
if (gUnknown_203B210->unk10 > gUnknown_203B460->teamMoney) {
|
||||
UpdateKecleonStoreState(0xC);
|
||||
}
|
||||
else {
|
||||
UpdateKecleonStoreState(0x16);
|
||||
}
|
||||
UpdateKecleonStoreState(0x16);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
@@ -107,17 +104,14 @@ void sub_8019C78(void)
|
||||
switch(menuAction){
|
||||
case 3:
|
||||
sub_8099690(0);
|
||||
if (sub_80914E4(gUnknown_203B210->unk1C.itemIndex) == '\0') {
|
||||
if (!sub_80914E4(gUnknown_203B210->unk1C.itemIndex)) {
|
||||
UpdateKecleonStoreState(0xd);
|
||||
}
|
||||
else if (gUnknown_203B210->itemSellPrice + gUnknown_203B460->teamMoney > 99999) {
|
||||
UpdateKecleonStoreState(0xe);
|
||||
}
|
||||
else {
|
||||
if (gUnknown_203B210->unk10 + gUnknown_203B460->teamMoney > 99999) {
|
||||
UpdateKecleonStoreState(0xe);
|
||||
|
||||
}
|
||||
else {
|
||||
UpdateKecleonStoreState(0x1e);
|
||||
}
|
||||
UpdateKecleonStoreState(0x1e);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
@@ -172,7 +166,7 @@ void sub_8019D68(void)
|
||||
|
||||
u32 sub_8019D8C(void)
|
||||
{
|
||||
if(gUnknown_203B210->unk4 != 0)
|
||||
if(gUnknown_203B210->unk4)
|
||||
{
|
||||
return sub_8091814();
|
||||
}
|
||||
@@ -190,22 +184,20 @@ void sub_8019DAC(void)
|
||||
|
||||
gUnknown_203B210->unk14 = 0;
|
||||
gUnknown_203B210->unk18 = 0;
|
||||
iVar5 = 0;
|
||||
do {
|
||||
for(iVar5 = 0; iVar5 < 0x14; iVar5++){
|
||||
pbVar4 = &gUnknown_203B460->fill0[iVar5];
|
||||
if (((pbVar4->unk0 & 1) != 0) && (sub_80914E4(pbVar4->itemIndex) != 0)) {
|
||||
if (((pbVar4->unk0 & 1) != 0) && (sub_80914E4(pbVar4->itemIndex))) {
|
||||
iVar3 = sub_8090CCC(pbVar4);
|
||||
gUnknown_203B210->unk18 += iVar3;
|
||||
gUnknown_203B210->unk14++;
|
||||
}
|
||||
iVar5 = iVar5 + 1;
|
||||
} while (iVar5 < 0x14);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8019E04(int param_1)
|
||||
{
|
||||
|
||||
if (gUnknown_203B210->unk4 != 0) {
|
||||
if (gUnknown_203B210->unk4) {
|
||||
if (param_1 == 1)
|
||||
gUnknown_203B210->unkE0 = 1;
|
||||
else
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "file_system.h"
|
||||
#include "pokemon.h"
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "personality_test.h"
|
||||
#include "constants/emotions.h"
|
||||
#include "constants/species.h"
|
||||
#include "random.h"
|
||||
#include "file_system.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "pokemon.h"
|
||||
#include "file_system.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern struct FileArchive gSystemFileArchive;
|
||||
extern const char gUnknown_81075F4;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern struct gPokemon *gMonsterParameters;
|
||||
extern const char gUnknown_8107600[];
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "pokemon.h"
|
||||
#include "file_system.h"
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "menu.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
@@ -62,14 +61,51 @@ extern const char Delivery_Text[];
|
||||
extern const char BulletinBoard_Text[];
|
||||
extern const char PostOffice_Text[];
|
||||
|
||||
enum PostOfficeStates
|
||||
{
|
||||
EXIT_POST_OFFICE_MENU,
|
||||
IM_GUIDE_START_MENU,
|
||||
ANYTHING_ELSE_START_MENU,
|
||||
RETURN_TO_START_MENU,
|
||||
DISPLAY_FRIEND_RESCUE_MENU,
|
||||
RETURN_TO_FRIEND_RESCUE,
|
||||
DISPLAY_GO_RESCUE_MENU,
|
||||
RETURN_TO_GO_RESCUE,
|
||||
DISPLAY_GET_HELP_MENU,
|
||||
RETURN_TO_GET_HELP,
|
||||
};
|
||||
|
||||
enum PostOfficeMenuActions
|
||||
{
|
||||
POST_OFFICE,
|
||||
BULLETIN_BOARD,
|
||||
DELIVERY,
|
||||
FRIEND_RESCUE,
|
||||
CANCEL,
|
||||
EXIT,
|
||||
FRIEND_RESCUE_INFO,
|
||||
GO_RESCUE,
|
||||
GET_HELP_MENU,
|
||||
DELETING_MAIL,
|
||||
RESCUE_PROCEDURES,
|
||||
RECEIVE_SOS_MAIL,
|
||||
LEAVE_FOR_RESCUE,
|
||||
SEND_AOK_MAIL,
|
||||
GET_THANK_YOU_MAIL,
|
||||
GETTING_HELP,
|
||||
SEND_SOS_MAIL,
|
||||
RECEIVE_AOK_MAIL,
|
||||
SEND_THANK_YOU_MAIL
|
||||
};
|
||||
|
||||
const struct MenuItem gPostOfficeHelpStartMenu[] =
|
||||
{
|
||||
{PostOffice_Text, 0x0},
|
||||
{BulletinBoard_Text, 0x1},
|
||||
{Delivery_Text, 0x2},
|
||||
{FriendRescue_80E0A80,0x3},
|
||||
{Cancel_80E0A78,0x4},
|
||||
{NULL,0x5}
|
||||
{PostOffice_Text, POST_OFFICE},
|
||||
{BulletinBoard_Text, BULLETIN_BOARD},
|
||||
{Delivery_Text, DELIVERY},
|
||||
{FriendRescue_80E0A80, FRIEND_RESCUE},
|
||||
{Cancel_80E0A78, CANCEL},
|
||||
{NULL, EXIT}
|
||||
};
|
||||
|
||||
ALIGNED(4) const char Cancel_80E0A78[] = _("Cancel");
|
||||
@@ -80,12 +116,12 @@ ALIGNED(4) const char PostOffice_Text[] = _("Post Office");
|
||||
|
||||
const struct MenuItem gPostOfficeHelpFriendRescueMenu[] =
|
||||
{
|
||||
{FriendRescueInfo_Text, 0x6},
|
||||
{GoRescue_Text, 0x7},
|
||||
{GetHelp_Text, 0x8},
|
||||
{DeletingMailInfo_Text,0x9},
|
||||
{Exit_80EA0EC,0x5},
|
||||
{NULL,0x5}
|
||||
{FriendRescueInfo_Text, FRIEND_RESCUE_INFO},
|
||||
{GoRescue_Text, GO_RESCUE},
|
||||
{GetHelp_Text, GET_HELP_MENU},
|
||||
{DeletingMailInfo_Text, DELETING_MAIL},
|
||||
{Exit_80EA0EC, EXIT},
|
||||
{NULL, EXIT}
|
||||
};
|
||||
|
||||
ALIGNED(4) const char Exit_80EA0EC[] = _("Exit");
|
||||
@@ -97,13 +133,13 @@ ALIGNED(4) const char FriendRescueInfo_Text[] = _("Friend Rescue Info");
|
||||
|
||||
const struct MenuItem gPostOfficeHelpGoRescueMenu[] =
|
||||
{
|
||||
{RescueProcedures_Text, 0xA},
|
||||
{ReceiveSOSMail_Text, 0xB},
|
||||
{LeaveForRescue_Text, 0xC},
|
||||
{SendAOKMail_Text, 0xD},
|
||||
{GetThankYouMail_Text,0xE},
|
||||
{Exit_80EA0EC,0x5},
|
||||
{NULL,0x5}
|
||||
{RescueProcedures_Text, RESCUE_PROCEDURES},
|
||||
{ReceiveSOSMail_Text, RECEIVE_SOS_MAIL},
|
||||
{LeaveForRescue_Text, LEAVE_FOR_RESCUE},
|
||||
{SendAOKMail_Text, SEND_AOK_MAIL},
|
||||
{GetThankYouMail_Text, GET_THANK_YOU_MAIL},
|
||||
{Exit_80EA0EC, EXIT},
|
||||
{NULL, EXIT}
|
||||
};
|
||||
|
||||
ALIGNED(4) const char GetThankYouMail_Text[] = _("Get Thank-You Mail");
|
||||
@@ -115,12 +151,12 @@ ALIGNED(4) const char RescueProcedures_Text[] = _("Rescue Procedures");
|
||||
|
||||
const struct MenuItem gPostOfficeHelpGetHelpMenu[] =
|
||||
{
|
||||
{GettingHelp_Text, 0xF},
|
||||
{SendSOSMail_Text, 0x10},
|
||||
{ReceiveAOKMail_Text, 0x11},
|
||||
{SendThankYouMail_Text,0x12},
|
||||
{Exit_80EA0EC,0x5},
|
||||
{NULL,0x5}
|
||||
{GettingHelp_Text, GETTING_HELP},
|
||||
{SendSOSMail_Text, SEND_SOS_MAIL},
|
||||
{ReceiveAOKMail_Text, RECEIVE_AOK_MAIL},
|
||||
{SendThankYouMail_Text, SEND_THANK_YOU_MAIL},
|
||||
{Exit_80EA0EC, EXIT},
|
||||
{NULL, EXIT}
|
||||
};
|
||||
|
||||
ALIGNED(4) const char SendThankYouMail_Text[] = _("Send Thank-You Mail");
|
||||
@@ -168,13 +204,13 @@ extern void sub_801317C(void *);
|
||||
|
||||
void UpdateHelperPelipperState(u8);
|
||||
void HandlePostOfficeHelpStartMenuSelection();
|
||||
void sub_8031848();
|
||||
void ReturnToPostOfficeStartMenu();
|
||||
extern void HandlePostOfficeHelpFriendRescueMenuSelection();
|
||||
extern void sub_80318D0();
|
||||
extern void ReturnToFriendRescueMenu();
|
||||
extern void HandlePostOfficeHelpGoRescueMenuSelection();
|
||||
extern void sub_803192C();
|
||||
extern void ReturntoGoRescueMenu();
|
||||
extern void HandlePostOfficeHelpGetHelpMenuSelection();
|
||||
extern void sub_8031988();
|
||||
extern void ReturnToGetHelpMenu();
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern s32 sub_80969D0(u8);
|
||||
extern void sub_8012D08(struct UnkTextStruct2 *, s32);
|
||||
@@ -208,40 +244,40 @@ u32 CreateHelperPelipperMenu(s16 speciesID)
|
||||
}
|
||||
}
|
||||
gPostOfficeHelper->currMenuChoice = 0;
|
||||
UpdateHelperPelipperState(1);
|
||||
UpdateHelperPelipperState(IM_GUIDE_START_MENU);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
u32 sub_8031540(void)
|
||||
u32 HelperPelliperCallback(void)
|
||||
{
|
||||
switch(gPostOfficeHelper->state) {
|
||||
case 1:
|
||||
case 2:
|
||||
case IM_GUIDE_START_MENU:
|
||||
case ANYTHING_ELSE_START_MENU:
|
||||
HandlePostOfficeHelpStartMenuSelection();
|
||||
break;
|
||||
case 3:
|
||||
sub_8031848();
|
||||
case RETURN_TO_START_MENU:
|
||||
ReturnToPostOfficeStartMenu();
|
||||
break;
|
||||
case 4:
|
||||
case DISPLAY_FRIEND_RESCUE_MENU:
|
||||
HandlePostOfficeHelpFriendRescueMenuSelection();
|
||||
break;
|
||||
case 5:
|
||||
sub_80318D0();
|
||||
case RETURN_TO_FRIEND_RESCUE:
|
||||
ReturnToFriendRescueMenu();
|
||||
break;
|
||||
case 6:
|
||||
case DISPLAY_GO_RESCUE_MENU:
|
||||
HandlePostOfficeHelpGoRescueMenuSelection();
|
||||
break;
|
||||
case 7:
|
||||
sub_803192C();
|
||||
case RETURN_TO_GO_RESCUE:
|
||||
ReturntoGoRescueMenu();
|
||||
break;
|
||||
case 0:
|
||||
case EXIT_POST_OFFICE_MENU:
|
||||
return 3;
|
||||
case 8:
|
||||
case DISPLAY_GET_HELP_MENU:
|
||||
HandlePostOfficeHelpGetHelpMenuSelection();
|
||||
break;
|
||||
case 9:
|
||||
sub_8031988();
|
||||
case RETURN_TO_GET_HELP:
|
||||
ReturnToGetHelpMenu();
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -271,85 +307,85 @@ void UpdateHelperPelipperText(void)
|
||||
|
||||
switch(gPostOfficeHelper->state)
|
||||
{
|
||||
case 8:
|
||||
case DISPLAY_GET_HELP_MENU:
|
||||
sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpGetHelpMenu, 0, 4, 0, faceFile, 0xC);
|
||||
break;
|
||||
case 9:
|
||||
case RETURN_TO_GET_HELP:
|
||||
switch(gPostOfficeHelper->currMenuChoice)
|
||||
{
|
||||
case 15:
|
||||
case GETTING_HELP:
|
||||
sub_80141B4(gGettingHelpExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 16:
|
||||
case SEND_SOS_MAIL:
|
||||
sub_80141B4(gSendSOSMailExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 17:
|
||||
case RECEIVE_AOK_MAIL:
|
||||
sub_80141B4(gReceiveAOKMailExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 18:
|
||||
case SEND_THANK_YOU_MAIL:
|
||||
sub_80141B4(gSendThankYouMailExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
case DISPLAY_GO_RESCUE_MENU:
|
||||
sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpGoRescueMenu, 0, 4, 0, faceFile, 0xC);
|
||||
break;
|
||||
case 7:
|
||||
case RETURN_TO_GO_RESCUE:
|
||||
switch(gPostOfficeHelper->currMenuChoice)
|
||||
{
|
||||
case 10:
|
||||
case RESCUE_PROCEDURES:
|
||||
sub_80141B4(gRescueProceduresExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 11:
|
||||
case RECEIVE_SOS_MAIL:
|
||||
sub_80141B4(gReceiveSOSMailExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 13:
|
||||
case SEND_AOK_MAIL:
|
||||
sub_80141B4(gSendAOKMailExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 12:
|
||||
case LEAVE_FOR_RESCUE:
|
||||
sub_80141B4(gLeaveForRescueExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 14:
|
||||
case GET_THANK_YOU_MAIL:
|
||||
sub_80141B4(gGetThankYouMailExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case IM_GUIDE_START_MENU:
|
||||
sub_8014248(gImYourGuide, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpStartMenu, 0, 4, 0, faceFile, 0xC);
|
||||
break;
|
||||
case 2:
|
||||
case ANYTHING_ELSE_START_MENU:
|
||||
sub_8014248(gAnythingElse, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpStartMenu, 0, 4, 0, faceFile, 0xC);
|
||||
break;
|
||||
case 3:
|
||||
case RETURN_TO_START_MENU:
|
||||
switch(gPostOfficeHelper->currMenuChoice)
|
||||
{
|
||||
case 0:
|
||||
case POST_OFFICE:
|
||||
sub_80141B4(gPostOfficeExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 1:
|
||||
case BULLETIN_BOARD:
|
||||
sub_80141B4(gBulletinBoardExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 2:
|
||||
case DELIVERY:
|
||||
sub_80141B4(gDeliveryExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case DISPLAY_FRIEND_RESCUE_MENU:
|
||||
sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpFriendRescueMenu, 0, 4, 0, faceFile, 0xC);
|
||||
break;
|
||||
case 5:
|
||||
case RETURN_TO_FRIEND_RESCUE:
|
||||
switch(gPostOfficeHelper->currMenuChoice)
|
||||
{
|
||||
case 6:
|
||||
case FRIEND_RESCUE_INFO:
|
||||
sub_80141B4(gFriendRescueExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
case 9:
|
||||
case DELETING_MAIL:
|
||||
sub_80141B4(gDeletingMailExplaination, 0, faceFile, 0x10d);
|
||||
break;
|
||||
default:
|
||||
@@ -375,30 +411,30 @@ void HandlePostOfficeHelpStartMenuSelection(void)
|
||||
{
|
||||
switch(chosenAction)
|
||||
{
|
||||
case 4:
|
||||
case 5:
|
||||
UpdateHelperPelipperState(0);
|
||||
case CANCEL:
|
||||
case EXIT:
|
||||
UpdateHelperPelipperState(EXIT_POST_OFFICE_MENU);
|
||||
break;
|
||||
case 3:
|
||||
case FRIEND_RESCUE:
|
||||
gPostOfficeHelper->currMenuChoice = chosenAction;
|
||||
UpdateHelperPelipperState(4);
|
||||
UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case POST_OFFICE:
|
||||
case BULLETIN_BOARD:
|
||||
case DELIVERY:
|
||||
gPostOfficeHelper->currMenuChoice = chosenAction;
|
||||
UpdateHelperPelipperState(3);
|
||||
UpdateHelperPelipperState(RETURN_TO_START_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8031848(void)
|
||||
void ReturnToPostOfficeStartMenu(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
UpdateHelperPelipperState(2);
|
||||
UpdateHelperPelipperState(ANYTHING_ELSE_START_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -409,30 +445,30 @@ void HandlePostOfficeHelpFriendRescueMenuSelection(void)
|
||||
{
|
||||
switch(chosenAction)
|
||||
{
|
||||
case 5:
|
||||
UpdateHelperPelipperState(2);
|
||||
case EXIT:
|
||||
UpdateHelperPelipperState(ANYTHING_ELSE_START_MENU);
|
||||
break;
|
||||
case 7:
|
||||
UpdateHelperPelipperState(6);
|
||||
case GO_RESCUE:
|
||||
UpdateHelperPelipperState(DISPLAY_GO_RESCUE_MENU);
|
||||
break;
|
||||
case 8:
|
||||
UpdateHelperPelipperState(8);
|
||||
case GET_HELP_MENU:
|
||||
UpdateHelperPelipperState(DISPLAY_GET_HELP_MENU);
|
||||
break;
|
||||
case 6:
|
||||
case 9:
|
||||
case FRIEND_RESCUE_INFO:
|
||||
case DELETING_MAIL:
|
||||
gPostOfficeHelper->currMenuChoice = chosenAction;
|
||||
UpdateHelperPelipperState(5);
|
||||
UpdateHelperPelipperState(RETURN_TO_FRIEND_RESCUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80318D0(void)
|
||||
void ReturnToFriendRescueMenu(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
UpdateHelperPelipperState(4);
|
||||
UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,27 +479,27 @@ void HandlePostOfficeHelpGoRescueMenuSelection(void)
|
||||
{
|
||||
switch(chosenAction)
|
||||
{
|
||||
case 5:
|
||||
UpdateHelperPelipperState(4);
|
||||
case EXIT:
|
||||
UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU);
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case RESCUE_PROCEDURES:
|
||||
case RECEIVE_SOS_MAIL:
|
||||
case LEAVE_FOR_RESCUE:
|
||||
case SEND_AOK_MAIL:
|
||||
case GET_THANK_YOU_MAIL:
|
||||
gPostOfficeHelper->currMenuChoice = chosenAction;
|
||||
UpdateHelperPelipperState(7);
|
||||
UpdateHelperPelipperState(RETURN_TO_GO_RESCUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_803192C(void)
|
||||
void ReturntoGoRescueMenu(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
UpdateHelperPelipperState(6);
|
||||
UpdateHelperPelipperState(DISPLAY_GO_RESCUE_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -474,26 +510,26 @@ void HandlePostOfficeHelpGetHelpMenuSelection(void)
|
||||
{
|
||||
switch(chosenAction)
|
||||
{
|
||||
case 5:
|
||||
UpdateHelperPelipperState(4);
|
||||
case EXIT:
|
||||
UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU);
|
||||
break;
|
||||
case 15:
|
||||
case 16:
|
||||
case 17:
|
||||
case 18:
|
||||
case GETTING_HELP:
|
||||
case SEND_SOS_MAIL:
|
||||
case RECEIVE_AOK_MAIL:
|
||||
case SEND_THANK_YOU_MAIL:
|
||||
gPostOfficeHelper->currMenuChoice = chosenAction;
|
||||
UpdateHelperPelipperState(9);
|
||||
UpdateHelperPelipperState(RETURN_TO_GET_HELP);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8031988(void)
|
||||
void ReturnToGetHelpMenu(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
UpdateHelperPelipperState(8);
|
||||
UpdateHelperPelipperState(DISPLAY_GET_HELP_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -503,7 +539,7 @@ u32 sub_80319A4(u8 param_1,u8 param_2,int param_3)
|
||||
gUnknown_203B330 = MemoryAlloc(0x78,8);
|
||||
gUnknown_203B330->unkC = param_1;
|
||||
gUnknown_203B330->unkD = param_2;
|
||||
sub_801317C(gUnknown_203B330);
|
||||
sub_801317C(&gUnknown_203B330->unk0);
|
||||
gUnknown_203B330->unk10 = param_3;
|
||||
gUnknown_203B330->unk14 = &gUnknown_203B330->unk18[param_3];
|
||||
sub_8031A2C();
|
||||
|
||||
@@ -731,7 +731,7 @@ void PrepareSavePakWrite(s16 PokemonID)
|
||||
gSavePakWrite->pokeID = id_s32;
|
||||
gSavePakWrite->faceFile = NULL;
|
||||
gSavePakWrite->faceData = NULL;
|
||||
if (PokemonID != 0) {
|
||||
if (PokemonID != SPECIES_NONE) {
|
||||
file = GetDialogueSpriteDataPtr(PokemonID);
|
||||
gSavePakWrite->faceFile = file;
|
||||
gSavePakWrite->faceData = file->data;
|
||||
|
||||
@@ -357,7 +357,7 @@ void TradeItem_SendItemConfirm(void)
|
||||
load -= gTradeItemsMenu->numItemsToSend;
|
||||
gUnknown_203B460->unk50[gTradeItemsMenu->chosenItem] = load;
|
||||
SetTradeItemMenu(TRADE_ITEMS_PREPARE_TRADE_SAVING);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
break;
|
||||
case 6:
|
||||
case 0:
|
||||
@@ -399,7 +399,7 @@ void sub_80368D4(void)
|
||||
{
|
||||
TradeItem_AddItem();
|
||||
SetTradeItemMenu(0x11);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -438,7 +438,7 @@ void sub_8036950(void)
|
||||
// Link Failure
|
||||
TradeItem_AddItem(); // Add back the item
|
||||
SetTradeItemMenu(0xb);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
else {
|
||||
PrintTradeItemsLinkError(gTradeItemsMenu->linkStatus);
|
||||
@@ -482,7 +482,7 @@ void sub_8036A34(void)
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
SetTradeItemMenu(0x10);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
#include "save.h"
|
||||
#include "pokemon.h"
|
||||
#include "file_system.h"
|
||||
#include "constants/species.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "gUnknown_203B460.h"
|
||||
|
||||
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
|
||||
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
|
||||
extern struct unkStruct_203B460 *gUnknown_203B460;
|
||||
|
||||
struct unkStruct_8095228
|
||||
{
|
||||
@@ -36,6 +37,8 @@ extern u8 sub_8030C20(u32);
|
||||
extern u32 sub_8031050();
|
||||
extern void sub_80310B4();
|
||||
extern u32 sub_8095350();
|
||||
extern u8 sub_801CF14(u32);
|
||||
extern u32 sub_802F298();
|
||||
|
||||
extern struct unkStruct_8095228 *sub_8095228(u8);
|
||||
extern u8 sub_80A2824(u32);
|
||||
@@ -478,7 +481,7 @@ void sub_8028E84()
|
||||
}
|
||||
sub_8028B04(24);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
|
||||
void sub_8028EAC()
|
||||
@@ -522,15 +525,14 @@ void sub_8028F04()
|
||||
s32 temp;
|
||||
s32 counter;
|
||||
|
||||
if(sub_80144A4(&temp) != 0)
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
return;
|
||||
for(counter = 0; counter <= 31; counter++)
|
||||
{
|
||||
sub_8095240(counter);
|
||||
}
|
||||
sub_8028B04(21);
|
||||
}
|
||||
for(counter = 0; counter <= 31; counter++)
|
||||
{
|
||||
sub_8095240(counter);
|
||||
}
|
||||
sub_8028B04(21);
|
||||
}
|
||||
|
||||
void sub_8028F30()
|
||||
@@ -543,7 +545,7 @@ void sub_8028F30()
|
||||
}
|
||||
sub_8028B04(22);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
|
||||
void sub_8028F58()
|
||||
@@ -839,7 +841,7 @@ void sub_8029374(void)
|
||||
}
|
||||
sub_8028B04(0x24);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
|
||||
void sub_802939C(void)
|
||||
@@ -1288,7 +1290,7 @@ void sub_8029AB0(void)
|
||||
}
|
||||
sub_8028B04(0x38);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
|
||||
void sub_8029AD8(void)
|
||||
@@ -1873,7 +1875,7 @@ void sub_802A4AC(void)
|
||||
{
|
||||
sub_802B2BC(0x18);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1994,7 +1996,7 @@ void sub_802A6F0(void)
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_802B2BC(0x18);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2005,7 +2007,7 @@ void sub_802A718(void)
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_802B2BC(0x25);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2017,3 +2019,341 @@ void sub_802A740(void)
|
||||
sub_802B2BC(0x1e);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A75C(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 7:
|
||||
// NOTE: if statement is needed to match
|
||||
if(gUnknown_203B2C4->unk538)
|
||||
sub_802B2BC(0x16);
|
||||
else
|
||||
sub_802B2BC(0x16);
|
||||
break;
|
||||
case 0:
|
||||
sub_802B2BC(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A798(void)
|
||||
{
|
||||
s32 temp;
|
||||
struct unkStruct_8095228 *return_var;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 7:
|
||||
return_var = sub_8095228(gUnknown_203B2C4->unk218);
|
||||
if(gUnknown_203B2C4->unk41C.unk41E != 0)
|
||||
{
|
||||
return_var->unk20 = gUnknown_203B2C4->unk41C;
|
||||
}
|
||||
gUnknown_203B460->unk50[gUnknown_203B2C4->unk41C.unk41E]--;
|
||||
sub_802B2BC(0x29);
|
||||
break;
|
||||
case 8:
|
||||
sub_802B2BC(0xB);
|
||||
break;
|
||||
case 0:
|
||||
sub_802B2BC(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A828(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_802B2BC(0x2A);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A850(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
if(!WriteSavePak())
|
||||
{
|
||||
FinishWriteSavePak();
|
||||
switch(gUnknown_203B2C4->unk534)
|
||||
{
|
||||
case 3:
|
||||
case 4:
|
||||
sub_802B2BC(0x1D);
|
||||
break;
|
||||
case 5:
|
||||
sub_802B2BC(0x19);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A8A0(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_802B2BC(0x13);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A8BC(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 0xA:
|
||||
switch(gUnknown_203B2C4->unk534)
|
||||
{
|
||||
case 3:
|
||||
case 4:
|
||||
sub_802B2BC(0x1D);
|
||||
break;
|
||||
case 5:
|
||||
sub_802B2BC(0x19);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
sub_802B2BC(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A910(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 9:
|
||||
if(sub_801CF14(0) != 0)
|
||||
{
|
||||
sub_802B2BC(0xA);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_802B2BC(0xB);
|
||||
}
|
||||
break;
|
||||
case 0xA:
|
||||
switch(gUnknown_203B2C4->unk534)
|
||||
{
|
||||
case 3:
|
||||
case 4:
|
||||
sub_802B2BC(0x1D);
|
||||
break;
|
||||
case 5:
|
||||
sub_802B2BC(0x19);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
sub_802B2BC(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A98C(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_802B2BC(0x8);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A9A8(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 0x7:
|
||||
switch(gUnknown_203B2C4->unk534)
|
||||
{
|
||||
case 3:
|
||||
case 4:
|
||||
sub_802B2BC(0x1D);
|
||||
break;
|
||||
case 5:
|
||||
sub_802B2BC(0x19);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
sub_802B2BC(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802A9FC(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 0x7:
|
||||
sub_802B2BC(0x26);
|
||||
break;
|
||||
case 0:
|
||||
sub_802B2BC(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802AA28(void)
|
||||
{
|
||||
s32 temp;
|
||||
struct unkStruct_8095228 *return_var;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
gUnknown_203B2C4->unk534 = temp;
|
||||
switch(gUnknown_203B2C4->unk538)
|
||||
{
|
||||
case 1:
|
||||
return_var = sub_8095228(sub_80953D4(5));
|
||||
if(return_var->unk20.unk41E != 0)
|
||||
{
|
||||
sub_802B2BC(7);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_802B2BC(9);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if(gUnknown_203B2C4->unk534 == 5)
|
||||
{
|
||||
sub_802B2BC(0x26);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_802B2BC(0x1D);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
sub_802B2BC(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802AAAC(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_802B2BC(1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802AAC8(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_802B2BC(3);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802AAE4(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 1:
|
||||
gUnknown_203B2C4->unk40 = 6;
|
||||
gUnknown_203B2C4->unk538 = 1;
|
||||
if(sub_8095324(5) == 0)
|
||||
{
|
||||
sub_802B2BC(4);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_802B2BC(0xF);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
gUnknown_203B2C4->unk40 = 7;
|
||||
gUnknown_203B2C4->unk538 = 2;
|
||||
sub_802B2BC(6);
|
||||
break;
|
||||
case 0:
|
||||
sub_802B2BC(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802AB60(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_802B2BC(0x22);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802AB7C(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_802B2BC(0x22);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_802AB98(void)
|
||||
{
|
||||
const char *monName;
|
||||
switch(sub_802F298())
|
||||
{
|
||||
case 3:
|
||||
sub_802F2C0();
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_PELIPPER);
|
||||
monName = GetMonSpecies(SPECIES_PELIPPER);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sub_8095240(sub_809539C(6, gUnknown_203B2C4->unk430));
|
||||
sub_802B2BC(0x24);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_131(void)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
#include "file_system.h"
|
||||
#include "input.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "save.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
|
||||
|
||||
struct unkStruct_203B2C8
|
||||
{
|
||||
@@ -41,15 +43,6 @@ struct unkStruct_203B2C8
|
||||
|
||||
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
|
||||
|
||||
struct unkStruct_41C
|
||||
{
|
||||
u8 unk41C;
|
||||
u8 unk41D;
|
||||
u8 unk41E;
|
||||
u8 unk41F;
|
||||
};
|
||||
|
||||
|
||||
struct unkStruct_8095228
|
||||
{
|
||||
u8 unk0;
|
||||
@@ -95,6 +88,16 @@ extern const char gUnknown_80DF9F0[];
|
||||
extern const char gUnknown_80DF9F8[];
|
||||
extern u8 sub_80023E4(u32);
|
||||
|
||||
extern void nullsub_131(void);
|
||||
extern void sub_802ABF8(void);
|
||||
|
||||
void sub_802B2BC(u32 newState)
|
||||
{
|
||||
gUnknown_203B2C4->state = newState;
|
||||
nullsub_131();
|
||||
sub_802ABF8();
|
||||
}
|
||||
|
||||
u32 sub_802B2D4(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
@@ -255,7 +258,7 @@ void sub_802B5B8(void)
|
||||
puVar3->unk28 = uVar2;
|
||||
sub_802B548(3);
|
||||
sub_8011C28(1);
|
||||
PrepareSavePakWrite(0);
|
||||
PrepareSavePakWrite(SPECIES_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
|
||||
struct unkStruct_203B2F8
|
||||
{
|
||||
// size: 0x208
|
||||
u32 state; // state
|
||||
s32 state; // state
|
||||
u32 unk4;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
@@ -15,8 +17,22 @@ struct unkStruct_203B2F8
|
||||
u32 unk6C;
|
||||
u32 unk70;
|
||||
u32 unk74;
|
||||
u8 fill78[0x118 - 0x78];
|
||||
u32 unk118;
|
||||
u8 fill11C[0x158 - 0x11C];
|
||||
u32 unk158;
|
||||
u8 fill15C[0x198 - 0x15C];
|
||||
u16 unk198[8];
|
||||
struct UnkTextStruct2 unk1A8[4];
|
||||
u32 unk1E4;
|
||||
};
|
||||
extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
|
||||
extern struct UnkTextStruct2 gUnknown_80DFE04;
|
||||
extern struct UnkTextStruct2 gUnknown_80DFE1C;
|
||||
extern struct UnkTextStruct2 gUnknown_80DFDD4;
|
||||
extern void sub_8012CAC(struct UnkTextStruct2 *, u32 *);
|
||||
extern void sub_802D63C(void);
|
||||
extern void sub_802D5A4(void);
|
||||
|
||||
extern u8 sub_8099328(u8 *);
|
||||
extern u32 sub_8011C1C();
|
||||
@@ -103,3 +119,34 @@ void sub_802D1A0(u32 newState)
|
||||
sub_802D1B8();
|
||||
sub_802D2A8();
|
||||
}
|
||||
|
||||
void sub_802D1B8(void)
|
||||
{
|
||||
s32 iVar2;
|
||||
sub_8006518(gUnknown_203B2F8->unk1A8);
|
||||
switch(gUnknown_203B2F8->state)
|
||||
{
|
||||
case 0xD:
|
||||
sub_802D5A4();
|
||||
gUnknown_203B2F8->unk1A8[2] = gUnknown_80DFE04;
|
||||
sub_8012CAC(&gUnknown_203B2F8->unk1A8[2], &gUnknown_203B2F8->unk118);
|
||||
gUnknown_203B2F8->unk1A8[2].unk0c = 6;
|
||||
break;
|
||||
case 0xE:
|
||||
sub_802D63C();
|
||||
gUnknown_203B2F8->unk1A8[3] = gUnknown_80DFE1C;
|
||||
sub_8012CAC(&gUnknown_203B2F8->unk1A8[3], &gUnknown_203B2F8->unk158);
|
||||
gUnknown_203B2F8->unk1A8[3].unk0c = 6;
|
||||
break;
|
||||
default:
|
||||
for(iVar2 = 0; iVar2 < 4; iVar2++)
|
||||
{
|
||||
gUnknown_203B2F8->unk1A8[iVar2] = gUnknown_80DFDD4;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2F8->unk1A8, 1, 1);
|
||||
}
|
||||
|
||||
@@ -3,30 +3,35 @@
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
#define WONDER_MAIL_MAIN_SCREEN 4
|
||||
#define EXIT_TO_MAIN_MENU 5
|
||||
#define COMMUNICATION_ERROR 10
|
||||
#define PASSWORD_SUCCESS 13
|
||||
#define PREPARE_SAVE 14
|
||||
#define SAVE_ADVENTURE 15
|
||||
#define WONDER_MAIL_ADDED 16
|
||||
#define PROMPT_PASSWORD_ENTRY 17
|
||||
#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 state; // state variable?
|
||||
u8 PasswordEntryBuffer[PASSWORD_BUFFER_SIZE]; // Wonder Mail Buffer...
|
||||
union UNK38
|
||||
{
|
||||
struct WonderMail decodedMail; // 0x14
|
||||
u8 unk38_u8[0x30]; // idk why it fills to 0x30 instead...
|
||||
} UNK38;
|
||||
u8 fill68[0x1EC - 0x68];
|
||||
struct UnkTextStruct2 unk1EC[4];
|
||||
u32 unk24C;
|
||||
u32 wonderMailStatus;
|
||||
u8 fill254[0x3C0 - 0x254];
|
||||
struct unkWonderMailData unk3C0; // 0x3C0 + 0x14
|
||||
struct WonderMail unk3C0;
|
||||
u8 fill3D0[0x490 - 0x3D4];
|
||||
u32 unk490;
|
||||
u32 unk494;
|
||||
@@ -40,7 +45,7 @@ extern u32 sub_8095324(u32);
|
||||
extern u32 sub_80144A4(s32 *);
|
||||
extern u32 sub_8011C1C(void);
|
||||
extern struct unkStruct_203B3E8 *gUnknown_203B3E8;
|
||||
extern void sub_803A1C0(u8);
|
||||
extern void SetWonderMailMainMenuState(u8);
|
||||
extern void sub_8030DE4(void);
|
||||
extern void sub_801B450(void);
|
||||
extern void sub_803084C(void);
|
||||
@@ -53,25 +58,25 @@ extern u8 sub_802D178();
|
||||
extern void sub_802D184();
|
||||
|
||||
extern s32 sub_80154F0();
|
||||
extern bool8 sub_803D358(u8 *, void *);
|
||||
extern bool8 sub_80959C0(void *);
|
||||
extern bool8 DecodeWonderMailPassword(u8 *, struct WonderMail *);
|
||||
extern bool8 IsValidWonderMail(struct WonderMail *WonderMailData);
|
||||
extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32);
|
||||
|
||||
void sub_8039BAC(u32);
|
||||
void sub_8039A18(void);
|
||||
void HandleWonderMailMainScreen(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 HandlePasswordSuccess(void);
|
||||
void HandlePrepareSaveScreen(void);
|
||||
void HandleSaveAdventureScreen(void);
|
||||
void HandleWonderMailAddedScreen(void);
|
||||
void sub_8039B3C(void);
|
||||
void sub_8039D0C(void);
|
||||
void sub_8039C60(void);
|
||||
void sub_8039DE8(void);
|
||||
void HandlePasswordEntryScreen(void);
|
||||
void HandleInvalidPasswordMenu(void);
|
||||
|
||||
|
||||
extern u32 gUnknown_80E7914;
|
||||
@@ -95,7 +100,7 @@ bool8 CreateWonderMailMenu(void)
|
||||
gUnknown_203B3E8 = MemoryAlloc(sizeof(struct unkStruct_203B3E8), 8);
|
||||
MemoryFill8((u8 *)gUnknown_203B3E8, 0, sizeof(struct unkStruct_203B3E8));
|
||||
|
||||
for(iVar2 = 0; iVar2 < 0x36; iVar2++){
|
||||
for(iVar2 = 0; iVar2 < PASSWORD_BUFFER_SIZE; iVar2++){
|
||||
gUnknown_203B3E8->PasswordEntryBuffer[iVar2] = 0;
|
||||
}
|
||||
|
||||
@@ -103,15 +108,15 @@ bool8 CreateWonderMailMenu(void)
|
||||
gUnknown_203B3E8->unk494 = 2;
|
||||
gUnknown_203B3E8->unk498 = 1;
|
||||
gUnknown_203B3E8->unk490 = 5; // ??? Why?
|
||||
sub_803A1C0(0x11); // 0x11 -> Display "Enter Wonder Mail Password"
|
||||
SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY); // -> Display "Enter Wonder Mail Password"
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 UpdateWonderMailMenu(void)
|
||||
{
|
||||
switch(gUnknown_203B3E8->unk0) {
|
||||
case 4:
|
||||
sub_8039A18();
|
||||
switch(gUnknown_203B3E8->state) {
|
||||
case WONDER_MAIL_MAIN_SCREEN:
|
||||
HandleWonderMailMainScreen();
|
||||
break;
|
||||
case EXIT_TO_MAIN_MENU: // When you exit out of the menu
|
||||
return 3;
|
||||
@@ -133,28 +138,28 @@ u8 UpdateWonderMailMenu(void)
|
||||
sub_8039D88();
|
||||
break;
|
||||
case PASSWORD_SUCCESS:
|
||||
sub_8039D28();
|
||||
HandlePasswordSuccess();
|
||||
break;
|
||||
case 14:
|
||||
sub_8039D68();
|
||||
case PREPARE_SAVE:
|
||||
HandlePrepareSaveScreen();
|
||||
break;
|
||||
case 15: // Saving adventure
|
||||
sub_8039DA4();
|
||||
case SAVE_ADVENTURE: // Saving adventure
|
||||
HandleSaveAdventureScreen();
|
||||
break;
|
||||
case 16: // Display "Recieved Wonder Mail was added" and go back to main menu
|
||||
sub_8039DCC();
|
||||
case WONDER_MAIL_ADDED: // Display "Recieved Wonder Mail was added" and go back to main menu
|
||||
HandleWonderMailAddedScreen();
|
||||
break;
|
||||
case 10:
|
||||
case COMMUNICATION_ERROR:
|
||||
sub_8039B3C();
|
||||
break;
|
||||
case 17: // "Please enter the Wonder Mail Password" Screen
|
||||
case PROMPT_PASSWORD_ENTRY: // "Please enter the Wonder Mail Password" Screen
|
||||
sub_8039D0C();
|
||||
break;
|
||||
case PASSWORD_ENTRY_SCREEN: // Password Entry
|
||||
sub_8039C60();
|
||||
HandlePasswordEntryScreen();
|
||||
break;
|
||||
case PASSWORD_INVALID:
|
||||
sub_8039DE8();
|
||||
HandleInvalidPasswordMenu();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -173,25 +178,25 @@ void CleanWonderMailMenu(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039A18(void)
|
||||
void HandleWonderMailMainScreen(void)
|
||||
{
|
||||
s32 local_8;
|
||||
s32 menuAction;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
if (sub_80144A4(&menuAction) == 0) {
|
||||
gUnknown_203B3E8->unk24C = 10;
|
||||
switch(local_8) {
|
||||
switch(menuAction) {
|
||||
case 3:
|
||||
case 4:
|
||||
gUnknown_203B3E8->unk490 = 3;
|
||||
sub_803A1C0(8);
|
||||
SetWonderMailMainMenuState(8);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B3E8->unk490 = 5;
|
||||
sub_803A1C0(17);
|
||||
SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY);
|
||||
break;
|
||||
case 0:
|
||||
case 8:
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -199,24 +204,24 @@ void sub_8039A18(void)
|
||||
|
||||
void sub_8039AA8(void)
|
||||
{
|
||||
s32 local_8;
|
||||
s32 menuAction;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
switch(local_8){
|
||||
if (sub_80144A4(&menuAction) == 0) {
|
||||
switch(menuAction){
|
||||
case 6:
|
||||
if (gUnknown_203B3E8->unk494 == 1) {
|
||||
sub_803A1C0(2);
|
||||
SetWonderMailMainMenuState(2);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(12);
|
||||
SetWonderMailMainMenuState(12);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
if (gUnknown_203B3E8->unk494 == 1) {
|
||||
sub_803A1C0(1);
|
||||
SetWonderMailMainMenuState(1);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(4);
|
||||
SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -225,7 +230,7 @@ void sub_8039AA8(void)
|
||||
|
||||
void sub_8039B14(void)
|
||||
{
|
||||
sub_803A1C0(6);
|
||||
SetWonderMailMainMenuState(6);
|
||||
}
|
||||
|
||||
void sub_8039B20(void)
|
||||
@@ -233,7 +238,7 @@ void sub_8039B20(void)
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
sub_803A1C0(9);
|
||||
SetWonderMailMainMenuState(9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +247,7 @@ void sub_8039B3C(void)
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
sub_803A1C0(4);
|
||||
SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,16 +259,16 @@ void sub_8039B58(void)
|
||||
if (gUnknown_203B3E8->wonderMailStatus == 0) {
|
||||
switch(gUnknown_203B3E8->unk24C){
|
||||
case 9:
|
||||
sub_803A1C0(7);
|
||||
SetWonderMailMainMenuState(7);
|
||||
break;
|
||||
case 10:
|
||||
sub_803A1C0(PASSWORD_SUCCESS);
|
||||
SetWonderMailMainMenuState(PASSWORD_SUCCESS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
sub_8039BAC(gUnknown_203B3E8->wonderMailStatus);
|
||||
sub_803A1C0(10);
|
||||
SetWonderMailMainMenuState(COMMUNICATION_ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -305,7 +310,7 @@ void sub_8039BAC(u32 arg)
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case COMMUNICATION_ERROR:
|
||||
case 11:
|
||||
case 12:
|
||||
case PASSWORD_SUCCESS:
|
||||
@@ -317,36 +322,36 @@ void sub_8039BAC(u32 arg)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039C60(void)
|
||||
void HandlePasswordEntryScreen(void)
|
||||
{
|
||||
int iVar2;
|
||||
|
||||
iVar2 = sub_80154F0();
|
||||
MemoryFill8((u8 *)&gUnknown_203B3E8->unk38, 0, 0x30);
|
||||
MemoryFill8(gUnknown_203B3E8->UNK38.unk38_u8, 0, sizeof(gUnknown_203B3E8->UNK38));
|
||||
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) )
|
||||
if ( !DecodeWonderMailPassword(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->UNK38.decodedMail) || !IsValidWonderMail(&gUnknown_203B3E8->UNK38.decodedMail) )
|
||||
{
|
||||
// Invalid password
|
||||
sub_803A1C0(PASSWORD_INVALID);
|
||||
SetWonderMailMainMenuState(PASSWORD_INVALID);
|
||||
}
|
||||
else {
|
||||
// Successful password
|
||||
// Copy the decoded data to another buffer?
|
||||
gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk38;
|
||||
gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->UNK38.decodedMail;
|
||||
|
||||
gUnknown_203B3E8->unk498 = 1;
|
||||
sub_803A1C0(PASSWORD_SUCCESS);
|
||||
SetWonderMailMainMenuState(PASSWORD_SUCCESS);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case 2:
|
||||
sub_80155F0();
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B3E8->unk1EC,1,1);
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -356,31 +361,31 @@ void sub_8039D0C(void)
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(PASSWORD_ENTRY_SCREEN);
|
||||
SetWonderMailMainMenuState(PASSWORD_ENTRY_SCREEN);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D28(void)
|
||||
void HandlePasswordSuccess(void)
|
||||
{
|
||||
if (sub_802D0E0() == 3) {
|
||||
gUnknown_203B3E8->unk498 = sub_802D178();
|
||||
sub_802D184();
|
||||
if (gUnknown_203B3E8->unk498 != 0) {
|
||||
sub_803A1C0(0xe);
|
||||
SetWonderMailMainMenuState(PREPARE_SAVE);
|
||||
}
|
||||
else {
|
||||
sub_803A1C0(0x10);
|
||||
SetWonderMailMainMenuState(WONDER_MAIL_ADDED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D68(void)
|
||||
void HandlePrepareSaveScreen(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(0xF);
|
||||
PrepareSavePakWrite(0); // "Saving Adventure.."
|
||||
SetWonderMailMainMenuState(SAVE_ADVENTURE);
|
||||
PrepareSavePakWrite(SPECIES_NONE); // "Saving Adventure.."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -389,11 +394,11 @@ void sub_8039D88(void)
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(8);
|
||||
SetWonderMailMainMenuState(8);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DA4(void)
|
||||
void HandleSaveAdventureScreen(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
@@ -401,34 +406,34 @@ void sub_8039DA4(void)
|
||||
if(!WriteSavePak())
|
||||
{
|
||||
FinishWriteSavePak();
|
||||
sub_803A1C0(0x10);
|
||||
SetWonderMailMainMenuState(WONDER_MAIL_ADDED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DCC(void)
|
||||
void HandleWonderMailAddedScreen(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039DE8(void)
|
||||
void HandleInvalidPasswordMenu(void)
|
||||
{
|
||||
int iVar2;
|
||||
s32 menuAction;
|
||||
|
||||
// Prompt to re-enter password
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
if(sub_80144A4(&menuAction) == 0)
|
||||
{
|
||||
switch(iVar2)
|
||||
switch(menuAction)
|
||||
{
|
||||
case 6: // Yes
|
||||
sub_803A1C0(0x11);
|
||||
SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY);
|
||||
break;
|
||||
case 0: // No
|
||||
sub_803A1C0(EXIT_TO_MAIN_MENU);
|
||||
SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "file_system.h"
|
||||
#include "input.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "memory.h"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user