more splitting and labeling with some decomp

This commit is contained in:
Seth Barberee
2021-06-18 17:56:20 -05:00
parent e806b05526
commit f1fdcc2b0a
57 changed files with 6697 additions and 7202 deletions

File diff suppressed because it is too large Load Diff

2024
asm/code_801B3C0.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -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:

View File

@@ -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]

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

3495
asm/code_80958E8.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View 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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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];

View File

@@ -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;

View File

@@ -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

View File

@@ -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);

View File

@@ -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
View 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;
}
}

View File

@@ -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++;

View File

@@ -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);

View File

@@ -1,5 +1,4 @@
#include "global.h"
#include "constants/species.h"
#include "gUnknown_203B418.h"
#include "code_8041D5C.h"
#include "friend_area.h"

View File

@@ -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
View 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;
}
}

View File

@@ -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();

View File

@@ -9,6 +9,7 @@ extern u8 sub_8002658(s16);
struct unkEventStruct
{
// size: 0x4
s16 unk0;
u8 unk2; // Seems like friend area number
};

View File

@@ -1,5 +1,4 @@
#include "global.h"
#include "constants/species.h"
#include "exclusive_pokemon.h"
const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON] = {

View File

@@ -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"

View File

@@ -1,7 +1,6 @@
#include "global.h"
#include "friend_rescue.h"
#include "pokemon.h"
#include "constants/species.h"
#include "memory.h"
#include "text.h"

View File

@@ -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 *);

View File

@@ -2,7 +2,6 @@
#include "file_system.h"
#include "pokemon.h"
#include "memory.h"
#include "constants/species.h"
#include "text.h"
#include "input.h"

View File

@@ -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 {

View File

@@ -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"

View File

@@ -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;

View File

@@ -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)

View File

@@ -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

View File

@@ -2,7 +2,6 @@
#include "file_system.h"
#include "pokemon.h"
#include "input.h"
#include "constants/species.h"
#include "memory.h"
#include "text.h"

View File

@@ -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"

View File

@@ -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;

View File

@@ -1,6 +1,5 @@
#include "global.h"
#include "pokemon.h"
#include "constants/species.h"
extern struct gPokemon *gMonsterParameters;
extern const char gUnknown_8107600[];

View File

@@ -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();

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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)
{
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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"