mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-27 19:24:58 -05:00
Thank You Mail and minor DungeonEnitity Work (#52)
* Thank You Mail: split out code into own file w/ data * use constant for facingDir
This commit is contained in:
1277
asm/code_80869E4.s
1277
asm/code_80869E4.s
File diff suppressed because it is too large
Load Diff
1050
asm/code_8086A3C.s
Normal file
1050
asm/code_8086A3C.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,450 +0,0 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8039E18
|
||||
sub_8039E18:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x14
|
||||
ldr r1, _08039E38
|
||||
ldr r0, [r1]
|
||||
ldrb r0, [r0]
|
||||
adds r6, r1, 0
|
||||
cmp r0, 0x13
|
||||
bls _08039E2E
|
||||
b _0803A1AA
|
||||
_08039E2E:
|
||||
lsls r0, 2
|
||||
ldr r1, _08039E3C
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08039E38: .4byte gUnknown_203B3E8
|
||||
_08039E3C: .4byte _08039E40
|
||||
.align 2, 0
|
||||
_08039E40:
|
||||
.4byte _08039E90
|
||||
.4byte _08039EB8
|
||||
.4byte _0803A1AA
|
||||
.4byte _08039EC8
|
||||
.4byte _08039EDC
|
||||
.4byte _0803A1AA
|
||||
.4byte _08039FF4
|
||||
.4byte _08039FA4
|
||||
.4byte _08039FCC
|
||||
.4byte _0803A00C
|
||||
.4byte _0803A1AA
|
||||
.4byte _0803A1AA
|
||||
.4byte _0803A1AA
|
||||
.4byte _08039F04
|
||||
.4byte _08039F68
|
||||
.4byte _0803A1AA
|
||||
.4byte _08039FAC
|
||||
.4byte _0803A152
|
||||
.4byte _0803A168
|
||||
.4byte _0803A18E
|
||||
_08039E90:
|
||||
ldr r0, _08039EB0
|
||||
ldr r3, _08039EB4
|
||||
movs r2, 0
|
||||
str r2, [sp]
|
||||
movs r1, 0x4
|
||||
str r1, [sp, 0x4]
|
||||
str r2, [sp, 0x8]
|
||||
str r2, [sp, 0xC]
|
||||
adds r1, 0xFD
|
||||
str r1, [sp, 0x10]
|
||||
movs r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8014248
|
||||
b _0803A1AA
|
||||
.align 2, 0
|
||||
_08039EB0: .4byte gUnknown_80E7AC4
|
||||
_08039EB4: .4byte gUnknown_80E786C
|
||||
_08039EB8:
|
||||
ldr r0, _08039EC0
|
||||
ldr r3, _08039EC4
|
||||
b _08039EE0
|
||||
.align 2, 0
|
||||
_08039EC0: .4byte gUnknown_80E7AE0
|
||||
_08039EC4: .4byte gUnknown_80E7894
|
||||
_08039EC8:
|
||||
bl ResetUnusedInputStruct
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
bl sub_802EF48
|
||||
b _0803A1AA
|
||||
_08039EDC:
|
||||
ldr r0, _08039EFC
|
||||
ldr r3, _08039F00
|
||||
_08039EE0:
|
||||
movs r2, 0
|
||||
str r2, [sp]
|
||||
movs r1, 0x4
|
||||
str r1, [sp, 0x4]
|
||||
str r2, [sp, 0x8]
|
||||
str r2, [sp, 0xC]
|
||||
adds r1, 0xFD
|
||||
str r1, [sp, 0x10]
|
||||
movs r1, 0
|
||||
movs r2, 0x3
|
||||
bl sub_8014248
|
||||
b _0803A1AA
|
||||
.align 2, 0
|
||||
_08039EFC: .4byte gUnknown_80E7B14
|
||||
_08039F00: .4byte gUnknown_80E78D8
|
||||
_08039F04:
|
||||
ldr r0, [r6]
|
||||
ldr r2, _08039F3C
|
||||
adds r1, r0, r2
|
||||
movs r3, 0xF0
|
||||
lsls r3, 2
|
||||
adds r0, r3
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2,r4}
|
||||
stm r1!, {r2,r4}
|
||||
ldr r2, [r6]
|
||||
ldr r3, _08039F40
|
||||
adds r0, r2, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
bne _08039F44
|
||||
movs r4, 0x91
|
||||
lsls r4, 3
|
||||
adds r1, r2, r4
|
||||
subs r3, 0xA2
|
||||
adds r0, r2, r3
|
||||
str r0, [r1]
|
||||
adds r4, 0x4
|
||||
adds r1, r2, r4
|
||||
adds r3, 0x28
|
||||
adds r0, r2, r3
|
||||
str r0, [r1]
|
||||
b _08039F54
|
||||
.align 2, 0
|
||||
_08039F3C: .4byte 0x00000474
|
||||
_08039F40: .4byte 0x00000476
|
||||
_08039F44:
|
||||
movs r4, 0x91
|
||||
lsls r4, 3
|
||||
adds r0, r2, r4
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
ldr r3, _08039F60
|
||||
adds r0, r2, r3
|
||||
str r1, [r0]
|
||||
_08039F54:
|
||||
ldr r0, [r6]
|
||||
ldr r4, _08039F64
|
||||
adds r0, r4
|
||||
bl sub_802D098
|
||||
b _0803A1AA
|
||||
.align 2, 0
|
||||
_08039F60: .4byte 0x0000048c
|
||||
_08039F64: .4byte 0x00000474
|
||||
_08039F68:
|
||||
ldr r1, [r6]
|
||||
movs r2, 0x93
|
||||
lsls r2, 3
|
||||
adds r0, r1, r2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08039F9C
|
||||
movs r3, 0x92
|
||||
lsls r3, 3
|
||||
adds r0, r1, r3
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x4
|
||||
bne _08039F84
|
||||
b _0803A1AA
|
||||
_08039F84:
|
||||
cmp r0, 0x4
|
||||
bgt _08039F8E
|
||||
cmp r0, 0x3
|
||||
beq _08039F94
|
||||
b _0803A1AA
|
||||
_08039F8E:
|
||||
cmp r0, 0x5
|
||||
beq _08039F94
|
||||
b _0803A1AA
|
||||
_08039F94:
|
||||
ldr r0, _08039F98
|
||||
b _0803A154
|
||||
.align 2, 0
|
||||
_08039F98: .4byte gUnknown_80E7B48
|
||||
_08039F9C:
|
||||
ldr r0, _08039FA0
|
||||
b _0803A154
|
||||
.align 2, 0
|
||||
_08039FA0: .4byte gUnknown_80E7B48
|
||||
_08039FA4:
|
||||
ldr r0, _08039FA8
|
||||
b _0803A154
|
||||
.align 2, 0
|
||||
_08039FA8: .4byte gUnknown_80E7B68
|
||||
_08039FAC:
|
||||
ldr r0, [r6]
|
||||
movs r4, 0x93
|
||||
lsls r4, 3
|
||||
adds r0, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08039FC4
|
||||
ldr r0, _08039FC0
|
||||
b _0803A154
|
||||
.align 2, 0
|
||||
_08039FC0: .4byte gUnknown_80E7B88
|
||||
_08039FC4:
|
||||
ldr r0, _08039FC8
|
||||
b _0803A154
|
||||
.align 2, 0
|
||||
_08039FC8: .4byte gUnknown_80E7BC8
|
||||
_08039FCC:
|
||||
ldr r0, _08039FEC
|
||||
ldr r3, _08039FF0
|
||||
movs r2, 0
|
||||
str r2, [sp]
|
||||
movs r1, 0x4
|
||||
str r1, [sp, 0x4]
|
||||
str r2, [sp, 0x8]
|
||||
str r2, [sp, 0xC]
|
||||
adds r1, 0xFD
|
||||
str r1, [sp, 0x10]
|
||||
movs r1, 0
|
||||
movs r2, 0x6
|
||||
bl sub_8014248
|
||||
b _0803A1AA
|
||||
.align 2, 0
|
||||
_08039FEC: .4byte gUnknown_80E7BEC
|
||||
_08039FF0: .4byte gUnknown_80E78F8
|
||||
_08039FF4:
|
||||
movs r0, 0
|
||||
bl nullsub_23
|
||||
ldr r0, _0803A008
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl sub_80141B4
|
||||
b _0803A1AA
|
||||
.align 2, 0
|
||||
_0803A008: .4byte gUnknown_80E7C48
|
||||
_0803A00C:
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x94
|
||||
lsls r1, 2
|
||||
mov r8, r1
|
||||
add r0, r8
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
bl sub_8011830
|
||||
ldr r0, [r6]
|
||||
movs r7, 0x93
|
||||
lsls r7, 2
|
||||
adds r0, r7
|
||||
ldr r0, [r0]
|
||||
bl sub_8037B28
|
||||
ldr r2, [r6]
|
||||
mov r3, r8
|
||||
adds r1, r2, r3
|
||||
str r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _0803A03A
|
||||
b _0803A14C
|
||||
_0803A03A:
|
||||
adds r4, r7, 0
|
||||
adds r0, r2, r4
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x9
|
||||
beq _0803A04A
|
||||
cmp r0, 0xA
|
||||
beq _0803A0AA
|
||||
b _0803A0DE
|
||||
_0803A04A:
|
||||
movs r5, 0x95
|
||||
lsls r5, 2
|
||||
adds r0, r2, r5
|
||||
movs r1, 0
|
||||
movs r2, 0xB4
|
||||
bl MemoryFill8
|
||||
ldr r0, [r6]
|
||||
movs r1, 0xEF
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
bl sub_803B344
|
||||
adds r4, r0, 0
|
||||
ldr r1, [r4, 0x14]
|
||||
cmp r1, 0
|
||||
beq _0803A08C
|
||||
ldr r0, [r6]
|
||||
movs r2, 0x9A
|
||||
lsls r2, 2
|
||||
adds r0, r2
|
||||
movs r2, 0x28
|
||||
bl MemoryCopy8
|
||||
ldr r0, [r6]
|
||||
movs r3, 0xA4
|
||||
lsls r3, 2
|
||||
adds r0, r3
|
||||
ldr r1, [r4, 0x18]
|
||||
movs r2, 0x78
|
||||
bl MemoryCopy8
|
||||
_0803A08C:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
adds r0, r4, 0
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2,r4}
|
||||
stm r1!, {r2,r4}
|
||||
ldr r2, [r6]
|
||||
adds r0, r2, r7
|
||||
ldr r0, [r0]
|
||||
adds r1, r2, r5
|
||||
movs r3, 0xC2
|
||||
lsls r3, 2
|
||||
adds r2, r3
|
||||
b _0803A0D4
|
||||
_0803A0AA:
|
||||
movs r4, 0x95
|
||||
lsls r4, 2
|
||||
adds r0, r2, r4
|
||||
movs r1, 0
|
||||
movs r2, 0xB4
|
||||
bl MemoryFill8
|
||||
ldr r0, [r6]
|
||||
movs r5, 0xC2
|
||||
lsls r5, 2
|
||||
adds r0, r5
|
||||
movs r1, 0
|
||||
movs r2, 0xB4
|
||||
bl MemoryFill8
|
||||
ldr r2, [r6]
|
||||
adds r0, r2, r7
|
||||
ldr r0, [r0]
|
||||
adds r4, r2, r4
|
||||
adds r2, r5
|
||||
adds r1, r4, 0
|
||||
_0803A0D4:
|
||||
bl sub_8037D64
|
||||
ldr r1, [r6]
|
||||
add r1, r8
|
||||
str r0, [r1]
|
||||
_0803A0DE:
|
||||
ldr r4, _0803A134
|
||||
ldr r2, [r4]
|
||||
movs r5, 0x94
|
||||
lsls r5, 2
|
||||
adds r0, r2, r5
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0803A14C
|
||||
movs r1, 0x93
|
||||
lsls r1, 2
|
||||
adds r0, r2, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0xA
|
||||
bhi _0803A14C
|
||||
cmp r0, 0x9
|
||||
bcc _0803A14C
|
||||
movs r3, 0x95
|
||||
lsls r3, 2
|
||||
adds r1, r2, r3
|
||||
adds r3, 0xB4
|
||||
adds r2, r3
|
||||
bl sub_80381F4
|
||||
ldr r1, [r4]
|
||||
adds r1, r5
|
||||
str r0, [r1]
|
||||
bl sub_800D588
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0803A138
|
||||
ldr r1, [r4]
|
||||
movs r4, 0xF0
|
||||
lsls r4, 2
|
||||
adds r0, r1, r4
|
||||
movs r2, 0xC2
|
||||
lsls r2, 2
|
||||
adds r1, r2
|
||||
movs r2, 0xB4
|
||||
bl memcpy
|
||||
b _0803A14C
|
||||
.align 2, 0
|
||||
_0803A134: .4byte gUnknown_203B3E8
|
||||
_0803A138:
|
||||
ldr r1, [r4]
|
||||
movs r3, 0xF0
|
||||
lsls r3, 2
|
||||
adds r0, r1, r3
|
||||
movs r4, 0x95
|
||||
lsls r4, 2
|
||||
adds r1, r4
|
||||
movs r2, 0xB4
|
||||
bl memcpy
|
||||
_0803A14C:
|
||||
bl xxx_call_start_bg_music
|
||||
b _0803A1AA
|
||||
_0803A152:
|
||||
ldr r0, _0803A160
|
||||
_0803A154:
|
||||
ldr r3, _0803A164
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_80141B4
|
||||
b _0803A1AA
|
||||
.align 2, 0
|
||||
_0803A160: .4byte gUnknown_80E7C98
|
||||
_0803A164: .4byte 0x00000101
|
||||
_0803A168:
|
||||
ldr r0, [r6]
|
||||
movs r1, 0xF6
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
bl sub_8006518
|
||||
bl ResetUnusedInputStruct
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r1, [r6]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x5
|
||||
bl sub_80151C0
|
||||
b _0803A1AA
|
||||
_0803A18E:
|
||||
ldr r0, _0803A1B8
|
||||
ldr r3, _0803A1BC
|
||||
movs r2, 0
|
||||
str r2, [sp]
|
||||
movs r1, 0x4
|
||||
str r1, [sp, 0x4]
|
||||
str r2, [sp, 0x8]
|
||||
str r2, [sp, 0xC]
|
||||
adds r1, 0xFD
|
||||
str r1, [sp, 0x10]
|
||||
movs r1, 0
|
||||
movs r2, 0x6
|
||||
bl sub_8014248
|
||||
_0803A1AA:
|
||||
add sp, 0x14
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803A1B8: .4byte gUnknown_80E7CC4
|
||||
_0803A1BC: .4byte gUnknown_80E78F8
|
||||
thumb_func_end sub_8039E18
|
||||
|
||||
.align 2,0
|
||||
@@ -1,174 +1,5 @@
|
||||
.section .rodata
|
||||
|
||||
.global gUnknown_80DED48
|
||||
gUnknown_80DED48: @ 80DED48
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x15, 0x00, 0x04, 0x00
|
||||
.byte 0x06, 0x00, 0x05, 0x00
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DED60
|
||||
gUnknown_80DED60: @ 80DED60
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x16, 0x00, 0x07, 0x00
|
||||
.byte 0x06, 0x00, 0x05, 0x00
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DED78
|
||||
gUnknown_80DED78: @ 80DED78
|
||||
.4byte Confirm_80DED98
|
||||
.byte 0x0b, 0x00, 0x00, 0x00
|
||||
.4byte Info_80DED90
|
||||
.byte 0x0c, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global Info_80DED90
|
||||
Info_80DED90:
|
||||
.string "Info\0"
|
||||
.align 2,0
|
||||
|
||||
.global Confirm_80DED98
|
||||
Confirm_80DED98:
|
||||
.string "Confirm\0"
|
||||
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DEDB8
|
||||
gUnknown_80DEDB8: @ 80DEDB8
|
||||
.4byte SendThankYou_Text
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
.4byte GetThankYou_Text
|
||||
.byte 0x02, 0x00, 0x00, 0x00
|
||||
.4byte Cancel_80DEDD8
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global Cancel_80DEDD8
|
||||
Cancel_80DEDD8:
|
||||
.string "Cancel\0"
|
||||
.align 2,0
|
||||
|
||||
.global GetThankYou_Text
|
||||
GetThankYou_Text:
|
||||
.string "Get Thank-You Mail\0"
|
||||
.align 2,0
|
||||
|
||||
.global SendThankYou_Text
|
||||
SendThankYou_Text:
|
||||
.string "Send Thank-You Mail\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DEE08
|
||||
gUnknown_80DEE08: @ 80DEE08
|
||||
@ Thank You Mail Pelipper Menu
|
||||
.4byte GameLinkCable_Text
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.4byte Password_Text
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.4byte Cancel_80DEDD8
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global Password_Text
|
||||
Password_Text:
|
||||
.string "Password\0"
|
||||
.align 2,0
|
||||
|
||||
.global GameLinkCable_Text
|
||||
GameLinkCable_Text:
|
||||
.string "Game Link cable\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DEE44
|
||||
gUnknown_80DEE44: @ 80DEE44
|
||||
@ Game Link Cable Thank-You Mail Menu
|
||||
.4byte Yes_80DEE5C
|
||||
.byte 0x07, 0x00, 0x00, 0x00
|
||||
.4byte Cancel_80DEDD8
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global Yes_80DEE5C
|
||||
Yes_80DEE5C:
|
||||
.string "Yes\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DEE60
|
||||
gUnknown_80DEE60: @ 80DEE60
|
||||
.4byte Yes_80DEE5C
|
||||
.byte 0x07, 0x00, 0x00, 0x00
|
||||
.4byte No_80DEE78
|
||||
.byte 0x08, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global No_80DEE78
|
||||
No_80DEE78:
|
||||
.string "No\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DEE7C
|
||||
gUnknown_80DEE7C: @ 80DEE7C
|
||||
.4byte SendItem_Text
|
||||
.byte 0x09, 0x00, 0x00, 0x00
|
||||
.4byte DontSendItemText
|
||||
.byte 0x0a, 0x00, 0x00, 0x00
|
||||
.4byte Cancel_80DEDD8
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global DontSendItem_Text
|
||||
DontSendItemText:
|
||||
.string "Don~27t Send Item\0"
|
||||
.align 2,0
|
||||
|
||||
.global SendItem_Text
|
||||
SendItem_Text:
|
||||
.string "Send Item\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DEEBC
|
||||
gUnknown_80DEEBC: @ 80DEEBC
|
||||
.4byte SendWOItem_Text
|
||||
.byte 0x0a, 0x00, 0x00, 0x00
|
||||
.4byte Cancel_80DEDD8
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global SendWOItem_Text
|
||||
SendWOItem_Text:
|
||||
.string "Send w/o Item\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DEEE4
|
||||
gUnknown_80DEEE4: @ 80DEEE4
|
||||
.4byte Yes_80DEE5C
|
||||
.byte 0x07, 0x00, 0x00, 0x00
|
||||
.4byte No_80DEE78
|
||||
.byte 0x08, 0x00, 0x00, 0x00
|
||||
.4byte Cancel_80DEDD8
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
|
||||
.include "data/text/wonder_mail_2.inc"
|
||||
|
||||
.global gUnknown_80DFBD0
|
||||
gUnknown_80DFBD0: @ 80DFBD0
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
@@ -192,7 +23,7 @@ gUnknown_80DFBEC: @ 80DFBEC
|
||||
.byte 0x02, 0x00, 0x02, 0x00
|
||||
.byte 0x18, 0x00, 0x0e, 0x00
|
||||
.byte 0x0e, 0x00, 0x00, 0x00
|
||||
.byte 0xe8, 0xfb, 0x0d, 0x08
|
||||
.4byte gUnknown_80DFBE8
|
||||
|
||||
|
||||
.global gUnknown_80DFC04
|
||||
|
||||
@@ -1537,7 +1537,7 @@ gUnknown_81161E8: @ 81161E8
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.4byte CleanFelicityBank
|
||||
.4byte sub_80163A0
|
||||
.4byte FelicityBankCallback
|
||||
|
||||
.global gUnknown_81161F8
|
||||
gUnknown_81161F8: @ 81161F8
|
||||
@@ -1577,9 +1577,9 @@ gUnknown_8116238: @ 8116238
|
||||
.global gUnknown_8116248
|
||||
gUnknown_8116248: @ 8116248
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
.4byte sub_8029B50
|
||||
.4byte sub_8029E60
|
||||
.4byte sub_8029C98
|
||||
.4byte CreateThankYouMailPelipper
|
||||
.4byte CleanThankYouMailPelipper
|
||||
.4byte ThankYouMailPelipperCallback
|
||||
|
||||
.global gUnknown_8116258
|
||||
gUnknown_8116258: @ 8116258
|
||||
|
||||
@@ -1,248 +0,0 @@
|
||||
gUnknown_80DEF04:: @ 80DEF04
|
||||
.string " ...Oh?\n"
|
||||
.string "Something~27s gone wrong.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DEF28:: @ 80DEF28
|
||||
.string " ...Oh? The number of linked\n"
|
||||
.string "GBA systems is incorrect.\n"
|
||||
.string "Please try again from the start.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DEF80:: @ 80DEF80
|
||||
.string " ...Oh? It looks like your\n"
|
||||
.string "friend chose a different mode.\n"
|
||||
.string "Please try again from the start.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DEFDC:: @ 80DEFDC
|
||||
.string " ...Oh? It looks like your\n"
|
||||
.string "storage space is full. Please clear some\n"
|
||||
.string "space and try again from the start.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF044:: @ 80DF044
|
||||
.string " ...Oh?\n"
|
||||
.string "I think you~27ve received this mail before.\n"
|
||||
.string "You can~27t get the same mail twice.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF0A0:: @ 80DF0A0
|
||||
.string " ...Oh?\n"
|
||||
.string "I don~27t think you~27re eligible to receive\n"
|
||||
.string "this mail.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF0E0:: @ 80DF0E0
|
||||
.string " ...Oh?\n"
|
||||
.string "There is no room to receive new mail.\n"
|
||||
.string "Please delete some mail and try again.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF138:: @ 80DF138
|
||||
.string " ...Oh? Your friend didn~27t\n"
|
||||
.string "follow through on their side.\n"
|
||||
.string "Please try again from the start.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF194:: @ 80DF194
|
||||
.string " Your #CGThank-You Mail#R\n"
|
||||
.string "has been sent.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF1C0:: @ 80DF1C0
|
||||
.string " ...Oh?\n"
|
||||
.string "This password appears to be wrong.\n"
|
||||
.string "Would you like to try again?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF208:: @ 80DF208
|
||||
.string " ...Oh? This password doesn~27t\n"
|
||||
.string "appear to be for a #CGThank-You Mail#R.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF250:: @ 80DF250
|
||||
.string ": This is the counter for\n"
|
||||
.string "#CGThank-You Mail#R.#P"
|
||||
.string ": Oh~2c hi~2c #CN%s#R.\n"
|
||||
.string "I~27ve been waiting for you. You wanted me\n"
|
||||
.string "to process a #CGThank-You Mail#R?#P"
|
||||
.string ": Let me get on it right away.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF304:: @ 80DF304
|
||||
.string " Is it OK to send this\n"
|
||||
.string "#CGThank-You Mail#R?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF330:: @ 80DF330
|
||||
.string " Please choose the\n"
|
||||
.string "#CGThank-You Mail#R that you want to\n"
|
||||
.string "send to your friend.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF380:: @ 80DF380
|
||||
.string " OK. Please enter the\n"
|
||||
.string "#CGThank-You Mail password#R.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF3B4:: @ 80DF3B4
|
||||
.string " Please give this password\n"
|
||||
.string "to the friend that rescued your team.#P"
|
||||
.string " I also must save your\n"
|
||||
.string "adventure.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF418:: @ 80DF418
|
||||
.string " OK~2c here is your\n"
|
||||
.string "#CGThank-You Mail password#R.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF44C:: @ 80DF44C
|
||||
.string " I need to save your\n"
|
||||
.string "adventure.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF46C:: @ 80DF46C
|
||||
.string " There we go.\n"
|
||||
.string "I~27m all done.#P"
|
||||
.string " Doesn~27t it feel great to\n"
|
||||
.string "be appreciated for doing something good?\n"
|
||||
.string "Please keep up your rescue work!\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF4F4:: @ 80DF4F4
|
||||
.string " A #CGThank-You Mail#R has\n"
|
||||
.string "arrived from your friend for your rescue\n"
|
||||
.string "mission.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF544:: @ 80DF544
|
||||
.string "#+Communicating...\n"
|
||||
.string "#+Please wait with the power on.\n"
|
||||
.string "#+To cancel~2c press {B_BUTTON}.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF594:: @ 80DF594
|
||||
.string " There. I~27ve sent your\n"
|
||||
.string "#CGThank-You Mail#R.\n"
|
||||
.string "I need to save your adventure.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF5E4:: @ 80DF5E4
|
||||
.string " Please connect the GBA\n"
|
||||
.string "systems with a #CGGame Link cable#R.\n"
|
||||
.string "Is your friend also ready?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF63C:: @ 80DF63C
|
||||
.string " There~2c all done.\n"
|
||||
.string "#CN%s#R~2c I hope your friend\n"
|
||||
.string "appreciates your sense of gratitude.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF694:: @ 80DF694
|
||||
.string " The item you~27ve chosen\n"
|
||||
.string "here can~27t be exchanged later.\n"
|
||||
.string "Are you certain this item is OK?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF6F0:: @ 80DF6F0
|
||||
.string " I~27ve saved your adventure. \0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF710:: @ 80DF710
|
||||
.string " OK~2c please choose\n"
|
||||
.string "the item to be sent.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF73C:: @ 80DF73C
|
||||
.string " ...Oh?\n"
|
||||
.string "Your storage space is empty.\n"
|
||||
.string "What would you like to do?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF77C:: @ 80DF77C
|
||||
.string " Would you like to choose\n"
|
||||
.string "a #CGreward item#R from storage and\n"
|
||||
.string "send it with your mail?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF7D4:: @ 80DF7D4
|
||||
.string " ...Oh?\n"
|
||||
.string "You~27ve already attached a #CGreward item#R\n"
|
||||
.string "to this mail.#P"
|
||||
.string " I~27m sorry~2c but once an item\n"
|
||||
.string "has been attached to mail~2c it can~27t be\n"
|
||||
.string "exchanged.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF870:: @ 80DF870
|
||||
.string " Would you like to send it\n"
|
||||
.string "again with the item you chose before?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF8B4:: @ 80DF8B4
|
||||
.string " ...Oh?\n"
|
||||
.string "You don~27t seem to have a #CGThank-You Mail#R.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF8EC:: @ 80DF8EC
|
||||
.string " Hello.\n"
|
||||
.string "I handle #CGThank-You Mail#R.\n"
|
||||
.string "How may I serve you?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF928:: @ 80DF928
|
||||
.string " May I help you with\n"
|
||||
.string "anything else?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF94C:: @ 80DF94C
|
||||
.string " Please come see me\n"
|
||||
.string "anytime.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF96C:: @ 80DF96C
|
||||
.string " How would you like to send\n"
|
||||
.string "your #CGThank-You Mail#R?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF9A4:: @ 80DF9A4
|
||||
.string " How would you like to\n"
|
||||
.string "receive your friend~27s #CGThank-You Mail#R?\0"
|
||||
|
||||
.string "pksdir0\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF9F0:: @ 80DF9F0
|
||||
.string "????\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DF9F8:: @ 80DF9F8
|
||||
.string " Oh~2c hello!\n"
|
||||
.string "Your rescue mission went well~2c didn~27t it?\n"
|
||||
.string "I wouldn~27t expect any less~2c #CG%s#R!#P"
|
||||
.string " Well~2c well!\n"
|
||||
.string "Here is your reward from the Pokémon\n"
|
||||
.string "Rescue Organization!\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DFAA8:: @ 80DFAA8
|
||||
.string " I hope you will keep on\n"
|
||||
.string "rescuing your friends in\n"
|
||||
.string "dire straits.#P"
|
||||
.string " And now~2c I must save\n"
|
||||
.string "your adventure.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DFB14:: @ 80DFB14
|
||||
.string " Oh~2c yes~2c that~27s right.\n"
|
||||
.string "Please don~27t forget to send an #CGA-OK Mail#R\n"
|
||||
.string "to the friend you just rescued.#P"
|
||||
.string " Please give me a shout if\n"
|
||||
.string "you would like to send #CGA-OK Mail#R.\0"
|
||||
.align 2, 0
|
||||
|
||||
.string "pksdir0\0"
|
||||
.align 2, 0
|
||||
@@ -3,24 +3,35 @@
|
||||
|
||||
struct subStruct_8048524
|
||||
{
|
||||
u8 fill0[0x6];
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u8 fill8[0xE - 0x8];
|
||||
/* 0xE */ s16 HP; // HP??
|
||||
s16 unk10;
|
||||
u8 fill12[0x46 - 0x12];
|
||||
s8 unk46;
|
||||
u8 fill47[0xA4 - 0x47];
|
||||
u8 unkA4;
|
||||
/* 0x0 */ u8 unk0;
|
||||
/* 0x1 */ u8 unk1;
|
||||
/* 0x2 */ s16 species;
|
||||
/* 0x4 */ s16 transformSpecies;
|
||||
/* 0x6 */ bool8 isEnemy;
|
||||
/* 0x7 */ bool8 isLeader;
|
||||
/* 0x8 */ u8 shopKeeper;
|
||||
/* 0x9 */ u8 level;
|
||||
/* 0xA */ u16 partyIndex;
|
||||
/* 0xC */ u16 IQ;
|
||||
/* 0xE */ s16 HP;
|
||||
/* 0x10 */ s16 maxHP;
|
||||
/* 0x12 */ s16 bossHPBackup;
|
||||
u8 fill14[0x46 - 0x14];
|
||||
/* 0x46 */ s8 facingDir;
|
||||
u8 fill47[0x8C - 0x47];
|
||||
u8 unk8C[4];
|
||||
u8 fill90[0xA4 - 0x90];
|
||||
/* 0xA4 */ u8 clientFlags;
|
||||
u8 fillA5[0xAC - 0xA5];
|
||||
/* 0xAC */ u8 statusCondition;
|
||||
u8 fillAD[0xFB - 0xAD];
|
||||
u8 fillAD[0xF7 - 0xAD];
|
||||
/* 0xF7 */ bool8 isBoss;
|
||||
u8 fillF8[0xFB - 0xF8];
|
||||
u8 unkFB;
|
||||
u8 fillFC[0x112 - 0xFC];
|
||||
u8 unk112;
|
||||
/* 0x112 */ u8 stockpileCount;
|
||||
u8 fill113[0x13C - 0x113];
|
||||
u32 unk13C;
|
||||
/* 0x13C */ u32 belly;
|
||||
u8 fill140[0x15C - 0x140];
|
||||
u8 unk15C;
|
||||
u8 unk15D;
|
||||
|
||||
@@ -16,7 +16,11 @@ struct unkStruct_203B418
|
||||
u8 unk11;
|
||||
u8 fill12[0x16D - 0x12];
|
||||
u8 unk16D;
|
||||
u8 fill16E[0xE23C - 0x16E];
|
||||
u8 fill16E[0x65C - 0x16E];
|
||||
u8 unk65C;
|
||||
u8 fill65D[0x66A - 0x65D];
|
||||
u16 unk66A;
|
||||
u8 fill66B[0xE23C - 0x66C];
|
||||
s16 unkE23C;
|
||||
s16 unkE23E;
|
||||
u8 fillE240[0xE265 - 0xE240];
|
||||
|
||||
@@ -90,8 +90,8 @@ struct WonderMailStruct_203B2C4
|
||||
u8 unk42E;
|
||||
u32 unk430;
|
||||
u8 formattedString[0x100];
|
||||
s32 unk534;
|
||||
u32 unk538;
|
||||
s32 wonderMailMethod;
|
||||
u32 wonderMailMode;
|
||||
u8 unk53C[0xA];
|
||||
u32 unk548;
|
||||
u32 unk54C;
|
||||
@@ -110,5 +110,16 @@ struct WonderMailStruct_203B2C4
|
||||
|
||||
void sub_8028B04(u32 r0);
|
||||
|
||||
enum WonderMailMode {
|
||||
WONDER_MAIL_MODE_SEND = 1,
|
||||
WONDER_MAIL_MODE_RECEIVE = 2,
|
||||
};
|
||||
|
||||
enum WonderMailMethod {
|
||||
WONDER_MAIL_GAME_LINK = 3,
|
||||
WONDER_MAIL_PASSWORD = 5,
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -122,6 +122,7 @@ SECTIONS {
|
||||
src/wonder_mail_pre.o(.text);
|
||||
asm/wonder_mail.o(.text);
|
||||
src/wonder_mail.o(.text);
|
||||
src/thank_you_wonder_mail.o(.text);
|
||||
src/wonder_mail_2.o(.text);
|
||||
asm/wonder_mail_2.o(.text);
|
||||
src/wonder_mail_3.o(.text);
|
||||
@@ -155,7 +156,6 @@ SECTIONS {
|
||||
src/rescue_password_menu_1.o(.text);
|
||||
src/load_screen.o(.text);
|
||||
src/wonder_mail_main_menu.o(.text);
|
||||
asm/wonder_mail_main_menu.o(.text);
|
||||
src/ds_menus.o(.text);
|
||||
src/debug_menu.o(.text);
|
||||
asm/debug_menu.o(.text);
|
||||
@@ -186,6 +186,8 @@ SECTIONS {
|
||||
asm/code_807001C.o(.text);
|
||||
src/code_80869E4.o(.text);
|
||||
asm/code_80869E4.o(.text);
|
||||
src/code_8086A3C.o(.text);
|
||||
asm/code_8086A3C.o(.text);
|
||||
src/code_8057824_1.o(.text);
|
||||
asm/jirachi_wish.o(.text);
|
||||
src/code_80521D0_1.o(.text);
|
||||
@@ -307,6 +309,8 @@ SECTIONS {
|
||||
src/save.o(.rodata);
|
||||
data/data_80D47B8.o(.rodata);
|
||||
src/wonder_mail.o(.rodata);
|
||||
src/thank_you_wonder_mail.o(.rodata);
|
||||
src/wonder_mail_2.o(.rodata);
|
||||
data/data_80DED44.o(.rodata);
|
||||
src/post_office_guide.o(.rodata);
|
||||
data/data_80E1F30.o(.rodata);
|
||||
|
||||
@@ -289,7 +289,7 @@ void sub_8041D5C(struct DungeonEntity *r0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
sub_803ED30(r0->unk70->unk112 , r0, 1, 0xB);
|
||||
sub_803ED30(r0->unk70->stockpileCount , r0, 1, 0xB);
|
||||
}
|
||||
|
||||
void sub_8041D84(struct DungeonEntity * r0)
|
||||
@@ -675,7 +675,7 @@ void sub_8042208(struct DungeonEntity *r0, u8 r1)
|
||||
|
||||
void sub_8042238(u32 r0, struct DungeonEntity *r1)
|
||||
{
|
||||
if(r1->unk70->unk6 != 0)
|
||||
if(r1->unk70->isEnemy)
|
||||
PlaySoundEffect(0x157);
|
||||
else
|
||||
PlaySoundEffect(0x156);
|
||||
|
||||
@@ -106,7 +106,7 @@ extern void sub_8083ED8(u32);
|
||||
extern u32 sub_803F994();
|
||||
extern s32 sub_803F9B0();
|
||||
extern void sub_803F878(u32, s32);
|
||||
extern void sub_8086A70(struct DungeonEntity *, u32, u32);
|
||||
extern void SetupBossFightHP(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_8085C54(u32, u32, u32, u32, u32);
|
||||
extern void sub_803E9D0(void);
|
||||
extern void DeoxysScreenFlash(void);
|
||||
@@ -341,7 +341,7 @@ void LugiaPreFightDialogue(void)
|
||||
sub_80861D4(uVar3,7,0);
|
||||
sub_8052910(&gUnknown_8106024);
|
||||
sub_808BFA0();
|
||||
sub_8086A70(uVar3,800,0x20);
|
||||
SetupBossFightHP(uVar3,800,0x20);
|
||||
sub_8083E88(0x23);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
@@ -491,7 +491,7 @@ void KyogrePreFightDialogue(void)
|
||||
// power!
|
||||
sub_8052910(&gUnknown_810627C);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086A70(uVar3,600,0xb);
|
||||
SetupBossFightHP(uVar3,600,0xb);
|
||||
sub_8083E88(0x23);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
@@ -633,7 +633,7 @@ void sub_808C5A0(struct DungeonEntity *r0)
|
||||
|
||||
void sub_808C5AC(struct DungeonEntity *r0)
|
||||
{
|
||||
sub_8086A70(r0, 0x3b6, 0x20);
|
||||
SetupBossFightHP(r0, 0x3b6, 0x20);
|
||||
}
|
||||
|
||||
void sub_808C5C0(void)
|
||||
@@ -1122,7 +1122,7 @@ void sub_808C998(void)
|
||||
|
||||
void sub_808C9B0(struct DungeonEntity *param_1)
|
||||
{
|
||||
param_1->unk70->unk46 = 4;
|
||||
param_1->unk70->facingDir = NORTH;
|
||||
sub_806CE68(param_1, 4);
|
||||
}
|
||||
|
||||
|
||||
@@ -234,7 +234,7 @@ extern void sub_80862BC(struct DungeonEntity *);
|
||||
extern void sub_8086448();
|
||||
extern void SpriteLookAroundEffect();
|
||||
extern u32 sub_80861F8(u32, struct DungeonEntity *, u32);
|
||||
extern void sub_8086A70(struct DungeonEntity *, u32, u32);
|
||||
extern void SetupBossFightHP(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_80858AC(u32 *, u32);
|
||||
|
||||
extern void sub_8097FA8(u32);
|
||||
@@ -386,7 +386,7 @@ void ZapdosReFightDialogue(void)
|
||||
sub_8052910(&gUnknown_81018EC);
|
||||
sub_808775C(2);
|
||||
sub_8052910(&gUnknown_8101918);
|
||||
sub_8086A70(uVar2,300,0xb);
|
||||
SetupBossFightHP(uVar2,300,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -414,7 +414,7 @@ void ZapdosPostStoryPreFightDialogue(void)
|
||||
sub_808775C(2);
|
||||
sub_8052910(&gUnknown_8101A04);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086A70(uVar3,300,0xb);
|
||||
SetupBossFightHP(uVar3,300,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -592,7 +592,7 @@ void MoltresPreFightDialogue(void)
|
||||
sub_8087DE8(0xb,6);
|
||||
sub_8052910(&gUnknown_8102108);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086A70(uVar3,400,0xb);
|
||||
SetupBossFightHP(uVar3,400,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -635,7 +635,7 @@ void MoltresReFightDialogue(void)
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_81022F8);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086A70(uVar3,400,0xb);
|
||||
SetupBossFightHP(uVar3,400,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -673,7 +673,7 @@ void MoltresPostStoryPreFightDialogue(void)
|
||||
sub_8087DE8(0xb,6);
|
||||
sub_8052910(&gUnknown_8102454);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086A70(uVar3,400,0xb);
|
||||
SetupBossFightHP(uVar3,400,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -1021,7 +1021,7 @@ void ArticunoPreFightDialogue(void)
|
||||
sub_8052910(&gUnknown_81028B8);
|
||||
sub_806CDD4(uVar3,0xf,0);
|
||||
sub_803E708(0x10,0x46);
|
||||
sub_8086A70(uVar3,0x1c2,0xb);
|
||||
SetupBossFightHP(uVar3,0x1c2,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -1043,7 +1043,7 @@ void ArticunoReFightDialogue(void)
|
||||
sub_8052910(&gUnknown_8102948);
|
||||
sub_806CDD4(uVar2,0xf,0);
|
||||
sub_803E708(0x28,0x46);
|
||||
sub_8086A70(uVar2,0x1c2,0xb);
|
||||
SetupBossFightHP(uVar2,0x1c2,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -1079,7 +1079,7 @@ void ArticunoPostStoryPreFightDialogue(void)
|
||||
sub_8052910(&gUnknown_8102A74);
|
||||
sub_806CDD4(uVar3,0xf,0);
|
||||
sub_803E708(0x28,0x46);
|
||||
sub_8086A70(uVar3,0x1c2,0xb);
|
||||
SetupBossFightHP(uVar3,0x1c2,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -1342,7 +1342,7 @@ void GroudonPreFightDialogue(void)
|
||||
sub_8086A54(uVar4);
|
||||
sub_8085930(4);
|
||||
sub_8086764();
|
||||
sub_8086A70(uVar4,500,0xb);
|
||||
SetupBossFightHP(uVar4,500,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -1374,7 +1374,7 @@ void GroudonReFightDialogue(void)
|
||||
sub_8086A54(uVar2);
|
||||
sub_8085930(4);
|
||||
sub_8086764();
|
||||
sub_8086A70(uVar2,500,0xb);
|
||||
SetupBossFightHP(uVar2,500,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -1402,7 +1402,7 @@ void GroudonPostStoryPreFightDialogue(void)
|
||||
sub_8088CA0();
|
||||
sub_8052910(&gUnknown_810347C);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086A70(uVar3,500,0xb);
|
||||
SetupBossFightHP(uVar3,500,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -1843,7 +1843,7 @@ void RayquazaPreFightDialogue(void)
|
||||
sub_8052910(&gUnknown_81037D4);
|
||||
RayquazaScreenFlash();
|
||||
sub_8052910(&gUnknown_8103820);
|
||||
sub_8086A70(uVar3,600,0x20);
|
||||
SetupBossFightHP(uVar3,600,0x20);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -1867,7 +1867,7 @@ void RayquazaReFightDialogue(void)
|
||||
sub_8052910(&gUnknown_81038A8);
|
||||
RayquazaScreenFlash();
|
||||
sub_8052910(&gUnknown_81038F8);
|
||||
sub_8086A70(uVar2,600,0x20);
|
||||
SetupBossFightHP(uVar2,600,0x20);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -1893,7 +1893,7 @@ void RayquazaPostStoryPreFightDialogue(void)
|
||||
sub_8052910(&gUnknown_8103AE4);
|
||||
RayquazaScreenFlash();
|
||||
sub_8052910(&gUnknown_8103B30);
|
||||
sub_8086A70(uVar3,600,0xb);
|
||||
SetupBossFightHP(uVar3,600,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -1984,7 +1984,7 @@ void sub_8089788(struct DungeonEntity *param_1, u8 param_2, s32 param_3)
|
||||
for(iVar3 = 0; iVar3 < 0x10; iVar3++)
|
||||
{
|
||||
iVar2 = gUnknown_203B418->unk1358C[iVar3];
|
||||
if ((sub_80450E0(iVar2) != '\0') && (iVar2 != param_1) && (iVar2->unk70->unkA4 == param_2)) {
|
||||
if ((sub_80450E0(iVar2) != '\0') && (iVar2 != param_1) && (iVar2->unk70->clientFlags == param_2)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2140,7 +2140,7 @@ void MewtwoPreFightDialogue(void)
|
||||
MewtwoScreenFlash();
|
||||
sub_8052910(&gUnknown_8104008);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086A70(uVar2,900,0x20);
|
||||
SetupBossFightHP(uVar2,900,0x20);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2166,7 +2166,7 @@ void MewtwoPreFightDialogue1(void)
|
||||
sub_8052910(&gUnknown_81040CC);
|
||||
MewtwoScreenFlash();
|
||||
sub_8052910(&gUnknown_8104114);
|
||||
sub_8086A70(uVar3,900,0x20);
|
||||
SetupBossFightHP(uVar3,900,0x20);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -2279,7 +2279,7 @@ void EnteiPreFightDialogue(void)
|
||||
EnteiScreenFlash();
|
||||
sub_8052910(&gUnknown_81041F8);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar2,600,0xb);
|
||||
SetupBossFightHP(uVar2,600,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2297,7 +2297,7 @@ void EnteiPreFightDialogue1(void)
|
||||
EnteiScreenFlash();
|
||||
sub_8052910(&gUnknown_81042B8);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar2,600,0xb);
|
||||
SetupBossFightHP(uVar2,600,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2319,7 +2319,7 @@ void EnteiPreFightDialogue2(void)
|
||||
EnteiScreenFlash();
|
||||
sub_8052910(&gUnknown_81043C0);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar3,600,0xb);
|
||||
SetupBossFightHP(uVar3,600,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -2432,7 +2432,7 @@ void RaikouPreFightDialogue(void)
|
||||
RaikouScreenFlash();
|
||||
sub_8052910(&gUnknown_81045B0);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar2,0x28a,0xb);
|
||||
SetupBossFightHP(uVar2,0x28a,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2452,7 +2452,7 @@ void RaikouPreFightDialogue1(void)
|
||||
RaikouScreenFlash();
|
||||
sub_8052910(&gUnknown_81046A0);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar3,0x28a,0xb);
|
||||
SetupBossFightHP(uVar3,0x28a,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2475,7 +2475,7 @@ void RaikouPreFightDialogue2(void)
|
||||
RaikouScreenFlash();
|
||||
sub_8052910(&gUnknown_810476C);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar3,0x28a,0xb);
|
||||
SetupBossFightHP(uVar3,0x28a,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -2590,7 +2590,7 @@ void SuicunePreFightDialogue(void)
|
||||
SuicuneScreenFlash();
|
||||
sub_8052910(&gUnknown_8104914);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar2,0x28a,0xb);
|
||||
SetupBossFightHP(uVar2,0x28a,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2607,7 +2607,7 @@ void SuicunePreFightDialogue1(void)
|
||||
SuicuneScreenFlash();
|
||||
sub_8052910(&gUnknown_8104998);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar2,0x28a,0xb);
|
||||
SetupBossFightHP(uVar2,0x28a,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2628,7 +2628,7 @@ void SuicunePreFightDialogue2(void)
|
||||
SuicuneScreenFlash();
|
||||
sub_8052910(&gUnknown_8104A9C);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar3,0x28a,0xb);
|
||||
SetupBossFightHP(uVar3,0x28a,0xb);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -2771,7 +2771,7 @@ void HoOhPreFightDialogue(void)
|
||||
HoOhScreenFlash();
|
||||
sub_8052910(&gUnknown_8104CE0);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar2,800,0x20);
|
||||
SetupBossFightHP(uVar2,800,0x20);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2807,7 +2807,7 @@ void HoOhPreFightDialogue1(void)
|
||||
HoOhScreenFlash();
|
||||
sub_8052910(&gUnknown_8104E0C);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar3,800,0x20);
|
||||
SetupBossFightHP(uVar3,800,0x20);
|
||||
sub_80858AC(&iVar2->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -2943,7 +2943,7 @@ void LatiosPreFightDialogue(void)
|
||||
LatiosScreenFlash();
|
||||
sub_8052910(&gUnknown_8104F30);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(iVar2,600,0xb);
|
||||
SetupBossFightHP(iVar2,600,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -2962,7 +2962,7 @@ void LatiosReFightDialogue(void)
|
||||
LatiosScreenFlash();
|
||||
sub_8052910(&gUnknown_8104F30);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar2,600,0xb);
|
||||
SetupBossFightHP(uVar2,600,0xb);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
@@ -3362,26 +3362,26 @@ void sub_808B1CC(u8 r0)
|
||||
|
||||
void sub_808B2B0(struct DungeonEntity *r0)
|
||||
{
|
||||
r0->unk70->unk46 = 4;
|
||||
r0->unk70->facingDir = NORTH;
|
||||
sub_806CE68(r0, 4);
|
||||
}
|
||||
|
||||
|
||||
void sub_808B2C4(struct DungeonEntity *r0)
|
||||
{
|
||||
sub_8086A70(r0, 0xE1 << 1, 0xB);
|
||||
SetupBossFightHP(r0, 0xE1 << 1, 0xB);
|
||||
}
|
||||
|
||||
|
||||
void sub_808B2D4(struct DungeonEntity *r0)
|
||||
{
|
||||
sub_8086A70(r0, 0xE1 << 1, 0xB);
|
||||
SetupBossFightHP(r0, 0xE1 << 1, 0xB);
|
||||
}
|
||||
|
||||
|
||||
void sub_808B2E4(struct DungeonEntity *r0)
|
||||
{
|
||||
sub_8086A70(r0, 0xE1 << 1, 0xB);
|
||||
SetupBossFightHP(r0, 0xE1 << 1, 0xB);
|
||||
}
|
||||
|
||||
void sub_808B2F4(void)
|
||||
@@ -3540,7 +3540,7 @@ void JirachiPreFightDialogue(void)
|
||||
sub_803E708(10,70);
|
||||
sub_8052910(&gUnknown_810550C);
|
||||
sub_803E708(10,70);
|
||||
sub_8086A70(uVar2,0x15e,0x20);
|
||||
SetupBossFightHP(uVar2,0x15e,0x20);
|
||||
sub_80858AC(&iVar1->posPixelX,0x10);
|
||||
}
|
||||
|
||||
|
||||
@@ -478,7 +478,7 @@ void SpriteLookAroundEffect(struct DungeonEntity *r0)
|
||||
s8 r4;
|
||||
s8 r3;
|
||||
|
||||
r4 = sub_8002984(r0->unk70->unk46, 4);
|
||||
r4 = sub_8002984(r0->unk70->facingDir, 4);
|
||||
|
||||
sub_80869E4(r0, 4, 2, r4);
|
||||
|
||||
|
||||
124
src/code_8086A3C.c
Normal file
124
src/code_8086A3C.c
Normal file
@@ -0,0 +1,124 @@
|
||||
#include "global.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "gUnknown_203B418.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
extern struct unkStruct_203B418 *gUnknown_203B418;
|
||||
extern void sub_807191C(struct DungeonEntity *);
|
||||
extern struct DungeonEntity *sub_8085480(void);
|
||||
extern struct DungeonEntity *sub_8085680(u32);
|
||||
extern void sub_808EC94(u8 *param_1, u8 param_2);
|
||||
extern void sub_8097FF8(void);
|
||||
extern u8 sub_8044B28(void);
|
||||
extern u8 HasRecruitedMon(u32);
|
||||
extern u8 gUnknown_202E038[];
|
||||
extern void sub_8083E88(u32);
|
||||
extern void sub_8085374();
|
||||
extern void sub_80854D4();
|
||||
extern void sub_8085930(u32);
|
||||
extern void sub_80855E4(void *);
|
||||
extern void sub_8085860(s32 r0, u32 r1);
|
||||
extern void sub_8068FE0(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_8097FA8(u32);
|
||||
|
||||
void sub_8086A3C(struct DungeonEntity *param_1)
|
||||
{
|
||||
param_1->unk70->unk15C = 1;
|
||||
param_1->unk70->unk15E = 1;
|
||||
}
|
||||
|
||||
void sub_8086A54(struct DungeonEntity *param_1)
|
||||
{
|
||||
param_1->unk70->unk15C = 1;
|
||||
param_1->unk70->unk15E = 0;
|
||||
}
|
||||
|
||||
void SetupBossFightHP(struct DungeonEntity *param_1, s32 newHP, u16 param_3)
|
||||
{
|
||||
|
||||
// NOTE: needed two of these to match.. very dumb
|
||||
struct subStruct_8048524 *iVar1;
|
||||
struct subStruct_8048524 *iVar2;
|
||||
|
||||
iVar1 = param_1->unk70;
|
||||
iVar2 = param_1->unk70;
|
||||
|
||||
iVar1->isBoss = TRUE;
|
||||
|
||||
// BUG: Source of the Reviver Seed Boss Glitch
|
||||
//
|
||||
// Video to demonstration:
|
||||
// https://www.youtube.com/watch?v=rHu7EehrZ68
|
||||
iVar1->bossHPBackup = iVar1->maxHP;
|
||||
if (newHP != 0) {
|
||||
iVar1->maxHP = newHP;
|
||||
iVar1->HP = newHP;
|
||||
}
|
||||
|
||||
gUnknown_203B418->unk66A = param_3;
|
||||
sub_808EC94(iVar2->unk8C,iVar2->isBoss);
|
||||
sub_807191C(param_1);
|
||||
}
|
||||
|
||||
void sub_8086AC0(void)
|
||||
{
|
||||
if(!sub_8044B28())
|
||||
if(gUnknown_203B418->unk2 == 0)
|
||||
sub_8097FF8();
|
||||
}
|
||||
|
||||
u8 sub_8086AE4(s16 _index)
|
||||
{
|
||||
s32 pokeIndex = _index;
|
||||
|
||||
if(gUnknown_203B418->unk65C == 0)
|
||||
return 1;
|
||||
else
|
||||
return HasRecruitedMon(pokeIndex);
|
||||
}
|
||||
|
||||
void sub_8086B14(void)
|
||||
{
|
||||
struct DungeonEntity * iVar1;
|
||||
struct DungeonEntity * iVar2;
|
||||
struct DungeonEntity * uVar3;
|
||||
|
||||
iVar1 = sub_8085480();
|
||||
iVar2 = sub_8085680(4);
|
||||
uVar3 = sub_8085680(3);
|
||||
sub_8083E88(0x72);
|
||||
sub_8085374();
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
sub_8086A3C(uVar3);
|
||||
iVar2->unk70->unk15C = 1;
|
||||
sub_8085860(iVar1->posWorldX,iVar1->posWorldY + -2);
|
||||
CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_DIGLETT);
|
||||
CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_SKARMORY);
|
||||
}
|
||||
|
||||
void sub_8086B94(void)
|
||||
{
|
||||
struct DungeonEntity * iVar1;
|
||||
struct DungeonEntity * iVar2;
|
||||
struct DungeonEntity * uVar3;
|
||||
|
||||
iVar1 = sub_8085480();
|
||||
iVar2 = sub_8085680(4);
|
||||
uVar3 = sub_8085680(3);
|
||||
|
||||
sub_8068FE0(uVar3,0x21c,0);
|
||||
sub_8068FE0(iVar2,0x21c,0);
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085860(iVar1->posWorldX,iVar1->posWorldY);
|
||||
}
|
||||
|
||||
void sub_8086BDC(char param_1, s32 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) - 0x1000000U) >> 0x18 < 2) && (param_1 == 3)) {
|
||||
sub_8097FA8(1);
|
||||
gUnknown_203B418->unk2 = 1;
|
||||
}
|
||||
}
|
||||
@@ -2,17 +2,6 @@
|
||||
#include "input.h"
|
||||
#include "text.h"
|
||||
|
||||
extern u8 *gUnknown_203B3E8;
|
||||
extern void nullsub_54();
|
||||
extern void sub_8039E18();
|
||||
|
||||
void SetWonderMailMainMenuState(u8 r0)
|
||||
{
|
||||
*gUnknown_203B3E8 = r0;
|
||||
nullsub_54();
|
||||
sub_8039E18();
|
||||
}
|
||||
|
||||
u32 CreateDualSlotMenu(void)
|
||||
{
|
||||
return 1;
|
||||
|
||||
@@ -55,7 +55,7 @@ u32 CreateFelicityBank(s32 param_1)
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_80163A0(void)
|
||||
u32 FelicityBankCallback(void)
|
||||
{
|
||||
switch(gUnknown_203B204->currState) {
|
||||
case 1:
|
||||
|
||||
1723
src/thank_you_wonder_mail.c
Normal file
1723
src/thank_you_wonder_mail.c
Normal file
File diff suppressed because it is too large
Load Diff
1113
src/wonder_mail.c
1113
src/wonder_mail.c
File diff suppressed because it is too large
Load Diff
@@ -9,8 +9,6 @@
|
||||
#include "sub_8095228.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
|
||||
|
||||
struct unkStruct_203B2C8
|
||||
{
|
||||
// size: 0x140
|
||||
@@ -90,325 +88,61 @@ extern struct UnkTextStruct2 gUnknown_80DFBD0;
|
||||
|
||||
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
|
||||
|
||||
extern struct MenuItem gUnknown_80DED78[];
|
||||
extern struct MenuItem gUnknown_80DEDB8[];
|
||||
extern u8 gUnknown_80DF6F0[];
|
||||
extern u8 gUnknown_80DF44C[];
|
||||
extern u8 gUnknown_80DF380[];
|
||||
extern u8 gUnknown_80DF544[];
|
||||
extern u8 gUnknown_80DF96C[];
|
||||
extern u8 gUnknown_80DF9A4[];
|
||||
extern u8 gUnknown_80DF4F4[];
|
||||
extern u8 gUnknown_80DF46C[];
|
||||
extern u8 gUnknown_80DF94C[];
|
||||
extern u8 gUnknown_80DF928[];
|
||||
extern u8 gUnknown_80DF8EC[];
|
||||
extern u8 gUnknown_80DF7D4[];
|
||||
extern u8 gUnknown_80DF8B4[];
|
||||
extern u8 gUnknown_80DF3B4[];
|
||||
extern u8 gUnknown_80DF63C[];
|
||||
extern u8 gUnknown_80DF250[];
|
||||
extern u8 gUnknown_80DF594[];
|
||||
extern u8 gUnknown_80DF870[];
|
||||
extern u8 gUnknown_80DF77C[];
|
||||
extern u8 gUnknown_80DF5E4[];
|
||||
extern u8 gUnknown_80DF710[];
|
||||
extern u8 gUnknown_80DF694[];
|
||||
extern u8 gUnknown_80DF73C[];
|
||||
extern u8 gUnknown_80DF330[];
|
||||
extern u8 gUnknown_80DF418[];
|
||||
extern u8 gUnknown_80DF304[];
|
||||
extern struct UnkTextStruct2 gUnknown_80DED60;
|
||||
extern struct UnkTextStruct2 gUnknown_80DED48;
|
||||
extern struct MenuItem gUnknown_80DEE44[];
|
||||
extern struct MenuItem gUnknown_80DEE08[];
|
||||
extern struct MenuItem gUnknown_80DEE7C[];
|
||||
extern struct MenuItem gUnknown_80DEEBC[];
|
||||
extern struct MenuItem gUnknown_80DEEE4[];
|
||||
extern struct MenuItem gUnknown_80DEE60[];
|
||||
|
||||
extern void sub_8031D70(u8, u32);
|
||||
extern u8 sub_809539C(u32, u32);
|
||||
extern u8 sub_800D588(void);
|
||||
extern u32 sub_803C200(u8 *, u32);
|
||||
|
||||
extern struct PokemonStruct *sub_808D33C(void);
|
||||
|
||||
extern void sub_802F204(u8 *, u32);
|
||||
extern void sub_80151C0(u32, u8 *);
|
||||
extern void xxx_call_start_bg_music(void);
|
||||
extern void sub_803092C(void);
|
||||
extern void sub_801CCD8(void);
|
||||
extern void sub_8011830(void);
|
||||
extern void nullsub_23(u32);
|
||||
extern void sub_80922B4(u8 *, u8 *, u32);
|
||||
extern s32 sub_8037B28(u32);
|
||||
extern u32 sub_8030894(void);
|
||||
extern u32 sub_801D008(void);
|
||||
extern void sub_80306A8(u32, u32, u32, u32);
|
||||
extern void sub_8035CF4(u32 *, u32, u32);
|
||||
extern s32 sub_8037D64(u32, void *, void *);
|
||||
extern s32 sub_80381F4(u32, void *, void *);
|
||||
extern void sub_801C8C4(u32, u32, s32 * , u32);
|
||||
|
||||
|
||||
void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
|
||||
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
|
||||
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
|
||||
|
||||
extern void sub_80920D8(u8 *buffer);
|
||||
extern void sub_8097790();
|
||||
extern void sub_8097790(void);
|
||||
extern char gUnknown_202E5D8[0x50];
|
||||
extern char gAvailablePokemonNames[0x50];
|
||||
extern u32 sub_802F298();
|
||||
extern void sub_802F2C0();
|
||||
extern u32 sub_802F298(void);
|
||||
extern void sub_802F2C0(void);
|
||||
extern u8 sub_8099394(u8 *);
|
||||
extern void sub_802B548(u32);
|
||||
extern u32 sub_80144A4(s32 *);
|
||||
|
||||
extern void sub_802B560();
|
||||
extern void sub_802B57C();
|
||||
extern void sub_802B5B8();
|
||||
extern void sub_802B5FC();
|
||||
extern void sub_802B624();
|
||||
extern void sub_802B560(void);
|
||||
extern void sub_802B57C(void);
|
||||
extern void sub_802B5B8(void);
|
||||
extern void sub_802B5FC(void);
|
||||
extern void sub_802B624(void);
|
||||
|
||||
void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
|
||||
extern void sub_802F204(u8 *, u32);
|
||||
extern void sub_803C37C(u8 *, u32, u8 *);
|
||||
extern u32 sub_803C200(u8 *, u32);
|
||||
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern const char gUnknown_80DFAA8[];
|
||||
extern const char gUnknown_80DFB14[];
|
||||
extern const char gUnknown_80DF9F0[];
|
||||
extern const char gUnknown_80DF9F8[];
|
||||
extern u8 sub_80023E4(u32);
|
||||
|
||||
extern void nullsub_131(void);
|
||||
extern void sub_802ABF8(void);
|
||||
|
||||
void sub_802ABF8(void)
|
||||
{
|
||||
char cVar1;
|
||||
char *monName;
|
||||
u8 auStack180 [80];
|
||||
u8 auStack100 [80];
|
||||
u8 uVar2;
|
||||
struct PokemonStruct *pokeStruct;
|
||||
struct PokemonStruct *pokeStruct2;
|
||||
s32 iVar6;
|
||||
struct unkStruct_8095228 *puVar4;
|
||||
ALIGNED(4) const char gUnknown_80DF9F0[] = "????";
|
||||
|
||||
// NOTE: had to be pre-proc'd to match
|
||||
ALIGNED(4) const char gUnknown_80DF9F8[] = _(
|
||||
" Oh~2c hello!\n"
|
||||
"Your rescue mission went well~2c didn~27t it?\n"
|
||||
"I wouldn~27t expect any less~2c #CG%s#R!#P"
|
||||
" Well~2c well!\n"
|
||||
"Here is your reward from the Pokémon\n"
|
||||
"Rescue Organization!");
|
||||
|
||||
ALIGNED(4) const char gUnknown_80DFAA8[] =
|
||||
" I hope you will keep on\n"
|
||||
"rescuing your friends in\n"
|
||||
"dire straits.#P"
|
||||
" And now~2c I must save\n"
|
||||
"your adventure.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80DFB14[] =
|
||||
" Oh~2c yes~2c that~27s right.\n"
|
||||
"Please don~27t forget to send an #CGA-OK Mail#R\n"
|
||||
"to the friend you just rescued.#P"
|
||||
" Please give me a shout if\n"
|
||||
"you would like to send #CGA-OK Mail#R.";
|
||||
|
||||
ALIGNED(4) const char wonder_mail_2_fill[] = "pksdir0";
|
||||
|
||||
|
||||
|
||||
switch(gUnknown_203B2C4->state) {
|
||||
case 5:
|
||||
pokeStruct = sub_808D33C();
|
||||
sub_80922B4(auStack180,pokeStruct->name, POKEMON_NAME_LENGTH);
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180);
|
||||
sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0xe:
|
||||
sub_8014248(gUnknown_80DF304,0,7,gUnknown_80DEE60,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 0xf:
|
||||
sub_80141B4(gUnknown_80DF330,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0x10:
|
||||
if (sub_8030894() != 0)
|
||||
break;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
sub_80306A8(5,0,0,6);
|
||||
break;
|
||||
case 0x11:
|
||||
sub_8006518(gUnknown_203B2C4->unk35C);
|
||||
SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0);
|
||||
sub_803092C();
|
||||
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
|
||||
break;
|
||||
case 0x13:
|
||||
if (sub_801D008() != 0)
|
||||
break;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
// TODO: Probably a macro - Pika
|
||||
{
|
||||
struct {u16 a; u16 b;} local_x = {3, 2};
|
||||
sub_801C8C4(0, 1, (s32 *)&local_x, 9);
|
||||
}
|
||||
break;
|
||||
case 0x14:
|
||||
sub_8006518(gUnknown_203B2C4->unk35C);
|
||||
SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0);
|
||||
sub_801CCD8();
|
||||
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
|
||||
break;
|
||||
case 0x1e:
|
||||
gUnknown_203B2C4->linkError = 0;
|
||||
sub_8011830();
|
||||
iVar6 = sub_8037B28(gUnknown_203B2C4->unk40);
|
||||
gUnknown_203B2C4->linkError = iVar6;
|
||||
if (iVar6 != 0) goto _0802AEE6;
|
||||
switch(gUnknown_203B2C4->unk40)
|
||||
{
|
||||
case 6:
|
||||
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228));
|
||||
gUnknown_203B2C4->unk1B8 = *sub_8095228(gUnknown_203B2C4->unk218);
|
||||
gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
|
||||
break;
|
||||
case 7:
|
||||
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228));
|
||||
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1E8,0, sizeof(struct unkStruct_8095228));
|
||||
gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
|
||||
break;
|
||||
}
|
||||
if (gUnknown_203B2C4->linkError == 0){
|
||||
switch(gUnknown_203B2C4->unk40){
|
||||
case 6:
|
||||
case 7:
|
||||
gUnknown_203B2C4->linkError = sub_80381F4(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
|
||||
if ( sub_800D588() != '\0') {
|
||||
gUnknown_203B2C4->unk430 = gUnknown_203B2C4->unk1E8.unk10;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B2C4->unk430 = gUnknown_203B2C4->unk1B8.unk10;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
_0802AEE6:
|
||||
xxx_call_start_bg_music();
|
||||
break;
|
||||
case 0x26:
|
||||
sub_80141B4(gUnknown_80DF380,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0x27:
|
||||
sub_8006518(gUnknown_203B2C4->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
sub_80151C0(4,gUnknown_203B2C4->passwordBuffer);
|
||||
break;
|
||||
case 0x1a:
|
||||
sub_8006518(gUnknown_203B2C4->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
sub_8031D70(gUnknown_203B2C4->unk218,0);
|
||||
break;
|
||||
case 0x1b:
|
||||
sub_80141B4(gUnknown_80DF3B4,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0x19:
|
||||
sub_80141B4(gUnknown_80DF418,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0x24:
|
||||
sub_80141B4(gUnknown_80DF44C,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0x20:
|
||||
sub_80141B4(gUnknown_80DF46C,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0x21:
|
||||
switch(gUnknown_203B2C4->unk534)
|
||||
{
|
||||
case 3:
|
||||
case 5:
|
||||
case 6:
|
||||
sub_80141B4(gUnknown_80DF4F4,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0x22:
|
||||
monName = GetMonSpecies(SPECIES_PELIPPER);
|
||||
strcpy(gUnknown_203B2C4->unk53C,monName);
|
||||
gUnknown_203B2C4->unk550 = 0x130;
|
||||
gUnknown_203B2C4->unk552 = 2;
|
||||
gUnknown_203B2C4->unk554 = 0;
|
||||
uVar2 = sub_809539C(6,gUnknown_203B2C4->unk430);
|
||||
puVar4 = sub_8095228(uVar2);
|
||||
cVar1 = puVar4->unk20.itemIndex;
|
||||
if (cVar1 != '\0')
|
||||
gUnknown_203B2C4->unk558 = cVar1;
|
||||
else
|
||||
gUnknown_203B2C4->unk558 = 0;
|
||||
gUnknown_203B2C4->unk55B = 1;
|
||||
gUnknown_203B2C4->unk560 = sub_803C200(&puVar4->unk4, 0);
|
||||
gUnknown_203B2C4->unk559 = 0;
|
||||
gUnknown_203B2C4->unk55A = 0;
|
||||
gUnknown_203B2C4->unk55C = 0;
|
||||
sub_802F204(gUnknown_203B2C4->unk53C,0);
|
||||
break;
|
||||
case 0x16:
|
||||
nullsub_23(0);
|
||||
sub_80141B4(gUnknown_80DF544,0,0,0);
|
||||
break;
|
||||
case 0x17:
|
||||
sub_80141B4(gUnknown_80DF594,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0x1d:
|
||||
sub_8014248(gUnknown_80DF5E4,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 0xd:
|
||||
pokeStruct2 = sub_808D33C();
|
||||
sub_80922B4(auStack100, pokeStruct2->name, POKEMON_NAME_LENGTH);
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100);
|
||||
sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0xc:
|
||||
sub_8014248(gUnknown_80DF694,0,7,gUnknown_80DEEE4,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 0x29:
|
||||
sub_80141B4(gUnknown_80DF44C,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0x2a:
|
||||
sub_80141B4(gUnknown_80DF6F0,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0xb:
|
||||
sub_80141B4(gUnknown_80DF710,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 10:
|
||||
sub_8014248(gUnknown_80DF73C,0,0,gUnknown_80DEEBC,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 9:
|
||||
sub_8014248(gUnknown_80DF77C,0,0,gUnknown_80DEE7C,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 7:
|
||||
sub_80141B4(gUnknown_80DF7D4,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 8:
|
||||
sub_8014248(gUnknown_80DF870,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 4:
|
||||
sub_80141B4(gUnknown_80DF8B4,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 0:
|
||||
sub_8014248(gUnknown_80DF8EC,0,1,gUnknown_80DEDB8,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 1:
|
||||
sub_8014248(gUnknown_80DF928,0,1,gUnknown_80DEDB8,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 2:
|
||||
sub_80141B4(gUnknown_80DF94C,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
case 6:
|
||||
switch(gUnknown_203B2C4->unk538){
|
||||
case 1:
|
||||
sub_8014248(gUnknown_80DF96C,0,3,gUnknown_80DEE08,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 2:
|
||||
sub_8014248(gUnknown_80DF9A4,0,3,gUnknown_80DEE08,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802B2BC(u32 newState)
|
||||
{
|
||||
gUnknown_203B2C4->state = newState;
|
||||
nullsub_131();
|
||||
sub_802ABF8();
|
||||
}
|
||||
|
||||
u32 sub_802B2D4(void)
|
||||
{
|
||||
@@ -494,7 +228,7 @@ void sub_802B3E0(void)
|
||||
}
|
||||
// Print and expand placeholders?
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer);
|
||||
// Display to screen with Pelliper face
|
||||
// Display to screen with Peliper face
|
||||
sub_80141B4(gUnknown_203B2C8->teamName, 0, &gUnknown_203B2C8->faceFile, 0x10d);
|
||||
break;
|
||||
case 1:
|
||||
@@ -607,7 +341,7 @@ u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2)
|
||||
{
|
||||
if(gUnknown_203B2CC == NULL)
|
||||
{
|
||||
gUnknown_203B2CC = MemoryAlloc(0xD4, 8);
|
||||
gUnknown_203B2CC = MemoryAlloc(sizeof(struct unkStruct_203B2CC), 8);
|
||||
}
|
||||
gUnknown_203B2CC->unk6C = r0;
|
||||
gUnknown_203B2CC->unk70 = &gUnknown_203B2CC->unk74[r0];
|
||||
|
||||
@@ -6,9 +6,14 @@
|
||||
#include "sub_8095228.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
#define WONDER_MAIL_MAIN_SCREEN 4
|
||||
#define SEND_WONDER_MAIL_MAIN_SCREEN 1
|
||||
#define SEND_GAME_LINK_CABLE 2
|
||||
#define RECEIVE_WONDER_MAIL_MAIN_SCREEN 4
|
||||
#define EXIT_TO_MAIN_MENU 5
|
||||
#define WONDER_MAIL_SENT 7
|
||||
#define GAME_LINK_CABLE_MENU 8
|
||||
#define COMMUNICATION_ERROR 10
|
||||
#define RECEIVE_GAME_LINK_CABLE 12
|
||||
#define PASSWORD_SUCCESS 13
|
||||
#define PREPARE_SAVE 14
|
||||
#define SAVE_ADVENTURE 15
|
||||
@@ -17,6 +22,17 @@
|
||||
#define PASSWORD_INVALID 19
|
||||
#define PASSWORD_ENTRY_SCREEN 18
|
||||
|
||||
|
||||
struct unkStruct_803B344
|
||||
{
|
||||
// size: 0xB4
|
||||
struct WonderMail unk0;
|
||||
u8* unk14;
|
||||
u8* unk18;
|
||||
u8 fill1C[0x3C - 0x1C];
|
||||
u8 unk3C[0x78];
|
||||
};
|
||||
|
||||
struct unkStruct_203B3E8
|
||||
{
|
||||
// size: 0x49C
|
||||
@@ -31,15 +47,21 @@ struct unkStruct_203B3E8
|
||||
struct UnkTextStruct2 unk1EC[4];
|
||||
u32 unk24C;
|
||||
u32 wonderMailStatus;
|
||||
u8 fill254[0x3C0 - 0x254];
|
||||
struct WonderMail unk3C0;
|
||||
u8 fill3D0[0x490 - 0x3D4];
|
||||
u32 unk490;
|
||||
u32 unk494;
|
||||
|
||||
struct unkStruct_803B344 unk254;
|
||||
|
||||
struct unkStruct_803B344 unk308;
|
||||
u8 unk3BC;
|
||||
u8 fill3BD[0x3C0 - 0x3BD];
|
||||
|
||||
struct unkStruct_803B344 unk3C0;
|
||||
|
||||
struct WonderMail unk474;
|
||||
u8 **unk488;
|
||||
u8 *unk48C;
|
||||
s32 wonderMailMethod;
|
||||
u32 wonderMailMode;
|
||||
u8 unk498;
|
||||
u8 unk499;
|
||||
u8 unk49A;
|
||||
u8 unk49B;
|
||||
};
|
||||
|
||||
extern u32 sub_8095324(u32);
|
||||
@@ -54,6 +76,39 @@ extern void sub_801CBB8(void);
|
||||
extern void sub_80155F0(void);
|
||||
extern void sub_8031E10(void);
|
||||
|
||||
extern u8 sub_800D588(void);
|
||||
extern s32 sub_8037D64(u32, void *, void *);
|
||||
extern s32 sub_80381F4(u32, void *, void *);
|
||||
extern void sub_8011830(void);
|
||||
extern void sub_80151C0(u32, u8 *);
|
||||
extern void xxx_call_start_bg_music(void);
|
||||
extern void sub_8014248(u8 *, u32, u32, u8 *, u32, u32, u32, u32, u32);
|
||||
extern void nullsub_23(u32);
|
||||
extern void sub_802EF48(void);
|
||||
extern void sub_802D098(struct WonderMail *);
|
||||
|
||||
|
||||
extern struct unkStruct_803B344 *sub_803B344(u8);
|
||||
|
||||
|
||||
|
||||
extern u8 gUnknown_80E7CC4[];
|
||||
extern u8 gUnknown_80E78F8;
|
||||
extern u8 gUnknown_80E7AC4[];
|
||||
extern u8 gUnknown_80E786C;
|
||||
extern u8 gUnknown_80E7AE0[];
|
||||
extern u8 gUnknown_80E7894;
|
||||
extern u8 gUnknown_80E7C48[];
|
||||
extern u8 gUnknown_80E7B14[];
|
||||
extern u8 gUnknown_80E78D8;
|
||||
extern u8 gUnknown_80E7B68[];
|
||||
extern u8 gUnknown_80E7BEC[];
|
||||
extern u8 gUnknown_80E7BC8[];
|
||||
extern u8 gUnknown_80E7B88[];
|
||||
extern u8 gUnknown_80E7C98[];
|
||||
extern u8 gUnknown_80E7B48[];
|
||||
extern s32 sub_8037B28(u32);
|
||||
|
||||
extern u32 sub_802D0E0();
|
||||
extern u8 sub_802D178();
|
||||
extern void sub_802D184();
|
||||
@@ -61,30 +116,30 @@ extern void sub_802D184();
|
||||
extern s32 sub_80154F0();
|
||||
extern bool8 DecodeWonderMailPassword(u8 *, struct WonderMail *);
|
||||
extern bool8 IsValidWonderMail(struct WonderMail *WonderMailData);
|
||||
extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32);
|
||||
extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32);
|
||||
|
||||
void PrintWonderMailMainMenuError(u32);
|
||||
void HandleWonderMailMainScreen(void);
|
||||
void sub_8039AA8(void);
|
||||
void HandleGameLinkCableMenu(void);
|
||||
void sub_8039B14(void);
|
||||
void sub_8039B20(void);
|
||||
void sub_8039B58(void);
|
||||
void sub_8039D88(void);
|
||||
void ReturnToGameLinkCableMenu(void);
|
||||
void HandlePasswordSuccess(void);
|
||||
void HandlePrepareSaveScreen(void);
|
||||
void HandleSaveAdventureScreen(void);
|
||||
void HandleWonderMailAddedScreen(void);
|
||||
void ReturnToWonderMailMainScreen(void);
|
||||
void ReturnToReceiveWonderMailMainScreen(void);
|
||||
void AdvanceToPasswordEntryScreen(void);
|
||||
void HandlePasswordEntryScreen(void);
|
||||
void HandleInvalidPasswordMenu(void);
|
||||
|
||||
|
||||
extern u32 gUnknown_80E7914;
|
||||
extern u32 gUnknown_80E7938;
|
||||
extern u32 gUnknown_80E7994;
|
||||
extern u32 gUnknown_80E79E4;
|
||||
extern u32 gUnknown_80E7A48;
|
||||
extern u8 gUnknown_80E7914[];
|
||||
extern u8 gUnknown_80E7938[];
|
||||
extern u8 gUnknown_80E7994[];
|
||||
extern u8 gUnknown_80E79E4[];
|
||||
extern u8 gUnknown_80E7A48[];
|
||||
|
||||
bool8 sub_8039880(void)
|
||||
{
|
||||
@@ -105,10 +160,10 @@ bool8 CreateWonderMailMenu(void)
|
||||
gUnknown_203B3E8->PasswordEntryBuffer[iVar2] = 0;
|
||||
}
|
||||
|
||||
gUnknown_203B3E8->unk490 = 3;
|
||||
gUnknown_203B3E8->unk494 = 2;
|
||||
gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_GAME_LINK;
|
||||
gUnknown_203B3E8->wonderMailMode = WONDER_MAIL_MODE_RECEIVE;
|
||||
gUnknown_203B3E8->unk498 = 1;
|
||||
gUnknown_203B3E8->unk490 = 5; // ??? Why?
|
||||
gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_PASSWORD; // ??? Why?
|
||||
SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY); // -> Display "Enter Wonder Mail Password"
|
||||
return 1;
|
||||
}
|
||||
@@ -116,17 +171,15 @@ bool8 CreateWonderMailMenu(void)
|
||||
u8 UpdateWonderMailMenu(void)
|
||||
{
|
||||
switch(gUnknown_203B3E8->state) {
|
||||
case WONDER_MAIL_MAIN_SCREEN:
|
||||
case RECEIVE_WONDER_MAIL_MAIN_SCREEN:
|
||||
HandleWonderMailMainScreen();
|
||||
break;
|
||||
case EXIT_TO_MAIN_MENU: // When you exit out of the menu
|
||||
return 3;
|
||||
case 8:
|
||||
sub_8039AA8();
|
||||
case GAME_LINK_CABLE_MENU:
|
||||
HandleGameLinkCableMenu();
|
||||
break;
|
||||
case 11:
|
||||
break;
|
||||
case 12:
|
||||
case RECEIVE_GAME_LINK_CABLE:
|
||||
sub_8039B14();
|
||||
break;
|
||||
case 6:
|
||||
@@ -135,8 +188,8 @@ u8 UpdateWonderMailMenu(void)
|
||||
case 9:
|
||||
sub_8039B58();
|
||||
break;
|
||||
case 7:
|
||||
sub_8039D88();
|
||||
case WONDER_MAIL_SENT:
|
||||
ReturnToGameLinkCableMenu();
|
||||
break;
|
||||
case PASSWORD_SUCCESS:
|
||||
HandlePasswordSuccess();
|
||||
@@ -151,7 +204,7 @@ u8 UpdateWonderMailMenu(void)
|
||||
HandleWonderMailAddedScreen();
|
||||
break;
|
||||
case COMMUNICATION_ERROR:
|
||||
ReturnToWonderMailMainScreen();
|
||||
ReturnToReceiveWonderMailMainScreen();
|
||||
break;
|
||||
case PROMPT_PASSWORD_ENTRY: // "Please enter the Wonder Mail Password" Screen
|
||||
AdvanceToPasswordEntryScreen();
|
||||
@@ -188,11 +241,11 @@ void HandleWonderMailMainScreen(void)
|
||||
switch(menuAction) {
|
||||
case 3:
|
||||
case 4:
|
||||
gUnknown_203B3E8->unk490 = 3;
|
||||
SetWonderMailMainMenuState(8);
|
||||
gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_GAME_LINK;
|
||||
SetWonderMailMainMenuState(GAME_LINK_CABLE_MENU);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B3E8->unk490 = 5;
|
||||
gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_PASSWORD;
|
||||
SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY);
|
||||
break;
|
||||
case 0:
|
||||
@@ -203,26 +256,26 @@ void HandleWonderMailMainScreen(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039AA8(void)
|
||||
void HandleGameLinkCableMenu(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
|
||||
if (sub_80144A4(&menuAction) == 0) {
|
||||
switch(menuAction){
|
||||
case 6:
|
||||
if (gUnknown_203B3E8->unk494 == 1) {
|
||||
SetWonderMailMainMenuState(2);
|
||||
if (gUnknown_203B3E8->wonderMailMode == WONDER_MAIL_MODE_SEND) {
|
||||
SetWonderMailMainMenuState(SEND_GAME_LINK_CABLE);
|
||||
}
|
||||
else {
|
||||
SetWonderMailMainMenuState(12);
|
||||
SetWonderMailMainMenuState(RECEIVE_GAME_LINK_CABLE);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
if (gUnknown_203B3E8->unk494 == 1) {
|
||||
SetWonderMailMainMenuState(1);
|
||||
if (gUnknown_203B3E8->wonderMailMode == WONDER_MAIL_MODE_SEND) {
|
||||
SetWonderMailMainMenuState(SEND_WONDER_MAIL_MAIN_SCREEN);
|
||||
}
|
||||
else {
|
||||
SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN);
|
||||
SetWonderMailMainMenuState(RECEIVE_WONDER_MAIL_MAIN_SCREEN);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -243,12 +296,12 @@ void sub_8039B20(void)
|
||||
}
|
||||
}
|
||||
|
||||
void ReturnToWonderMailMainScreen(void)
|
||||
void ReturnToReceiveWonderMailMainScreen(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) == 0) {
|
||||
SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN);
|
||||
SetWonderMailMainMenuState(RECEIVE_WONDER_MAIL_MAIN_SCREEN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,7 +313,7 @@ void sub_8039B58(void)
|
||||
if (gUnknown_203B3E8->wonderMailStatus == 0) {
|
||||
switch(gUnknown_203B3E8->unk24C){
|
||||
case 9:
|
||||
SetWonderMailMainMenuState(7);
|
||||
SetWonderMailMainMenuState(WONDER_MAIL_SENT);
|
||||
break;
|
||||
case 10:
|
||||
SetWonderMailMainMenuState(PASSWORD_SUCCESS);
|
||||
@@ -274,6 +327,7 @@ void sub_8039B58(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* NOTE: I think the error codes for wonder mail are the same across SOS/WONDER */
|
||||
void PrintWonderMailMainMenuError(u32 status)
|
||||
{
|
||||
switch(status)
|
||||
@@ -282,42 +336,42 @@ void PrintWonderMailMainMenuError(u32 status)
|
||||
break;
|
||||
case 1:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
sub_80141B4(gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 3:
|
||||
// Incorrect number of GBA Systems
|
||||
sub_80141B4(&gUnknown_80E7938, 0, 0, 0x101);
|
||||
sub_80141B4(gUnknown_80E7938, 0, 0, 0x101);
|
||||
break;
|
||||
case 2:
|
||||
// No response from friend. Redo from start
|
||||
sub_80141B4(&gUnknown_80E7994, 0, 0, 0x101);
|
||||
sub_80141B4(gUnknown_80E7994, 0, 0, 0x101);
|
||||
break;
|
||||
case 4:
|
||||
// Sender and receiver in different modes
|
||||
sub_80141B4(&gUnknown_80E79E4, 0, 0, 0x101);
|
||||
sub_80141B4(gUnknown_80E79E4, 0, 0, 0x101);
|
||||
break;
|
||||
case 5:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
sub_80141B4(gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 14:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
sub_80141B4(gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
case 15: // "No response from your friend. Make sure sender and receiver are ready"
|
||||
sub_80141B4(&gUnknown_80E7A48, 0, 0, 0x101);
|
||||
sub_80141B4(gUnknown_80E7A48, 0, 0, 0x101);
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case COMMUNICATION_ERROR:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case PASSWORD_SUCCESS:
|
||||
case 13:
|
||||
default:
|
||||
// "Communication Error"
|
||||
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
|
||||
sub_80141B4(gUnknown_80E7914, 0, 0, 0x101);
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -342,7 +396,7 @@ void HandlePasswordEntryScreen(void)
|
||||
else {
|
||||
// Successful password
|
||||
// Copy the decoded data to another buffer?
|
||||
gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->UNK38.decodedMail;
|
||||
gUnknown_203B3E8->unk3C0.unk0 = gUnknown_203B3E8->UNK38.decodedMail;
|
||||
|
||||
gUnknown_203B3E8->unk498 = 1;
|
||||
SetWonderMailMainMenuState(PASSWORD_SUCCESS);
|
||||
@@ -390,12 +444,12 @@ void HandlePrepareSaveScreen(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8039D88(void)
|
||||
void ReturnToGameLinkCableMenu(void)
|
||||
{
|
||||
int iVar2;
|
||||
if(sub_80144A4(&iVar2) == 0)
|
||||
{
|
||||
SetWonderMailMainMenuState(8);
|
||||
SetWonderMailMainMenuState(GAME_LINK_CABLE_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,3 +497,137 @@ void HandleInvalidPasswordMenu(void)
|
||||
void nullsub_54(void)
|
||||
{
|
||||
}
|
||||
|
||||
void WonderMailMainMenuCallback(void)
|
||||
{
|
||||
int iVar2;
|
||||
struct unkStruct_803B344 *temp;
|
||||
|
||||
switch(gUnknown_203B3E8->state) {
|
||||
case 0:
|
||||
sub_8014248(gUnknown_80E7AC4,0,1,&gUnknown_80E786C,0,4,0,0,0x101);
|
||||
break;
|
||||
case SEND_WONDER_MAIL_MAIN_SCREEN:
|
||||
sub_8014248(gUnknown_80E7AE0,0,3,&gUnknown_80E7894,0,4,0,0,0x101);
|
||||
break;
|
||||
case 3:
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
sub_802EF48();
|
||||
break;
|
||||
case RECEIVE_WONDER_MAIL_MAIN_SCREEN:
|
||||
sub_8014248(gUnknown_80E7B14,0,3,&gUnknown_80E78D8,0,4,0,0,0x101);
|
||||
break;
|
||||
case PASSWORD_SUCCESS:
|
||||
gUnknown_203B3E8->unk474 = gUnknown_203B3E8->unk3C0.unk0;
|
||||
if(gUnknown_203B3E8->unk474.unk2 == 4)
|
||||
{
|
||||
gUnknown_203B3E8->unk488 = &gUnknown_203B3E8->unk3C0.unk14;
|
||||
gUnknown_203B3E8->unk48C = gUnknown_203B3E8->unk3C0.unk3C;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B3E8->unk488 = NULL;
|
||||
gUnknown_203B3E8->unk48C = NULL;
|
||||
}
|
||||
sub_802D098(&gUnknown_203B3E8->unk474);
|
||||
break;
|
||||
case PREPARE_SAVE:
|
||||
if(gUnknown_203B3E8->unk498 != 0)
|
||||
{
|
||||
switch(gUnknown_203B3E8->wonderMailMethod)
|
||||
{
|
||||
case WONDER_MAIL_GAME_LINK:
|
||||
case WONDER_MAIL_PASSWORD:
|
||||
sub_80141B4(gUnknown_80E7B48,0,0,0x101);
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
sub_80141B4(gUnknown_80E7B48,0,0,0x101);
|
||||
break;
|
||||
case WONDER_MAIL_SENT:
|
||||
sub_80141B4(gUnknown_80E7B68,0,0,0x101);
|
||||
break;
|
||||
case WONDER_MAIL_ADDED:
|
||||
if (gUnknown_203B3E8->unk498 != '\0') {
|
||||
sub_80141B4(gUnknown_80E7B88,0,0,0x101);
|
||||
}
|
||||
else {
|
||||
// Wonder Mail was refused
|
||||
sub_80141B4(gUnknown_80E7BC8,0,0,0x101);
|
||||
}
|
||||
break;
|
||||
case GAME_LINK_CABLE_MENU:
|
||||
sub_8014248(gUnknown_80E7BEC,0,6,&gUnknown_80E78F8,0,4,0,0,0x101);
|
||||
break;
|
||||
case 6:
|
||||
nullsub_23(0);
|
||||
sub_80141B4(gUnknown_80E7C48,0,0,0);
|
||||
break;
|
||||
case 9:
|
||||
gUnknown_203B3E8->wonderMailStatus = 0;
|
||||
sub_8011830();
|
||||
iVar2 = sub_8037B28(gUnknown_203B3E8->unk24C);
|
||||
gUnknown_203B3E8->wonderMailStatus = iVar2;
|
||||
if (iVar2 == 0) {
|
||||
switch(gUnknown_203B3E8->unk24C)
|
||||
{
|
||||
case 9:
|
||||
MemoryFill8((u8 *)&gUnknown_203B3E8->unk254,0,0xb4);
|
||||
temp = sub_803B344(gUnknown_203B3E8->unk3BC);
|
||||
if(temp->unk14 != NULL){
|
||||
MemoryCopy8((u8 *)&gUnknown_203B3E8->unk254.unk14,temp->unk14,0x28);
|
||||
MemoryCopy8((u8 *)&gUnknown_203B3E8->unk254.unk3C,temp->unk18,0x78);
|
||||
}
|
||||
gUnknown_203B3E8->unk254.unk0 = temp->unk0;
|
||||
gUnknown_203B3E8->wonderMailStatus = sub_8037D64(gUnknown_203B3E8->unk24C,&gUnknown_203B3E8->unk254,&gUnknown_203B3E8->unk308);
|
||||
break;
|
||||
case 10:
|
||||
MemoryFill8((u8 *)&gUnknown_203B3E8->unk254,0,0xb4);
|
||||
MemoryFill8((u8 *)&gUnknown_203B3E8->unk308,0,0xb4);
|
||||
gUnknown_203B3E8->wonderMailStatus = sub_8037D64(gUnknown_203B3E8->unk24C,&gUnknown_203B3E8->unk254,&gUnknown_203B3E8->unk308);
|
||||
break;
|
||||
}
|
||||
if (gUnknown_203B3E8->wonderMailStatus == 0)
|
||||
{
|
||||
switch(gUnknown_203B3E8->unk24C)
|
||||
{
|
||||
case 9:
|
||||
case 10:
|
||||
gUnknown_203B3E8->wonderMailStatus = sub_80381F4(gUnknown_203B3E8->unk24C,&gUnknown_203B3E8->unk254,&gUnknown_203B3E8->unk308);
|
||||
if (sub_800D588() != '\0') {
|
||||
gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk308;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk254;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
xxx_call_start_bg_music();
|
||||
break;
|
||||
case PROMPT_PASSWORD_ENTRY:
|
||||
sub_80141B4(gUnknown_80E7C98,0,0,0x101);
|
||||
break;
|
||||
case PASSWORD_ENTRY_SCREEN:
|
||||
sub_8006518(gUnknown_203B3E8->unk1EC);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
sub_80151C0(5,gUnknown_203B3E8->PasswordEntryBuffer);
|
||||
break;
|
||||
case PASSWORD_INVALID:
|
||||
sub_8014248(gUnknown_80E7CC4,0,6,&gUnknown_80E78F8,0,4,0,0,0x101);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SetWonderMailMainMenuState(u8 newState)
|
||||
{
|
||||
gUnknown_203B3E8->state = newState;
|
||||
nullsub_54();
|
||||
WonderMailMainMenuCallback();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user