mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-27 19:24:58 -05:00
Data work and decomp some mail/pelipper board (#54)
* data work and decomp some mail/pelipper board * resuce -> rescue * label more data
This commit is contained in:
@@ -1578,7 +1578,7 @@ _0801D4FE:
|
||||
str r0, [r1, 0x78]
|
||||
movs r0, 0x9
|
||||
str r0, [r1, 0x7C]
|
||||
bl sub_802C83C
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801D532
|
||||
|
||||
@@ -602,7 +602,7 @@ sub_8095F8C:
|
||||
_08095F92:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096000
|
||||
bl CheckMailSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08095FA2
|
||||
@@ -666,8 +666,8 @@ sub_8095FE8:
|
||||
_08095FFC: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8095FE8
|
||||
|
||||
thumb_func_start sub_8096000
|
||||
sub_8096000:
|
||||
thumb_func_start CheckMailSlot
|
||||
CheckMailSlot:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
@@ -689,7 +689,7 @@ _08096020:
|
||||
_08096022:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8096000
|
||||
thumb_func_end CheckMailSlot
|
||||
|
||||
thumb_func_start sub_8096028
|
||||
sub_8096028:
|
||||
@@ -1994,7 +1994,7 @@ sub_80969AC:
|
||||
_080969B2:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096ACC
|
||||
bl CheckJobSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080969C2
|
||||
@@ -2155,8 +2155,8 @@ sub_8096AB4:
|
||||
_08096AC8: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096AB4
|
||||
|
||||
thumb_func_start sub_8096ACC
|
||||
sub_8096ACC:
|
||||
thumb_func_start CheckJobSlot
|
||||
CheckJobSlot:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
@@ -2179,7 +2179,7 @@ _08096AF0:
|
||||
_08096AF2:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8096ACC
|
||||
thumb_func_end CheckJobSlot
|
||||
|
||||
thumb_func_start sub_8096AF8
|
||||
sub_8096AF8:
|
||||
@@ -2632,8 +2632,8 @@ sub_8096DF8:
|
||||
_08096E10: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096DF8
|
||||
|
||||
thumb_func_start sub_8096E14
|
||||
sub_8096E14:
|
||||
thumb_func_start CheckPKMNNewsSlot
|
||||
CheckPKMNNewsSlot:
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r1, _08096E28
|
||||
@@ -2646,7 +2646,7 @@ sub_8096E14:
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08096E28: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096E14
|
||||
thumb_func_end CheckPKMNNewsSlot
|
||||
|
||||
thumb_func_start sub_8096E2C
|
||||
sub_8096E2C:
|
||||
|
||||
560
asm/mailbox.s
Normal file
560
asm/mailbox.s
Normal file
@@ -0,0 +1,560 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start CreateMailboxMenu
|
||||
CreateMailboxMenu:
|
||||
push {r4-r7,lr}
|
||||
ldr r4, _0802E380
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xFC
|
||||
movs r1, 0
|
||||
movs r2, 0x10
|
||||
bl MemoryFill16
|
||||
ldr r1, [r4]
|
||||
adds r2, r1, 0
|
||||
adds r2, 0xBC
|
||||
ldr r0, _0802E384
|
||||
str r0, [r2]
|
||||
adds r1, 0xC0
|
||||
movs r0, 0x2
|
||||
str r0, [r1]
|
||||
bl HasNoMailinMailbox
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802E2E6
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xFC
|
||||
movs r1, 0x1
|
||||
strh r1, [r0]
|
||||
_0802E2E6:
|
||||
movs r5, 0x1
|
||||
ldr r1, [r4]
|
||||
movs r6, 0x1
|
||||
adds r2, r1, 0
|
||||
adds r2, 0xC4
|
||||
ldr r0, _0802E388
|
||||
str r0, [r2]
|
||||
adds r1, 0xC8
|
||||
movs r0, 0x3
|
||||
str r0, [r1]
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802E30A
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xFE
|
||||
strh r5, [r0]
|
||||
_0802E30A:
|
||||
ldr r1, [r4]
|
||||
adds r2, r1, 0
|
||||
adds r2, 0xCC
|
||||
ldr r0, _0802E38C
|
||||
str r0, [r2]
|
||||
adds r1, 0xD0
|
||||
movs r0, 0x4
|
||||
str r0, [r1]
|
||||
bl HasNoPKMNNews
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802E32E
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x80
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
strh r6, [r0]
|
||||
_0802E32E:
|
||||
movs r5, 0x3
|
||||
ldr r2, [r4]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xD4
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
adds r0, 0x4
|
||||
str r6, [r0]
|
||||
movs r3, 0
|
||||
adds r6, r4, 0
|
||||
mov r12, r2
|
||||
mov r4, r12
|
||||
adds r4, 0xFC
|
||||
adds r2, 0xC0
|
||||
_0802E34A:
|
||||
ldrh r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _0802E35A
|
||||
ldr r1, [r2]
|
||||
mov r7, r12
|
||||
ldr r0, [r7, 0x64]
|
||||
cmp r1, r0
|
||||
beq _0802E3B2
|
||||
_0802E35A:
|
||||
adds r4, 0x2
|
||||
adds r2, 0x8
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
blt _0802E34A
|
||||
movs r3, 0
|
||||
cmp r3, r5
|
||||
bge _0802E3B2
|
||||
ldr r1, [r6]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xFC
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0802E390
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xC0
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x64]
|
||||
b _0802E3B2
|
||||
.align 2, 0
|
||||
_0802E380: .4byte gUnknown_203B304
|
||||
_0802E384: .4byte gMailboxCheckMail
|
||||
_0802E388: .4byte gMailboxJobList
|
||||
_0802E38C: .4byte gMailboxPKMNNews
|
||||
_0802E390:
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
bge _0802E3B2
|
||||
ldr r2, [r6]
|
||||
lsls r0, r3, 1
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xFC
|
||||
adds r1, r0
|
||||
ldrh r0, [r1]
|
||||
cmp r0, 0
|
||||
bne _0802E390
|
||||
lsls r0, r3, 3
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xC0
|
||||
adds r1, r0
|
||||
ldr r0, [r1]
|
||||
str r0, [r2, 0x64]
|
||||
_0802E3B2:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end CreateMailboxMenu
|
||||
|
||||
thumb_func_start CreateMailActionMenu
|
||||
CreateMailActionMenu:
|
||||
push {r4-r7,lr}
|
||||
movs r5, 0
|
||||
ldr r4, _0802E3F0
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_8095FE8
|
||||
adds r7, r0, 0
|
||||
ldrb r0, [r7]
|
||||
cmp r0, 0x1
|
||||
bne _0802E3FC
|
||||
ldr r2, [r4]
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xBC
|
||||
ldr r0, _0802E3F4
|
||||
str r0, [r1]
|
||||
adds r1, 0x4
|
||||
movs r0, 0x6
|
||||
str r0, [r1]
|
||||
adds r1, 0x4
|
||||
ldr r0, _0802E3F8
|
||||
str r0, [r1]
|
||||
adds r1, 0x4
|
||||
movs r0, 0x7
|
||||
str r0, [r1]
|
||||
movs r5, 0x2
|
||||
b _0802E44A
|
||||
.align 2, 0
|
||||
_0802E3F0: .4byte gUnknown_203B304
|
||||
_0802E3F4: .4byte gMailActionStore
|
||||
_0802E3F8: .4byte gMailActionRead
|
||||
_0802E3FC:
|
||||
ldr r1, [r4]
|
||||
adds r2, r1, 0
|
||||
adds r2, 0xBC
|
||||
ldr r0, _0802E494
|
||||
ldr r0, [r0]
|
||||
str r0, [r2]
|
||||
adds r1, 0xC0
|
||||
movs r0, 0x5
|
||||
str r0, [r1]
|
||||
adds r0, r7, 0
|
||||
bl sub_80968B0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E422
|
||||
bl sub_80969AC
|
||||
cmp r0, 0x7
|
||||
ble _0802E42C
|
||||
_0802E422:
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xC0
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
_0802E42C:
|
||||
adds r5, 0x1
|
||||
ldr r4, _0802E498
|
||||
ldr r2, [r4]
|
||||
lsls r3, r5, 3
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xBC
|
||||
adds r0, r3
|
||||
ldr r1, _0802E49C
|
||||
ldr r1, [r1]
|
||||
str r1, [r0]
|
||||
adds r2, 0xC0
|
||||
adds r2, r3
|
||||
movs r0, 0x8
|
||||
str r0, [r2]
|
||||
adds r5, 0x1
|
||||
_0802E44A:
|
||||
mov r12, r4
|
||||
mov r0, r12
|
||||
ldr r4, [r0]
|
||||
lsls r2, r5, 3
|
||||
adds r0, r4, 0
|
||||
adds r0, 0xBC
|
||||
adds r0, r2
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0xC0
|
||||
adds r2, r1, r2
|
||||
movs r0, 0x1
|
||||
str r0, [r2]
|
||||
movs r3, 0
|
||||
cmp r3, r5
|
||||
bge _0802E486
|
||||
movs r6, 0x1
|
||||
negs r6, r6
|
||||
adds r2, r1, 0
|
||||
_0802E472:
|
||||
ldr r1, [r2]
|
||||
cmp r1, r6
|
||||
beq _0802E47E
|
||||
ldr r0, [r4, 0x68]
|
||||
cmp r1, r0
|
||||
beq _0802E4A8
|
||||
_0802E47E:
|
||||
adds r2, 0x8
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
blt _0802E472
|
||||
_0802E486:
|
||||
ldrb r0, [r7]
|
||||
cmp r0, 0x1
|
||||
bne _0802E4A0
|
||||
mov r0, r12
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x7
|
||||
b _0802E4A6
|
||||
.align 2, 0
|
||||
_0802E494: .4byte gUnknown_80D4990
|
||||
_0802E498: .4byte gUnknown_203B304
|
||||
_0802E49C: .4byte gUnknown_80D4970
|
||||
_0802E4A0:
|
||||
mov r0, r12
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x8
|
||||
_0802E4A6:
|
||||
str r0, [r1, 0x68]
|
||||
_0802E4A8:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end CreateMailActionMenu
|
||||
|
||||
thumb_func_start sub_802E4B0
|
||||
sub_802E4B0:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
ldr r4, _0802E4F0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E4DC
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0802E4DC
|
||||
ldr r0, [r4]
|
||||
str r1, [r0, 0x64]
|
||||
_0802E4DC:
|
||||
ldr r0, [sp]
|
||||
subs r0, 0x1
|
||||
cmp r0, 0x7
|
||||
bhi _0802E56E
|
||||
lsls r0, 2
|
||||
ldr r1, _0802E4F4
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802E4F0: .4byte gUnknown_203B304
|
||||
_0802E4F4: .4byte _0802E4F8
|
||||
.align 2, 0
|
||||
_0802E4F8:
|
||||
.4byte _0802E568
|
||||
.4byte _0802E518
|
||||
.4byte _0802E52A
|
||||
.4byte _0802E53C
|
||||
.4byte _0802E56E
|
||||
.4byte _0802E56E
|
||||
.4byte _0802E56E
|
||||
.4byte _0802E560
|
||||
_0802E518:
|
||||
bl HasNoMailinMailbox
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E54E
|
||||
movs r0, 0x4
|
||||
bl SetMailboxState
|
||||
b _0802E56E
|
||||
_0802E52A:
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E54E
|
||||
movs r0, 0x8
|
||||
bl SetMailboxState
|
||||
b _0802E56E
|
||||
_0802E53C:
|
||||
bl HasNoPKMNNews
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E54E
|
||||
movs r0, 0x9
|
||||
bl SetMailboxState
|
||||
b _0802E56E
|
||||
_0802E54E:
|
||||
ldr r0, _0802E55C
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x6C
|
||||
movs r1, 0x1
|
||||
bl sub_8012EA4
|
||||
b _0802E56E
|
||||
.align 2, 0
|
||||
_0802E55C: .4byte gUnknown_203B304
|
||||
_0802E560:
|
||||
movs r0, 0x2
|
||||
bl SetMailboxState
|
||||
b _0802E56E
|
||||
_0802E568:
|
||||
movs r0, 0x3
|
||||
bl SetMailboxState
|
||||
_0802E56E:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802E4B0
|
||||
|
||||
thumb_func_start sub_802E578
|
||||
sub_802E578:
|
||||
push {r4,lr}
|
||||
movs r0, 0x1
|
||||
bl sub_802BDEC
|
||||
cmp r0, 0x4
|
||||
bhi _0802E606
|
||||
lsls r0, 2
|
||||
ldr r1, _0802E590
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802E590: .4byte _0802E594
|
||||
.align 2, 0
|
||||
_0802E594:
|
||||
.4byte _0802E606
|
||||
.4byte _0802E606
|
||||
.4byte _0802E5FC
|
||||
.4byte _0802E5A8
|
||||
.4byte _0802E5C0
|
||||
_0802E5A8:
|
||||
bl sub_802BE74
|
||||
ldr r1, _0802E5BC
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0x8]
|
||||
movs r0, 0x6
|
||||
bl SetMailboxState
|
||||
b _0802E606
|
||||
.align 2, 0
|
||||
_0802E5BC: .4byte gUnknown_203B304
|
||||
_0802E5C0:
|
||||
bl sub_802BE74
|
||||
ldr r4, _0802E5F0
|
||||
ldr r1, [r4]
|
||||
strb r0, [r1, 0x8]
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_8095FE8
|
||||
adds r2, r0, 0
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x1
|
||||
bne _0802E5F4
|
||||
ldr r1, [r4]
|
||||
ldrb r0, [r2, 0x5]
|
||||
strb r0, [r1, 0x9]
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x5
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0xB
|
||||
bl SetMailboxState
|
||||
b _0802E606
|
||||
.align 2, 0
|
||||
_0802E5F0: .4byte gUnknown_203B304
|
||||
_0802E5F4:
|
||||
movs r0, 0x7
|
||||
bl SetMailboxState
|
||||
b _0802E606
|
||||
_0802E5FC:
|
||||
bl sub_802BEDC
|
||||
movs r0, 0x1
|
||||
bl SetMailboxState
|
||||
_0802E606:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802E578
|
||||
|
||||
thumb_func_start sub_802E60C
|
||||
sub_802E60C:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_802BDEC
|
||||
ldr r4, _0802E650
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E63C
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0802E63C
|
||||
ldr r0, [r4]
|
||||
str r1, [r0, 0x68]
|
||||
_0802E63C:
|
||||
ldr r0, [sp]
|
||||
subs r0, 0x1
|
||||
cmp r0, 0x7
|
||||
bhi _0802E732
|
||||
lsls r0, 2
|
||||
ldr r1, _0802E654
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802E650: .4byte gUnknown_203B304
|
||||
_0802E654: .4byte _0802E658
|
||||
.align 2, 0
|
||||
_0802E658:
|
||||
.4byte _0802E72C
|
||||
.4byte _0802E732
|
||||
.4byte _0802E732
|
||||
.4byte _0802E732
|
||||
.4byte _0802E678
|
||||
.4byte _0802E6BC
|
||||
.4byte _0802E704
|
||||
.4byte _0802E6B4
|
||||
_0802E678:
|
||||
ldr r0, _0802E6AC
|
||||
bl PlaySound
|
||||
ldr r4, _0802E6B0
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_8095FE8
|
||||
bl sub_8096A78
|
||||
bl sub_8096C80
|
||||
bl sub_8096D24
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_8096040
|
||||
bl sub_8096078
|
||||
bl HasNoMailinMailbox
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E6E8
|
||||
b _0802E6FC
|
||||
.align 2, 0
|
||||
_0802E6AC: .4byte 0x00000133
|
||||
_0802E6B0: .4byte gUnknown_203B304
|
||||
_0802E6B4:
|
||||
movs r0, 0x7
|
||||
bl SetMailboxState
|
||||
b _0802E732
|
||||
_0802E6BC:
|
||||
ldr r0, _0802E6F4
|
||||
bl PlaySound
|
||||
ldr r4, _0802E6F8
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_8095FE8
|
||||
ldrb r0, [r0, 0x5]
|
||||
bl sub_8096DF8
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_8096040
|
||||
bl sub_8096078
|
||||
bl HasNoMailinMailbox
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802E6FC
|
||||
_0802E6E8:
|
||||
bl sub_802BEDC
|
||||
movs r0, 0x1
|
||||
bl SetMailboxState
|
||||
b _0802E732
|
||||
.align 2, 0
|
||||
_0802E6F4: .4byte 0x00000133
|
||||
_0802E6F8: .4byte gUnknown_203B304
|
||||
_0802E6FC:
|
||||
movs r0, 0x5
|
||||
bl SetMailboxState
|
||||
b _0802E732
|
||||
_0802E704:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
ldr r4, _0802E728
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_8095FE8
|
||||
ldr r1, [r4]
|
||||
ldrb r0, [r0, 0x5]
|
||||
strb r0, [r1, 0x9]
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x5
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0xB
|
||||
bl SetMailboxState
|
||||
b _0802E732
|
||||
.align 2, 0
|
||||
_0802E728: .4byte gUnknown_203B304
|
||||
_0802E72C:
|
||||
movs r0, 0x5
|
||||
bl SetMailboxState
|
||||
_0802E732:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802E60C
|
||||
|
||||
.align 2,0
|
||||
448
asm/pelipper_board.s
Normal file
448
asm/pelipper_board.s
Normal file
@@ -0,0 +1,448 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start CreatePelipperBoardMenu
|
||||
CreatePelipperBoardMenu:
|
||||
push {r4-r7,lr}
|
||||
ldr r4, _0802EBDC
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xFC
|
||||
movs r1, 0
|
||||
movs r2, 0x10
|
||||
bl MemoryFill16
|
||||
ldr r1, [r4]
|
||||
adds r2, r1, 0
|
||||
adds r2, 0xBC
|
||||
ldr r0, _0802EBE0
|
||||
str r0, [r2]
|
||||
adds r1, 0xC0
|
||||
movs r0, 0x2
|
||||
str r0, [r1]
|
||||
bl sub_802C4A4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802EB66
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xFC
|
||||
movs r1, 0x1
|
||||
strh r1, [r0]
|
||||
_0802EB66:
|
||||
movs r5, 0x1
|
||||
ldr r1, [r4]
|
||||
adds r2, r1, 0
|
||||
adds r2, 0xC4
|
||||
ldr r0, _0802EBE4
|
||||
str r0, [r2]
|
||||
adds r1, 0xC8
|
||||
movs r0, 0x3
|
||||
str r0, [r1]
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802EB88
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xFE
|
||||
strh r5, [r0]
|
||||
_0802EB88:
|
||||
movs r5, 0x2
|
||||
ldr r2, [r4]
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xCC
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
adds r1, 0x4
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
movs r3, 0
|
||||
adds r6, r4, 0
|
||||
mov r12, r2
|
||||
mov r4, r12
|
||||
adds r4, 0xFC
|
||||
adds r2, 0xC0
|
||||
_0802EBA6:
|
||||
ldrh r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _0802EBB6
|
||||
ldr r1, [r2]
|
||||
mov r7, r12
|
||||
ldr r0, [r7, 0x64]
|
||||
cmp r1, r0
|
||||
beq _0802EC0A
|
||||
_0802EBB6:
|
||||
adds r4, 0x2
|
||||
adds r2, 0x8
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
blt _0802EBA6
|
||||
movs r3, 0
|
||||
cmp r3, r5
|
||||
bge _0802EC0A
|
||||
ldr r1, [r6]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xFC
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0802EBE8
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xC0
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x64]
|
||||
b _0802EC0A
|
||||
.align 2, 0
|
||||
_0802EBDC: .4byte gUnknown_203B308
|
||||
_0802EBE0: .4byte gPelipperBoard_BulletinBoard
|
||||
_0802EBE4: .4byte gPelipperBoard_JobList
|
||||
_0802EBE8:
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
bge _0802EC0A
|
||||
ldr r2, [r6]
|
||||
lsls r0, r3, 1
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xFC
|
||||
adds r1, r0
|
||||
ldrh r0, [r1]
|
||||
cmp r0, 0
|
||||
bne _0802EBE8
|
||||
lsls r0, r3, 3
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xC0
|
||||
adds r1, r0
|
||||
ldr r0, [r1]
|
||||
str r0, [r2, 0x64]
|
||||
_0802EC0A:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end CreatePelipperBoardMenu
|
||||
|
||||
thumb_func_start sub_802EC10
|
||||
sub_802EC10:
|
||||
push {r4-r7,lr}
|
||||
movs r6, 0
|
||||
ldr r4, _0802ECA8
|
||||
ldr r2, [r4]
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xBC
|
||||
ldr r0, _0802ECAC
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
adds r1, 0x4
|
||||
movs r0, 0x4
|
||||
str r0, [r1]
|
||||
ldrb r0, [r2, 0x8]
|
||||
bl sub_8096574
|
||||
bl sub_80968B0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802EC40
|
||||
bl sub_80969AC
|
||||
cmp r0, 0x7
|
||||
ble _0802EC4A
|
||||
_0802EC40:
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xC0
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
_0802EC4A:
|
||||
adds r6, 0x1
|
||||
ldr r4, _0802ECA8
|
||||
ldr r5, [r4]
|
||||
lsls r1, r6, 3
|
||||
adds r2, r5, 0
|
||||
adds r2, 0xBC
|
||||
adds r3, r2, r1
|
||||
ldr r0, _0802ECB0
|
||||
ldr r0, [r0]
|
||||
str r0, [r3]
|
||||
adds r3, r5, 0
|
||||
adds r3, 0xC0
|
||||
adds r1, r3, r1
|
||||
movs r0, 0x5
|
||||
str r0, [r1]
|
||||
adds r6, 0x1
|
||||
lsls r1, r6, 3
|
||||
adds r2, r1
|
||||
movs r0, 0
|
||||
str r0, [r2]
|
||||
adds r1, r3, r1
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
movs r2, 0
|
||||
adds r7, r4, 0
|
||||
cmp r2, r6
|
||||
bge _0802EC9C
|
||||
adds r4, r5, 0
|
||||
movs r5, 0x1
|
||||
negs r5, r5
|
||||
adds r1, r3, 0
|
||||
_0802EC88:
|
||||
ldr r3, [r1]
|
||||
cmp r3, r5
|
||||
beq _0802EC94
|
||||
ldr r0, [r4, 0x68]
|
||||
cmp r3, r0
|
||||
beq _0802ECA2
|
||||
_0802EC94:
|
||||
adds r1, 0x8
|
||||
adds r2, 0x1
|
||||
cmp r2, r6
|
||||
blt _0802EC88
|
||||
_0802EC9C:
|
||||
ldr r1, [r7]
|
||||
movs r0, 0x5
|
||||
str r0, [r1, 0x68]
|
||||
_0802ECA2:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802ECA8: .4byte gUnknown_203B308
|
||||
_0802ECAC: .4byte gUnknown_80D4990
|
||||
_0802ECB0: .4byte gUnknown_80D4970
|
||||
thumb_func_end sub_802EC10
|
||||
|
||||
thumb_func_start sub_802ECB4
|
||||
sub_802ECB4:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
ldr r4, _0802ECF0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802ECE0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0802ECE0
|
||||
ldr r0, [r4]
|
||||
str r1, [r0, 0x64]
|
||||
_0802ECE0:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x2
|
||||
beq _0802ECFE
|
||||
cmp r0, 0x2
|
||||
bgt _0802ECF4
|
||||
cmp r0, 0x1
|
||||
beq _0802ED3C
|
||||
b _0802ED42
|
||||
.align 2, 0
|
||||
_0802ECF0: .4byte gUnknown_203B308
|
||||
_0802ECF4:
|
||||
cmp r0, 0x3
|
||||
beq _0802ED10
|
||||
cmp r0, 0x5
|
||||
beq _0802ED34
|
||||
b _0802ED42
|
||||
_0802ECFE:
|
||||
bl sub_802C4A4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802ED22
|
||||
movs r0, 0x4
|
||||
bl SetPelipperBoardState
|
||||
b _0802ED42
|
||||
_0802ED10:
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802ED22
|
||||
movs r0, 0x8
|
||||
bl SetPelipperBoardState
|
||||
b _0802ED42
|
||||
_0802ED22:
|
||||
ldr r0, _0802ED30
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x6C
|
||||
movs r1, 0x1
|
||||
bl sub_8012EA4
|
||||
b _0802ED42
|
||||
.align 2, 0
|
||||
_0802ED30: .4byte gUnknown_203B308
|
||||
_0802ED34:
|
||||
movs r0, 0x2
|
||||
bl SetPelipperBoardState
|
||||
b _0802ED42
|
||||
_0802ED3C:
|
||||
movs r0, 0x3
|
||||
bl SetPelipperBoardState
|
||||
_0802ED42:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802ECB4
|
||||
|
||||
thumb_func_start sub_802ED4C
|
||||
sub_802ED4C:
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl sub_802C1E4
|
||||
cmp r0, 0x4
|
||||
bhi _0802EDB6
|
||||
lsls r0, 2
|
||||
ldr r1, _0802ED64
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802ED64: .4byte _0802ED68
|
||||
.align 2, 0
|
||||
_0802ED68:
|
||||
.4byte _0802EDB6
|
||||
.4byte _0802EDB6
|
||||
.4byte _0802EDAC
|
||||
.4byte _0802ED7C
|
||||
.4byte _0802ED94
|
||||
_0802ED7C:
|
||||
bl sub_802C26C
|
||||
ldr r1, _0802ED90
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0x8]
|
||||
movs r0, 0x6
|
||||
bl SetPelipperBoardState
|
||||
b _0802EDB6
|
||||
.align 2, 0
|
||||
_0802ED90: .4byte gUnknown_203B308
|
||||
_0802ED94:
|
||||
bl sub_802C26C
|
||||
ldr r1, _0802EDA8
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0x8]
|
||||
movs r0, 0x7
|
||||
bl SetPelipperBoardState
|
||||
b _0802EDB6
|
||||
.align 2, 0
|
||||
_0802EDA8: .4byte gUnknown_203B308
|
||||
_0802EDAC:
|
||||
bl sub_802C2D4
|
||||
movs r0, 0x1
|
||||
bl SetPelipperBoardState
|
||||
_0802EDB6:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802ED4C
|
||||
|
||||
thumb_func_start sub_802EDBC
|
||||
sub_802EDBC:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_802C1E4
|
||||
ldr r4, _0802EDFC
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802EDEC
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0802EDEC
|
||||
ldr r0, [r4]
|
||||
str r1, [r0, 0x68]
|
||||
_0802EDEC:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x4
|
||||
beq _0802EE06
|
||||
cmp r0, 0x4
|
||||
bgt _0802EE00
|
||||
cmp r0, 0x1
|
||||
beq _0802EE90
|
||||
b _0802EE96
|
||||
.align 2, 0
|
||||
_0802EDFC: .4byte gUnknown_203B308
|
||||
_0802EE00:
|
||||
cmp r0, 0x5
|
||||
beq _0802EE88
|
||||
b _0802EE96
|
||||
_0802EE06:
|
||||
ldr r0, _0802EE28
|
||||
bl PlaySound
|
||||
ldr r4, _0802EE2C
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_8096574
|
||||
ldrb r1, [r0]
|
||||
cmp r1, 0x3
|
||||
beq _0802EE3C
|
||||
cmp r1, 0x3
|
||||
bgt _0802EE30
|
||||
cmp r1, 0x2
|
||||
beq _0802EE36
|
||||
b _0802EE5E
|
||||
.align 2, 0
|
||||
_0802EE28: .4byte 0x00000133
|
||||
_0802EE2C: .4byte gUnknown_203B308
|
||||
_0802EE30:
|
||||
cmp r1, 0x4
|
||||
beq _0802EE42
|
||||
b _0802EE5E
|
||||
_0802EE36:
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x1
|
||||
b _0802EE46
|
||||
_0802EE3C:
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x2
|
||||
b _0802EE46
|
||||
_0802EE42:
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x3
|
||||
_0802EE46:
|
||||
str r1, [r0, 0x4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl sub_80965B8
|
||||
bl sub_80965F4
|
||||
bl sub_802C2D4
|
||||
movs r0, 0x3
|
||||
bl SetPelipperBoardState
|
||||
b _0802EE96
|
||||
_0802EE5E:
|
||||
bl sub_8096A78
|
||||
bl sub_8096C80
|
||||
bl sub_8096D24
|
||||
bl sub_802C4A4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802EE80
|
||||
bl sub_802C2D4
|
||||
movs r0, 0x1
|
||||
bl SetPelipperBoardState
|
||||
b _0802EE96
|
||||
_0802EE80:
|
||||
movs r0, 0x5
|
||||
bl SetPelipperBoardState
|
||||
b _0802EE96
|
||||
_0802EE88:
|
||||
movs r0, 0x7
|
||||
bl SetPelipperBoardState
|
||||
b _0802EE96
|
||||
_0802EE90:
|
||||
movs r0, 0x5
|
||||
bl SetPelipperBoardState
|
||||
_0802EE96:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802EDBC
|
||||
|
||||
.align 2,0
|
||||
@@ -156,7 +156,7 @@ sub_802B9A8:
|
||||
_0802B9AE:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096E14
|
||||
bl CheckPKMNNewsSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802B9C6
|
||||
@@ -177,14 +177,14 @@ _0802B9C6:
|
||||
_0802B9D4: .4byte gUnknown_203B2CC
|
||||
thumb_func_end sub_802B9A8
|
||||
|
||||
thumb_func_start sub_802B9D8
|
||||
sub_802B9D8:
|
||||
thumb_func_start HasNoPKMNNews
|
||||
HasNoPKMNNews:
|
||||
push {r4,lr}
|
||||
movs r4, 0
|
||||
_0802B9DC:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096E14
|
||||
bl CheckPKMNNewsSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802B9EE
|
||||
@@ -199,7 +199,7 @@ _0802B9F6:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802B9D8
|
||||
thumb_func_end HasNoPKMNNews
|
||||
|
||||
thumb_func_start sub_802B9FC
|
||||
sub_802B9FC:
|
||||
@@ -622,7 +622,7 @@ sub_802BD14:
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
mov r8, r2
|
||||
bl sub_802C0E8
|
||||
bl HasNoMailinMailbox
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802BD2E
|
||||
@@ -1074,7 +1074,7 @@ sub_802C0B8:
|
||||
_0802C0BE:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096000
|
||||
bl CheckMailSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802C0D6
|
||||
@@ -1095,14 +1095,14 @@ _0802C0D6:
|
||||
_0802C0E4: .4byte gUnknown_203B2D8
|
||||
thumb_func_end sub_802C0B8
|
||||
|
||||
thumb_func_start sub_802C0E8
|
||||
sub_802C0E8:
|
||||
thumb_func_start HasNoMailinMailbox
|
||||
HasNoMailinMailbox:
|
||||
push {r4,lr}
|
||||
movs r4, 0
|
||||
_0802C0EC:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096000
|
||||
bl CheckMailSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802C0FE
|
||||
@@ -1117,7 +1117,7 @@ _0802C106:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802C0E8
|
||||
thumb_func_end HasNoMailinMailbox
|
||||
|
||||
thumb_func_start sub_802C10C
|
||||
sub_802C10C:
|
||||
@@ -1605,7 +1605,7 @@ sub_802C4C8:
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
mov r8, r2
|
||||
bl sub_802C83C
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802C4E2
|
||||
@@ -2013,7 +2013,7 @@ sub_802C80C:
|
||||
_0802C812:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096ACC
|
||||
bl CheckJobSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802C82A
|
||||
@@ -2034,14 +2034,14 @@ _0802C82A:
|
||||
_0802C838: .4byte gUnknown_203B2E8
|
||||
thumb_func_end sub_802C80C
|
||||
|
||||
thumb_func_start sub_802C83C
|
||||
sub_802C83C:
|
||||
thumb_func_start HasNoAcceptedJobs
|
||||
HasNoAcceptedJobs:
|
||||
push {r4,lr}
|
||||
movs r4, 0
|
||||
_0802C840:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096ACC
|
||||
bl CheckJobSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802C852
|
||||
@@ -2056,13 +2056,13 @@ _0802C85A:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802C83C
|
||||
thumb_func_end HasNoAcceptedJobs
|
||||
|
||||
thumb_func_start sub_802C860
|
||||
sub_802C860:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
bl sub_802C83C
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r5, 0
|
||||
@@ -2717,7 +2717,7 @@ _0802CD88:
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl sub_8096C3C
|
||||
bl sub_8096C80
|
||||
bl sub_802C83C
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802CDAA
|
||||
|
||||
3683
asm/wonder_mail_3.s
3683
asm/wonder_mail_3.s
File diff suppressed because it is too large
Load Diff
1740
asm/wonder_mail_3_mid.s
Normal file
1740
asm/wonder_mail_3_mid.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -209,6 +209,7 @@
|
||||
'þ' = FE
|
||||
'ÿ' = FF
|
||||
|
||||
'?' = 81 48
|
||||
'♪' = 81 F4
|
||||
|
||||
'し' = 82 B5
|
||||
|
||||
@@ -399,13 +399,13 @@ gUnknown_80E0378: @ 80E0378
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gPelliperBoard_BulletinBoard
|
||||
gPelliperBoard_BulletinBoard: @ 80E0390
|
||||
.global gPelipperBoard_BulletinBoard
|
||||
gPelipperBoard_BulletinBoard: @ 80E0390
|
||||
.string "Bulletin Board\0"
|
||||
.align 2,0
|
||||
|
||||
.global gPelliperBoard_JobList
|
||||
gPelliperBoard_JobList: @ 80E03A0
|
||||
.global gPelipperBoard_JobList
|
||||
gPelipperBoard_JobList: @ 80E03A0
|
||||
.string "Job List\0"
|
||||
.align 2,0
|
||||
|
||||
|
||||
@@ -2251,8 +2251,8 @@ gUnknown_80E762C: @ 80E762C
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80E7644
|
||||
gUnknown_80E7644: @ 80E7644
|
||||
.global gResumeQuicksaveMenuItems
|
||||
gResumeQuicksaveMenuItems: @ 80E7644
|
||||
.4byte ResumeQuicksave_80E7668
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.4byte IsThatOK_80E765C
|
||||
@@ -2268,8 +2268,8 @@ gUnknown_80E7644: @ 80E7644
|
||||
.string "Resuming from quicksave.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7684
|
||||
gUnknown_80E7684: @ 80E7684
|
||||
.global gResumeAdventureMenuItems
|
||||
gResumeAdventureMenuItems: @ 80E7684
|
||||
.4byte ResumeAdventure_80E769C
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.4byte IsThatOK_80E765C
|
||||
@@ -2281,21 +2281,21 @@ gUnknown_80E7684: @ 80E7684
|
||||
.string "Resuming saved adventure.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E76B8
|
||||
gUnknown_80E76B8: @ 80E76B8
|
||||
.4byte QuitAwaitingResuce_80E76D0
|
||||
.global gQuitWaitingRescueMenuItems
|
||||
gQuitWaitingRescueMenuItems: @ 80E76B8
|
||||
.4byte QuitAwaitingRescue_80E76D0
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.4byte IsThatOK_80E765C
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
|
||||
QuitAwaitingResuce_80E76D0:
|
||||
QuitAwaitingRescue_80E76D0:
|
||||
.string "Quit awaiting rescue?\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E76E8
|
||||
gUnknown_80E76E8: @ 80E76E8
|
||||
.global gDeleteSavePromptMenuItems
|
||||
gDeleteSavePromptMenuItems: @ 80E76E8
|
||||
.4byte Deleted_80E7718
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.4byte Deleted_80E7700
|
||||
@@ -2311,8 +2311,8 @@ gUnknown_80E76E8: @ 80E76E8
|
||||
.string "Your saved data will be\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7730
|
||||
gUnknown_80E7730: @ 80E7730
|
||||
.global gDeleteSaveConfirmMenuItems
|
||||
gDeleteSaveConfirmMenuItems: @ 80E7730
|
||||
.4byte Deleted_80E7768
|
||||
.byte 0x05, 0x00, 0x00, 0x00
|
||||
.4byte Deleted_80E7748
|
||||
@@ -2337,292 +2337,3 @@ gUnknown_80E7784: @ 80E7784
|
||||
.byte 0x05, 0x00, 0x03, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80E779C
|
||||
gUnknown_80E779C: @ 80E779C
|
||||
.4byte Yes_80E77B8
|
||||
.4byte 1
|
||||
.4byte No_80E77B4
|
||||
.4byte 2
|
||||
.4byte 0
|
||||
.4byte 3
|
||||
|
||||
.global No_80E77B4
|
||||
No_80E77B4:
|
||||
.asciz "No"
|
||||
.align 2,0
|
||||
|
||||
.global Yes_80E77B8
|
||||
Yes_80E77B8:
|
||||
.asciz "Yes"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E77BC
|
||||
gUnknown_80E77BC: @ 80E77BC
|
||||
.string "Team:\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E77C4
|
||||
gUnknown_80E77C4: @ 80E77C4
|
||||
.string "Name:\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E77CC
|
||||
gUnknown_80E77CC: @ 80E77CC
|
||||
.string "Location:\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E77D8
|
||||
gUnknown_80E77D8: @ 80E77D8
|
||||
.string "Play time:\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E77E4
|
||||
gUnknown_80E77E4: @ 80E77E4
|
||||
.string "Adventures:\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E77F0
|
||||
gUnknown_80E77F0: @ 80E77F0
|
||||
.string "Helper:\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E77F8
|
||||
gUnknown_80E77F8: @ 80E77F8
|
||||
.byte 0x81, 0x48
|
||||
.byte 0x81, 0x48
|
||||
.byte 0x81, 0x48
|
||||
.byte 0x81, 0x48
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80E7804
|
||||
gUnknown_80E7804: @ 80E7804
|
||||
.string "%s \0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7808
|
||||
gUnknown_80E7808: @ 80E7808
|
||||
.string "???\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E780C
|
||||
gUnknown_80E780C: @ 80E780C
|
||||
.string "Quicksave data deleted.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7824
|
||||
gUnknown_80E7824: @ 80E7824
|
||||
.string "Location unknown.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7838
|
||||
gUnknown_80E7838: @ 80E7838
|
||||
.string "%d:%02d:%02d \0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7848
|
||||
gUnknown_80E7848: @ 80E7848
|
||||
.string "%d\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E784C
|
||||
gUnknown_80E784C: @ 80E784C
|
||||
.string "%s (%s)\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7854
|
||||
gUnknown_80E7854: @ 80E7854
|
||||
.string "-----\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E785C
|
||||
gUnknown_80E785C: @ 80E785C
|
||||
.string "clmkpat\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E786C
|
||||
gUnknown_80E786C: @ 80E786C
|
||||
.4byte Send_80E788C
|
||||
.4byte 1
|
||||
.4byte Receive_80E7884
|
||||
.4byte 2
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
|
||||
.global Receive_80E7884
|
||||
Receive_80E7884:
|
||||
.asciz "Receive"
|
||||
.align 2,0
|
||||
|
||||
.global Send_80E788C
|
||||
Send_80E788C:
|
||||
.asciz "Send"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7894
|
||||
gUnknown_80E7894: @ 80E7894
|
||||
.4byte GameLinkCable_80E78C8
|
||||
.4byte 3
|
||||
.4byte Password_80E78BC
|
||||
.4byte -1
|
||||
.4byte Cancel_80E78B4
|
||||
.4byte 8
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
|
||||
.global Cancel_80E78B4
|
||||
Cancel_80E78B4:
|
||||
.asciz "Cancel"
|
||||
.align 2,0
|
||||
|
||||
.global Password_80E78BC
|
||||
Password_80E78BC:
|
||||
.asciz "Password"
|
||||
.align 2,0
|
||||
|
||||
.global GameLinkCable_80E78C8
|
||||
GameLinkCable_80E78C8:
|
||||
.asciz "Game Link cable"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E78D8
|
||||
gUnknown_80E78D8: @ 80E78D8
|
||||
.4byte GameLinkCable_80E78C8
|
||||
.4byte 3
|
||||
.4byte Password_80E78BC
|
||||
.4byte 5
|
||||
.4byte Cancel_80E78B4
|
||||
.4byte 8
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
|
||||
.global gUnknown_80E78F8
|
||||
gUnknown_80E78F8: @ 80E78F8
|
||||
.4byte Yes_80E7910
|
||||
.4byte 6
|
||||
.4byte Cancel_80E78B4
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
|
||||
.global Yes_80E7910
|
||||
Yes_80E7910:
|
||||
.asciz "Yes"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7914
|
||||
gUnknown_80E7914: @ 80E7914
|
||||
.asciz "There was a communication error."
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7938
|
||||
gUnknown_80E7938: @ 80E7938
|
||||
.string "An incorrect number of GBA systems are\n"
|
||||
.string "connected.\n"
|
||||
.asciz "Please redo this process from the start."
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7994
|
||||
gUnknown_80E7994: @ 80E7994
|
||||
.string "There is no response from your friend.\n"
|
||||
.asciz "Please redo this process from the start."
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E79E4
|
||||
gUnknown_80E79E4: @ 80E79E4
|
||||
.string "The sender and receiver appear to be\n"
|
||||
.string "in different modes.\n"
|
||||
.asciz "Please redo the process from the start."
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7A48
|
||||
gUnknown_80E7A48: @ 80E7A48
|
||||
.string "There is no response from your friend.\n"
|
||||
.string "Please make sure the sender and receiver\n"
|
||||
.string "are ready~2c then redo this from the start.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7AC4
|
||||
gUnknown_80E7AC4: @ 80E7AC4
|
||||
.asciz "What would you like to do?"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7AE0
|
||||
gUnknown_80E7AE0: @ 80E7AE0
|
||||
.string "How would you like to send your\n"
|
||||
.asciz "#CGWonder Mail#R?"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7B14
|
||||
gUnknown_80E7B14: @ 80E7B14
|
||||
.string "How would you like to receive the\n"
|
||||
.asciz "#CGWonder Mail#R?"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7B48
|
||||
gUnknown_80E7B48: @ 80E7B48
|
||||
.asciz "Your adventure will be saved."
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7B68
|
||||
gUnknown_80E7B68: @ 80E7B68
|
||||
.asciz "Your #CGWonder Mail#R was sent."
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7B88
|
||||
gUnknown_80E7B88: @ 80E7B88
|
||||
.string "The received #CGWonder Mail#R was\n"
|
||||
.string "added to the #CGJob List#R.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7BC8
|
||||
gUnknown_80E7BC8: @ 80E7BC8
|
||||
.asciz "The #CGWonder Mail#R was refused."
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7BEC
|
||||
gUnknown_80E7BEC: @ 80E7BEC
|
||||
.string "Connect a #CGGame Link cable#R.\n"
|
||||
.string "When you and your friend are ready~2c\n"
|
||||
.string "you may communicate. \0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7C48
|
||||
gUnknown_80E7C48: @ 80E7C48
|
||||
.string "#+In communication...\n"
|
||||
.string "#+Please wait with the power on.\n"
|
||||
.string "#+To cancel~2c press {B_BUTTON}.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7C98
|
||||
gUnknown_80E7C98: @ 80E7C98
|
||||
.string "Please enter the\n"
|
||||
.string "#CGWonder Mail password#R.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E7CC4
|
||||
gUnknown_80E7CC4: @ 80E7CC4
|
||||
.string "This password is incorrect.\n"
|
||||
.string "Would you like to enter it again?\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.4byte Yes_80E7D2C
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
.4byte Cancel_80E7D24
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global Cancel_80E7D24
|
||||
Cancel_80E7D24:
|
||||
.string "Cancel\0"
|
||||
.align 2,0
|
||||
.global Yes_80E7D2C
|
||||
Yes_80E7D2C:
|
||||
.string "Yes\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.string "pksdir0\0"
|
||||
|
||||
|
||||
@@ -8092,8 +8092,8 @@ gUnknown_8108F50: @ 8108F50
|
||||
gUnknown_8108F64: @ 8108F64
|
||||
.incbin "baserom.gba", 0x108F64, 0x800
|
||||
|
||||
.global gUnknown_8109764
|
||||
gUnknown_8109764: @ 8109764
|
||||
.global gItemParaFileName
|
||||
gItemParaFileName: @ 8109764
|
||||
.string "itempara\0"
|
||||
.align 2,0
|
||||
|
||||
|
||||
@@ -342,6 +342,7 @@ enum ItemID {
|
||||
|
||||
#define NUMBER_OF_GUMMIS 18
|
||||
#define INVENTORY_SIZE 20
|
||||
#define STORAGE_SIZE NUMBER_OF_ITEM_IDS
|
||||
|
||||
void LoadItemParameters(void);
|
||||
struct TeamInventory *GetMoneyItemsInfo(void);
|
||||
|
||||
27
include/mailbox.h
Normal file
27
include/mailbox.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef GUARD_MAILBOX_H
|
||||
#define GUARD_MAILBOX_H
|
||||
|
||||
struct unkStruct_203B304
|
||||
{
|
||||
// size: 0xB6 << 1
|
||||
u32 state;
|
||||
u32 unk4;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 fillA[0xC - 0xA];
|
||||
u32 unkC;
|
||||
u8 fill10[0x50 - 0x10];
|
||||
u8 unk50;
|
||||
u8 fill51[0x64 - 0x51];
|
||||
u32 unk64;
|
||||
u32 unk68;
|
||||
u32 unk6C;
|
||||
u8 fill70[0xBC - 0x70];
|
||||
struct MenuItem unkBC[8];
|
||||
u16 unkFC[8];
|
||||
struct UnkTextStruct2 unk10C[4];
|
||||
};
|
||||
|
||||
extern void SetMailboxState(u32);
|
||||
|
||||
#endif // GUARD_MAILBOX_H
|
||||
@@ -42,7 +42,7 @@ struct PersonalityStruct_203B400
|
||||
u32 unkb8;
|
||||
u32 unkbc;
|
||||
};
|
||||
extern struct PersonalityStruct_203B400 *gUnknown_203B400;
|
||||
EWRAM_DATA struct PersonalityStruct_203B400 *gUnknown_203B400;
|
||||
|
||||
struct PersonalityStruct_203B404
|
||||
{
|
||||
@@ -62,7 +62,7 @@ struct PersonalityStruct_203B404
|
||||
/* 0x54 */ struct UnkTextStruct2 unk54[4];
|
||||
/* 0xB4 */ u8 unkb4[4];
|
||||
};
|
||||
extern struct PersonalityStruct_203B404 *gUnknown_203B404;
|
||||
EWRAM_DATA struct PersonalityStruct_203B404 *gUnknown_203B404;
|
||||
|
||||
void InitializeTestStats(void);
|
||||
void GenerateNewQuestionOrGender(void);
|
||||
|
||||
@@ -22,7 +22,7 @@ struct RescueTeamData
|
||||
|
||||
void LoadRescueTeamInfo(void);
|
||||
struct RescueTeamData *GetRescueTeamInfo(void);
|
||||
void InitializeResuceTeamInfo(void);
|
||||
void InitializeRescueTeamInfo(void);
|
||||
void sub_80920B8(u8 *buffer);
|
||||
void sub_80920D8(u8 *buffer);
|
||||
void SetRescueTeamName(u8 *buffer);
|
||||
|
||||
@@ -78,6 +78,7 @@ char *sub_8011C4C(void);
|
||||
void sub_8011CA8(u32 *out, s32 size);
|
||||
u32 ReadSaveFromPak(u32 *a);
|
||||
u32 sub_8011F9C(s32 *r0, u8 *dest, s32 size);
|
||||
u32 sub_8011FA8(void);
|
||||
bool8 IsSaveCorrupted(void);
|
||||
void sub_8012284(void);
|
||||
void sub_8012298(void);
|
||||
|
||||
@@ -120,6 +120,13 @@ enum WonderMailMethod {
|
||||
WONDER_MAIL_PASSWORD = 5,
|
||||
};
|
||||
|
||||
enum WonderMailTypes {
|
||||
WONDER_MAIL_TYPE_SOS = 1,
|
||||
WONDER_MAIL_TYPE_AOK = 4,
|
||||
WONDER_MAIL_TYPE_THANK_YOU = 5,
|
||||
WONDER_MAIL_TYPE_WONDER = 5,
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -127,6 +127,13 @@ SECTIONS {
|
||||
asm/wonder_mail_2.o(.text);
|
||||
src/wonder_mail_3.o(.text);
|
||||
asm/wonder_mail_3.o(.text);
|
||||
src/mailbox.o(.text);
|
||||
asm/mailbox.o(.text);
|
||||
src/mailbox_1.o(.text);
|
||||
src/pelipper_board.o(.text);
|
||||
asm/pelipper_board.o(.text);
|
||||
src/pelipper_board_1.o(.text);
|
||||
asm/wonder_mail_3_mid.o(.text);
|
||||
src/wonder_mail_3_1.o(.text);
|
||||
src/makuhita_dojo.o(.text);
|
||||
asm/makuhita_dojo.o(.text);
|
||||
@@ -316,6 +323,8 @@ SECTIONS {
|
||||
data/data_80E1F30.o(.rodata);
|
||||
src/adventure_log.o(.rodata);
|
||||
data/data_80E2068.o(.rodata);
|
||||
src/load_screen.o(.rodata);
|
||||
src/wonder_mail_main_menu.o(.rodata);
|
||||
src/debug_menu.o(.rodata);
|
||||
data/data_80E7D40.o(.rodata);
|
||||
data/pokemon_mail.o(.rodata);
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
#define BG_PALETTE_BUFFER_SIZE 512
|
||||
#define BG_PALETTE_BUFFER_CHUNK_SIZE 16
|
||||
|
||||
extern u16 gBGPaletteBuffer[BG_PALETTE_BUFFER_SIZE];
|
||||
extern bool8 gBGPaletteUsed[BG_PALETTE_BUFFER_SIZE / BG_PALETTE_BUFFER_CHUNK_SIZE];
|
||||
EWRAM_DATA u16 gBGPaletteBuffer[BG_PALETTE_BUFFER_SIZE];
|
||||
EWRAM_DATA bool8 gBGPaletteUsed[BG_PALETTE_BUFFER_SIZE / BG_PALETTE_BUFFER_CHUNK_SIZE];
|
||||
|
||||
extern void CpuCopy(void* src, void* dest, u32 size);
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ 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)
|
||||
if(WonderMailData->mailType != WONDER_MAIL_TYPE_WONDER)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
#include "friend_area.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
EWRAM_DATA bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
|
||||
extern bool8 *gFriendAreas;
|
||||
bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
|
||||
EWRAM_DATA bool8 *gFriendAreas;
|
||||
|
||||
|
||||
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
|
||||
EWRAM_DATA struct UnusedInputStruct gUnusedInputsRelated;
|
||||
EWRAM_DATA struct Inputs gRealInputs;
|
||||
EWRAM_DATA struct UnusedInputStruct gUnusedInputsRelated;
|
||||
EWRAM_DATA u32 gUnusedScrambledInputJunk;
|
||||
EWRAM_DATA struct Inputs gBufferedInputs;
|
||||
EWRAM_DATA struct Inputs gCurrentInputs;
|
||||
EWRAM_DATA struct Inputs gLastInputs;
|
||||
EWRAM_DATA struct InputTimers gInputTimers;
|
||||
EWRAM_DATA u32 gUnusedScrambledInputJunk;
|
||||
|
||||
void ReadKeyInput(struct Inputs *r0);
|
||||
|
||||
|
||||
12
src/items.c
12
src/items.c
@@ -12,7 +12,7 @@ extern struct TeamInventory *gTeamInventory_203B460;
|
||||
extern struct TeamInventory gUnknown_20389A8;
|
||||
extern struct FileArchive gSystemFileArchive;
|
||||
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
|
||||
extern const char gUnknown_8109764;
|
||||
extern const char gItemParaFileName[];
|
||||
extern const char gUnknown_8109794[];
|
||||
extern const char gUnknown_81097A4[];
|
||||
extern s32 gUnknown_81097B0[];
|
||||
@@ -52,7 +52,7 @@ bool8 xxx_insert_unk250_8091C1C(u8);
|
||||
void LoadItemParameters(void)
|
||||
{
|
||||
gTeamInventory_203B460 = &gUnknown_20389A8;
|
||||
gItemParametersFile = OpenFileAndGetFileDataPtr(&gUnknown_8109764,&gSystemFileArchive);
|
||||
gItemParametersFile = OpenFileAndGetFileDataPtr(gItemParaFileName,&gSystemFileArchive);
|
||||
gItemParametersData = (struct Item *) gItemParametersFile->data;
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ void InitializeMoneyItems(void)
|
||||
gTeamInventory_203B460->teamItems[i].itemFlags = 0;
|
||||
}
|
||||
|
||||
for(i = 0; i < 0xF0; i++)
|
||||
for(i = 0; i < STORAGE_SIZE; i++)
|
||||
{
|
||||
gTeamInventory_203B460->teamStorage[i] = 0;
|
||||
}
|
||||
@@ -1169,7 +1169,7 @@ s32 SaveTeamInventory(u8* unk0, u32 size)
|
||||
for (i = 0; i < INVENTORY_SIZE; i++) {
|
||||
SaveItemSlot(&unk, &gTeamInventory_203B460->teamItems[i]);
|
||||
}
|
||||
for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) {
|
||||
for (i = 0; i < STORAGE_SIZE; i++) {
|
||||
SaveIntegerBits(&unk, &gTeamInventory_203B460->teamStorage[i], 10);
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
@@ -1190,10 +1190,10 @@ s32 RestoreTeamInventory(u8 *unk0, u32 size)
|
||||
s32 i;
|
||||
|
||||
xxx_init_struct_8094924_restore_809485C(&unk, unk0, size);
|
||||
for (i = 0; i < 20; i++) {
|
||||
for (i = 0; i < INVENTORY_SIZE; i++) {
|
||||
RestoreItemSlot(&unk, &gTeamInventory_203B460->teamItems[i]);
|
||||
}
|
||||
for (i = 0; i < 240; i++) {
|
||||
for (i = 0; i < STORAGE_SIZE; i++) {
|
||||
RestoreIntegerBits(&unk, &gTeamInventory_203B460->teamStorage[i], 10);
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
|
||||
@@ -4,28 +4,25 @@
|
||||
#include "play_time.h"
|
||||
#include "file_system.h"
|
||||
#include "memory.h"
|
||||
#include "menu.h"
|
||||
#include "text.h"
|
||||
#include "pokemon.h"
|
||||
#include "save.h"
|
||||
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
extern struct PlayTimeStruct gPlayTime;
|
||||
|
||||
extern const struct FileArchive gTitleMenuFileArchive;
|
||||
|
||||
struct unkStruct_808D33C
|
||||
{
|
||||
u8 fill0[0x4C];
|
||||
u8 unk4C;
|
||||
};
|
||||
|
||||
struct unkStruct_203B484
|
||||
{
|
||||
u8 fill0[0xC];
|
||||
s16 speciesIndex;
|
||||
/* 0xC */ s16 speciesIndex;
|
||||
u8 fillE[0x50 - 0xE];
|
||||
u32 unk50;
|
||||
/* 0x50 */ u8 helperName[10];
|
||||
};
|
||||
|
||||
struct unkStruct_203B374
|
||||
struct LoadScreen
|
||||
{
|
||||
// size: 0x27c
|
||||
u32 currMenu;
|
||||
@@ -44,65 +41,78 @@ struct unkStruct_203B374
|
||||
/* 0x258 */ u8 formattedHelperInfo[0x24];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B374 *gUnknown_203B374;
|
||||
extern u32 gUnknown_203B378;
|
||||
extern u32 gUnknown_203B3B8[];
|
||||
extern u32 gUnknown_203B388[];
|
||||
EWRAM_DATA struct LoadScreen *gLoadScreen;
|
||||
EWRAM_DATA struct MenuItem gUnknown_203B378[2];
|
||||
EWRAM_DATA u32 gUnknown_203B388[12];
|
||||
EWRAM_DATA u32 gUnknown_203B3B8[12];
|
||||
|
||||
extern struct unkStruct_203B484 *gUnknown_203B484;
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80E75F8;
|
||||
extern struct UnkTextStruct2 gUnknown_80E7610;
|
||||
extern struct UnkTextStruct2 gUnknown_80E762C;
|
||||
extern u32 gUnknown_80E7644;
|
||||
extern u32 gUnknown_80E7684;
|
||||
extern u32 gUnknown_80E76B8;
|
||||
extern u32 gUnknown_80E76E8;
|
||||
extern u32 gUnknown_80E7730;
|
||||
extern struct MenuItem gResumeQuicksaveMenuItems[];
|
||||
extern struct MenuItem gResumeAdventureMenuItems[];
|
||||
extern struct MenuItem gQuitWaitingRescueMenuItems[];
|
||||
extern struct MenuItem gDeleteSavePromptMenuItems[];
|
||||
extern struct MenuItem gDeleteSaveConfirmMenuItems[];
|
||||
extern struct UnkTextStruct2 gUnknown_80E7784;
|
||||
extern u32 gUnknown_80E779C;
|
||||
extern u8 gUnknown_80E77BC;
|
||||
extern u8 gUnknown_80E77C4;
|
||||
extern u8 gUnknown_80E77CC;
|
||||
extern u8 gUnknown_80E77D8;
|
||||
extern u8 gUnknown_80E77E4;
|
||||
extern u8 gUnknown_80E77F0;
|
||||
extern u8 gUnknown_80E77F8;
|
||||
extern u8 gUnknown_80E7804;
|
||||
extern u8 gUnknown_80E7808;
|
||||
extern u8 gUnknown_80E780C;
|
||||
extern u8 gUnknown_80E7824;
|
||||
extern u8 gUnknown_80E7838;
|
||||
extern u8 gUnknown_80E7848;
|
||||
extern u8 gUnknown_80E784C;
|
||||
extern u8 gUnknown_80E7854;
|
||||
extern const char gUnknown_80E785C[]; // clmkpat
|
||||
|
||||
extern const char No_80E77B4[];
|
||||
extern const char Yes_80E77B8[];
|
||||
|
||||
const struct MenuItem gLoadScreenYesNoMenu[3] =
|
||||
{
|
||||
{Yes_80E77B8, 1},
|
||||
{No_80E77B4, 2},
|
||||
{NULL, 3},
|
||||
};
|
||||
|
||||
ALIGNED(4) const char No_80E77B4[] = "No";
|
||||
ALIGNED(4) const char Yes_80E77B8[] = "Yes";
|
||||
|
||||
ALIGNED(4) const char gTeamHeadingText[] = "Team:";
|
||||
ALIGNED(4) const char gNameHeadingText[] = "Name:";
|
||||
ALIGNED(4) const char gLocationHeadingText[] = "Location:";
|
||||
ALIGNED(4) const char gPlayTimeHeadingText[] = "Play time:";
|
||||
ALIGNED(4) const char gAdventuresHeadingText[] = "Adventures:";
|
||||
ALIGNED(4) const char gHelperHeadingText[] = "Helper:";
|
||||
ALIGNED(4) const char gNoTeamNamePlaceholder[] = _("????");
|
||||
ALIGNED(4) const char gUnknown_80E7804[] = "%s ";
|
||||
ALIGNED(4) const char gNoNamePlaceholder[] = "???";
|
||||
ALIGNED(4) const char gQuicksaveDataDeletedText[] = "Quicksave data deleted.";
|
||||
ALIGNED(4) const char gLocationUnknownText[] = "Location unknown.";
|
||||
ALIGNED(4) const char gPlayTimePlaceholder[] = "%d:%02d:%02d ";
|
||||
ALIGNED(4) const char gNumAdventurePlaceholder[] = "%d";
|
||||
ALIGNED(4) const char gHelperInfoPlaceholder[] = "%s (%s)";
|
||||
ALIGNED(4) const char gNoHelperText[] = "-----";
|
||||
ALIGNED(4) const char gClmkpatFileName[] = "clmkpat"; // clmkpat
|
||||
ALIGNED(4) const char load_screen_fill[] = "pksdir0";
|
||||
|
||||
|
||||
u8 IsQuickSave(void);
|
||||
void DrawLoadScreenText(void);
|
||||
void sub_80397B4(void);
|
||||
|
||||
extern void sub_8035CF4(u32 *, u32, u32);
|
||||
extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, u32 *, u32, u32, u32);
|
||||
extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
|
||||
extern u8 sub_8012FD8(u32 *);
|
||||
extern void sub_8013114(u32 *, u32 *);
|
||||
extern void sub_8095240(u32);
|
||||
extern void sub_80122A8(void);
|
||||
|
||||
extern void sub_80920D8(u8 *);
|
||||
extern struct unkStruct_808D33C *sub_808D33C(void);
|
||||
extern struct PokemonStruct *sub_808D33C(void);
|
||||
extern u8 sub_80023E4(u32);
|
||||
extern u8 *sub_8098FB4();
|
||||
extern void ExpandPlaceholdersBuffer(u8 *buffer, u8 *text, ...);
|
||||
extern s32 sub_8011C1C(void);
|
||||
extern void ExpandPlaceholdersBuffer(u8 *buffer, const u8 *text, ...);
|
||||
extern u8 *GetDungeonLocationInfo(void);
|
||||
extern u32 GetNumAdventures(void);
|
||||
extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32);
|
||||
extern void xxx_call_draw_string(u32 x, u32 y, const u8 *, u32, u32);
|
||||
extern void PrintDungeonLocationtoBuffer(u8 *, u8 *);
|
||||
extern void sub_80922B4(u8 *, u8 *, u32);
|
||||
extern void sub_80922B4(u8 *, const u8 *, u32);
|
||||
extern s32 sub_8095324(u32);
|
||||
extern u32 sub_8001658(u32, u32);
|
||||
void sub_80397B4(void);
|
||||
extern void sub_80073E0(u32);
|
||||
extern s32 sub_8011FA8(void);
|
||||
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
@@ -117,38 +127,38 @@ void CreateLoadScreen(u32 currMenu)
|
||||
{
|
||||
int iVar8;
|
||||
|
||||
if (gUnknown_203B374 == NULL) {
|
||||
gUnknown_203B374 = MemoryAlloc(sizeof(struct unkStruct_203B374),8);
|
||||
MemoryFill8((u8 *)gUnknown_203B374,0,sizeof(struct unkStruct_203B374));
|
||||
if (gLoadScreen == NULL) {
|
||||
gLoadScreen = MemoryAlloc(sizeof(struct LoadScreen),8);
|
||||
MemoryFill8((u8 *)gLoadScreen,0,sizeof(struct LoadScreen));
|
||||
}
|
||||
gUnknown_203B374->currMenu = currMenu;
|
||||
gLoadScreen->currMenu = currMenu;
|
||||
for(iVar8 = 0; iVar8 < 4; iVar8++){
|
||||
gUnknown_203B374->unk144[iVar8] = gUnknown_80E75F8;
|
||||
gLoadScreen->unk144[iVar8] = gUnknown_80E75F8;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B374->unk144,1,1);
|
||||
SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,0,&gUnknown_80E7610,&gUnknown_203B378,0,6,0);
|
||||
switch(gUnknown_203B374->currMenu){
|
||||
sub_800641C(gLoadScreen->unk144,1,1);
|
||||
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,0,6,0);
|
||||
switch(gLoadScreen->currMenu){
|
||||
case MENU_CONTINUE:
|
||||
if (IsQuickSave())
|
||||
SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E7644,0,6,0);
|
||||
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,0,6,0);
|
||||
else
|
||||
SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E7684,0,6,0);
|
||||
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,0,6,0);
|
||||
break;
|
||||
case MENU_AWAITING_RESCUE:
|
||||
SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E76B8,0,6,0);
|
||||
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,0,6,0);
|
||||
break;
|
||||
case MENU_DELETE_SAVE_PROMPT:
|
||||
SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E76E8,0,6,0);
|
||||
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,0,6,0);
|
||||
break;
|
||||
case MENU_DELETE_SAVE_CONFIRM:
|
||||
SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C, &gUnknown_80E7730,0,6,0);
|
||||
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,0,6,0);
|
||||
break;
|
||||
}
|
||||
SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,2,&gUnknown_80E7784,&gUnknown_80E779C,1,2,0);
|
||||
sub_8035CF4(&gUnknown_203B374->unk4,0,0);
|
||||
sub_8035CF4(&gUnknown_203B374->unk4,1,0);
|
||||
sub_8035CF4(&gUnknown_203B374->unk4,2,1);
|
||||
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,1,2,0);
|
||||
sub_8035CF4(&gLoadScreen->unk4,0,0);
|
||||
sub_8035CF4(&gLoadScreen->unk4,1,0);
|
||||
sub_8035CF4(&gLoadScreen->unk4,2,1);
|
||||
DrawLoadScreenText();
|
||||
}
|
||||
|
||||
@@ -156,10 +166,10 @@ void CleanLoadScreen(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(NULL, 1, 1);
|
||||
if(gUnknown_203B374 != NULL)
|
||||
if(gLoadScreen != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B374);
|
||||
gUnknown_203B374 = NULL;
|
||||
MemoryFree(gLoadScreen);
|
||||
gLoadScreen = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,9 +180,9 @@ u32 UpdateLoadScreenMenu(void)
|
||||
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
menuAction = 4;
|
||||
sub_8012FD8(&gUnknown_203B374->unk54);
|
||||
if (sub_8012FD8(&gUnknown_203B374->unkA4) == '\0') {
|
||||
sub_8013114(&gUnknown_203B374->unkA4,&menuAction);
|
||||
sub_8012FD8(&gLoadScreen->unk54);
|
||||
if (sub_8012FD8(&gLoadScreen->unkA4) == '\0') {
|
||||
sub_8013114(&gLoadScreen->unkA4,&menuAction);
|
||||
}
|
||||
|
||||
switch(menuAction)
|
||||
@@ -182,7 +192,7 @@ u32 UpdateLoadScreenMenu(void)
|
||||
nextMenu = MENU_MAIN_SCREEN;
|
||||
break;
|
||||
case 1:
|
||||
switch(gUnknown_203B374->currMenu)
|
||||
switch(gLoadScreen->currMenu)
|
||||
{
|
||||
case MENU_CONTINUE:
|
||||
nextMenu = 2; // MENU_???
|
||||
@@ -207,7 +217,11 @@ u32 UpdateLoadScreenMenu(void)
|
||||
return nextMenu;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
static inline u8 *DrawLoadScreenTextSub(u8 *teamNameBuffer) {
|
||||
strcpy(teamNameBuffer,gNoTeamNamePlaceholder);
|
||||
return teamNameBuffer;
|
||||
}
|
||||
|
||||
void DrawLoadScreenText(void)
|
||||
{
|
||||
int iVar2;
|
||||
@@ -220,48 +234,48 @@ void DrawLoadScreenText(void)
|
||||
u32 hours;
|
||||
u32 minutes;
|
||||
u32 seconds;
|
||||
struct unkStruct_808D33C *playerInfo;
|
||||
struct PokemonStruct *playerInfo;
|
||||
struct unkStruct_203B484 *temp2;
|
||||
u8 *r2;
|
||||
|
||||
iVar2 = sub_8011FA8();
|
||||
sub_8008C54(0);
|
||||
sub_80073B8(0);
|
||||
xxx_call_draw_string(8,0, &gUnknown_80E77BC,0,0); // Team:
|
||||
xxx_call_draw_string(8,12,&gUnknown_80E77C4,0,0); // Name:
|
||||
xxx_call_draw_string(8,24,&gUnknown_80E77CC,0,0); // Location:
|
||||
xxx_call_draw_string(8,36,&gUnknown_80E77D8,0,0); // Play time:
|
||||
xxx_call_draw_string(8,48,&gUnknown_80E77E4,0,0); // Adventures:
|
||||
xxx_call_draw_string(8,60,&gUnknown_80E77F0,0,0); // Helper:
|
||||
xxx_call_draw_string(8,0, gTeamHeadingText,0,0); // Team:
|
||||
xxx_call_draw_string(8,12,gNameHeadingText,0,0); // Name:
|
||||
xxx_call_draw_string(8,24,gLocationHeadingText,0,0); // Location:
|
||||
xxx_call_draw_string(8,36,gPlayTimeHeadingText,0,0); // Play time:
|
||||
xxx_call_draw_string(8,48,gAdventuresHeadingText,0,0); // Adventures:
|
||||
xxx_call_draw_string(8,60,gHelperHeadingText,0,0); // Helper:
|
||||
|
||||
// Draw Team Name
|
||||
if (sub_80023E4(0) != '\0') {
|
||||
sub_80920D8(teamNameBuffer);
|
||||
r2 = teamNameBuffer;
|
||||
}
|
||||
else {
|
||||
strcpy(teamNameBuffer,&gUnknown_80E77F8);
|
||||
// NOTE: static inline was needed here to match -jiang
|
||||
r2 = DrawLoadScreenTextSub(teamNameBuffer);
|
||||
}
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedTeamName,&gUnknown_80E7804,teamNameBuffer);
|
||||
xxx_call_draw_string(64,0,gUnknown_203B374->formattedTeamName,0,0);
|
||||
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedTeamName,gUnknown_80E7804,r2);
|
||||
xxx_call_draw_string(64,0,gLoadScreen->formattedTeamName,0,0);
|
||||
|
||||
// Draw Player Name
|
||||
playerInfo = sub_808D33C();
|
||||
if (playerInfo == NULL) {
|
||||
sub_80922B4(playerName,&gUnknown_80E7808,10);
|
||||
}
|
||||
else {
|
||||
sub_80922B4(playerName,&playerInfo->unk4C,10);
|
||||
}
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedPlayerName,&gUnknown_80E7804,playerName);
|
||||
xxx_call_draw_string(64,12,gUnknown_203B374->formattedPlayerName,0,0);
|
||||
if (playerInfo == NULL)
|
||||
sub_80922B4(playerName, gNoNamePlaceholder, POKEMON_NAME_LENGTH);
|
||||
else
|
||||
sub_80922B4(playerName, playerInfo->name, POKEMON_NAME_LENGTH);
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedPlayerName,gUnknown_80E7804,playerName);
|
||||
xxx_call_draw_string(64,12,gLoadScreen->formattedPlayerName,0,0);
|
||||
|
||||
// Draw Location Info
|
||||
// TODO: fix these branches.. correct logic but branching isn't right
|
||||
if ((sub_8095324(1) != 0) || (sub_8095324(7) != 0)) {
|
||||
if (iVar2 == 0xf1207) {
|
||||
PrintDungeonLocationtoBuffer(gUnknown_203B374->formattedLocation,GetDungeonLocationInfo());
|
||||
}
|
||||
else {
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
|
||||
}
|
||||
if (iVar2 == 0xf1207)
|
||||
PrintDungeonLocationtoBuffer(gLoadScreen->formattedLocation,GetDungeonLocationInfo());
|
||||
else
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
|
||||
}
|
||||
else {
|
||||
switch(sub_8011C1C())
|
||||
@@ -270,405 +284,59 @@ void DrawLoadScreenText(void)
|
||||
switch(sub_8001658(0,24))
|
||||
{
|
||||
default:
|
||||
ExpandPlaceholdersBuffer(auStack356,&gUnknown_80E7804,sub_8098FB4());
|
||||
xxx_format_string(auStack356,gUnknown_203B374->formattedLocation,gUnknown_203B374->formattedPlayTime,0);
|
||||
ExpandPlaceholdersBuffer(auStack356,gUnknown_80E7804,sub_8098FB4());
|
||||
xxx_format_string(auStack356,gLoadScreen->formattedLocation,gLoadScreen->formattedPlayTime,0);
|
||||
break;
|
||||
case 0x7:
|
||||
case 0xB:
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (iVar2 == 0xf1207)
|
||||
{
|
||||
PrintDungeonLocationtoBuffer(gUnknown_203B374->formattedLocation,GetDungeonLocationInfo());
|
||||
} else {
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
|
||||
}
|
||||
PrintDungeonLocationtoBuffer(gLoadScreen->formattedLocation,GetDungeonLocationInfo());
|
||||
else
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
|
||||
break;
|
||||
default:
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E7824); // Location unknown
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gLocationUnknownText); // Location unknown
|
||||
break;
|
||||
}
|
||||
}
|
||||
xxx_call_draw_string(64,24,gUnknown_203B374->formattedLocation,0,0);
|
||||
xxx_call_draw_string(64,24,gLoadScreen->formattedLocation,0,0);
|
||||
|
||||
// Draw Play Time
|
||||
DeconstructPlayTime(gPlayTimeRef,&hours,&minutes,&seconds);
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedPlayTime,&gUnknown_80E7838,hours,minutes,seconds);
|
||||
xxx_call_draw_string(64,36,gUnknown_203B374->formattedPlayTime,0,0);
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedPlayTime,gPlayTimePlaceholder,hours,minutes,seconds);
|
||||
xxx_call_draw_string(64,36,gLoadScreen->formattedPlayTime,0,0);
|
||||
|
||||
// Draw Adventures Info
|
||||
numAdventures = GetNumAdventures();
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedAdventures,&gUnknown_80E7848,numAdventures); // %d
|
||||
xxx_call_draw_string(64,48,gUnknown_203B374->formattedAdventures,0,0);
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedAdventures,gNumAdventurePlaceholder,numAdventures); // %d
|
||||
xxx_call_draw_string(64,48,gLoadScreen->formattedAdventures,0,0);
|
||||
|
||||
// Draw Helper Info
|
||||
if ((iVar2 == 0xf1207) && (gUnknown_203B484->speciesIndex != 0)) {
|
||||
sub_808D930(speciesHelper,gUnknown_203B484->speciesIndex);
|
||||
// TODO very hacky match here
|
||||
sub_80922B4(nameHelper,(u8 *)(&gUnknown_203B484 + 0x14),10);
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E784C,nameHelper,speciesHelper); // %s (%s)
|
||||
if (iVar2 == 0xf1207){
|
||||
// NOTE: very hacky match here but needed var here to match
|
||||
temp2 = gUnknown_203B484;
|
||||
if(temp2->speciesIndex != SPECIES_NONE) {
|
||||
sub_808D930(speciesHelper,temp2->speciesIndex);
|
||||
sub_80922B4(nameHelper,temp2->helperName,POKEMON_NAME_LENGTH);
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedHelperInfo,gHelperInfoPlaceholder,nameHelper,speciesHelper); // %s (%s)
|
||||
}
|
||||
else
|
||||
goto print_helper_placeholder;
|
||||
}
|
||||
else {
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E7854); // -----
|
||||
print_helper_placeholder:
|
||||
ExpandPlaceholdersBuffer(gLoadScreen->formattedHelperInfo,gNoHelperText); // -----
|
||||
}
|
||||
xxx_call_draw_string(64,60,gUnknown_203B374->formattedHelperInfo,0,0);
|
||||
xxx_call_draw_string(64,60,gLoadScreen->formattedHelperInfo,0,0);
|
||||
|
||||
sub_80397B4(); // Draw event icons??
|
||||
sub_80073E0(0);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void DrawLoadScreenText(void)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r8\n"
|
||||
"\tpush {r7}\n"
|
||||
"\tsub sp, 0x150\n"
|
||||
"\tbl sub_8011FA8\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl sub_8008C54\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl sub_80073B8\n"
|
||||
"\tldr r2, _0803952C\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tldr r2, _08039530\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tldr r2, _08039534\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tmovs r1, 0x18\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tldr r2, _08039538\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tmovs r1, 0x24\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tldr r2, _0803953C\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tmovs r1, 0x30\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tldr r2, _08039540\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tmovs r1, 0x3C\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl sub_80023E4\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08039544\n"
|
||||
"\tadd r4, sp, 0x68\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl sub_80920D8\n"
|
||||
"\tadds r2, r4, 0\n"
|
||||
"\tb _0803954E\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0803952C: .4byte gUnknown_80E77BC\n"
|
||||
"_08039530: .4byte gUnknown_80E77C4\n"
|
||||
"_08039534: .4byte gUnknown_80E77CC\n"
|
||||
"_08039538: .4byte gUnknown_80E77D8\n"
|
||||
"_0803953C: .4byte gUnknown_80E77E4\n"
|
||||
"_08039540: .4byte gUnknown_80E77F0\n"
|
||||
"_08039544:\n"
|
||||
"\tldr r1, _08039588\n"
|
||||
"\tadd r0, sp, 0x68\n"
|
||||
"\tbl strcpy\n"
|
||||
"\tadd r2, sp, 0x68\n"
|
||||
"_0803954E:\n"
|
||||
"\tldr r5, _0803958C\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r4, 0xD2\n"
|
||||
"\tlsls r4, 1\n"
|
||||
"\tadds r0, r4\n"
|
||||
"\tldr r1, _08039590\n"
|
||||
"\tbl ExpandPlaceholdersBuffer\n"
|
||||
"\tldr r2, [r5]\n"
|
||||
"\tadds r2, r4\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tmovs r0, 0x40\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tbl sub_808D33C\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _08039598\n"
|
||||
"\tadd r4, sp, 0x90\n"
|
||||
"\tldr r1, _08039594\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r2, 0xA\n"
|
||||
"\tbl sub_80922B4\n"
|
||||
"\tb _080395A6\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08039588: .4byte gUnknown_80E77F8\n"
|
||||
"_0803958C: .4byte gUnknown_203B374\n"
|
||||
"_08039590: .4byte gUnknown_80E7804\n"
|
||||
"_08039594: .4byte gUnknown_80E7808\n"
|
||||
"_08039598:\n"
|
||||
"\tadd r4, sp, 0x90\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r1, 0x4C\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r2, 0xA\n"
|
||||
"\tbl sub_80922B4\n"
|
||||
"_080395A6:\n"
|
||||
"\tadds r2, r4, 0\n"
|
||||
"\tldr r5, _080395F0\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r4, 0xE4\n"
|
||||
"\tlsls r4, 1\n"
|
||||
"\tadds r0, r4\n"
|
||||
"\tldr r6, _080395F4\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tbl ExpandPlaceholdersBuffer\n"
|
||||
"\tldr r2, [r5]\n"
|
||||
"\tadds r2, r4\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tmovs r0, 0x40\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tbl sub_8095324\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _080395E0\n"
|
||||
"\tmovs r0, 0x7\n"
|
||||
"\tbl sub_8095324\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08039606\n"
|
||||
"_080395E0:\n"
|
||||
"\tldr r0, _080395F8\n"
|
||||
"\tcmp r8, r0\n"
|
||||
"\tbne _080395FC\n"
|
||||
"\tldr r4, [r5]\n"
|
||||
"\tmovs r0, 0xF6\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tadds r4, r0\n"
|
||||
"\tb _08039676\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_080395F0: .4byte gUnknown_203B374\n"
|
||||
"_080395F4: .4byte gUnknown_80E7804\n"
|
||||
"_080395F8: .4byte 0x000f1207\n"
|
||||
"_080395FC:\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r1, 0xF6\n"
|
||||
"\tlsls r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tb _08039690\n"
|
||||
"_08039606:\n"
|
||||
"\tbl sub_8011C1C\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbeq _08039624\n"
|
||||
"\tcmp r0, 0x2\n"
|
||||
"\tbeq _08039668\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r2, 0xF6\n"
|
||||
"\tlsls r2, 1\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tldr r1, _08039620\n"
|
||||
"\tb _08039692\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08039620: .4byte gUnknown_80E7824\n"
|
||||
"_08039624:\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r1, 0x18\n"
|
||||
"\tbl sub_8001658\n"
|
||||
"\tcmp r0, 0x7\n"
|
||||
"\tbeq _08039658\n"
|
||||
"\tcmp r0, 0xB\n"
|
||||
"\tbeq _08039658\n"
|
||||
"\tbl sub_8098FB4\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tadd r0, sp, 0x4\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tbl ExpandPlaceholdersBuffer\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r3, 0xF6\n"
|
||||
"\tlsls r3, 1\n"
|
||||
"\tadds r1, r0, r3\n"
|
||||
"\tadds r3, 0x24\n"
|
||||
"\tadds r2, r0, r3\n"
|
||||
"\tadd r0, sp, 0x4\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_format_string\n"
|
||||
"\tb _08039696\n"
|
||||
"_08039658:\n"
|
||||
"\tldr r0, _08039664\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmovs r1, 0xF6\n"
|
||||
"\tlsls r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tb _08039690\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08039664: .4byte gUnknown_203B374\n"
|
||||
"_08039668:\n"
|
||||
"\tldr r0, _08039684\n"
|
||||
"\tcmp r8, r0\n"
|
||||
"\tbne _08039688\n"
|
||||
"\tldr r4, [r5]\n"
|
||||
"\tmovs r2, 0xF6\n"
|
||||
"\tlsls r2, 1\n"
|
||||
"\tadds r4, r2\n"
|
||||
"_08039676:\n"
|
||||
"\tbl GetDungeonLocationInfo\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl PrintDungeonLocationtoBuffer\n"
|
||||
"\tb _08039696\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08039684: .4byte 0x000f1207\n"
|
||||
"_08039688:\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r3, 0xF6\n"
|
||||
"\tlsls r3, 1\n"
|
||||
"\tadds r0, r3\n"
|
||||
"_08039690:\n"
|
||||
"\tldr r1, _0803974C\n"
|
||||
"_08039692:\n"
|
||||
"\tbl ExpandPlaceholdersBuffer\n"
|
||||
"_08039696:\n"
|
||||
"\tldr r7, _08039750\n"
|
||||
"\tldr r2, [r7]\n"
|
||||
"\tmovs r0, 0xF6\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tstr r6, [sp]\n"
|
||||
"\tmovs r0, 0x40\n"
|
||||
"\tmovs r1, 0x18\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tldr r0, _08039754\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tadd r1, sp, 0x144\n"
|
||||
"\tadd r2, sp, 0x148\n"
|
||||
"\tadd r3, sp, 0x14C\n"
|
||||
"\tbl DeconstructPlayTime\n"
|
||||
"\tldr r0, [r7]\n"
|
||||
"\tmovs r5, 0x84\n"
|
||||
"\tlsls r5, 2\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldr r1, _08039758\n"
|
||||
"\tadd r2, sp, 0x144\n"
|
||||
"\tldr r2, [r2]\n"
|
||||
"\tadd r3, sp, 0x148\n"
|
||||
"\tldr r3, [r3]\n"
|
||||
"\tadd r4, sp, 0x14C\n"
|
||||
"\tldr r4, [r4]\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tbl ExpandPlaceholdersBuffer\n"
|
||||
"\tldr r2, [r7]\n"
|
||||
"\tadds r2, r5\n"
|
||||
"\tstr r6, [sp]\n"
|
||||
"\tmovs r0, 0x40\n"
|
||||
"\tmovs r1, 0x24\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tbl GetNumAdventures\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tldr r0, [r7]\n"
|
||||
"\tmovs r4, 0x8D\n"
|
||||
"\tlsls r4, 2\n"
|
||||
"\tadds r0, r4\n"
|
||||
"\tldr r1, _0803975C\n"
|
||||
"\tbl ExpandPlaceholdersBuffer\n"
|
||||
"\tldr r2, [r7]\n"
|
||||
"\tadds r2, r4\n"
|
||||
"\tstr r6, [sp]\n"
|
||||
"\tmovs r0, 0x40\n"
|
||||
"\tmovs r1, 0x30\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tldr r0, _08039760\n"
|
||||
"\tcmp r8, r0\n"
|
||||
"\tbne _0803976C\n"
|
||||
"\tldr r0, _08039764\n"
|
||||
"\tldr r6, [r0]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tldrsh r0, [r6, r1]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0803976C\n"
|
||||
"\tadd r5, sp, 0x130\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl sub_808D930\n"
|
||||
"\tadd r4, sp, 0xE0\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tadds r1, 0x50\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r2, 0xA\n"
|
||||
"\tbl sub_80922B4\n"
|
||||
"\tldr r0, [r7]\n"
|
||||
"\tmovs r3, 0x96\n"
|
||||
"\tlsls r3, 2\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tldr r1, _08039768\n"
|
||||
"\tadds r2, r4, 0\n"
|
||||
"\tadds r3, r5, 0\n"
|
||||
"\tbl ExpandPlaceholdersBuffer\n"
|
||||
"\tb _0803977C\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0803974C: .4byte gUnknown_80E780C\n"
|
||||
"_08039750: .4byte gUnknown_203B374\n"
|
||||
"_08039754: .4byte gPlayTimeRef\n"
|
||||
"_08039758: .4byte gUnknown_80E7838\n"
|
||||
"_0803975C: .4byte gUnknown_80E7848\n"
|
||||
"_08039760: .4byte 0x000f1207\n"
|
||||
"_08039764: .4byte gUnknown_203B484\n"
|
||||
"_08039768: .4byte gUnknown_80E784C\n"
|
||||
"_0803976C:\n"
|
||||
"\tldr r0, _080397AC\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmovs r1, 0x96\n"
|
||||
"\tlsls r1, 2\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldr r1, _080397B0\n"
|
||||
"\tbl ExpandPlaceholdersBuffer\n"
|
||||
"_0803977C:\n"
|
||||
"\tldr r0, _080397AC\n"
|
||||
"\tldr r2, [r0]\n"
|
||||
"\tmovs r3, 0x96\n"
|
||||
"\tlsls r3, 2\n"
|
||||
"\tadds r2, r3\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tmovs r0, 0x40\n"
|
||||
"\tmovs r1, 0x3C\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tbl sub_80397B4\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl sub_80073E0\n"
|
||||
"\tadd sp, 0x150\n"
|
||||
"\tpop {r3}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_080397AC: .4byte gUnknown_203B374\n"
|
||||
"_080397B0: .4byte gUnknown_80E7854");
|
||||
}
|
||||
#endif
|
||||
|
||||
// Think structure of clmkFile is like Team Rank Badges except each pic has a diff pallete
|
||||
// TODO clean up but it matches so yea
|
||||
@@ -679,7 +347,7 @@ void sub_80397B4(void)
|
||||
int iVar4;
|
||||
s32 other_arg;
|
||||
|
||||
clmkFile = OpenFileAndGetFileDataPtr(gUnknown_80E785C,&gTitleMenuFileArchive); // clmkpat
|
||||
clmkFile = OpenFileAndGetFileDataPtr(gClmkpatFileName,&gTitleMenuFileArchive); // clmkpat
|
||||
|
||||
for(iVar3 = 0; iVar3 < 64; iVar3++)
|
||||
{
|
||||
@@ -688,6 +356,8 @@ void sub_80397B4(void)
|
||||
|
||||
iVar4 = 8;
|
||||
other_arg = 0x49;
|
||||
|
||||
// Draw the 12 legendary icons
|
||||
for(iVar3 = 0; iVar3 < 12; iVar3++)
|
||||
{
|
||||
if (sub_80023E4(gUnknown_203B3B8[iVar3]) != 0) {
|
||||
|
||||
186
src/mailbox.c
Normal file
186
src/mailbox.c
Normal file
@@ -0,0 +1,186 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
#include "input.h"
|
||||
#include "mailbox.h"
|
||||
|
||||
|
||||
extern void sub_802E4B0(void);
|
||||
extern void nullsub_133(void);
|
||||
extern void sub_802E578(void);
|
||||
extern void sub_802E60C(void);
|
||||
extern void sub_802E73C(void);
|
||||
extern void sub_802E758(void);
|
||||
extern void sub_802E774(void);
|
||||
extern void sub_802E7D0(void);
|
||||
|
||||
|
||||
extern void sub_802E0A0(void);
|
||||
extern void sub_802E1AC(void);
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80E0284;
|
||||
extern struct UnkTextStruct2 gUnknown_80E029C;
|
||||
extern struct UnkTextStruct2 gUnknown_80E02B4;
|
||||
extern struct UnkTextStruct2 gUnknown_80E02CC;
|
||||
|
||||
|
||||
extern struct unkStruct_203B304 *gUnknown_203B304;
|
||||
extern void sub_802E088(u32);
|
||||
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
|
||||
extern void CreateMailboxMenu(void);
|
||||
extern void CreateMailActionMenu(void);
|
||||
|
||||
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
|
||||
extern void sub_802BD14(u32, u32, u32);
|
||||
extern void sub_802BE94(u32);
|
||||
extern void CreateMailMenu(void);
|
||||
extern void CreateMailAcceptedStatusBox(u32);
|
||||
extern u32 sub_8095FE8(u32);
|
||||
extern void sub_803B35C(u32, u32 *);
|
||||
extern void sub_802DE84(u32 *);
|
||||
extern void sub_802C860(u32);
|
||||
extern void sub_802B640(u32, u32, u32);
|
||||
extern void sub_802B7D0(u32);
|
||||
extern void sub_802B9FC(u8);
|
||||
|
||||
u32 sub_802DFB0(void)
|
||||
{
|
||||
gUnknown_203B304 = MemoryAlloc(sizeof(struct unkStruct_203B304), 8);
|
||||
gUnknown_203B304->unk64 = 0;
|
||||
gUnknown_203B304->unk68 = 0;
|
||||
SetMailboxState(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802DFD8(void)
|
||||
{
|
||||
switch(gUnknown_203B304->state)
|
||||
{
|
||||
case 0:
|
||||
SetMailboxState(1);
|
||||
break;
|
||||
case 1:
|
||||
sub_802E4B0();
|
||||
break;
|
||||
case 2:
|
||||
nullsub_133();
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
sub_802E578();
|
||||
break;
|
||||
case 6:
|
||||
sub_802E60C();
|
||||
break;
|
||||
case 7:
|
||||
sub_802E73C();
|
||||
break;
|
||||
case 8:
|
||||
sub_802E758();
|
||||
break;
|
||||
case 9:
|
||||
case 0xA:
|
||||
sub_802E774();
|
||||
break;
|
||||
case 0xB:
|
||||
sub_802E7D0();
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_802E06C(void)
|
||||
{
|
||||
if(gUnknown_203B304 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B304);
|
||||
gUnknown_203B304 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void SetMailboxState(u32 newState)
|
||||
{
|
||||
gUnknown_203B304->state = newState;
|
||||
sub_802E0A0();
|
||||
sub_802E1AC();
|
||||
}
|
||||
|
||||
void sub_802E0A0(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
sub_8006518(gUnknown_203B304->unk10C);
|
||||
switch(gUnknown_203B304->state)
|
||||
{
|
||||
case 1:
|
||||
for(iVar1 = 0; iVar1 < 4; iVar1++)
|
||||
{
|
||||
gUnknown_203B304->unk10C[iVar1] = gUnknown_80E0284;
|
||||
}
|
||||
CreateMailboxMenu();
|
||||
gUnknown_203B304->unk10C[2] = gUnknown_80E029C;
|
||||
sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
|
||||
break;
|
||||
case 6:
|
||||
CreateMailActionMenu();
|
||||
gUnknown_203B304->unk10C[2] = gUnknown_80E02B4;
|
||||
sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
|
||||
gUnknown_203B304->unk10C[2].unk0c = 6;
|
||||
gUnknown_203B304->unk10C[3] = gUnknown_80E02CC;
|
||||
break;
|
||||
default:
|
||||
for(iVar1 = 0; iVar1 < 4; iVar1++)
|
||||
{
|
||||
gUnknown_203B304->unk10C[iVar1] = gUnknown_80E0284;
|
||||
}
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B304->unk10C, 1, 1);
|
||||
}
|
||||
|
||||
void sub_802E1AC(void)
|
||||
{
|
||||
switch(gUnknown_203B304->state)
|
||||
{
|
||||
case 1:
|
||||
sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, gUnknown_203B304->unkFC, gUnknown_203B304->unk64, 2);
|
||||
break;
|
||||
case 4:
|
||||
sub_802BD14(0, 0, 4);
|
||||
break;
|
||||
case 5:
|
||||
sub_802BE94(1);
|
||||
break;
|
||||
case 6:
|
||||
CreateMailMenu();
|
||||
CreateMailAcceptedStatusBox(3);
|
||||
sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, 0, gUnknown_203B304->unk68, 2);
|
||||
break;
|
||||
case 7:
|
||||
sub_803B35C(sub_8095FE8(gUnknown_203B304->unk8), &gUnknown_203B304->unkC);
|
||||
gUnknown_203B304->unkC = 3;
|
||||
gUnknown_203B304->unk50 = 0;
|
||||
sub_802DE84(&gUnknown_203B304->unkC);
|
||||
break;
|
||||
case 8:
|
||||
sub_802C860(0);
|
||||
break;
|
||||
case 9:
|
||||
sub_802B640(0, 0, 8);
|
||||
break;
|
||||
case 0xA:
|
||||
sub_802B7D0(1);
|
||||
break;
|
||||
case 0xB:
|
||||
sub_802B9FC(gUnknown_203B304->unk9);
|
||||
break;
|
||||
case 0:
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
}
|
||||
104
src/mailbox_1.c
Normal file
104
src/mailbox_1.c
Normal file
@@ -0,0 +1,104 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
#include "input.h"
|
||||
#include "mailbox.h"
|
||||
|
||||
extern u8 gMailAccepted[];
|
||||
extern u8 gUnknown_80E0324[];
|
||||
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
|
||||
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
|
||||
extern u32 sub_80969AC(void);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern u32 sub_802BA8C(void);
|
||||
extern void sub_802BACC(void);
|
||||
extern u8 sub_802B7A8(void);
|
||||
extern void sub_802B81C(void);
|
||||
extern u32 sub_802B720(u32);
|
||||
extern u32 sub_802C898(void);
|
||||
extern void sub_802C8F4(void);
|
||||
extern u32 sub_802DEE0(void);
|
||||
extern void sub_802DF24(void);
|
||||
|
||||
extern struct unkStruct_203B304 *gUnknown_203B304;
|
||||
|
||||
|
||||
void sub_802E73C(void)
|
||||
{
|
||||
switch(sub_802DEE0())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802DF24();
|
||||
SetMailboxState(5);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802E758(void)
|
||||
{
|
||||
switch(sub_802C898())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802C8F4();
|
||||
SetMailboxState(1);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802E774(void)
|
||||
{
|
||||
switch(sub_802B720(1))
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
gUnknown_203B304->unk9 = sub_802B7A8();
|
||||
gUnknown_203B304->unk4 = 0xA;
|
||||
SetMailboxState(0xB);
|
||||
break;
|
||||
case 2:
|
||||
sub_802B81C();
|
||||
SetMailboxState(0x1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802E7D0(void)
|
||||
{
|
||||
switch(sub_802BA8C())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802BACC();
|
||||
SetMailboxState(gUnknown_203B304->unk4);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_133(void)
|
||||
{
|
||||
}
|
||||
|
||||
void CreateMailAcceptedStatusBox(u32 r0)
|
||||
{
|
||||
sub_8008C54(r0);
|
||||
sub_80073B8(r0);
|
||||
xxx_call_draw_string(3, 0, gMailAccepted, r0, 0);
|
||||
sub_8012BC4(0x12, 0xD, sub_80969AC(), 2, 7, r0);
|
||||
xxx_call_draw_string(0x16, 0xD, gUnknown_80E0324, r0, 0);
|
||||
sub_8012BC4(0x23, 0xD, 0x8, 0x2, 7, r0);
|
||||
sub_80073E0(r0);
|
||||
}
|
||||
184
src/pelipper_board.c
Normal file
184
src/pelipper_board.c
Normal file
@@ -0,0 +1,184 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
#include "input.h"
|
||||
|
||||
// Guessing based off of 203B304
|
||||
struct unkStruct_203B308
|
||||
{
|
||||
// size: 0xB6 << 1
|
||||
u32 state;
|
||||
u32 unk4;
|
||||
u8 unk8;
|
||||
u8 fill9[0xC - 9];
|
||||
u32 unkC;
|
||||
u8 fill10[0x50 - 0x10];
|
||||
u8 unk50;
|
||||
u8 fill51[0x64 - 0x51];
|
||||
u32 unk64;
|
||||
u32 unk68;
|
||||
u32 unk6C;
|
||||
u8 fill70[0xBC - 0x70];
|
||||
struct MenuItem unkBC[8];
|
||||
u16 unkFC[8];
|
||||
struct UnkTextStruct2 unk10C[4];
|
||||
};
|
||||
extern struct unkStruct_203B308 *gUnknown_203B308;
|
||||
extern void SetPelipperBoardState(u32);
|
||||
extern struct UnkTextStruct2 gUnknown_80E0330;
|
||||
extern struct UnkTextStruct2 gUnknown_80E0348;
|
||||
extern struct UnkTextStruct2 gUnknown_80E0360;
|
||||
extern struct UnkTextStruct2 gUnknown_80E0378;
|
||||
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
|
||||
extern void sub_802ECB4(void);
|
||||
extern void nullsub_134(void);
|
||||
extern void sub_802ED4C(void);
|
||||
extern void sub_802EDBC(void);
|
||||
extern void sub_802EEA0(void);
|
||||
extern void sub_802EEBC(void);
|
||||
extern void sub_802E94C(void);
|
||||
extern void sub_802EA58(void);
|
||||
extern void CreatePelipperBoardMenu(void);
|
||||
extern void sub_802EC10(void);
|
||||
|
||||
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
|
||||
extern void sub_802C10C(u32, u32, u32);
|
||||
extern void sub_802C28C(u32);
|
||||
extern void sub_802C39C(void);
|
||||
extern void CreatePelipperAcceptedStatusBox(u32);
|
||||
extern u32 sub_8096574(u32);
|
||||
extern void sub_803B35C(u32, u32 *);
|
||||
extern void sub_802DE84(u32 *);
|
||||
extern void sub_802C860(u32);
|
||||
|
||||
u32 sub_802E864(void)
|
||||
{
|
||||
gUnknown_203B308 = MemoryAlloc(sizeof(struct unkStruct_203B308), 8);
|
||||
gUnknown_203B308->unk64 = 0;
|
||||
gUnknown_203B308->unk68 = 0;
|
||||
gUnknown_203B308->unk4 = 0;
|
||||
SetPelipperBoardState(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802E890(void)
|
||||
{
|
||||
switch(gUnknown_203B308->state)
|
||||
{
|
||||
case 0:
|
||||
SetPelipperBoardState(1);
|
||||
break;
|
||||
case 1:
|
||||
sub_802ECB4();
|
||||
break;
|
||||
case 2:
|
||||
nullsub_134();
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
sub_802ED4C();
|
||||
break;
|
||||
case 6:
|
||||
sub_802EDBC();
|
||||
break;
|
||||
case 7:
|
||||
sub_802EEA0();
|
||||
break;
|
||||
case 8:
|
||||
sub_802EEBC();
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 sub_802E90C(void)
|
||||
{
|
||||
return gUnknown_203B308->unk4;
|
||||
}
|
||||
|
||||
void sub_802E918(void)
|
||||
{
|
||||
if(gUnknown_203B308 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B308);
|
||||
gUnknown_203B308 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void SetPelipperBoardState(u32 newState)
|
||||
{
|
||||
gUnknown_203B308->state = newState;
|
||||
sub_802E94C();
|
||||
sub_802EA58();
|
||||
}
|
||||
|
||||
void sub_802E94C(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
sub_8006518(gUnknown_203B308->unk10C);
|
||||
switch(gUnknown_203B308->state)
|
||||
{
|
||||
case 1:
|
||||
for(iVar1 = 0; iVar1 < 4; iVar1++)
|
||||
{
|
||||
gUnknown_203B308->unk10C[iVar1] = gUnknown_80E0330;
|
||||
}
|
||||
CreatePelipperBoardMenu();
|
||||
gUnknown_203B308->unk10C[2] = gUnknown_80E0348;
|
||||
sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC);
|
||||
break;
|
||||
case 6:
|
||||
sub_802EC10();
|
||||
gUnknown_203B308->unk10C[2] = gUnknown_80E0360;
|
||||
sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC);
|
||||
gUnknown_203B308->unk10C[2].unk0c = 6;
|
||||
gUnknown_203B308->unk10C[3] = gUnknown_80E0378;
|
||||
break;
|
||||
default:
|
||||
for(iVar1 = 0; iVar1 < 4; iVar1++)
|
||||
{
|
||||
gUnknown_203B308->unk10C[iVar1] = gUnknown_80E0330;
|
||||
}
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B308->unk10C, 1, 1);
|
||||
}
|
||||
|
||||
void sub_802EA58(void)
|
||||
{
|
||||
switch(gUnknown_203B308->state)
|
||||
{
|
||||
case 1:
|
||||
sub_8012D60(&gUnknown_203B308->unk6C, gUnknown_203B308->unkBC, 0, gUnknown_203B308->unkFC, gUnknown_203B308->unk64, 2);
|
||||
break;
|
||||
case 4:
|
||||
sub_802C10C(0, 0, 4);
|
||||
break;
|
||||
case 5:
|
||||
sub_802C28C(1);
|
||||
break;
|
||||
case 6:
|
||||
sub_802C39C();
|
||||
CreatePelipperAcceptedStatusBox(3);
|
||||
sub_8012D60(&gUnknown_203B308->unk6C, gUnknown_203B308->unkBC, 0, 0, gUnknown_203B308->unk68, 2);
|
||||
break;
|
||||
case 7:
|
||||
sub_803B35C(sub_8096574(gUnknown_203B308->unk8), &gUnknown_203B308->unkC);
|
||||
gUnknown_203B308->unkC = 3;
|
||||
gUnknown_203B308->unk50 = 0;
|
||||
sub_802DE84(&gUnknown_203B308->unkC);
|
||||
break;
|
||||
case 8:
|
||||
sub_802C860(0);
|
||||
break;
|
||||
case 0:
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
}
|
||||
60
src/pelipper_board_1.c
Normal file
60
src/pelipper_board_1.c
Normal file
@@ -0,0 +1,60 @@
|
||||
#include "global.h"
|
||||
|
||||
extern u8 gUnknown_80E03AC[];
|
||||
extern u8 gUnknown_80E03B8[];
|
||||
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
|
||||
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
|
||||
extern u32 sub_80969AC(void);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern u32 sub_802C898(void);
|
||||
extern void sub_802C8F4(void);
|
||||
extern void SetPelipperBoardState(u32);
|
||||
extern u32 sub_802DEE0(void);
|
||||
extern void sub_802DF24(void);
|
||||
|
||||
|
||||
void sub_802EEA0(void)
|
||||
{
|
||||
switch(sub_802DEE0())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802DF24();
|
||||
SetPelipperBoardState(5);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802EEBC(void)
|
||||
{
|
||||
switch(sub_802C898())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802C8F4();
|
||||
SetPelipperBoardState(1);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void nullsub_134(void)
|
||||
{
|
||||
}
|
||||
|
||||
void CreatePelipperAcceptedStatusBox(u32 r0)
|
||||
{
|
||||
sub_8008C54(r0);
|
||||
sub_80073B8(r0);
|
||||
xxx_call_draw_string(3, 0, gUnknown_80E03AC, r0, 0);
|
||||
sub_8012BC4(0x12, 0xD, sub_80969AC(), 2, 7, r0);
|
||||
xxx_call_draw_string(0x16, 0xD, gUnknown_80E03B8, r0, 0);
|
||||
sub_8012BC4(0x23, 0xD, 0x8, 0x2, 7, r0);
|
||||
sub_80073E0(r0);
|
||||
}
|
||||
@@ -198,7 +198,7 @@ bool8 IsPokemonRenamed(struct PokemonStruct* pokemon) {
|
||||
char* species = GetMonSpecies(pokemon->speciesNum);
|
||||
s32 i;
|
||||
CopyStringtoBuffer(species_name, species);
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
|
||||
if (pokemon->name[i] != species_name[i]) {
|
||||
return FALSE;
|
||||
}
|
||||
@@ -216,7 +216,7 @@ bool8 ComparePokemonNames(s16 a1, s16 a2) {
|
||||
u8* name2 = gRecruitedPokemonRef->pokemon[index2].name;
|
||||
|
||||
s32 i;
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
|
||||
s32 c1 = ReturnIntFromChar(*name1);
|
||||
s32 c2 = ReturnIntFromChar(*name2);
|
||||
if (c1 > c2) {
|
||||
@@ -544,7 +544,7 @@ void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2 * a1, struct Po
|
||||
a1->unk18 = pokemon->unk1C;
|
||||
sub_8093F50(&a1->unk1C, &pokemon->unk2C);
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
|
||||
a1->name[i] = pokemon->name[i];
|
||||
}
|
||||
|
||||
@@ -595,7 +595,7 @@ void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct
|
||||
pokemon->unk1C = a2->unk18;
|
||||
sub_8093FA8(pokemon->unk2C, a2->unk1C);
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
|
||||
pokemon->name[i] = a2->name[i];
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ struct PostOfficeHelper
|
||||
u8 unk16;
|
||||
};
|
||||
|
||||
extern struct PostOfficeHelper *gPostOfficeHelper;
|
||||
EWRAM_DATA struct PostOfficeHelper *gPostOfficeHelper;
|
||||
|
||||
|
||||
struct unkStruct_203B330
|
||||
@@ -35,7 +35,7 @@ struct unkStruct_203B330
|
||||
struct UnkTextStruct2 *unk14;
|
||||
struct UnkTextStruct2 unk18[4];
|
||||
};
|
||||
extern struct unkStruct_203B330 *gUnknown_203B330;
|
||||
EWRAM_DATA struct unkStruct_203B330 *gUnknown_203B330;
|
||||
|
||||
|
||||
extern const char DeletingMailInfo_Text[];
|
||||
|
||||
@@ -42,7 +42,7 @@ struct RescueTeamData *GetRescueTeamInfo(void)
|
||||
return &gRescueTeamInfo;
|
||||
}
|
||||
|
||||
void InitializeResuceTeamInfo(void)
|
||||
void InitializeRescueTeamInfo(void)
|
||||
{
|
||||
BoundedCopyStringtoBuffer(gRescueTeamInfoRef->teamName, gTeamNamePlaceholder, TEAM_NAME_LENGTH);
|
||||
gRescueTeamInfoRef->teamRankPts = 0;
|
||||
|
||||
18
src/save.c
18
src/save.c
@@ -8,6 +8,11 @@
|
||||
#include "save.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
|
||||
|
||||
EWRAM_DATA u32 gUnknown_203B17C;
|
||||
EWRAM_DATA char *gUnknown_203B180;
|
||||
EWRAM_DATA struct UnkStruct_203B184 *gUnknown_203B184;
|
||||
|
||||
struct unk_struct
|
||||
{
|
||||
// size: 0x800
|
||||
@@ -26,7 +31,7 @@ struct SavePakRead
|
||||
u32 readStatus;
|
||||
};
|
||||
|
||||
extern struct SavePakRead *gSavePakRead;
|
||||
EWRAM_DATA struct SavePakRead *gSavePakRead;
|
||||
|
||||
struct SavePakWrite
|
||||
{
|
||||
@@ -44,7 +49,7 @@ struct SavePakWrite
|
||||
u16 pokeID;
|
||||
};
|
||||
|
||||
extern struct SavePakWrite *gSavePakWrite;
|
||||
EWRAM_DATA struct SavePakWrite *gSavePakWrite;
|
||||
|
||||
struct QuickSaveRead
|
||||
{
|
||||
@@ -53,7 +58,7 @@ struct QuickSaveRead
|
||||
u32 size;
|
||||
bool8 saveValid;
|
||||
};
|
||||
extern struct QuickSaveRead *gQuickSaveRead;
|
||||
EWRAM_DATA struct QuickSaveRead *gQuickSaveRead;
|
||||
|
||||
struct QuickSaveWrite
|
||||
{
|
||||
@@ -63,12 +68,10 @@ struct QuickSaveWrite
|
||||
u8 unkC;
|
||||
u32 quickSaveStatus;
|
||||
};
|
||||
extern struct QuickSaveWrite *gQuickSaveWrite;
|
||||
EWRAM_DATA struct QuickSaveWrite *gQuickSaveWrite;
|
||||
|
||||
|
||||
extern s32 gUnknown_202DE28;
|
||||
extern u32 gUnknown_203B17C;
|
||||
extern char *gUnknown_203B180;
|
||||
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
extern struct RescueTeamData *gRescueTeamInfoRef;
|
||||
@@ -141,7 +144,6 @@ ALIGNED(4) const char gSaveNotWritten2[] = _("{CENTER_ALIGN}The data could not b
|
||||
ALIGNED(4) const char gSaveFailed2[] = _("{CENTER_ALIGN}Save failed.");
|
||||
ALIGNED(4) const char fill_save7[] = _("pksdir0");
|
||||
|
||||
extern volatile struct UnkStruct_203B184 *gUnknown_203B184;
|
||||
|
||||
extern bool8 sub_800DAB0(u16, u8*, s32);
|
||||
extern bool8 sub_800DAB4(u16, u8*, s32);
|
||||
@@ -601,7 +603,7 @@ void InitializePlayerData(void)
|
||||
InitializeFriendAreas();
|
||||
InitializeRecruitedPokemon();
|
||||
InitializeMoneyItems();
|
||||
InitializeResuceTeamInfo();
|
||||
InitializeRescueTeamInfo();
|
||||
sub_80972F4();
|
||||
sub_8095118();
|
||||
sub_8095900();
|
||||
|
||||
@@ -72,7 +72,7 @@ extern void sub_802B8D4(void);
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern void sub_8012D08(struct UnkTextStruct2 *, s32);
|
||||
extern void sub_8013984(u32 *);
|
||||
extern u8 sub_802B9D8(void);
|
||||
extern u8 HasNoPKMNNews(void);
|
||||
extern u16 gUnknown_203B2D0;
|
||||
extern u16 gUnknown_203B2D2;
|
||||
|
||||
@@ -330,10 +330,11 @@ void sub_802B624(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Start of some Pokemon News related stuff
|
||||
u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2)
|
||||
{
|
||||
|
||||
if(sub_802B9D8())
|
||||
if(HasNoPKMNNews())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
#include "input.h"
|
||||
#include "sub_8095228.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "menu.h"
|
||||
|
||||
#define SELECT_WONDER_MAIL_MODE_MAIN_SCREEN 0
|
||||
#define SEND_WONDER_MAIL_MAIN_SCREEN 1
|
||||
#define SEND_GAME_LINK_CABLE 2
|
||||
#define RECEIVE_WONDER_MAIL_MAIN_SCREEN 4
|
||||
@@ -22,6 +24,120 @@
|
||||
#define PASSWORD_INVALID 19
|
||||
#define PASSWORD_ENTRY_SCREEN 18
|
||||
|
||||
extern const char Cancel_80E7D24[];
|
||||
extern const char Cancel_80E78B4[];
|
||||
extern const char Yes_80E7D2C[];
|
||||
extern const char Yes_80E7910[];
|
||||
extern const char GameLinkCable_80E78C8[];
|
||||
extern const char Password_80E78BC[];
|
||||
|
||||
extern const char Receive_80E7884[];
|
||||
extern const char Send_80E788C[];
|
||||
|
||||
const struct MenuItem gSelectWonderMailModeMainMenuItems[3] =
|
||||
{
|
||||
{Send_80E788C, WONDER_MAIL_MODE_SEND},
|
||||
{Receive_80E7884, WONDER_MAIL_MODE_RECEIVE},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
ALIGNED(4) const char Receive_80E7884[] = "Receive";
|
||||
ALIGNED(4) const char Send_80E788C[] = "Send";
|
||||
|
||||
|
||||
const struct MenuItem gSendWonderMailMainMenuItems[4] =
|
||||
{
|
||||
{GameLinkCable_80E78C8, WONDER_MAIL_GAME_LINK},
|
||||
{Password_80E78BC, -1},
|
||||
{Cancel_80E78B4, 8},
|
||||
{NULL, 0}
|
||||
|
||||
};
|
||||
|
||||
ALIGNED(4) const char Cancel_80E78B4[] = "Cancel";
|
||||
ALIGNED(4) const char Password_80E78BC[] = "Password";
|
||||
ALIGNED(4) const char GameLinkCable_80E78C8[] = "Game Link cable";
|
||||
|
||||
const struct MenuItem gReceiveWonderMailMainMenuItems[4] =
|
||||
{
|
||||
{GameLinkCable_80E78C8, WONDER_MAIL_GAME_LINK},
|
||||
{Password_80E78BC, WONDER_MAIL_PASSWORD},
|
||||
{Cancel_80E78B4, 8},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
const struct MenuItem gUnknown_80E78F8[3] =
|
||||
{
|
||||
{Yes_80E7910, 6},
|
||||
{Cancel_80E78B4, 0},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
ALIGNED(4) const char Yes_80E7910[] = "Yes";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7914[] = "There was a communication error.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7938[] = "An incorrect number of GBA systems are\n"
|
||||
"connected.\n"
|
||||
"Please redo this process from the start.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7994[] = "There is no response from your friend.\n"
|
||||
"Please redo this process from the start.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E79E4[] = "The sender and receiver appear to be\n"
|
||||
"in different modes.\n"
|
||||
"Please redo the process from the start.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7A48[] = "There is no response from your friend.\n"
|
||||
"Please make sure the sender and receiver\n"
|
||||
"are ready~2c then redo this from the start.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7AC4[] = "What would you like to do?";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7AE0[] = "How would you like to send your\n"
|
||||
"#CGWonder Mail#R?";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7B14[] = "How would you like to receive the\n"
|
||||
"#CGWonder Mail#R?";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7B48[] = "Your adventure will be saved.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7B68[] = "Your #CGWonder Mail#R was sent.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7B88[] = "The received #CGWonder Mail#R was\n"
|
||||
"added to the #CGJob List#R.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7BC8[] = "The #CGWonder Mail#R was refused.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7BEC[] = _("Connect a #CGGame Link cable#R.\n"
|
||||
"When you and your friend are ready~2c\n"
|
||||
"you may communicate. ");
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7C48[] = _("#+In communication...\n"
|
||||
"#+Please wait with the power on.\n"
|
||||
"#+To cancel~2c press {B_BUTTON}.");
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7C98[] = "Please enter the\n"
|
||||
"#CGWonder Mail password#R.";
|
||||
|
||||
ALIGNED(4) const char gUnknown_80E7CC4[] = "This password is incorrect.\n"
|
||||
"Would you like to enter it again?";
|
||||
|
||||
ALIGNED(4) const char wonder_mail_main_fill0[] = "pksdir0";
|
||||
|
||||
const struct MenuItem WonderMailMainUnused[3] =
|
||||
{
|
||||
{Yes_80E7D2C, 1},
|
||||
{Cancel_80E7D24, 0},
|
||||
{NULL, 0},
|
||||
};
|
||||
|
||||
ALIGNED(4) const char Cancel_80E7D24[] = "Cancel";
|
||||
ALIGNED(4) const char Yes_80E7D2C[] = "Yes";
|
||||
|
||||
ALIGNED(4) const char wonder_mail_main_fill1[] = "pksdir0";
|
||||
ALIGNED(4) const char wonder_mail_main_fill2[] = "pksdir0";
|
||||
|
||||
|
||||
struct unkStruct_803B344
|
||||
{
|
||||
@@ -64,10 +180,11 @@ struct unkStruct_203B3E8
|
||||
u8 unk498;
|
||||
};
|
||||
|
||||
EWRAM_DATA struct unkStruct_203B3E8 *gUnknown_203B3E8;
|
||||
|
||||
extern u32 sub_8095324(u32);
|
||||
extern u32 sub_80144A4(s32 *);
|
||||
extern u32 sub_8011C1C(void);
|
||||
extern struct unkStruct_203B3E8 *gUnknown_203B3E8;
|
||||
extern void SetWonderMailMainMenuState(u8);
|
||||
extern void sub_8030DE4(void);
|
||||
extern void sub_801B450(void);
|
||||
@@ -82,7 +199,7 @@ 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 sub_8014248(const char *, u32, u32, const struct MenuItem *, u32, u32, u32, u32, u32);
|
||||
extern void nullsub_23(u32);
|
||||
extern void sub_802EF48(void);
|
||||
extern void sub_802D098(struct WonderMail *);
|
||||
@@ -92,21 +209,6 @@ 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();
|
||||
@@ -116,7 +218,7 @@ extern void sub_802D184();
|
||||
extern s32 sub_80154F0();
|
||||
extern bool8 DecodeWonderMailPassword(u8 *, struct WonderMail *);
|
||||
extern bool8 IsValidWonderMail(struct WonderMail *WonderMailData);
|
||||
extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32);
|
||||
extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
|
||||
|
||||
void PrintWonderMailMainMenuError(u32);
|
||||
void HandleWonderMailMainScreen(void);
|
||||
@@ -135,12 +237,6 @@ void HandlePasswordEntryScreen(void);
|
||||
void HandleInvalidPasswordMenu(void);
|
||||
|
||||
|
||||
extern u8 gUnknown_80E7914[];
|
||||
extern u8 gUnknown_80E7938[];
|
||||
extern u8 gUnknown_80E7994[];
|
||||
extern u8 gUnknown_80E79E4[];
|
||||
extern u8 gUnknown_80E7A48[];
|
||||
|
||||
bool8 sub_8039880(void)
|
||||
{
|
||||
return (sub_8095324(1) != 0 || sub_8095324(7) != 0 || sub_8011C1C() == 2);
|
||||
@@ -504,11 +600,11 @@ void WonderMailMainMenuCallback(void)
|
||||
struct unkStruct_803B344 *temp;
|
||||
|
||||
switch(gUnknown_203B3E8->state) {
|
||||
case 0:
|
||||
sub_8014248(gUnknown_80E7AC4,0,1,&gUnknown_80E786C,0,4,0,0,0x101);
|
||||
case SELECT_WONDER_MAIL_MODE_MAIN_SCREEN:
|
||||
sub_8014248(gUnknown_80E7AC4,0,1,gSelectWonderMailModeMainMenuItems,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);
|
||||
sub_8014248(gUnknown_80E7AE0,0,3,gSendWonderMailMainMenuItems,0,4,0,0,0x101);
|
||||
break;
|
||||
case 3:
|
||||
ResetUnusedInputStruct();
|
||||
@@ -516,7 +612,7 @@ void WonderMailMainMenuCallback(void)
|
||||
sub_802EF48();
|
||||
break;
|
||||
case RECEIVE_WONDER_MAIL_MAIN_SCREEN:
|
||||
sub_8014248(gUnknown_80E7B14,0,3,&gUnknown_80E78D8,0,4,0,0,0x101);
|
||||
sub_8014248(gUnknown_80E7B14,0,3,gReceiveWonderMailMainMenuItems,0,4,0,0,0x101);
|
||||
break;
|
||||
case PASSWORD_SUCCESS:
|
||||
gUnknown_203B3E8->unk474 = gUnknown_203B3E8->unk3C0.unk0;
|
||||
@@ -561,7 +657,7 @@ void WonderMailMainMenuCallback(void)
|
||||
}
|
||||
break;
|
||||
case GAME_LINK_CABLE_MENU:
|
||||
sub_8014248(gUnknown_80E7BEC,0,6,&gUnknown_80E78F8,0,4,0,0,0x101);
|
||||
sub_8014248(gUnknown_80E7BEC,0,6,gUnknown_80E78F8,0,4,0,0,0x101);
|
||||
break;
|
||||
case 6:
|
||||
nullsub_23(0);
|
||||
@@ -620,7 +716,7 @@ void WonderMailMainMenuCallback(void)
|
||||
sub_80151C0(5,gUnknown_203B3E8->PasswordEntryBuffer);
|
||||
break;
|
||||
case PASSWORD_INVALID:
|
||||
sub_8014248(gUnknown_80E7CC4,0,6,&gUnknown_80E78F8,0,4,0,0,0x101);
|
||||
sub_8014248(gUnknown_80E7CC4,0,6,gUnknown_80E78F8,0,4,0,0,0x101);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -494,7 +494,7 @@ gUnknown_203B36C = .; /* 203B36C */
|
||||
gRescuePasswordMenu = .; /* 203B370 */
|
||||
. += 0x4;
|
||||
|
||||
gUnknown_203B374 = .; /* 203B374 */
|
||||
gLoadScreen = .; /* 203B374 */
|
||||
. += 0x4;
|
||||
|
||||
gUnknown_203B378 = .; /* 203B378 */
|
||||
|
||||
Reference in New Issue
Block a user