mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-09 20:19:07 -05:00
commit
df0f1b2298
|
|
@ -1371,7 +1371,7 @@ _0801D49C:
|
|||
b _0801D4B6
|
||||
_0801D4AA:
|
||||
movs r0, 0
|
||||
bl sub_802C860
|
||||
bl InitializeJobListMenu
|
||||
b _0801D4B6
|
||||
_0801D4B2:
|
||||
bl sub_801DCC4
|
||||
|
|
|
|||
|
|
@ -5,325 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_804513C
|
||||
sub_804513C:
|
||||
push {r4-r7,lr}
|
||||
movs r3, 0
|
||||
ldr r7, _080451FC
|
||||
ldr r6, _08045200
|
||||
ldr r4, _08045204
|
||||
movs r5, 0
|
||||
_08045148:
|
||||
ldr r0, [r7]
|
||||
lsls r2, r3, 2
|
||||
adds r1, r0, r6
|
||||
adds r1, r2
|
||||
adds r0, r4
|
||||
str r0, [r1]
|
||||
str r5, [r0]
|
||||
adds r4, 0x74
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x3
|
||||
ble _08045148
|
||||
ldr r1, _08045208
|
||||
movs r2, 0
|
||||
adds r0, r1, 0x5
|
||||
_08045164:
|
||||
strb r2, [r0]
|
||||
subs r0, 0x1
|
||||
cmp r0, r1
|
||||
bge _08045164
|
||||
movs r3, 0
|
||||
ldr r7, _080451FC
|
||||
ldr r6, _0804520C
|
||||
ldr r4, _08045210
|
||||
movs r5, 0
|
||||
_08045176:
|
||||
ldr r0, [r7]
|
||||
lsls r2, r3, 2
|
||||
adds r1, r0, r6
|
||||
adds r1, r2
|
||||
adds r0, r4
|
||||
str r0, [r1]
|
||||
str r5, [r0]
|
||||
adds r4, 0x74
|
||||
adds r3, 0x1
|
||||
cmp r3, 0xF
|
||||
ble _08045176
|
||||
ldr r1, _08045214
|
||||
movs r2, 0
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xF
|
||||
_08045194:
|
||||
strb r2, [r0]
|
||||
subs r0, 0x1
|
||||
cmp r0, r1
|
||||
bge _08045194
|
||||
movs r3, 0
|
||||
ldr r5, _080451FC
|
||||
ldr r4, _08045218
|
||||
movs r2, 0
|
||||
_080451A4:
|
||||
ldr r0, [r5]
|
||||
lsls r1, r3, 2
|
||||
adds r0, r4
|
||||
adds r0, r1
|
||||
str r2, [r0]
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x13
|
||||
ble _080451A4
|
||||
movs r3, 0
|
||||
ldr r7, _080451FC
|
||||
ldr r6, _0804521C
|
||||
ldr r4, _08045220
|
||||
movs r5, 0
|
||||
_080451BE:
|
||||
ldr r0, [r7]
|
||||
lsls r2, r3, 2
|
||||
adds r1, r0, r6
|
||||
adds r1, r2
|
||||
adds r0, r4
|
||||
str r0, [r1]
|
||||
str r5, [r0]
|
||||
adds r4, 0x74
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x3F
|
||||
ble _080451BE
|
||||
movs r3, 0
|
||||
ldr r7, _080451FC
|
||||
ldr r6, _08045224
|
||||
ldr r4, _08045228
|
||||
movs r5, 0
|
||||
_080451DE:
|
||||
ldr r0, [r7]
|
||||
lsls r2, r3, 2
|
||||
adds r1, r0, r6
|
||||
adds r1, r2
|
||||
adds r0, r4
|
||||
str r0, [r1]
|
||||
str r5, [r0]
|
||||
adds r4, 0x74
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x3F
|
||||
ble _080451DE
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080451FC: .4byte gDungeon
|
||||
_08045200: .4byte 0x0001357c
|
||||
_08045204: .4byte 0x0001381c
|
||||
_08045208: .4byte gUnknown_202EE70
|
||||
_0804520C: .4byte 0x0001358c
|
||||
_08045210: .4byte 0x000139ec
|
||||
_08045214: .4byte gUnknown_202EE76
|
||||
_08045218: .4byte 0x000135cc
|
||||
_0804521C: .4byte 0x0001361c
|
||||
_08045220: .4byte 0x0001412c
|
||||
_08045224: .4byte 0x0001371c
|
||||
_08045228: .4byte 0x00015e2c
|
||||
thumb_func_end sub_804513C
|
||||
|
||||
thumb_func_start sub_804522C
|
||||
sub_804522C:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
ldr r2, _08045274
|
||||
ldr r0, [r2]
|
||||
ldr r3, _08045278
|
||||
adds r1, r0, r3
|
||||
ldrb r7, [r1]
|
||||
ldr r1, _0804527C
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080452AA
|
||||
movs r6, 0
|
||||
adds r7, r2, 0
|
||||
_08045248:
|
||||
ldr r0, [r7]
|
||||
lsls r1, r6, 2
|
||||
ldr r2, _08045280
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r5, [r0]
|
||||
adds r0, r5, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080452A2
|
||||
ldr r0, [r7]
|
||||
ldr r3, _08045284
|
||||
adds r0, r3
|
||||
ldr r0, [r0]
|
||||
cmp r5, r0
|
||||
bne _08045288
|
||||
adds r0, r5, 0
|
||||
bl sub_806C51C
|
||||
b _080452A2
|
||||
.align 2, 0
|
||||
_08045274: .4byte gDungeon
|
||||
_08045278: .4byte 0x00018210
|
||||
_0804527C: .4byte 0x0001820a
|
||||
_08045280: .4byte 0x000135cc
|
||||
_08045284: .4byte 0x000181f8
|
||||
_08045288:
|
||||
ldr r4, [r5, 0x70]
|
||||
adds r0, r5, 0
|
||||
bl EntityGetStatusSprites
|
||||
adds r2, r0, 0
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x98
|
||||
ldr r0, [r0]
|
||||
movs r3, 0x4
|
||||
ldrsh r1, [r4, r3]
|
||||
movs r3, 0
|
||||
bl UpdateDungeonPokemonSprite
|
||||
_080452A2:
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x13
|
||||
ble _08045248
|
||||
b _0804533E
|
||||
_080452AA:
|
||||
movs r6, 0
|
||||
_080452AC:
|
||||
ldr r0, _08045348
|
||||
ldr r0, [r0]
|
||||
lsls r1, r6, 2
|
||||
ldr r2, _0804534C
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080452CC
|
||||
adds r0, r4, 0
|
||||
bl sub_806C51C
|
||||
_080452CC:
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x3
|
||||
ble _080452AC
|
||||
movs r6, 0
|
||||
_080452D4:
|
||||
ldr r5, _08045348
|
||||
ldr r0, [r5]
|
||||
lsls r1, r6, 2
|
||||
ldr r3, _08045350
|
||||
adds r0, r3
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080452F4
|
||||
adds r0, r4, 0
|
||||
bl sub_806C51C
|
||||
_080452F4:
|
||||
adds r6, 0x1
|
||||
cmp r6, 0xF
|
||||
ble _080452D4
|
||||
movs r6, 0
|
||||
ldr r0, [r5]
|
||||
ldr r1, _08045354
|
||||
adds r0, r1
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
cmp r6, r0
|
||||
bge _08045336
|
||||
adds r4, r5, 0
|
||||
_0804530C:
|
||||
ldr r0, [r4]
|
||||
lsls r1, r6, 2
|
||||
ldr r3, _08045358
|
||||
adds r0, r3
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
movs r1, 0
|
||||
str r1, [sp]
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x1
|
||||
movs r3, 0xFF
|
||||
bl sub_80462AC
|
||||
adds r6, 0x1
|
||||
ldr r0, [r4]
|
||||
ldr r1, _08045354
|
||||
adds r0, r1
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
cmp r6, r0
|
||||
blt _0804530C
|
||||
_08045336:
|
||||
cmp r7, 0
|
||||
beq _0804533E
|
||||
bl sub_807FA9C
|
||||
_0804533E:
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08045348: .4byte gDungeon
|
||||
_0804534C: .4byte 0x0001357c
|
||||
_08045350: .4byte 0x0001358c
|
||||
_08045354: .4byte 0x00003904
|
||||
_08045358: .4byte 0x0001361c
|
||||
thumb_func_end sub_804522C
|
||||
|
||||
thumb_func_start sub_804535C
|
||||
sub_804535C:
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
cmp r1, 0
|
||||
beq _0804536C
|
||||
ldr r0, [r1]
|
||||
str r0, [r2, 0xC]
|
||||
ldr r0, [r1, 0x4]
|
||||
b _0804538E
|
||||
_0804536C:
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r2, r0]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 11
|
||||
movs r1, 0xC0
|
||||
lsls r1, 4
|
||||
adds r0, r1
|
||||
str r0, [r2, 0xC]
|
||||
movs r0, 0x6
|
||||
ldrsh r1, [r2, r0]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 11
|
||||
movs r1, 0x80
|
||||
lsls r1, 5
|
||||
adds r0, r1
|
||||
_0804538E:
|
||||
str r0, [r2, 0x10]
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_804535C
|
||||
|
||||
thumb_func_start sub_8045394
|
||||
sub_8045394:
|
||||
str r1, [r0, 0xC]
|
||||
str r2, [r0, 0x10]
|
||||
bx lr
|
||||
thumb_func_end sub_8045394
|
||||
|
||||
thumb_func_start sub_804539C
|
||||
sub_804539C:
|
||||
ldr r3, [r0, 0xC]
|
||||
adds r3, r1
|
||||
str r3, [r0, 0xC]
|
||||
ldr r1, [r0, 0x10]
|
||||
adds r1, r2
|
||||
str r1, [r0, 0x10]
|
||||
bx lr
|
||||
thumb_func_end sub_804539C
|
||||
|
||||
thumb_func_start sub_80453AC
|
||||
sub_80453AC:
|
||||
push {r4-r7,lr}
|
||||
|
|
@ -1101,4 +782,4 @@ _0804598A:
|
|||
bx r1
|
||||
thumb_func_end sub_8045888
|
||||
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -5,75 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8045C28
|
||||
sub_8045C28:
|
||||
push {r4-r7,lr}
|
||||
adds r5, r0, 0
|
||||
adds r6, r2, 0
|
||||
lsls r1, 24
|
||||
lsrs r4, r1, 24
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl xxx_init_itemslot_8090A8C
|
||||
movs r7, 0
|
||||
adds r0, r4, 0
|
||||
bl IsNotSpecialItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08045C72
|
||||
cmp r6, 0
|
||||
bne _08045C6C
|
||||
movs r0, 0x64
|
||||
bl DungeonRandInt
|
||||
ldr r1, _08045C64
|
||||
ldr r1, [r1]
|
||||
ldr r2, _08045C68
|
||||
adds r1, r2
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
bge _08045C72
|
||||
b _08045C76
|
||||
.align 2, 0
|
||||
_08045C64: .4byte gDungeon
|
||||
_08045C68: .4byte 0x0001c57e
|
||||
_08045C6C:
|
||||
cmp r6, 0x1
|
||||
bne _08045C72
|
||||
movs r7, 0x1
|
||||
_08045C72:
|
||||
cmp r7, 0
|
||||
beq _08045C7E
|
||||
_08045C76:
|
||||
ldrb r1, [r5]
|
||||
movs r0, 0x8
|
||||
orrs r0, r1
|
||||
strb r0, [r5]
|
||||
_08045C7E:
|
||||
adds r0, r4, 0
|
||||
bl GetItemCategory
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x6
|
||||
bne _08045CA2
|
||||
ldr r0, _08045CA8
|
||||
ldr r0, [r0]
|
||||
ldr r1, _08045CAC
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r0, r5, 0
|
||||
bl sub_8046CE4
|
||||
_08045CA2:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08045CA8: .4byte gDungeon
|
||||
_08045CAC: .4byte 0x0001c58b
|
||||
thumb_func_end sub_8045C28
|
||||
|
||||
thumb_func_start sub_8045CB0
|
||||
sub_8045CB0:
|
||||
push {r4-r7,lr}
|
||||
|
|
@ -2012,7 +1943,7 @@ _08046BAA:
|
|||
adds r0, r2
|
||||
ldr r2, [r0]
|
||||
adds r0, r4, 0
|
||||
bl sub_804539C
|
||||
bl IncreaseEntityPixelPos
|
||||
mov r0, r10
|
||||
bl sub_8009C7C
|
||||
add r2, sp, 0x20
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ _0804731A:
|
|||
adds r0, r7, 0
|
||||
ldr r1, [sp, 0x228]
|
||||
ldr r2, [sp, 0x22C]
|
||||
bl sub_804539C
|
||||
bl IncreaseEntityPixelPos
|
||||
bl IsWaterTileset
|
||||
lsls r0, 24
|
||||
movs r2, 0
|
||||
|
|
|
|||
|
|
@ -2825,7 +2825,7 @@ _080753A6:
|
|||
ldr r1, [r4, 0x10]
|
||||
ldr r2, [r4, 0x14]
|
||||
adds r0, r3, 0
|
||||
bl sub_804539C
|
||||
bl IncreaseEntityPixelPos
|
||||
ldrh r0, [r4, 0x18]
|
||||
subs r0, 0x1
|
||||
strh r0, [r4, 0x18]
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ _0807CEBC:
|
|||
adds r0, r6, 0
|
||||
ldr r1, [sp, 0x2C]
|
||||
ldr r2, [sp, 0x30]
|
||||
bl sub_804539C
|
||||
bl IncreaseEntityPixelPos
|
||||
adds r0, r6, 0
|
||||
bl sub_8045888
|
||||
lsls r0, 24
|
||||
|
|
@ -1404,7 +1404,7 @@ _0807D8B0:
|
|||
adds r0, r2
|
||||
ldr r2, [r0]
|
||||
adds r0, r4, 0
|
||||
bl sub_804539C
|
||||
bl IncreaseEntityPixelPos
|
||||
mov r0, r10
|
||||
bl sub_8009C7C
|
||||
add r2, sp, 0x20
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ _08085C08:
|
|||
muls r2, r0
|
||||
lsls r2, 8
|
||||
adds r0, r6, 0
|
||||
bl sub_804539C
|
||||
bl IncreaseEntityPixelPos
|
||||
_08085C32:
|
||||
adds r5, 0x10
|
||||
adds r7, 0x1
|
||||
|
|
|
|||
|
|
@ -1417,7 +1417,7 @@ _0803349C:
|
|||
adds r0, r5
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x6
|
||||
bl sub_809539C
|
||||
bl GetMailIndex
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8095228
|
||||
|
|
|
|||
|
|
@ -1360,7 +1360,7 @@ sub_8037EBC:
|
|||
_08037ED0:
|
||||
ldr r1, [r5, 0x10]
|
||||
movs r0, 0x1
|
||||
bl sub_809539C
|
||||
bl GetMailIndex
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8095228
|
||||
|
|
@ -1431,7 +1431,7 @@ sub_8037F4C:
|
|||
_08037F5E:
|
||||
ldr r1, [r4, 0x10]
|
||||
movs r0, 0x4
|
||||
bl sub_809539C
|
||||
bl GetMailIndex
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8095228
|
||||
|
|
@ -1596,7 +1596,7 @@ _0803809C:
|
|||
_080380A2:
|
||||
movs r0, 0x4
|
||||
adds r1, r6, 0
|
||||
bl sub_80952F0
|
||||
bl HasMail
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080380BA
|
||||
|
|
@ -1628,19 +1628,19 @@ _080380D8:
|
|||
ldr r4, [r5, 0x10]
|
||||
movs r0, 0x2
|
||||
adds r1, r4, 0
|
||||
bl sub_80952F0
|
||||
bl HasMail
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08038110
|
||||
movs r0, 0x4
|
||||
adds r1, r4, 0
|
||||
bl sub_80952F0
|
||||
bl HasMail
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08038110
|
||||
movs r0, 0x6
|
||||
adds r1, r4, 0
|
||||
bl sub_80952F0
|
||||
bl HasMail
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08038110
|
||||
|
|
@ -1681,7 +1681,7 @@ sub_803812C:
|
|||
_0803813E:
|
||||
ldr r1, [r4, 0x10]
|
||||
movs r0, 0x1
|
||||
bl sub_80952F0
|
||||
bl HasMail
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08038150
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ CreatePelipperBoardMenu:
|
|||
adds r1, 0xC0
|
||||
movs r0, 0x2
|
||||
str r0, [r1]
|
||||
bl sub_802C4A4
|
||||
bl HasNoPelipperBoardJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802EB66
|
||||
|
|
@ -93,7 +93,7 @@ _0802EBB6:
|
|||
str r0, [r1, 0x64]
|
||||
b _0802EC0A
|
||||
.align 2, 0
|
||||
_0802EBDC: .4byte gUnknown_203B308
|
||||
_0802EBDC: .4byte gPelipperBoard
|
||||
_0802EBE0: .4byte gPelipperBoard_BulletinBoard
|
||||
_0802EBE4: .4byte gPelipperBoard_JobList
|
||||
_0802EBE8:
|
||||
|
|
@ -202,7 +202,7 @@ _0802ECA2:
|
|||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802ECA8: .4byte gUnknown_203B308
|
||||
_0802ECA8: .4byte gPelipperBoard
|
||||
_0802ECAC: .4byte gUnknown_80D4990
|
||||
_0802ECB0: .4byte gUnknown_80D4970
|
||||
thumb_func_end sub_802EC10
|
||||
|
|
|
|||
|
|
@ -210,29 +210,29 @@ _0802CC1C:
|
|||
.4byte _0802CC30
|
||||
.4byte _0802CC48
|
||||
_0802CC30:
|
||||
bl sub_802C620
|
||||
bl GetPelipperBoardSlotIndex
|
||||
ldr r1, _0802CC44
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0xC]
|
||||
movs r0, 0x2
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
b _0802CC6A
|
||||
.align 2, 0
|
||||
_0802CC44: .4byte gUnknown_203B2F0
|
||||
_0802CC48:
|
||||
bl sub_802C620
|
||||
bl GetPelipperBoardSlotIndex
|
||||
ldr r1, _0802CC5C
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0xC]
|
||||
movs r0, 0x4
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
b _0802CC6A
|
||||
.align 2, 0
|
||||
_0802CC5C: .4byte gUnknown_203B2F0
|
||||
_0802CC60:
|
||||
bl sub_802C688
|
||||
movs r0, 0x5
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
_0802CC6A:
|
||||
pop {r0}
|
||||
bx r0
|
||||
|
|
@ -306,22 +306,22 @@ _0802CCF4:
|
|||
_0802CD06:
|
||||
strb r1, [r0]
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
b _0802CD2E
|
||||
.align 2, 0
|
||||
_0802CD10: .4byte 0x00000133
|
||||
_0802CD14: .4byte gUnknown_203B2F0
|
||||
_0802CD18:
|
||||
movs r0, 0x3
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
b _0802CD2E
|
||||
_0802CD20:
|
||||
movs r0, 0x4
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
b _0802CD2E
|
||||
_0802CD28:
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
_0802CD2E:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
|
|
@ -366,7 +366,7 @@ _0802CD7C:
|
|||
bne _0802CDB0
|
||||
_0802CD80:
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
b _0802CDB0
|
||||
_0802CD88:
|
||||
ldr r0, [r4]
|
||||
|
|
@ -379,11 +379,11 @@ _0802CD88:
|
|||
beq _0802CDAA
|
||||
bl sub_802C688
|
||||
movs r0, 0x5
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
b _0802CDB0
|
||||
_0802CDAA:
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
_0802CDB0:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
|
|
@ -401,7 +401,7 @@ sub_802CDB8:
|
|||
bhi _0802CDD0
|
||||
bl sub_802DF24
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
bl SetJobListState
|
||||
_0802CDD0:
|
||||
pop {r0}
|
||||
bx r0
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ struct unkStruct_203B480
|
|||
struct Item unk20;
|
||||
u32 unk24;
|
||||
u32 unk28;
|
||||
s8 unk2C;
|
||||
s8 rescuesAllowed;
|
||||
u8 unk2D;
|
||||
u8 padding4[0x30 - 0x2E];
|
||||
};
|
||||
|
|
@ -39,16 +39,16 @@ struct unkStruct_203B48C
|
|||
|
||||
bool8 sub_80951FC(struct unkStruct_203B480 *param_1);
|
||||
struct unkStruct_203B480 * sub_8095228(u8 index);
|
||||
void sub_8095240(u8 index);
|
||||
void DeleteMailAtIndex(u8 index);
|
||||
void sub_8095274(u32 param_1);
|
||||
bool8 sub_8095298(s32 param_1);
|
||||
void sub_80952C4(void);
|
||||
bool8 sub_80952F0(u8 mailType, u32 param_2);
|
||||
bool8 HasMail(u8 mailType, u32 param_2);
|
||||
s32 CountMailType(u8 mailType);
|
||||
u32 sub_8095350(void);
|
||||
u32 CountAllMail(void);
|
||||
s32 sub_8095374(void);
|
||||
s32 sub_809539C(u8 mailType, u32 param_2);
|
||||
s32 sub_80953D4(u8 mailType);
|
||||
s32 GetMailIndex(u8 mailType, u32 param_2);
|
||||
s32 GetFirstIndexofMailType(u8 mailType);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ struct unkStruct_203B3F8
|
|||
s16 unk4;
|
||||
u16 unk6;
|
||||
struct PokemonStruct *pokemon;
|
||||
u32 unkC;
|
||||
u32 menuAction;
|
||||
struct MenuStruct unk10;
|
||||
u32 unk60;
|
||||
u32 unk64;
|
||||
|
|
|
|||
|
|
@ -220,8 +220,10 @@ struct EntityInfo
|
|||
u8 fill160[0x164 - 0x160];
|
||||
/* 0x164 */ u8 unk164;
|
||||
/* 0x165 */ u8 unk165;
|
||||
u8 fill166[0x169 - 0x166];
|
||||
u8 turnsSinceWarpScarfActivation;
|
||||
/* 0x166 */ u8 unk166;
|
||||
/* 0x167 */ u8 unk167;
|
||||
/* 0x168 */ u8 unk168;
|
||||
/* 0x169 */ u8 turnsSinceWarpScarfActivation;
|
||||
/* 0x16C */ struct Position targetPos;
|
||||
/* 0x170 */ struct Position pixelPos;
|
||||
u32 unk174;
|
||||
|
|
@ -291,11 +293,13 @@ struct Entity
|
|||
/* 0x54 */ u16 spriteGlobalIndex;
|
||||
u8 fill56[0x64 - 0x56];
|
||||
u32 unk64;
|
||||
u8 fill68[2];
|
||||
u16 unk68;
|
||||
/* 0x6A */ u8 unk6A;
|
||||
/* 0x6A */ u8 unk6B;
|
||||
/* 0x6C */ u8 direction;
|
||||
/* 0x6D */ u8 direction2; // Duplicate of 0x6C?
|
||||
/* 0x6E */ u8 unk6E;
|
||||
/* 0x6F */ u8 unk6F;
|
||||
/* 0x70 */ struct EntityInfo *info;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ struct Dungeon
|
|||
/* 0x660 */ s16 fractionalTurn; // Handles turn order when Pokémon have different movement speeds.
|
||||
u8 fill662[0x666 - 0x662];
|
||||
/* 0x666 */ u16 windTurns; // Turns remaining before getting swept out of the dungeon.
|
||||
u8 fill668[0x66A - 0x668];
|
||||
/* 0x668 */ u16 unk668;
|
||||
u16 bossSongIndex;
|
||||
u8 unk66C;
|
||||
u8 unk66D;
|
||||
|
|
@ -114,14 +114,18 @@ struct Dungeon
|
|||
/* 0x68A */ u8 unk68A;
|
||||
u8 fill68B[0x699 - 0x68B];
|
||||
u8 unk699;
|
||||
u8 fill69A[0x363C - 0x69A];
|
||||
u8 fill69A[0x69C - 0x69A];
|
||||
/* 0x69C */ struct EntityInfo unk69C[4];
|
||||
u8 fillEBC[0x363C - 0xEBC];
|
||||
/* 0x363C */ u8 expYieldRankings[NUM_MONSTERS];
|
||||
u8 fill37E3[0x37F4 - 0x37D9];
|
||||
/* 0x37F4 */ s32 unk37F4;
|
||||
/* 0x37F8 */ bool8 plusIsActive[2]; // Index 0: Enemy , Index 1: Team
|
||||
/* 0x37FA */ bool8 minusIsActive[2]; // Index 0: Enemy , Index 1: Team
|
||||
/* 0x37FC */ bool8 decoyActive;
|
||||
u8 fill37FD[0x3A08 - 0x37FD];
|
||||
u8 fill37FD[0x3904 - 0x37FD];
|
||||
/* 0x3904 */ s16 unk3904;
|
||||
u8 fill3906[0x3A08 - 0x3906];
|
||||
/* 0x3A08 */ u8 unk3A08;
|
||||
u8 fill3A09[0x3A0D - 0x3A09];
|
||||
/* 0x3A0D */ u8 unk3A0D;
|
||||
|
|
@ -172,8 +176,12 @@ struct Dungeon
|
|||
/* 0x1357C */ struct Entity *teamPokemon[MAX_TEAM_MEMBERS];
|
||||
/* 0x1358C */ struct Entity *wildPokemon[DUNGEON_MAX_WILD_POKEMON];
|
||||
/* 0x135CC */ struct Entity *allPokemon[DUNGEON_MAX_POKEMON]; // Contains both team and wild Pokémon
|
||||
/* 0x1361C */ struct Entity *clientPokemon[2]; // Not sure how large this array is.
|
||||
u8 fill13624[0x17B2C - 0x13624];
|
||||
/* 0x1361C */ struct Entity *clientPokemon[0x40];
|
||||
/* 0x1371C */ struct Entity *unk1371C[0x40];
|
||||
/* 0x1381C */ struct Entity teamPokemonEntities[MAX_TEAM_MEMBERS];
|
||||
/* 0x139EC */ struct Entity wildPokemonEntities[DUNGEON_MAX_WILD_POKEMON];
|
||||
/* 0x1412C */ struct Entity clientPokemonEntities[0x40];
|
||||
/* 0x15E2C */ struct Entity unk15E2C[0x40];
|
||||
/* 0x17B2C */ struct Entity *lightningRodPokemon;
|
||||
/* 0x17B30 */ struct Entity *snatchPokemon;
|
||||
/* 0x17B34 */ u8 fillunk1734[0x17B38 - 0x17B34];
|
||||
|
|
@ -198,8 +206,12 @@ struct Dungeon
|
|||
u8 unk18217;
|
||||
u8 fill18218[0x1C578 - 0x18218];
|
||||
u8 unk1C578;
|
||||
u8 fill1C579[0x1CE98 - 0x1C579];
|
||||
/* 0x1CE98 */ struct unkDungeonGlobal_unk1CE98_sub unk1CE98;
|
||||
u8 fill1C579[0x1C57E - 0x1C579];
|
||||
u8 unk1C57E;
|
||||
u8 fill1C57F[0x1C58B - 0x1C57F];
|
||||
u8 unk1C58B;
|
||||
u8 fill1C58C[0x1CE98 - 0x1C58C];
|
||||
struct unkDungeonGlobal_unk1CE98_sub unk1CE98; // TODO: not sure how large this is
|
||||
u32 unk1CEC8;
|
||||
/* 0x1CECC */ struct DungeonMusicPlayer musPlayer;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ struct unkStruct_203B204
|
|||
s32 currState;
|
||||
u32 fallbackState;
|
||||
u32 chosenAmount;
|
||||
u32 unk10;
|
||||
u32 menuAction;
|
||||
struct MenuItem unk14[8];
|
||||
u16 unk54[8];
|
||||
u32 unk64;
|
||||
|
|
|
|||
|
|
@ -18,10 +18,9 @@ struct unkStruct_203B2BC
|
|||
u16 moveID;
|
||||
struct Move moves[8];
|
||||
u16 moveIDs[4]; // some list of move IDs
|
||||
|
||||
u32 unk70;
|
||||
s32 unk74;
|
||||
u32 unk78;
|
||||
u32 menuAction1;
|
||||
u32 menuAction2;
|
||||
u32 menuAction3;
|
||||
struct MenuStruct unk7C;
|
||||
u8 fill80[0xFD - 0xCC];
|
||||
u32 unkFD;
|
||||
|
|
|
|||
|
|
@ -10,14 +10,13 @@ struct unkStruct_203B208
|
|||
// size: 0x14C
|
||||
u32 unk0;
|
||||
u32 currState;
|
||||
u32 unk8;
|
||||
struct Item unkC;
|
||||
u32 unk10;
|
||||
u32 fallbackState;
|
||||
struct Item storedItem;
|
||||
u32 itemIndex;
|
||||
u8 id; // another id?
|
||||
u8 fill15[0x3];
|
||||
u32 unk18;
|
||||
u32 unk1C;
|
||||
u32 unk20;
|
||||
u32 menuAction1;
|
||||
u32 menuAction2;
|
||||
u32 menuAction3;
|
||||
struct MenuItem unk24[5];
|
||||
u16 unk4C[5];
|
||||
struct MenuStruct unk58;
|
||||
|
|
@ -42,12 +41,12 @@ struct unkStruct_203B20C
|
|||
{
|
||||
u32 state;
|
||||
u8 unk4[4];
|
||||
struct Item unk8;
|
||||
u32 unkC;
|
||||
struct Item item;
|
||||
u32 itemIndex;
|
||||
u8 id;
|
||||
u32 unk14;
|
||||
u32 unk18;
|
||||
u32 unk1C;
|
||||
u32 menuAction1;
|
||||
u32 menuAction2;
|
||||
u32 menuAction3;
|
||||
struct MenuItem unk20[8];
|
||||
u16 unk60[8];
|
||||
struct MenuStruct unk70;
|
||||
|
|
@ -64,4 +63,13 @@ struct unkStruct_203B20C
|
|||
struct UnkTextStruct2 unkF0[4];
|
||||
};
|
||||
|
||||
enum KangaskhanStorageStates {
|
||||
KANGASKHAN_STORAGE_INIT = 0,
|
||||
KANGASKHAN_STORAGE_MAIN_MENU = 1,
|
||||
KANGASKHAN_STORAGE_EXIT = 4,
|
||||
KANGASKHAN_STORAGE_NO_INV_ITEMS = 5,
|
||||
KANGASKHAN_STORAGE_TOO_MANY_ITEMS = 6,
|
||||
KANGASKHAN_STORAGE_IS_MONEY_USED_TM = 9,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -10,24 +10,23 @@ struct unkStruct_203B210
|
|||
// size: 0x148
|
||||
u32 unk0;
|
||||
bool8 isKecleonItemShop; // FALSE indicates it is Kecleon TM Shop
|
||||
u8 fill5[3];
|
||||
u32 currState;
|
||||
u32 fallbackState;
|
||||
s32 itemSellPrice;
|
||||
u32 numInventoryItemToSell;
|
||||
s32 inventoryItemSellPrice;
|
||||
struct Item unk1C;
|
||||
struct Item soldItem;
|
||||
u8 itemShopItemIndex;
|
||||
u8 wareShopItemIndex;
|
||||
u32 unk24;
|
||||
u32 unk28;
|
||||
u32 unk2C;
|
||||
u32 unk30;
|
||||
struct MenuItem unk34[8];
|
||||
u32 soldItemInventoryIndex;
|
||||
u32 menuAction1;
|
||||
u32 menuAction2;
|
||||
u32 menuAction3;
|
||||
struct MenuItem menuItems[8];
|
||||
u16 unk74[8];
|
||||
struct MenuStruct unk84;
|
||||
struct MenuStruct menu;
|
||||
struct OpenedFile *faceFile;
|
||||
u8 *unkD8;
|
||||
u8 *faceData;
|
||||
u16 unkDC;
|
||||
u16 unkDE;
|
||||
u8 unkE0;
|
||||
|
|
@ -59,4 +58,17 @@ struct unkStruct_203B224
|
|||
u8 unkF0[4];
|
||||
};
|
||||
|
||||
enum KecleonStoreStates
|
||||
{
|
||||
KECLEON_STORE_INIT = 0,
|
||||
KECLEON_STORE_MAIN_MENU = 1,
|
||||
KECLEON_STORE_EXIT = 4,
|
||||
KECLEON_STORE_NO_STORE_ITEMS = 5,
|
||||
KECLEON_STORE_NO_MONEY = 6,
|
||||
KECLEON_STORE_NO_ITEMS_TO_SELL = 9,
|
||||
KECLEON_STORE_TOO_MANY_ITEMS = 10,
|
||||
KECLEON_STORE_NOT_ENOUGH_MONEY = 12,
|
||||
KECLEON_STORE_CANT_SELL_ITEM = 13
|
||||
};
|
||||
|
||||
#endif // GUARD_KECLEON_ITEMS_H
|
||||
|
|
|
|||
|
|
@ -12,13 +12,12 @@ struct unkStruct_203B304
|
|||
u32 fallbackState;
|
||||
u8 mailboxIndex;
|
||||
u8 mailIndex;
|
||||
u8 fillA[0xC - 0xA];
|
||||
u32 unkC;
|
||||
u8 fill10[0x50 - 0x10];
|
||||
u8 unk50;
|
||||
u8 fill51[0x64 - 0x51];
|
||||
u32 unk64;
|
||||
u32 unk68;
|
||||
u32 menuAction1;
|
||||
u32 menuAction2;
|
||||
struct MenuStruct unk6C;
|
||||
struct MenuItem unkBC[8];
|
||||
u16 unkFC[8];
|
||||
|
|
@ -28,4 +27,19 @@ struct unkStruct_203B304
|
|||
extern void SetMailboxState(u32);
|
||||
extern s32 GetNumAcceptedJobs(void);
|
||||
|
||||
enum MailBoxStates {
|
||||
INITIALIZE_MAILBOX,
|
||||
MAIN_MAILBOX_MENU,
|
||||
// 2 is ???
|
||||
MAILBOX_EXIT = 3,
|
||||
MAIL_MENU = 4,
|
||||
MAIL_MENU_1 = 5,
|
||||
MAIL_ACTION_MENU = 6,
|
||||
MAIL_INFO = 7,
|
||||
JOB_LIST_MENU = 8,
|
||||
PKMN_NEWS_MENU = 0x9,
|
||||
PKMN_NEWS_MENU_1 = 0xA,
|
||||
DISPLAY_SEL_PKMN_NEWS = 0xB,
|
||||
};
|
||||
|
||||
#endif // GUARD_MAILBOX_H
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ void sub_8012C60(u32 x, u32 y, u32 param_3, u32 param_4, u32 param_5);
|
|||
void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2);
|
||||
void sub_8012D08(struct UnkTextStruct2 *param_1, s32 param_2);
|
||||
void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2);
|
||||
void sub_8012D60(struct MenuStruct *param_1, const struct MenuItem *menuItems, u32 *colorArray, u16 *param_4, s32 param_5, s32 index);
|
||||
void sub_8012E04(struct MenuStruct *param_1, const struct MenuItem *menuItems, u32 *colorArray, u16 *param_4, s32 param_5, s32 index);
|
||||
void sub_8012D60(struct MenuStruct *param_1, const struct MenuItem *menuItems, u32 *colorArray, u16 *param_4, s32 menuAction, s32 index);
|
||||
void sub_8012E04(struct MenuStruct *param_1, const struct MenuItem *menuItems, u32 *colorArray, u16 *param_4, s32 menuAction, s32 index);
|
||||
void sub_8012EA4(struct MenuStruct *param_1, bool8 r1);
|
||||
void sub_8012EBC(struct MenuStruct *param_1);
|
||||
bool8 sub_8012FD8(struct MenuStruct *param_1);
|
||||
|
|
|
|||
31
include/pelipper_board.h
Normal file
31
include/pelipper_board.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
// Guessing based off of 203B304
|
||||
struct unkStruct_203B308
|
||||
{
|
||||
// size: 0xB6 << 1
|
||||
u32 state;
|
||||
u32 unk4;
|
||||
u8 jobIndex;
|
||||
u32 unkC;
|
||||
u8 fill10[0x50 - 0x10];
|
||||
u8 unk50;
|
||||
u8 fill51[0x64 - 0x51];
|
||||
u32 menuAction1;
|
||||
u32 menuAction2;
|
||||
struct MenuStruct unk6C;
|
||||
struct MenuItem unkBC[8];
|
||||
u16 unkFC[8];
|
||||
struct UnkTextStruct2 unk10C[4];
|
||||
};
|
||||
extern struct unkStruct_203B308 *gPelipperBoard;
|
||||
|
||||
|
||||
enum PelipperBoardStates {
|
||||
INITIALIZE_PELIPPER_BOARD,
|
||||
MAIN_PELIPPER_BOARD_MENU,
|
||||
// 2 is ???
|
||||
PELIPPER_BOARD_EXIT = 3,
|
||||
PELIPPER_JOB_INFO = 7,
|
||||
PELIPPER_JOB_LIST_MENU,
|
||||
};
|
||||
|
||||
|
|
@ -16,4 +16,6 @@ struct TeamInventory
|
|||
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
|
||||
#define MAX_TEAM_MONEY 99999
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ struct WonderMailStruct_203B2C0
|
|||
u32 unk534;
|
||||
s32 unk538; // A7 << 3
|
||||
u32 unk53C;
|
||||
u32 unk540; // A8 << 4
|
||||
u32 mailCount; // A8 << 4
|
||||
s16 speciesNum;
|
||||
|
||||
};
|
||||
|
|
@ -113,6 +113,6 @@ struct WonderMailStruct_203B2C4
|
|||
struct unkStruct_802F204 unk53C;
|
||||
};
|
||||
|
||||
void sub_8028B04(u32 r0);
|
||||
void SetFriendRescueCounterState(u32 r0);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ struct unkStruct_203B2F8
|
|||
bool8 unk9;
|
||||
u8 dungeonID;
|
||||
u8 unkB;
|
||||
struct unkSubStruct_203B2F8 *unkC;
|
||||
struct unkSubStruct_203B2F8 *mail;
|
||||
u8 jobSlotIndex;
|
||||
u8 fill11[0x14 - 0x11];
|
||||
u32 unk14;
|
||||
|
|
@ -60,3 +60,24 @@ struct unkStruct_203B2F8
|
|||
u32 unk1E4;
|
||||
};
|
||||
extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
|
||||
|
||||
enum WonderMailRescueStates
|
||||
{
|
||||
INITIAL_WONDER_MAIL_CHECK,
|
||||
// 1 is ??
|
||||
WONDER_MAIL_EXIT = 2,
|
||||
DUPLICATE_WONDER_MAIL = 3,
|
||||
DUPLICATE_WONDER_MAIL_1,
|
||||
// 5 is ??
|
||||
// 6 is ??
|
||||
// 7 is ??
|
||||
RECEIVE_WONDER_MAIL = 8,
|
||||
// 9 is ??
|
||||
JOB_LIST_FULL = 0xA,
|
||||
DRAW_JOB_LIST = 0xB,
|
||||
DRAW_JOB_LIST_1 = 0xC,
|
||||
// 0xD is ??
|
||||
// 0xE is ??
|
||||
// 0xF is ??
|
||||
// 0x10 is ??
|
||||
};
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@ SECTIONS {
|
|||
src/wonder_mail.o(.text);
|
||||
src/thank_you_wonder_mail.o(.text);
|
||||
src/wonder_mail_2.o(.text);
|
||||
src/pokemon_news.o(.text);
|
||||
src/wonder_mail_2_mid.o(.text);
|
||||
src/wonder_mail_2_1.o(.text);
|
||||
asm/wonder_mail_802C860.o(.text);
|
||||
|
|
@ -429,6 +430,7 @@ SECTIONS {
|
|||
src/wonder_mail.o(.rodata);
|
||||
src/thank_you_wonder_mail.o(.rodata);
|
||||
src/wonder_mail_2.o(.rodata);
|
||||
src/pokemon_news.o(.rodata);
|
||||
src/wonder_mail_2_1.o(.rodata);
|
||||
src/wonder_mail_3.o(.rodata);
|
||||
src/wonder_mail_802DF88.o(.rodata);
|
||||
|
|
|
|||
10
src/code_2.c
10
src/code_2.c
|
|
@ -16,6 +16,7 @@
|
|||
#include "exclusive_pokemon.h"
|
||||
#include "pokemon.h"
|
||||
#include "rescue_team_info.h"
|
||||
#include "code_8094F88.h"
|
||||
|
||||
extern void sub_801180C(void);
|
||||
extern void NDS_LoadOverlay_GroundMain(void);
|
||||
|
|
@ -41,8 +42,7 @@ extern void sub_800CDA8(u32);
|
|||
extern void LoadTitleScreen(void);
|
||||
extern void SetBGPaletteBufferColorRGB(s32, u8 *, s32, u8 *);
|
||||
extern void sub_80095CC(u32, u32);
|
||||
extern s32 sub_80953D4(u8);
|
||||
extern void sub_8095240(u8);
|
||||
extern s32 GetFirstIndexofMailType(u8);
|
||||
extern void nullsub_33(void);
|
||||
extern u32 sub_80009D0(u32);
|
||||
|
||||
|
|
@ -174,9 +174,9 @@ void GameLoop(void)
|
|||
CloseFile(gTitlePaletteFile);
|
||||
switch (nextMenu) {
|
||||
case 2: {
|
||||
s32 tmp5 = sub_80953D4(7);
|
||||
if (tmp5 != -1) {
|
||||
sub_8095240(tmp5);
|
||||
s32 mailIndex = GetFirstIndexofMailType(7);
|
||||
if (mailIndex != -1) {
|
||||
DeleteMailAtIndex(mailIndex);
|
||||
tmp3 = sub_80009D0(2);
|
||||
} else {
|
||||
tmp3 = sub_80009D0(1);
|
||||
|
|
|
|||
|
|
@ -107,13 +107,13 @@ struct unk_203B250 *gUnknown_203B250;
|
|||
|
||||
void sub_801D680(void)
|
||||
{
|
||||
int local_c;
|
||||
int menuAction;
|
||||
|
||||
local_c = 0;
|
||||
if ((sub_8012FD8(&gUnknown_203B250->unk18) == '\0') && (sub_8013114(&gUnknown_203B250->unk18,&local_c), local_c != 1)) {
|
||||
gUnknown_203B250->unk14 = local_c;
|
||||
menuAction = 0;
|
||||
if ((sub_8012FD8(&gUnknown_203B250->unk18) == '\0') && (sub_8013114(&gUnknown_203B250->unk18,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B250->unk14 = menuAction;
|
||||
}
|
||||
switch(local_c) {
|
||||
switch(menuAction) {
|
||||
case 2:
|
||||
sub_801D208(3);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
#include "global.h"
|
||||
#include "constants/item.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "item.h"
|
||||
|
||||
extern u8 *gUnknown_80FE6F4[];
|
||||
extern struct unkStruct_8090F58 gUnknown_80F699C;
|
||||
|
|
@ -10,8 +13,9 @@ extern struct unkStruct_8090F58 gUnknown_80F6990;
|
|||
extern struct EntityInfo* GetTrapData_1(struct Entity *entity);
|
||||
extern void SetMessageArgument_2(u8 *, struct EntityInfo *, u32);
|
||||
extern void GetTrapName(u8 *, u8);
|
||||
|
||||
extern bool8 IsNotSpecialItem(u8 id);
|
||||
void sub_8045BF8(u8 *, struct Item *);
|
||||
void sub_8046CE4(void *param_1,u32 param_2);
|
||||
|
||||
void sub_8045ACC(void)
|
||||
{
|
||||
|
|
@ -90,3 +94,37 @@ void sub_8045C18(u8 *buffer, struct Item *item)
|
|||
{
|
||||
sub_8090E14(buffer, item, &gUnknown_80F6990);
|
||||
}
|
||||
|
||||
void sub_8045C28(struct Item *Item, u8 itemID, u32 param_3)
|
||||
{
|
||||
bool8 stickyFlag;
|
||||
u32 total;
|
||||
|
||||
xxx_init_itemslot_8090A8C(Item,itemID,0);
|
||||
stickyFlag = FALSE;
|
||||
if (IsNotSpecialItem(itemID)) {
|
||||
if (param_3 == 0) {
|
||||
if (DungeonRandInt(100) >= gDungeon->unk1C57E)
|
||||
{
|
||||
goto _short;
|
||||
}
|
||||
else
|
||||
{
|
||||
goto _store;
|
||||
}
|
||||
}
|
||||
else if (param_3 == 1) {
|
||||
stickyFlag = TRUE;
|
||||
}
|
||||
}
|
||||
_short:
|
||||
if (stickyFlag)
|
||||
_store:
|
||||
Item->flags = Item->flags | ITEM_FLAG_STICKY;
|
||||
if (GetItemCategory(itemID) == CATEGORY_POKE) {
|
||||
// FIXME: total hack but too lazy to figure out array for now
|
||||
total = (gDungeon->unk1C58B << 2) + gDungeon->unk1C58B;
|
||||
total <<= 3;
|
||||
sub_8046CE4(Item, total);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -325,7 +325,7 @@ extern void PlaySoundEffect(u32);
|
|||
extern void sub_806CDD4(struct Entity *, u32, u32);
|
||||
extern void sub_80869E4(struct Entity *, u32, u32, u32);
|
||||
extern void sub_806CE68(struct Entity *, u32);
|
||||
extern void sub_804539C(struct Entity *, u32, u32);
|
||||
extern void IncreaseEntityPixelPos(struct Entity *, u32, u32);
|
||||
extern void sub_8042B0C(struct Entity *);
|
||||
extern void DisplayDungeonDialogue(u32 *);
|
||||
extern void sub_803E708(u32, u32);
|
||||
|
|
@ -449,7 +449,6 @@ extern u8 sub_8086AE4(u32);
|
|||
extern void sub_8072008(struct Entity *, struct Entity *, s16, u32, u32);
|
||||
extern struct Entity *GetPartnerEntity();
|
||||
extern void sub_80869E4(struct Entity *, u32, u32, u32);
|
||||
extern void sub_804539C(struct Entity *, u32, u32);
|
||||
extern void sub_806CDD4(struct Entity *, u32, u32);
|
||||
extern void sub_8085374();
|
||||
|
||||
|
|
@ -1534,12 +1533,12 @@ void GroudonPostStoryPreFightDialogue(void)
|
|||
}
|
||||
|
||||
// Moves Groudon down in a walking fashion
|
||||
void SceneGroudonMovement(struct Entity * param_1)
|
||||
void SceneGroudonMovement(struct Entity * GroudonEntity)
|
||||
{
|
||||
int iVar1;
|
||||
|
||||
sub_8086848(0x18,0x10);
|
||||
sub_806CDD4(param_1,0,DIRECTION_SOUTH);
|
||||
sub_806CDD4(GroudonEntity,0,DIRECTION_SOUTH);
|
||||
for(iVar1 = 0; iVar1 < 0x2C; iVar1++)
|
||||
{
|
||||
if ((iVar1 == 10) || (iVar1 == 0x20)) {
|
||||
|
|
@ -1548,12 +1547,12 @@ void SceneGroudonMovement(struct Entity * param_1)
|
|||
sub_808680C();
|
||||
}
|
||||
if ((iVar1 - 10U < 0xc) || (iVar1 > 0x1f)) {
|
||||
sub_804539C(param_1,0,0x100);
|
||||
IncreaseEntityPixelPos(GroudonEntity,0,0x100);
|
||||
}
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_80856C8(param_1,param_1->pos.x,param_1->pos.y + 1);
|
||||
sub_80861D4(param_1,0xf,0);
|
||||
sub_80856C8(GroudonEntity,GroudonEntity->pos.x,GroudonEntity->pos.y + 1);
|
||||
sub_80861D4(GroudonEntity,0xf,0);
|
||||
sub_803E708(10,0x46);
|
||||
sub_808682C();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
|
|
@ -1801,7 +1800,7 @@ void sub_8089168(void)
|
|||
|
||||
void sub_808919C(struct Entity *r0)
|
||||
{
|
||||
sub_804539C(r0, 0, 0xfffffe00);
|
||||
IncreaseEntityPixelPos(r0, 0, 0xfffffe00);
|
||||
}
|
||||
|
||||
void sub_80891B0(struct Entity *r0)
|
||||
|
|
@ -1830,43 +1829,43 @@ void sub_80891F0(void)
|
|||
sub_80855E4(sub_80891D0);
|
||||
}
|
||||
|
||||
void sub_8089224(struct Entity * param_1)
|
||||
void sub_8089224(struct Entity * entity)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 xPixelPos;
|
||||
|
||||
if (param_1->pixelPos.y < 0x9001) {
|
||||
if (entity->pixelPos.y < 0x9001) {
|
||||
return;
|
||||
}
|
||||
iVar1 = param_1->pixelPos.x;
|
||||
xPixelPos = entity->pixelPos.x;
|
||||
|
||||
if(iVar1 < 0xE400)
|
||||
if(xPixelPos < 0xE400)
|
||||
{
|
||||
if(iVar1 <= 0xB400)
|
||||
if(xPixelPos <= 0xB400)
|
||||
{
|
||||
// 0 - 0xB400
|
||||
sub_804539C(param_1, 0, 0xfffffe00);
|
||||
IncreaseEntityPixelPos(entity, 0, 0xfffffe00);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 0xB401 - 0xE3FF
|
||||
sub_804539C(param_1, 0xfffffe00, 0);
|
||||
IncreaseEntityPixelPos(entity, 0xfffffe00, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(iVar1 < 0xFC00)
|
||||
if(xPixelPos < 0xFC00)
|
||||
{
|
||||
sub_804539C(param_1, 0, 0xfffffe00);
|
||||
IncreaseEntityPixelPos(entity, 0, 0xfffffe00);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(iVar1 <= 0x11400)
|
||||
if(xPixelPos <= 0x11400)
|
||||
{
|
||||
sub_804539C(param_1, 0x200, 0);
|
||||
IncreaseEntityPixelPos(entity, 0x200, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804539C(param_1, 0, 0xfffffe00);
|
||||
IncreaseEntityPixelPos(entity, 0, 0xfffffe00);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5000,7 +4999,7 @@ void MedichamRescueDialogue(void)
|
|||
sub_806CDD4(MedichamEntity, 0, DIRECTION_SOUTH);
|
||||
for(counter = 0x17; counter >= 0; counter--)
|
||||
{
|
||||
sub_804539C(MedichamEntity, 0, 0x80 << 1);
|
||||
IncreaseEntityPixelPos(MedichamEntity, 0, 0x80 << 1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_806CE68(MedichamEntity, DIRECTION_SOUTH);
|
||||
|
|
@ -5090,7 +5089,7 @@ void SmeargleRescueDialogue(void)
|
|||
sub_806CDD4(SmeargleEntity, 0, DIRECTION_SOUTH);
|
||||
for(counter = 0x17; counter >= 0; counter--)
|
||||
{
|
||||
sub_804539C(SmeargleEntity, 0, 0x80 << 1);
|
||||
IncreaseEntityPixelPos(SmeargleEntity, 0, 0x80 << 1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_806CE68(SmeargleEntity, DIRECTION_SOUTH);
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ extern void sub_806CDD4(struct Entity *, u32, u32);
|
|||
extern bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos);
|
||||
extern u8 sub_8044B28(void);
|
||||
extern u8 sub_803F428(struct Position *pos);
|
||||
extern void sub_804539C(struct Entity *, u32, u32);
|
||||
extern void IncreaseEntityPixelPos(struct Entity *, u32, u32);
|
||||
extern void sub_803E46C(u32);
|
||||
bool8 sub_80571F0(struct Entity * pokemon, struct Move *move);
|
||||
extern void sub_807EC28(u32);
|
||||
|
|
@ -1132,9 +1132,9 @@ bool8 sub_805A85C(struct Entity * pokemon, struct Entity * target, struct Move *
|
|||
int y;
|
||||
int counter;
|
||||
struct Position *r9;
|
||||
struct Position sp_0x18;
|
||||
struct Position pos1;
|
||||
struct Move stackMove;
|
||||
struct Position32 sp_0x28;
|
||||
struct Position32 pos2;
|
||||
struct Tile *tile;
|
||||
struct Entity *entity;
|
||||
s32 temp;
|
||||
|
|
@ -1142,7 +1142,7 @@ bool8 sub_805A85C(struct Entity * pokemon, struct Entity * target, struct Move *
|
|||
u8 check;
|
||||
|
||||
|
||||
sp_0x18 = target->pos;
|
||||
pos1 = target->pos;
|
||||
sub_806CDD4(target,10,8);
|
||||
|
||||
for(counter = 0; counter < 0x28; counter++)
|
||||
|
|
@ -1152,9 +1152,9 @@ bool8 sub_805A85C(struct Entity * pokemon, struct Entity * target, struct Move *
|
|||
x--;
|
||||
y--;
|
||||
if ((x != 0) || (y != 0)) {
|
||||
sp_0x18.x = target->pos.x + x;
|
||||
sp_0x18.y = target->pos.y + y;
|
||||
if (sub_80705F0(target,&sp_0x18) == 0) goto _0805A8C2;
|
||||
pos1.x = target->pos.x + x;
|
||||
pos1.y = target->pos.y + y;
|
||||
if (sub_80705F0(target,&pos1) == 0) goto _0805A8C2;
|
||||
}
|
||||
}
|
||||
_0805A8C2:
|
||||
|
|
@ -1162,23 +1162,23 @@ _0805A8C2:
|
|||
sub_80522F4(pokemon,target,*gUnknown_80FEBDC);
|
||||
return FALSE;
|
||||
}
|
||||
temp = sp_0x18.x * 0x1800;
|
||||
temp = pos1.x * 0x1800;
|
||||
temp += (0xC00);
|
||||
sp_0x28.x = (temp - target->pixelPos.x) / 0xc;
|
||||
pos2.x = (temp - target->pixelPos.x) / 0xc;
|
||||
|
||||
temp2 = sp_0x18.y * 0x1800;
|
||||
temp2 = pos1.y * 0x1800;
|
||||
temp2 += (0x80 << 5);
|
||||
sp_0x28.y = ((temp2 - target->pixelPos.y) / 0xc);
|
||||
pos2.y = ((temp2 - target->pixelPos.y) / 0xc);
|
||||
|
||||
|
||||
if (((check = sub_803F428(&target->pos), r9 = &target->pos, check != 0)) || (sub_803F428(&sp_0x18) != 0)) {
|
||||
if (((check = sub_803F428(&target->pos), r9 = &target->pos, check != 0)) || (sub_803F428(&pos1) != 0)) {
|
||||
for(counter = 0; counter < 0xC; counter++)
|
||||
{
|
||||
sub_804539C(target,sp_0x28.x,sp_0x28.y);
|
||||
IncreaseEntityPixelPos(target,pos2.x,pos2.y);
|
||||
sub_803E46C(0x2c);
|
||||
}
|
||||
}
|
||||
tile = GetTileSafe(sp_0x18.x,sp_0x18.y);
|
||||
tile = GetTileSafe(pos1.x,pos1.y);
|
||||
entity = tile->monster;
|
||||
if (entity != NULL) {
|
||||
if (GetEntityType(entity) == ENTITY_MONSTER) {
|
||||
|
|
@ -1194,10 +1194,10 @@ _0805A8C2:
|
|||
else {
|
||||
_0805A9FE:
|
||||
if (EntityExists(target)) {
|
||||
if ((sub_803F428(r9) != 0) || (sub_803F428(&sp_0x18) != 0)) {
|
||||
if ((sub_803F428(r9) != 0) || (sub_803F428(&pos1) != 0)) {
|
||||
for(counter = 0; counter < 0xC; counter++)
|
||||
{
|
||||
sub_804539C(target, -sp_0x28.x,-sp_0x28.y);
|
||||
IncreaseEntityPixelPos(target, -pos2.x,-pos2.y);
|
||||
sub_803E46C(0x2c);
|
||||
}
|
||||
}
|
||||
|
|
@ -1207,7 +1207,7 @@ _0805A9FE:
|
|||
}
|
||||
else
|
||||
{
|
||||
sub_80694C0(target,sp_0x18.x,sp_0x18.y,0);
|
||||
sub_80694C0(target,pos1.x,pos1.y,0);
|
||||
_0805AA5E:
|
||||
if (EntityExists(target)) {
|
||||
#ifndef NOMATCHING
|
||||
|
|
|
|||
|
|
@ -41,10 +41,10 @@ extern s32 GetCameraYPos(void);
|
|||
extern void sub_803F878(u32, u32);
|
||||
extern void sub_8086384(struct Entity *entity);
|
||||
extern void sub_8085930(u32);
|
||||
extern void sub_804539C(struct Entity *, u32, u32);
|
||||
extern void IncreaseEntityPixelPos(struct Entity *, u32, u32);
|
||||
extern void sub_806CE68(struct Entity *, u32);
|
||||
extern void sub_806CDD4(struct Entity *, u8, u32);
|
||||
extern void sub_804535C(struct Entity *, u32 *);
|
||||
extern void sub_804535C(struct Entity *, struct Position32 *);
|
||||
extern void sub_8086A54(struct Entity *);
|
||||
extern void sub_8086A3C(struct Entity *);
|
||||
extern void PlaySoundEffect(u32);
|
||||
|
|
@ -58,22 +58,22 @@ void SpriteShockEffect(struct Entity *entity)
|
|||
|
||||
void sub_80862DC(struct Entity *entity)
|
||||
{
|
||||
u32 array[2];
|
||||
array[0] = entity->pixelPos.x;
|
||||
array[1] = entity->pixelPos.y + (0xE0 << 6);
|
||||
struct Position32 pos;
|
||||
pos.x = entity->pixelPos.x;
|
||||
pos.y = entity->pixelPos.y + (0xE0 << 6);
|
||||
|
||||
sub_804535C(entity, array);
|
||||
sub_804535C(entity, &pos);
|
||||
sub_806CDD4(entity, 0, DIRECTION_NORTH);
|
||||
sub_8086A54(entity);
|
||||
}
|
||||
|
||||
void sub_8086310(struct Entity *entity)
|
||||
{
|
||||
u32 array[2];
|
||||
array[0] = entity->pixelPos.x;
|
||||
array[1] = entity->pixelPos.y + (0x90 << 8);
|
||||
struct Position32 pos;
|
||||
pos.x = entity->pixelPos.x;
|
||||
pos.y = entity->pixelPos.y + (0x90 << 8);
|
||||
|
||||
sub_804535C(entity, array);
|
||||
sub_804535C(entity, &pos);
|
||||
sub_806CE68(entity, DIRECTION_SOUTH);
|
||||
sub_8086A3C(entity);
|
||||
entity->isVisible = 0;
|
||||
|
|
@ -81,22 +81,22 @@ void sub_8086310(struct Entity *entity)
|
|||
|
||||
void sub_8086348(struct Entity *entity)
|
||||
{
|
||||
u32 array[2];
|
||||
array[0] = entity->pixelPos.x + (0xF0 << 7);
|
||||
array[1] = entity->pixelPos.y + 0xffffe000;
|
||||
struct Position32 pos;
|
||||
pos.x = entity->pixelPos.x + (0xF0 << 7);
|
||||
pos.y = entity->pixelPos.y + 0xffffe000;
|
||||
|
||||
sub_804535C(entity, array);
|
||||
sub_804535C(entity, &pos);
|
||||
sub_806CDD4(entity, 0, DIRECTION_WEST);
|
||||
sub_8086A54(entity);
|
||||
}
|
||||
|
||||
void sub_8086384(struct Entity *entity)
|
||||
{
|
||||
u32 array[2];
|
||||
array[0] = entity->pixelPos.x + (0xF0 << 7);
|
||||
array[1] = entity->pixelPos.y;
|
||||
struct Position32 pos;
|
||||
pos.x = entity->pixelPos.x + (0xF0 << 7);
|
||||
pos.y = entity->pixelPos.y;
|
||||
|
||||
sub_804535C(entity, array);
|
||||
sub_804535C(entity, &pos);
|
||||
sub_806CDD4(entity, 0, DIRECTION_WEST);
|
||||
sub_8086A54(entity);
|
||||
}
|
||||
|
|
@ -133,17 +133,17 @@ void sub_8086404(struct Entity *entity)
|
|||
|
||||
void sub_8086410(struct Entity *entity)
|
||||
{
|
||||
sub_804539C(entity, 0, 0xffffff00);
|
||||
IncreaseEntityPixelPos(entity, 0, 0xffffff00);
|
||||
}
|
||||
|
||||
void sub_8086424(struct Entity *entity)
|
||||
{
|
||||
sub_804539C(entity, 0, 0x80 << 1);
|
||||
IncreaseEntityPixelPos(entity, 0, 0x80 << 1);
|
||||
}
|
||||
|
||||
void sub_8086434(struct Entity *entity)
|
||||
{
|
||||
sub_804539C(entity, 0xffffff00, 0);
|
||||
IncreaseEntityPixelPos(entity, 0xffffff00, 0);
|
||||
}
|
||||
|
||||
void sub_8086448(void)
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ struct unkStruct_203B480 * sub_8095228(u8 index)
|
|||
return ptr;
|
||||
}
|
||||
|
||||
void sub_8095240(u8 index)
|
||||
void DeleteMailAtIndex(u8 index)
|
||||
{
|
||||
struct unkStruct_203B480 *unused;
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ void sub_80952C4(void)
|
|||
}
|
||||
}
|
||||
|
||||
bool8 sub_80952F0(u8 mailType, u32 param_2)
|
||||
bool8 HasMail(u8 mailType, u32 param_2)
|
||||
{
|
||||
struct unkStruct_203B480 *ptr;
|
||||
s32 index;
|
||||
|
|
@ -120,7 +120,7 @@ s32 CountMailType(u8 mailType)
|
|||
return total;
|
||||
}
|
||||
|
||||
u32 sub_8095350(void)
|
||||
u32 CountAllMail(void)
|
||||
{
|
||||
struct unkStruct_203B480 *ptr;
|
||||
u32 total = 0;
|
||||
|
|
@ -146,7 +146,8 @@ s32 sub_8095374(void)
|
|||
return retvar;
|
||||
}
|
||||
|
||||
s32 sub_809539C(u8 mailType, u32 param_2)
|
||||
/* With mailType and (additonal data??), search mail and return exact index */
|
||||
s32 GetMailIndex(u8 mailType, u32 param_2)
|
||||
{
|
||||
struct unkStruct_203B480 *ptr;
|
||||
s32 index;
|
||||
|
|
@ -158,7 +159,8 @@ s32 sub_809539C(u8 mailType, u32 param_2)
|
|||
return -1;
|
||||
}
|
||||
|
||||
s32 sub_80953D4(u8 mailType)
|
||||
/* Return the index of the first mail of the requested type */
|
||||
s32 GetFirstIndexofMailType(u8 mailType)
|
||||
{
|
||||
struct unkStruct_203B480 *ptr;
|
||||
s32 index;
|
||||
|
|
@ -205,7 +207,7 @@ void sub_809542C(struct unkStruct_809542C *param_1)
|
|||
PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct());
|
||||
CopyStringtoBuffer(gUnknown_203B480->playerName, buffer);
|
||||
gUnknown_203B480->unk24 = sub_8011C34();
|
||||
gUnknown_203B480->unk2C = GetRescuesAllowed(gUnknown_203B480->dungeon.id);
|
||||
gUnknown_203B480->rescuesAllowed = GetRescuesAllowed(gUnknown_203B480->dungeon.id);
|
||||
}
|
||||
|
||||
void sub_8095494(struct unkStruct_809542C *param_1, u8 index)
|
||||
|
|
@ -331,7 +333,7 @@ void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
|
|||
RestoreIntegerBits(a, &b->unk20.id, 0x8);
|
||||
RestoreIntegerBits(a, &b->unk24, 0x20);
|
||||
RestoreIntegerBits(a, &b->unk28, 0x20);
|
||||
RestoreIntegerBits(a, &b->unk2C, 0x8);
|
||||
RestoreIntegerBits(a, &b->rescuesAllowed, 0x8);
|
||||
|
||||
RestoreIntegerBits(a, &temp, 1);
|
||||
b->unk2D = temp & 1;
|
||||
|
|
@ -356,7 +358,7 @@ void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
|
|||
SaveIntegerBits(a, &b->unk20.id, 0x8);
|
||||
SaveIntegerBits(a, &b->unk24, 0x20);
|
||||
SaveIntegerBits(a, &b->unk28, 0x20);
|
||||
SaveIntegerBits(a, &b->unk2C, 0x8);
|
||||
SaveIntegerBits(a, &b->rescuesAllowed, 0x8);
|
||||
|
||||
if(b->unk2D != 0)
|
||||
puVar2 = &neg1;
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ bool8 sub_8096A08(u8 dungeon, s32 param_2)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8096A78(struct WonderMail *mail)
|
||||
bool8 AcceptJob(struct WonderMail *mail)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
|
|
@ -347,7 +347,7 @@ void sub_8096BD0(void)
|
|||
sub_8096D24();
|
||||
}
|
||||
|
||||
bool8 sub_8096C08(u8 *param_1)
|
||||
bool8 sub_8096C08(u8 *jobIndex)
|
||||
{
|
||||
s32 index;
|
||||
struct WonderMail *mail;
|
||||
|
|
@ -357,7 +357,7 @@ bool8 sub_8096C08(u8 *param_1)
|
|||
if(mail->mailType > 4 && mail->unk2 == 4)
|
||||
{
|
||||
|
||||
param_1[0] = index;
|
||||
*jobIndex = index;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ void sub_803AD88(void)
|
|||
break;
|
||||
case 3:
|
||||
sub_8023DA4();
|
||||
sub_8012D60(&gUnknown_203B3F8->unk10, gUnknown_203B3F8->unk90, 0, gUnknown_203B3F8->unkD0, gUnknown_203B3F8->unkC, 2);
|
||||
sub_8012D60(&gUnknown_203B3F8->unk10, gUnknown_203B3F8->unk90, 0, gUnknown_203B3F8->unkD0, gUnknown_203B3F8->menuAction, 2);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B3F8->unk70 = 3;
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@ struct unkStruct_203B3F0
|
|||
// size: 0x138
|
||||
u32 state;
|
||||
u8 id;
|
||||
u8 fill5[0x8 - 5];
|
||||
u32 unk8;
|
||||
u32 menuAction;
|
||||
struct MenuItem menuItems[8];
|
||||
struct MenuStruct unk4C;
|
||||
u32 unk9C;
|
||||
|
|
@ -192,7 +191,7 @@ void sub_803A5A0(void)
|
|||
case 2:
|
||||
sub_801CCD8();
|
||||
sub_803A6F0();
|
||||
sub_8012D60(&gUnknown_203B3F0->unk4C, gUnknown_203B3F0->menuItems, 0, 0, gUnknown_203B3F0->unk8, 2);
|
||||
sub_8012D60(&gUnknown_203B3F0->unk4C, gUnknown_203B3F0->menuItems, 0, 0, gUnknown_203B3F0->menuAction, 2);
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B3F0->unkAC = 3;
|
||||
|
|
@ -233,10 +232,10 @@ void sub_803A6F0(void)
|
|||
|
||||
gUnknown_203B3F0->menuItems[0].text = &gDebug_NumberText;
|
||||
gUnknown_203B3F0->menuItems[0].menuAction = 2;
|
||||
gUnknown_203B3F0->unk8 = 2;
|
||||
gUnknown_203B3F0->menuAction = 2;
|
||||
if (!IsNotMoneyOrUsedTMItem(gUnknown_203B3F0->id)) {
|
||||
gUnknown_203B3F0->menuItems[0].menuAction = -1;
|
||||
gUnknown_203B3F0->unk8 = 3;
|
||||
gUnknown_203B3F0->menuAction = 3;
|
||||
}
|
||||
preload = gUnknown_203B3F0;
|
||||
// this var gets loaded in between the sets... very dumb
|
||||
|
|
|
|||
|
|
@ -2,6 +2,16 @@
|
|||
#include "dungeon_util.h"
|
||||
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_global_data.h"
|
||||
|
||||
extern u8 gUnknown_202EE70[0x6];
|
||||
extern u8 gUnknown_202EE76[0x10];
|
||||
u32 EntityGetStatusSprites(struct Entity *entity);
|
||||
void UpdateDungeonPokemonSprite(int id, short species, int status, char visible);
|
||||
|
||||
void sub_806C51C(struct Entity *entity);
|
||||
extern void sub_80462AC(struct Entity * ,u32, u32, u32, u32);
|
||||
extern void sub_807FA9C();
|
||||
|
||||
const struct Position gAdjacentTileOffsets[] = {
|
||||
{0, 1},
|
||||
|
|
@ -62,3 +72,131 @@ struct Tile* GetTileAtEntitySafe(struct Entity *entity)
|
|||
{
|
||||
return GetTileSafe(entity->pos.x, entity->pos.y);
|
||||
}
|
||||
|
||||
void sub_804513C(void)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
gDungeon->teamPokemon[index] = &gDungeon->teamPokemonEntities[index];
|
||||
gDungeon->teamPokemon[index]->type = ENTITY_NOTHING;
|
||||
}
|
||||
|
||||
for(index = 0; index < 6; index++)
|
||||
{
|
||||
gUnknown_202EE70[index] = 0;
|
||||
}
|
||||
|
||||
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++)
|
||||
{
|
||||
gDungeon->wildPokemon[index] = &gDungeon->wildPokemonEntities[index];
|
||||
gDungeon->wildPokemon[index]->type = ENTITY_NOTHING;
|
||||
}
|
||||
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
gUnknown_202EE76[index] = 0;
|
||||
}
|
||||
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
gDungeon->allPokemon[index] = NULL;
|
||||
}
|
||||
|
||||
for (index = 0; index < 0x40; index++)
|
||||
{
|
||||
gDungeon->clientPokemon[index] = &gDungeon->clientPokemonEntities[index];
|
||||
gDungeon->clientPokemon[index]->type = ENTITY_NOTHING;
|
||||
}
|
||||
|
||||
for(index = 0; index < 0x40; index++)
|
||||
{
|
||||
gDungeon->unk1371C[index] = &gDungeon->unk15E2C[index];
|
||||
gDungeon->unk1371C[index]->type = ENTITY_NOTHING;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804522C(void) {
|
||||
s32 index;
|
||||
struct Entity *entity;
|
||||
struct Entity *entity2;
|
||||
struct EntityInfo *info;
|
||||
u32 statusSprites;
|
||||
bool8 crossEyed;
|
||||
|
||||
crossEyed = gDungeon->hallucinating;
|
||||
if (gDungeon->blinded)
|
||||
{
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
entity = gDungeon->allPokemon[index];
|
||||
if(EntityExists(entity))
|
||||
{
|
||||
if(entity == gDungeon->cameraTarget)
|
||||
{
|
||||
sub_806C51C(entity);
|
||||
}
|
||||
else
|
||||
{
|
||||
info = entity->info;
|
||||
statusSprites = EntityGetStatusSprites(entity);
|
||||
UpdateDungeonPokemonSprite(info->unk98, info->apparentID, statusSprites, FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity2 = gDungeon->teamPokemon[index];
|
||||
if(EntityExists(entity2))
|
||||
{
|
||||
sub_806C51C(entity2);
|
||||
}
|
||||
}
|
||||
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++)
|
||||
{
|
||||
entity2 = gDungeon->wildPokemon[index];
|
||||
if(EntityExists(entity2))
|
||||
{
|
||||
sub_806C51C(entity2);
|
||||
}
|
||||
}
|
||||
|
||||
for(index = 0; index < gDungeon->unk3904; index++)
|
||||
{
|
||||
sub_80462AC(gDungeon->clientPokemon[index], crossEyed, 1, 0xFF, 0);
|
||||
}
|
||||
|
||||
if(crossEyed)
|
||||
sub_807FA9C();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804535C(struct Entity *entity, struct Position32 *pos)
|
||||
{
|
||||
|
||||
if (pos != NULL) {
|
||||
(entity->pixelPos).x = pos->x;
|
||||
(entity->pixelPos).y = pos->y;
|
||||
}
|
||||
else {
|
||||
(entity->pixelPos).x = (entity->pos).x * 0x1800 + 0xc00;
|
||||
(entity->pixelPos).y = (entity->pos).y * 0x1800 + 0x1000;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8045394(struct Entity *entity, s32 x, s32 y)
|
||||
{
|
||||
entity->pixelPos.x = x;
|
||||
entity->pixelPos.y = y;
|
||||
}
|
||||
|
||||
void IncreaseEntityPixelPos(struct Entity *entity, s32 x, s32 y)
|
||||
{
|
||||
entity->pixelPos.x += x;
|
||||
entity->pixelPos.y += y;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ u32 CreateFelicityBank(s32 param_1)
|
|||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B204 = MemoryAlloc(sizeof(struct unkStruct_203B204),8);
|
||||
gUnknown_203B204->unk10 = 0;
|
||||
gUnknown_203B204->menuAction = 0;
|
||||
gUnknown_203B204->unk0 = param_1;
|
||||
CopyYellowMonsterNametoBuffer(gUnknown_202E5D8, MONSTER_PERSIAN);
|
||||
CopyYellowMonsterNametoBuffer(gUnknown_202E1C8, MONSTER_PERSIAN);
|
||||
|
|
|
|||
|
|
@ -29,11 +29,11 @@ void sub_8016B48(u8 action);
|
|||
|
||||
void sub_80169BC(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
s32 menuAction;
|
||||
if(sub_80144A4(&menuAction) == 0)
|
||||
{
|
||||
gUnknown_203B204->unk10 = temp;
|
||||
switch(temp)
|
||||
gUnknown_203B204->menuAction = menuAction;
|
||||
switch(menuAction)
|
||||
{
|
||||
case 2:
|
||||
UpdateFelicityBankState(7);
|
||||
|
|
|
|||
|
|
@ -127,9 +127,9 @@ u32 sub_8027074(void)
|
|||
{
|
||||
ResetSprites(0);
|
||||
gUnknown_203B2BC = MemoryAlloc(sizeof(struct unkStruct_203B2BC), 8);
|
||||
gUnknown_203B2BC->unk70 = 0;
|
||||
gUnknown_203B2BC->unk74 = 0;
|
||||
gUnknown_203B2BC->unk78 = 0;
|
||||
gUnknown_203B2BC->menuAction1 = 0;
|
||||
gUnknown_203B2BC->menuAction2 = 0;
|
||||
gUnknown_203B2BC->menuAction3 = 0;
|
||||
SetFriendAreaActionMenuState(FRIEND_AREA_ACTION_MENU_INIT);
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -247,7 +247,7 @@ void sub_8027274(void)
|
|||
case 3:
|
||||
sub_8027D40(3,&gUnknown_203B2BC->item2);
|
||||
sub_8023DA4();
|
||||
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk70,2);
|
||||
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction1,2);
|
||||
break;
|
||||
case 4:
|
||||
sub_8024458(gUnknown_203B2BC->targetPoke,2);
|
||||
|
|
@ -263,7 +263,7 @@ void sub_8027274(void)
|
|||
break;
|
||||
case 0xc:
|
||||
sub_801A9E0();
|
||||
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk74,2);
|
||||
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction2,2);
|
||||
break;
|
||||
case 0xd:
|
||||
HeldItemToSlot(&slot, &gUnknown_203B2BC->itemToGive);
|
||||
|
|
|
|||
|
|
@ -104,12 +104,12 @@ void sub_80278B4(void)
|
|||
struct PokemonStruct *playerStruct;
|
||||
struct PokemonStruct *pokeStruct1;
|
||||
struct PokemonStruct *pokeStruct2;
|
||||
int menuAction;
|
||||
u32 menuAction;
|
||||
|
||||
menuAction = 0;
|
||||
sub_8023A94(0);
|
||||
if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == 0) && (sub_8013114(&gUnknown_203B2BC->unk7C,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B2BC->unk70 = menuAction;
|
||||
gUnknown_203B2BC->menuAction1 = menuAction;
|
||||
}
|
||||
switch(menuAction) {
|
||||
case 6:
|
||||
|
|
@ -292,7 +292,7 @@ void sub_8027BD8(void)
|
|||
menuAction = 0;
|
||||
sub_801A6E8(0);
|
||||
if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == 0) && (sub_8013114(&gUnknown_203B2BC->unk7C,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B2BC->unk74 = menuAction;
|
||||
gUnknown_203B2BC->menuAction2 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ struct unkStruct_203B2B4
|
|||
// size: 0x178
|
||||
s32 unk0;
|
||||
s32 state;
|
||||
u32 unk8;
|
||||
u32 fallbackState;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
s16 species;
|
||||
|
|
@ -97,7 +97,7 @@ bool8 sub_80252F0(s32 param_1)
|
|||
return FALSE;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B2B4 = MemoryAlloc(0x178,8);
|
||||
gUnknown_203B2B4 = MemoryAlloc(sizeof(struct unkStruct_203B2B4),8);
|
||||
gUnknown_203B2B4->unk70 = 0;
|
||||
gUnknown_203B2B4->unk0 = param_1;
|
||||
gUnknown_203B2B4->unkC = sub_8002658(sub_80A5728());
|
||||
|
|
@ -180,7 +180,7 @@ void sub_8025434(s32 newState)
|
|||
|
||||
void sub_802544C(void)
|
||||
{
|
||||
s32 iVar5;
|
||||
s32 index;
|
||||
|
||||
sub_8006518(gUnknown_203B2B4->unk118);
|
||||
|
||||
|
|
@ -200,9 +200,9 @@ void sub_802544C(void)
|
|||
sub_8012CAC(&gUnknown_203B2B4->unk118[2],gUnknown_203B2B4->unkC8);
|
||||
break;
|
||||
default:
|
||||
for(iVar5 = 0; iVar5 < 4; iVar5++)
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B2B4->unk118[iVar5] = gUnknown_80DD148;
|
||||
gUnknown_203B2B4->unk118[index] = gUnknown_80DD148;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -219,7 +219,7 @@ void sub_8025518(void)
|
|||
switch(gUnknown_203B2B4->state)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B2B4->unk8 = 1;
|
||||
gUnknown_203B2B4->fallbackState = 1;
|
||||
sub_80141B4(gUnknown_80DD1A8,0,0,0x301);
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -262,19 +262,19 @@ void sub_8025518(void)
|
|||
sub_801B3C0(&item);
|
||||
break;
|
||||
case 8:
|
||||
gUnknown_203B2B4->unk8 = 2;
|
||||
gUnknown_203B2B4->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80DD1C8,0,0,0x101);
|
||||
break;
|
||||
case 9:
|
||||
gUnknown_203B2B4->unk8 = 2;
|
||||
gUnknown_203B2B4->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80DD1EC,0,0,0x101);
|
||||
break;
|
||||
case 10:
|
||||
gUnknown_203B2B4->unk8 = 2;
|
||||
gUnknown_203B2B4->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80DD240,0,0,0x101);
|
||||
break;
|
||||
case 7:
|
||||
gUnknown_203B2B4->unk8 = 1;
|
||||
gUnknown_203B2B4->fallbackState = 1;
|
||||
PlaySound(0xcf);
|
||||
sub_80141B4(gUnknown_80DD270,0,0,0x101);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
extern void SetFriendRescueMenuState(u32);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_802F2C0();
|
||||
extern void sub_8095240(u8);
|
||||
extern u32 sub_802F298();
|
||||
|
||||
extern char gUnknown_202E5D8[0x50];
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
#include "menu.h"
|
||||
#include "rescue_password_menu.h"
|
||||
#include "menu_input.h"
|
||||
#include "code_8094F88.h"
|
||||
|
||||
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
|
|
@ -21,7 +22,6 @@ extern u8 *gUnknown_203B484;
|
|||
extern void SetFriendRescueMenuState(u32);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_802F2C0();
|
||||
extern void sub_8095240(u8);
|
||||
extern u32 sub_802F298();
|
||||
|
||||
extern char gUnknown_202E5D8[0x50];
|
||||
|
|
@ -246,7 +246,6 @@ void sprintfStatic(char *buffer, const char *text, ...);
|
|||
extern void SetFriendRescueMenuState(u32);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_802F2C0();
|
||||
extern void sub_8095240(u8);
|
||||
extern u32 sub_802F298();
|
||||
|
||||
extern char gUnknown_202E5D8[0x50];
|
||||
|
|
@ -725,7 +724,7 @@ void sub_8033DBC(void)
|
|||
case PASSWORD_ENTRY_AOK_MAIL_SUCCESS:
|
||||
mail.mailType = 5;
|
||||
sub_80951FC(&mail);
|
||||
mail2 = sub_8095228(sub_809539C(1, mail.unk10.unk10));
|
||||
mail2 = sub_8095228(GetMailIndex(1, mail.unk10.unk10));
|
||||
mail2->mailType = 7;
|
||||
MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
|
||||
SetFriendRescueMenuState(0x40);
|
||||
|
|
@ -1593,7 +1592,7 @@ void sub_8034D74(void)
|
|||
SetFriendRescueMenuState(0x6B);
|
||||
break;
|
||||
case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS:
|
||||
mail2 = sub_8095228(sub_809539C(4, mail.unk10.unk10));
|
||||
mail2 = sub_8095228(GetMailIndex(4, mail.unk10.unk10));
|
||||
*mail2 = mail;
|
||||
mail2->mailType = 6;
|
||||
gUnknown_203B33C->unk420 = mail.unk10.unk10;
|
||||
|
|
@ -1894,7 +1893,7 @@ void sub_8035210(void)
|
|||
case 0xD:
|
||||
if(gUnknown_203B33C->unk528 == 0x13)
|
||||
{
|
||||
mail = sub_8095228(sub_80953D4(5));
|
||||
mail = sub_8095228(GetFirstIndexofMailType(5));
|
||||
if(mail->unk20.id != ITEM_NOTHING)
|
||||
SetFriendRescueMenuState(0x53);
|
||||
else
|
||||
|
|
@ -1933,7 +1932,7 @@ void nullsub_49(void)
|
|||
|
||||
void sub_80352A4(void)
|
||||
{
|
||||
u8 uVar1;
|
||||
u8 mailIndex;
|
||||
char *monName;
|
||||
|
||||
if ( sub_802F298() == 3) {
|
||||
|
|
@ -1941,8 +1940,8 @@ void sub_80352A4(void)
|
|||
CopyYellowMonsterNametoBuffer(gUnknown_202E5D8, MONSTER_PELIPPER);
|
||||
monName = GetMonSpecies(MONSTER_PELIPPER);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
uVar1 = sub_809539C(6, gUnknown_203B33C->unk420);
|
||||
sub_8095240(uVar1);
|
||||
mailIndex = GetMailIndex(6, gUnknown_203B33C->unk420);
|
||||
DeleteMailAtIndex(mailIndex);
|
||||
SetFriendRescueMenuState(0x70);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -666,8 +666,8 @@ void AddToTeamMoney(s32 amount)
|
|||
gTeamInventory_203B460->teamMoney += amount;
|
||||
|
||||
// clamp money
|
||||
clamped_money = 99999;
|
||||
if (gTeamInventory_203B460->teamMoney <= 99999) {
|
||||
clamped_money = MAX_TEAM_MONEY;
|
||||
if (gTeamInventory_203B460->teamMoney <= MAX_TEAM_MONEY) {
|
||||
if (gTeamInventory_203B460->teamMoney >= 0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ extern void sub_8017D24();
|
|||
extern void sub_8017DDC();
|
||||
extern void sub_8017928();
|
||||
extern void sub_8017A1C();
|
||||
extern void sub_8017DF8();
|
||||
extern void AdvanceToKangaskhanStorageFallbackState();
|
||||
void sub_8016E80();
|
||||
extern void sub_8016FF8();
|
||||
|
||||
|
|
@ -41,9 +41,9 @@ u32 DisplayKangaskhanDialogueSprite(s32 param_1)
|
|||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B208 = MemoryAlloc(sizeof(struct unkStruct_203B208),8);
|
||||
gUnknown_203B208->unk18 = 0;
|
||||
gUnknown_203B208->unk1C = 0;
|
||||
gUnknown_203B208->unk20 = 0;
|
||||
gUnknown_203B208->menuAction1 = 0;
|
||||
gUnknown_203B208->menuAction2 = 0;
|
||||
gUnknown_203B208->menuAction3 = 0;
|
||||
gUnknown_203B208->unk0 = param_1;
|
||||
CopyYellowMonsterNametoBuffer(gUnknown_202E5D8, MONSTER_KANGASKHAN);
|
||||
CopyYellowMonsterNametoBuffer(gUnknown_202E1C8, MONSTER_KANGASKHAN);
|
||||
|
|
@ -63,15 +63,15 @@ u32 DisplayKangaskhanDialogueSprite(s32 param_1)
|
|||
gUnknown_203B208->unkE6 = 0;
|
||||
gUnknown_203B208->unkE0 = 2;
|
||||
gUnknown_203B208->unkE2 = 8;
|
||||
UpdateKangaskhanStorageState(0);
|
||||
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_INIT);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_8016D54(void)
|
||||
{
|
||||
switch(gUnknown_203B208->currState) {
|
||||
case 0:
|
||||
case 1:
|
||||
case KANGASKHAN_STORAGE_INIT:
|
||||
case KANGASKHAN_STORAGE_MAIN_MENU:
|
||||
sub_8017828();
|
||||
break;
|
||||
case 0xd:
|
||||
|
|
@ -109,10 +109,10 @@ u32 sub_8016D54(void)
|
|||
case 0x1c:
|
||||
sub_8017A1C();
|
||||
break;
|
||||
case 4:
|
||||
case KANGASKHAN_STORAGE_EXIT:
|
||||
return 3;
|
||||
default:
|
||||
sub_8017DF8();
|
||||
AdvanceToKangaskhanStorageFallbackState();
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -103,35 +103,30 @@ void sub_8017828(void)
|
|||
|
||||
if (sub_80144A4(&menuAction) == 0) {
|
||||
if (menuAction != 1) {
|
||||
gUnknown_203B208->unk18 = menuAction;
|
||||
gUnknown_203B208->menuAction1 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
case 2:
|
||||
if (GetNumberOfFilledInventorySlots() == 0) {
|
||||
UpdateKangaskhanStorageState(5);
|
||||
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_NO_INV_ITEMS);
|
||||
}
|
||||
else if (sub_801CF50(0) != 0) {
|
||||
UpdateKangaskhanStorageState(8);
|
||||
}
|
||||
else {
|
||||
if (sub_801CF50(0) != 0) {
|
||||
UpdateKangaskhanStorageState(8);
|
||||
}
|
||||
else {
|
||||
UpdateKangaskhanStorageState(0xb);
|
||||
}
|
||||
UpdateKangaskhanStorageState(0xb);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sub_801CF14(1) != 0) {
|
||||
UpdateKangaskhanStorageState(7);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) {
|
||||
UpdateKangaskhanStorageState(6);
|
||||
}
|
||||
else {
|
||||
UpdateKangaskhanStorageState(0x14);
|
||||
}
|
||||
else if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) {
|
||||
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_TOO_MANY_ITEMS);
|
||||
}
|
||||
else {
|
||||
UpdateKangaskhanStorageState(0x14);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
|
|
@ -152,8 +147,8 @@ void sub_80178D0(void)
|
|||
switch(menuAction)
|
||||
{
|
||||
case 4:
|
||||
MoveToStorage(&gUnknown_203B208->unkC);
|
||||
ShiftItemsDownFrom(gUnknown_203B208->unk10);
|
||||
MoveToStorage(&gUnknown_203B208->storedItem);
|
||||
ShiftItemsDownFrom(gUnknown_203B208->itemIndex);
|
||||
FillInventoryGaps();
|
||||
UpdateKangaskhanStorageState(0x13);
|
||||
break;
|
||||
|
|
@ -174,9 +169,9 @@ void sub_8017928(void)
|
|||
switch(menuAction)
|
||||
{
|
||||
case 4:
|
||||
gTeamInventory_203B460->teamStorage[gUnknown_203B208->unkC.id] -= gUnknown_203B208->unkC.quantity;
|
||||
item.id = gUnknown_203B208->unkC.id;
|
||||
item.quantity = gUnknown_203B208->unkC.quantity;
|
||||
gTeamInventory_203B460->teamStorage[gUnknown_203B208->storedItem.id] -= gUnknown_203B208->storedItem.quantity;
|
||||
item.id = gUnknown_203B208->storedItem.id;
|
||||
item.quantity = gUnknown_203B208->storedItem.quantity;
|
||||
AddHeldItemToInventory(&item);
|
||||
UpdateKangaskhanStorageState(0x1d);
|
||||
break;
|
||||
|
|
@ -197,19 +192,18 @@ void sub_80179A8(void)
|
|||
switch(menuAction)
|
||||
{
|
||||
case 4:
|
||||
for(index = 0; index < INVENTORY_SIZE; index++)
|
||||
{
|
||||
if (sub_801AED0(index) != 0) {
|
||||
MoveToStorage(&gTeamInventory_203B460->teamItems[index]);
|
||||
gTeamInventory_203B460->teamItems[index].id = 0;
|
||||
gTeamInventory_203B460->teamItems[index].flags = 0;
|
||||
for(index = 0; index < INVENTORY_SIZE; index++)
|
||||
{
|
||||
if (sub_801AED0(index) != 0) {
|
||||
MoveToStorage(&gTeamInventory_203B460->teamItems[index]);
|
||||
gTeamInventory_203B460->teamItems[index].id = 0;
|
||||
gTeamInventory_203B460->teamItems[index].flags = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
FillInventoryGaps();
|
||||
sub_801AE84();
|
||||
UpdateKangaskhanStorageState(0x13);
|
||||
break;
|
||||
|
||||
FillInventoryGaps();
|
||||
sub_801AE84();
|
||||
UpdateKangaskhanStorageState(0x13);
|
||||
break;
|
||||
case 1:
|
||||
case 5:
|
||||
UpdateKangaskhanStorageState(0xe);
|
||||
|
|
@ -275,19 +269,19 @@ void sub_8017AF8(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B208->unk10 = sub_801A8AC();
|
||||
gUnknown_203B208->unkC = gTeamInventory_203B460->teamItems[gUnknown_203B208->unk10];
|
||||
gUnknown_203B208->itemIndex = sub_801A8AC();
|
||||
gUnknown_203B208->storedItem = gTeamInventory_203B460->teamItems[gUnknown_203B208->itemIndex];
|
||||
UpdateKangaskhanStorageState(0xF);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B208->unk10 = sub_801A8AC();
|
||||
gUnknown_203B208->unkC = gTeamInventory_203B460->teamItems[gUnknown_203B208->unk10];
|
||||
gUnknown_203B208->itemIndex = sub_801A8AC();
|
||||
gUnknown_203B208->storedItem = gTeamInventory_203B460->teamItems[gUnknown_203B208->itemIndex];
|
||||
UpdateKangaskhanStorageState(0x10);
|
||||
break;
|
||||
case 2:
|
||||
sub_801A928();
|
||||
UpdateKangaskhanStorageState(1);
|
||||
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -303,20 +297,20 @@ void sub_8017B88(void)
|
|||
else
|
||||
{
|
||||
gUnknown_203B208->id = sub_801CB24();
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B208->unkC, gUnknown_203B208->id, 0);
|
||||
gUnknown_203B208->unkC.quantity = 1;
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B208->storedItem, gUnknown_203B208->id, 0);
|
||||
gUnknown_203B208->storedItem.quantity = 1;
|
||||
UpdateKangaskhanStorageState(0x19);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B208->id = sub_801CB24();
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B208->unkC, gUnknown_203B208->id, 0);
|
||||
gUnknown_203B208->unkC.quantity = 1;
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B208->storedItem, gUnknown_203B208->id, 0);
|
||||
gUnknown_203B208->storedItem.quantity = 1;
|
||||
UpdateKangaskhanStorageState(0x1A);
|
||||
break;
|
||||
case 2:
|
||||
sub_801CBB8();
|
||||
UpdateKangaskhanStorageState(1);
|
||||
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_MAIN_MENU);
|
||||
break;
|
||||
case 1:
|
||||
sub_801AD34(0);
|
||||
|
|
@ -334,7 +328,7 @@ void sub_8017C28(void)
|
|||
sub_8017598();
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B208->unkC.quantity = gUnknown_203B208->unkA8;
|
||||
gUnknown_203B208->storedItem.quantity = gUnknown_203B208->unkA8;
|
||||
UpdateKangaskhanStorageState(0x1B);
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -353,16 +347,16 @@ void sub_8017C7C(void)
|
|||
sub_801A6E8(0);
|
||||
if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) {
|
||||
sub_8013114(&gUnknown_203B208->unk58, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B208->unk1C = menuAction;
|
||||
if(menuAction != 1) gUnknown_203B208->menuAction2 = menuAction;
|
||||
}
|
||||
|
||||
switch(menuAction)
|
||||
{
|
||||
case 2:
|
||||
sub_8099690(0);
|
||||
if(!IsNotMoneyOrUsedTMItem(gUnknown_203B208->unkC.id))
|
||||
UpdateKangaskhanStorageState(9);
|
||||
else if(!sub_801ADA0(gUnknown_203B208->unk10))
|
||||
if(!IsNotMoneyOrUsedTMItem(gUnknown_203B208->storedItem.id))
|
||||
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_IS_MONEY_USED_TM);
|
||||
else if(!sub_801ADA0(gUnknown_203B208->itemIndex))
|
||||
UpdateKangaskhanStorageState(0xA);
|
||||
else
|
||||
UpdateKangaskhanStorageState(0x11);
|
||||
|
|
@ -384,7 +378,7 @@ void sub_8017D24(void)
|
|||
sub_801CA08(0);
|
||||
if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) {
|
||||
sub_8013114(&gUnknown_203B208->unk58, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B208->unk20 = menuAction;
|
||||
if(menuAction != 1) gUnknown_203B208->menuAction3 = menuAction;
|
||||
}
|
||||
|
||||
switch(menuAction)
|
||||
|
|
@ -393,9 +387,9 @@ void sub_8017D24(void)
|
|||
if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
||||
{
|
||||
sub_801CBB8();
|
||||
UpdateKangaskhanStorageState(6);
|
||||
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_TOO_MANY_ITEMS);
|
||||
}
|
||||
else if(IsThrowableItem(gUnknown_203B208->unkC.id))
|
||||
else if(IsThrowableItem(gUnknown_203B208->storedItem.id))
|
||||
UpdateKangaskhanStorageState(0x18);
|
||||
else
|
||||
UpdateKangaskhanStorageState(0x1B);
|
||||
|
|
@ -441,12 +435,12 @@ void sub_8017DDC(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_8017DF8(void)
|
||||
void AdvanceToKangaskhanStorageFallbackState(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
UpdateKangaskhanStorageState(gUnknown_203B208->unk8);
|
||||
UpdateKangaskhanStorageState(gUnknown_203B208->fallbackState);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -455,9 +449,9 @@ u32 sub_8017E1C(void)
|
|||
ResetUnusedInputStruct();
|
||||
sub_800641C(NULL, 1, 1);
|
||||
gUnknown_203B20C = MemoryAlloc(sizeof(struct unkStruct_203B20C), 8);
|
||||
gUnknown_203B20C->unk14 = 0;
|
||||
gUnknown_203B20C->unk18 = 0;
|
||||
gUnknown_203B20C->unk1C = 0;
|
||||
gUnknown_203B20C->menuAction1 = 0;
|
||||
gUnknown_203B20C->menuAction2 = 0;
|
||||
gUnknown_203B20C->menuAction3 = 0;
|
||||
sub_8017F10(0);
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -572,7 +566,7 @@ void sub_8018100(void)
|
|||
switch(gUnknown_203B20C->state)
|
||||
{
|
||||
case 1:
|
||||
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk14, 2);
|
||||
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction1, 2);
|
||||
break;
|
||||
case 4:
|
||||
sub_801A5D8(3, 3, 0, 0xA);
|
||||
|
|
@ -583,10 +577,10 @@ void sub_8018100(void)
|
|||
case 6:
|
||||
sub_801A9E0();
|
||||
sub_801841C();
|
||||
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk18, 2);
|
||||
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction2, 2);
|
||||
break;
|
||||
case 7:
|
||||
sub_801B3C0(&gUnknown_203B20C->unk8);
|
||||
sub_801B3C0(&gUnknown_203B20C->item);
|
||||
break;
|
||||
case 10:
|
||||
sub_801C8C4(1, 3, 0, 0xA);
|
||||
|
|
@ -599,10 +593,10 @@ void sub_8018100(void)
|
|||
case 12:
|
||||
gUnknown_203B20C->unkD0 = 2;
|
||||
gUnknown_203B20C->unkC8 = 1;
|
||||
if(gTeamInventory_203B460->teamStorage[gUnknown_203B20C->unk8.id] > 99)
|
||||
if(gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] > 99)
|
||||
gUnknown_203B20C->unkCC = 99;
|
||||
else
|
||||
gUnknown_203B20C->unkCC = gTeamInventory_203B460->teamStorage[gUnknown_203B20C->unk8.id];
|
||||
gUnknown_203B20C->unkCC = gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id];
|
||||
gUnknown_203B20C->unkC4 = gUnknown_203B20C->unkCC;
|
||||
gUnknown_203B20C->unkD4 = 1;
|
||||
gUnknown_203B20C->unkD8 = &gUnknown_203B20C->unkF0[1];
|
||||
|
|
@ -615,10 +609,10 @@ void sub_8018100(void)
|
|||
sub_801CCD8();
|
||||
sub_801AD34(0);
|
||||
sub_80184D4();
|
||||
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk1C, 2);
|
||||
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction3, 2);
|
||||
break;
|
||||
case 14:
|
||||
sub_801B3C0(&gUnknown_203B20C->unk8);
|
||||
sub_801B3C0(&gUnknown_203B20C->item);
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ void sub_8018588(void)
|
|||
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
|
||||
{
|
||||
sub_8013114(&gUnknown_203B20C->unk70, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B20C->unk14 = menuAction;
|
||||
if(menuAction != 1) gUnknown_203B20C->menuAction1 = menuAction;
|
||||
}
|
||||
|
||||
switch(menuAction)
|
||||
|
|
@ -99,14 +99,14 @@ void sub_8018620(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B20C->unkC = sub_801A8AC();
|
||||
gUnknown_203B20C->unk8 = gTeamInventory_203B460->teamItems[gUnknown_203B20C->unkC];
|
||||
gUnknown_203B20C->itemIndex = sub_801A8AC();
|
||||
gUnknown_203B20C->item = gTeamInventory_203B460->teamItems[gUnknown_203B20C->itemIndex];
|
||||
sub_8017F10(6);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B20C->unkC = sub_801A8AC();
|
||||
gUnknown_203B20C->unk8 = gTeamInventory_203B460->teamItems[gUnknown_203B20C->unkC];
|
||||
gUnknown_203B20C->itemIndex = sub_801A8AC();
|
||||
gUnknown_203B20C->item = gTeamInventory_203B460->teamItems[gUnknown_203B20C->itemIndex];
|
||||
sub_8017F10(7);
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -161,15 +161,15 @@ void sub_80186F8(void)
|
|||
else
|
||||
{
|
||||
gUnknown_203B20C->id = sub_801CB24();
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B20C->unk8, gUnknown_203B20C->id, 0);
|
||||
gUnknown_203B20C->unk8.quantity = 1;
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B20C->item, gUnknown_203B20C->id, 0);
|
||||
gUnknown_203B20C->item.quantity = 1;
|
||||
sub_8017F10(0xD);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B20C->id = sub_801CB24();
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B20C->unk8, gUnknown_203B20C->id, 0);
|
||||
gUnknown_203B20C->unk8.quantity = 1;
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B20C->item, gUnknown_203B20C->id, 0);
|
||||
gUnknown_203B20C->item.quantity = 1;
|
||||
sub_8017F10(0xE);
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -192,10 +192,10 @@ void sub_8018854(void)
|
|||
switch(sub_8013BBC(&gUnknown_203B20C->unkC0))
|
||||
{
|
||||
case 3:
|
||||
gUnknown_203B20C->unk8.quantity = gUnknown_203B20C->unkC0;
|
||||
gTeamInventory_203B460->teamStorage[gUnknown_203B20C->unk8.id] -= gUnknown_203B20C->unk8.quantity;
|
||||
item.id = gUnknown_203B20C->unk8.id;
|
||||
item.quantity = gUnknown_203B20C->unk8.quantity;
|
||||
gUnknown_203B20C->item.quantity = gUnknown_203B20C->unkC0;
|
||||
gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] -= gUnknown_203B20C->item.quantity;
|
||||
item.id = gUnknown_203B20C->item.id;
|
||||
item.quantity = gUnknown_203B20C->item.quantity;
|
||||
AddHeldItemToInventory(&item);
|
||||
if(sub_801CF14(1) == 0)
|
||||
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
||||
|
|
@ -230,19 +230,19 @@ void sub_8018904(void)
|
|||
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
|
||||
{
|
||||
sub_8013114(&gUnknown_203B20C->unk70, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B20C->unk18 = menuAction;
|
||||
if(menuAction != 1) gUnknown_203B20C->menuAction2 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
case 2:
|
||||
if(IsNotMoneyOrUsedTMItem(gUnknown_203B20C->unk8.id))
|
||||
if(sub_801ADA0(gUnknown_203B20C->unkC) == 0)
|
||||
if(IsNotMoneyOrUsedTMItem(gUnknown_203B20C->item.id))
|
||||
if(sub_801ADA0(gUnknown_203B20C->itemIndex) == 0)
|
||||
error:
|
||||
sub_8012EA4(&gUnknown_203B20C->unk70, 1);
|
||||
else
|
||||
{
|
||||
MoveToStorage(&gUnknown_203B20C->unk8);
|
||||
ShiftItemsDownFrom(gUnknown_203B20C->unkC);
|
||||
MoveToStorage(&gUnknown_203B20C->item);
|
||||
ShiftItemsDownFrom(gUnknown_203B20C->itemIndex);
|
||||
FillInventoryGaps();
|
||||
if(GetNumberOfFilledInventorySlots() == 0)
|
||||
{
|
||||
|
|
@ -276,20 +276,20 @@ void sub_80189C8(void)
|
|||
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
|
||||
{
|
||||
sub_8013114(&gUnknown_203B20C->unk70, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B20C->unk1C = menuAction;
|
||||
if(menuAction != 1) gUnknown_203B20C->menuAction3 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
case 3:
|
||||
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
||||
sub_8012EA4(&gUnknown_203B20C->unk70, 1);
|
||||
else if(IsThrowableItem(gUnknown_203B20C->unk8.id))
|
||||
else if(IsThrowableItem(gUnknown_203B20C->item.id))
|
||||
sub_8017F10(0xC);
|
||||
else
|
||||
{
|
||||
gTeamInventory_203B460->teamStorage[gUnknown_203B20C->unk8.id] -= gUnknown_203B20C->unk8.quantity;
|
||||
item.id = gUnknown_203B20C->unk8.id;
|
||||
item.quantity = gUnknown_203B20C->unk8.quantity;
|
||||
gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] -= gUnknown_203B20C->item.quantity;
|
||||
item.id = gUnknown_203B20C->item.id;
|
||||
item.quantity = gUnknown_203B20C->item.quantity;
|
||||
AddHeldItemToInventory(&item);
|
||||
if(sub_801CF14(1) == 0)
|
||||
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
|||
struct OpenedFile *faceFile;
|
||||
|
||||
gUnknown_203B210 = MemoryAlloc(sizeof(struct unkStruct_203B210),8);
|
||||
gUnknown_203B210->unk28 = 0;
|
||||
gUnknown_203B210->unk2C = 0;
|
||||
gUnknown_203B210->unk30 = 0;
|
||||
gUnknown_203B210->menuAction1 = 0;
|
||||
gUnknown_203B210->menuAction2 = 0;
|
||||
gUnknown_203B210->menuAction3 = 0;
|
||||
gUnknown_203B210->unk0 = param_1;
|
||||
switch(param_1)
|
||||
{
|
||||
|
|
@ -79,21 +79,21 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
|||
}
|
||||
faceFile = GetDialogueSpriteDataPtr(MONSTER_KECLEON);
|
||||
gUnknown_203B210->faceFile = faceFile;
|
||||
gUnknown_203B210->unkD8 = faceFile->data;
|
||||
gUnknown_203B210->faceData = faceFile->data;
|
||||
gUnknown_203B210->unkE0 = 0;
|
||||
gUnknown_203B210->unkE1 = 0;
|
||||
gUnknown_203B210->unkE2 = 0;
|
||||
gUnknown_203B210->unkDC = 2;
|
||||
gUnknown_203B210->unkDE = 8;
|
||||
UpdateKecleonStoreState(0);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_INIT);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_8018C04(void)
|
||||
{
|
||||
switch(gUnknown_203B210->currState) {
|
||||
case 0:
|
||||
case 1:
|
||||
case KECLEON_STORE_INIT:
|
||||
case KECLEON_STORE_MAIN_MENU:
|
||||
sub_8019730();
|
||||
break;
|
||||
case 0x12:
|
||||
|
|
@ -125,7 +125,7 @@ u32 sub_8018C04(void)
|
|||
case 0x1d:
|
||||
sub_8019D4C();
|
||||
break;
|
||||
case 4:
|
||||
case KECLEON_STORE_EXIT:
|
||||
return 3;
|
||||
default:
|
||||
sub_8019D68();
|
||||
|
|
@ -153,7 +153,7 @@ void UpdateKecleonStoreState(u32 newState)
|
|||
|
||||
void sub_8018D30(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
s32 index;
|
||||
sub_8006518(gUnknown_203B210->unkE8);
|
||||
switch(gUnknown_203B210->currState)
|
||||
{
|
||||
|
|
@ -181,8 +181,8 @@ void sub_8018D30(void)
|
|||
case 0x17:
|
||||
case 0x18:
|
||||
case 0x19:
|
||||
for(iVar3 = 0; iVar3 < 4; iVar3++)
|
||||
gUnknown_203B210->unkE8[iVar3] = gUnknown_80DB840;
|
||||
for(index = 0; index < 4; index++)
|
||||
gUnknown_203B210->unkE8[index] = gUnknown_80DB840;
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
|
|
|
|||
|
|
@ -119,13 +119,13 @@ void sub_8019700(void)
|
|||
|
||||
preload = gUnknown_203B210;
|
||||
nullText = NULL;
|
||||
preload->unk34[0].text = *gUnknown_80D4920;
|
||||
preload->unk34[0].menuAction = 5;
|
||||
preload->menuItems[0].text = *gUnknown_80D4920;
|
||||
preload->menuItems[0].menuAction = 5;
|
||||
menuAction = 1;
|
||||
preload->unk34[1].text = *gUnknown_80D4928;
|
||||
preload->unk34[1].menuAction = 6;
|
||||
preload->unk34[2].text = nullText;
|
||||
preload->unk34[2].menuAction = menuAction;
|
||||
preload->menuItems[1].text = *gUnknown_80D4928;
|
||||
preload->menuItems[1].menuAction = 6;
|
||||
preload->menuItems[2].text = nullText;
|
||||
preload->menuItems[2].menuAction = menuAction;
|
||||
}
|
||||
|
||||
void sub_8019730(void)
|
||||
|
|
@ -135,32 +135,32 @@ void sub_8019730(void)
|
|||
if (sub_80144A4(&menuAction) != 0)
|
||||
return;
|
||||
if (menuAction != 1)
|
||||
gUnknown_203B210->unk28 = menuAction;
|
||||
gUnknown_203B210->menuAction1 = menuAction;
|
||||
switch(menuAction) {
|
||||
case 2:
|
||||
if (CountKecleonItems() == 0)
|
||||
UpdateKecleonStoreState(5);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_NO_STORE_ITEMS);
|
||||
else if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
||||
UpdateKecleonStoreState(0xA);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_TOO_MANY_ITEMS);
|
||||
else
|
||||
UpdateKecleonStoreState(0xF);
|
||||
break;
|
||||
case 3:
|
||||
if (GetNumberOfFilledInventorySlots() == 0)
|
||||
UpdateKecleonStoreState(9);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_NO_ITEMS_TO_SELL);
|
||||
else if (gUnknown_203B210->numInventoryItemToSell == 0)
|
||||
UpdateKecleonStoreState(8);
|
||||
else if (gTeamInventory_203B460->teamMoney < 99999)
|
||||
else if (gTeamInventory_203B460->teamMoney < MAX_TEAM_MONEY)
|
||||
UpdateKecleonStoreState(0x17);
|
||||
else
|
||||
UpdateKecleonStoreState(7);
|
||||
break;
|
||||
case 4:
|
||||
if (GetNumberOfFilledInventorySlots() == 0)
|
||||
UpdateKecleonStoreState(9);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_NO_ITEMS_TO_SELL);
|
||||
else if (gUnknown_203B210->numInventoryItemToSell == 0)
|
||||
UpdateKecleonStoreState(8);
|
||||
else if (gUnknown_203B210->inventoryItemSellPrice + gTeamInventory_203B460->teamMoney > 99999)
|
||||
else if (gUnknown_203B210->inventoryItemSellPrice + gTeamInventory_203B460->teamMoney > MAX_TEAM_MONEY)
|
||||
UpdateKecleonStoreState(7);
|
||||
else
|
||||
UpdateKecleonStoreState(0x1f);
|
||||
|
|
@ -213,7 +213,7 @@ void sub_80198E8(void)
|
|||
{
|
||||
case 5:
|
||||
AddToTeamMoney(gUnknown_203B210->itemSellPrice);
|
||||
ShiftItemsDownFrom(gUnknown_203B210->unk24);
|
||||
ShiftItemsDownFrom(gUnknown_203B210->soldItemInventoryIndex);
|
||||
PlaySound(0x14c);
|
||||
UpdateKecleonStoreState(0x19);
|
||||
break;
|
||||
|
|
@ -249,7 +249,7 @@ void sub_8019944(void)
|
|||
break;
|
||||
case 1:
|
||||
case 6:
|
||||
UpdateKecleonStoreState(1);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -257,17 +257,17 @@ void sub_8019944(void)
|
|||
|
||||
void sub_80199CC(void)
|
||||
{
|
||||
u32 uVar2;
|
||||
u32 menuAction;
|
||||
struct BulkItem *item;
|
||||
|
||||
if (gUnknown_203B210->isKecleonItemShop) {
|
||||
uVar2 = sub_8019EDC(1);
|
||||
menuAction = sub_8019EDC(1);
|
||||
}
|
||||
else {
|
||||
uVar2 = sub_801A2A8(1);
|
||||
menuAction = sub_801A2A8(1);
|
||||
}
|
||||
|
||||
switch(uVar2)
|
||||
switch(menuAction)
|
||||
{
|
||||
case 3:
|
||||
if (gUnknown_203B210->isKecleonItemShop) {
|
||||
|
|
@ -278,9 +278,9 @@ void sub_80199CC(void)
|
|||
gUnknown_203B210->wareShopItemIndex = sub_801A37C();
|
||||
item = GetKecleonWareItem(gUnknown_203B210->wareShopItemIndex);
|
||||
}
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B210->unk1C,item->id,0);
|
||||
gUnknown_203B210->unk1C.quantity =item->quantity;
|
||||
gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->unk1C);
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B210->soldItem,item->id,0);
|
||||
gUnknown_203B210->soldItem.quantity =item->quantity;
|
||||
gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->soldItem);
|
||||
UpdateKecleonStoreState(0x14);
|
||||
break;
|
||||
case 4:
|
||||
|
|
@ -292,9 +292,9 @@ void sub_80199CC(void)
|
|||
gUnknown_203B210->wareShopItemIndex = sub_801A37C();
|
||||
item = GetKecleonWareItem(gUnknown_203B210->wareShopItemIndex);
|
||||
}
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B210->unk1C,item->id,0);
|
||||
gUnknown_203B210->unk1C.quantity = item->quantity;
|
||||
gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->unk1C);
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B210->soldItem,item->id,0);
|
||||
gUnknown_203B210->soldItem.quantity = item->quantity;
|
||||
gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->soldItem);
|
||||
UpdateKecleonStoreState(0x15);
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -302,7 +302,7 @@ void sub_80199CC(void)
|
|||
sub_801A010();
|
||||
else
|
||||
sub_801A3DC();
|
||||
UpdateKecleonStoreState(1);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_MAIN_MENU);
|
||||
break;
|
||||
case 1:
|
||||
sub_801AD34(0);
|
||||
|
|
@ -318,21 +318,21 @@ void sub_8019B08(void)
|
|||
case 0:
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B210->unk24 = sub_801A8AC();
|
||||
gUnknown_203B210->unk1C = gTeamInventory_203B460->teamItems[gUnknown_203B210->unk24];
|
||||
gUnknown_203B210->itemSellPrice = GetStackSellPrice(&gUnknown_203B210->unk1C);
|
||||
gUnknown_203B210->soldItemInventoryIndex = sub_801A8AC();
|
||||
gUnknown_203B210->soldItem = gTeamInventory_203B460->teamItems[gUnknown_203B210->soldItemInventoryIndex];
|
||||
gUnknown_203B210->itemSellPrice = GetStackSellPrice(&gUnknown_203B210->soldItem);
|
||||
UpdateKecleonStoreState(0x1c);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B210->unk24 = sub_801A8AC();
|
||||
gUnknown_203B210->unk1C = gTeamInventory_203B460->teamItems[gUnknown_203B210->unk24];
|
||||
gUnknown_203B210->itemSellPrice = GetStackSellPrice(&gUnknown_203B210->unk1C);
|
||||
gUnknown_203B210->soldItemInventoryIndex = sub_801A8AC();
|
||||
gUnknown_203B210->soldItem = gTeamInventory_203B460->teamItems[gUnknown_203B210->soldItemInventoryIndex];
|
||||
gUnknown_203B210->itemSellPrice = GetStackSellPrice(&gUnknown_203B210->soldItem);
|
||||
sub_8099690(0);
|
||||
UpdateKecleonStoreState(0x1d);
|
||||
break;
|
||||
case 2:
|
||||
sub_801A928();
|
||||
UpdateKecleonStoreState(1);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_MAIN_MENU);
|
||||
break;
|
||||
case 1:
|
||||
default:
|
||||
|
|
@ -352,15 +352,15 @@ void sub_8019BBC(void)
|
|||
else {
|
||||
sub_801A2A8(0);
|
||||
}
|
||||
if ((sub_8012FD8(&gUnknown_203B210->unk84) == 0) && (sub_8013114(&gUnknown_203B210->unk84,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B210->unk30 = menuAction;
|
||||
if ((sub_8012FD8(&gUnknown_203B210->menu) == 0) && (sub_8013114(&gUnknown_203B210->menu,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B210->menuAction3 = menuAction;
|
||||
}
|
||||
switch(menuAction){
|
||||
case 2:
|
||||
if (gTeamInventory_203B460->teamMoney == 0)
|
||||
UpdateKecleonStoreState(0x6);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_NO_MONEY);
|
||||
else if (gUnknown_203B210->itemSellPrice > gTeamInventory_203B460->teamMoney)
|
||||
UpdateKecleonStoreState(0xC);
|
||||
UpdateKecleonStoreState(KECLEON_STORE_NOT_ENOUGH_MONEY);
|
||||
else
|
||||
UpdateKecleonStoreState(0x16);
|
||||
break;
|
||||
|
|
@ -379,15 +379,15 @@ void sub_8019C78(void)
|
|||
|
||||
menuAction = 0;
|
||||
sub_801A6E8(0);
|
||||
if ((sub_8012FD8(&gUnknown_203B210->unk84) == '\0') && (sub_8013114(&gUnknown_203B210->unk84,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B210->unk2C = menuAction;
|
||||
if ((sub_8012FD8(&gUnknown_203B210->menu) == '\0') && (sub_8013114(&gUnknown_203B210->menu,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B210->menuAction2 = menuAction;
|
||||
}
|
||||
switch(menuAction){
|
||||
case 3:
|
||||
sub_8099690(0);
|
||||
if (!CanSellItem(gUnknown_203B210->unk1C.id))
|
||||
UpdateKecleonStoreState(0xd);
|
||||
else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > 99999)
|
||||
if (!CanSellItem(gUnknown_203B210->soldItem.id))
|
||||
UpdateKecleonStoreState(KECLEON_STORE_CANT_SELL_ITEM);
|
||||
else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > MAX_TEAM_MONEY)
|
||||
UpdateKecleonStoreState(0xe);
|
||||
else
|
||||
UpdateKecleonStoreState(0x1e);
|
||||
|
|
@ -976,7 +976,7 @@ u32 sub_801A6E8(u8 param_1)
|
|||
break;
|
||||
case 4:
|
||||
item = gTeamInventory_203B460->teamItems[sub_801A8AC()];
|
||||
if (CanSellItem(item.id) && (GetStackSellPrice(&item) + gTeamInventory_203B460->teamMoney < 100000))
|
||||
if (CanSellItem(item.id) && (GetStackSellPrice(&item) + gTeamInventory_203B460->teamMoney <= MAX_TEAM_MONEY))
|
||||
PlayMenuSoundEffect(0);
|
||||
else
|
||||
PlayMenuSoundEffect(2);
|
||||
|
|
@ -1135,7 +1135,7 @@ void sub_801A9E0(void)
|
|||
stack2.unk8 = 1;
|
||||
item.flags = 3;
|
||||
sub_8090E14(buffer1,&item, &stack2);
|
||||
if (GetStackSellPrice(&item) + gTeamInventory_203B460->teamMoney > 99999){
|
||||
if (GetStackSellPrice(&item) + gTeamInventory_203B460->teamMoney > MAX_TEAM_MONEY){
|
||||
// very dumb but this matches...
|
||||
sprintfStatic((char *)&stack3,gUnknown_80DB9A0,buffer1);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),(u8 *)&stack3,gUnknown_203B224->unk88,0);
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ u32 UpdateLoadScreenMenu(void)
|
|||
nextMenu = 2; // MENU_???
|
||||
break;
|
||||
case MENU_AWAITING_RESCUE:
|
||||
sub_8095240(0);
|
||||
DeleteMailAtIndex(0);
|
||||
nextMenu = 4; // MENU_???
|
||||
break;
|
||||
case MENU_DELETE_SAVE_PROMPT:
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ extern void CreateMailAcceptedStatusBox(u32);
|
|||
extern struct WonderMail * GetMailboxSlotInfo(u32);
|
||||
extern void sub_803B35C(struct WonderMail *, u32 *);
|
||||
extern void sub_802DE84(u32 *);
|
||||
extern void sub_802C860(u32);
|
||||
extern void InitializeJobListMenu(u32);
|
||||
extern void sub_802B640(u32, u32, u32);
|
||||
extern void sub_802B7D0(u32);
|
||||
extern void sub_802B9FC(u8);
|
||||
|
|
@ -90,9 +90,9 @@ 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);
|
||||
gUnknown_203B304->menuAction1 = 0;
|
||||
gUnknown_203B304->menuAction2 = 0;
|
||||
SetMailboxState(INITIALIZE_MAILBOX);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -100,36 +100,36 @@ u32 sub_802DFD8(void)
|
|||
{
|
||||
switch(gUnknown_203B304->state)
|
||||
{
|
||||
case 0:
|
||||
SetMailboxState(1);
|
||||
case INITIALIZE_MAILBOX:
|
||||
SetMailboxState(MAIN_MAILBOX_MENU);
|
||||
break;
|
||||
case 1:
|
||||
case MAIN_MAILBOX_MENU:
|
||||
HandleMailboxMenu();
|
||||
break;
|
||||
case 2:
|
||||
nullsub_133();
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
case MAIL_MENU:
|
||||
case MAIL_MENU_1:
|
||||
sub_802E578();
|
||||
break;
|
||||
case 6:
|
||||
case MAIL_ACTION_MENU:
|
||||
HandleMailActionMenu();
|
||||
break;
|
||||
case 7:
|
||||
case MAIL_INFO:
|
||||
sub_802E73C();
|
||||
break;
|
||||
case 8:
|
||||
case JOB_LIST_MENU:
|
||||
sub_802E758();
|
||||
break;
|
||||
case 9:
|
||||
case 0xA:
|
||||
case PKMN_NEWS_MENU:
|
||||
case PKMN_NEWS_MENU_1:
|
||||
sub_802E774();
|
||||
break;
|
||||
case 0xB:
|
||||
case DISPLAY_SEL_PKMN_NEWS:
|
||||
sub_802E7D0();
|
||||
break;
|
||||
case 3:
|
||||
case MAILBOX_EXIT:
|
||||
default:
|
||||
return 3;
|
||||
}
|
||||
|
|
@ -154,20 +154,20 @@ void SetMailboxState(u32 newState)
|
|||
|
||||
void sub_802E0A0(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 index;
|
||||
sub_8006518(gUnknown_203B304->unk10C);
|
||||
switch(gUnknown_203B304->state)
|
||||
{
|
||||
case 1:
|
||||
for(iVar1 = 0; iVar1 < 4; iVar1++)
|
||||
case MAIN_MAILBOX_MENU:
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B304->unk10C[iVar1] = gUnknown_80E0284;
|
||||
gUnknown_203B304->unk10C[index] = gUnknown_80E0284;
|
||||
}
|
||||
CreateMailboxMenu();
|
||||
gUnknown_203B304->unk10C[2] = gUnknown_80E029C;
|
||||
sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
|
||||
break;
|
||||
case 6:
|
||||
case MAIL_ACTION_MENU:
|
||||
CreateMailActionMenu();
|
||||
gUnknown_203B304->unk10C[2] = gUnknown_80E02B4;
|
||||
sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
|
||||
|
|
@ -175,9 +175,9 @@ void sub_802E0A0(void)
|
|||
gUnknown_203B304->unk10C[3] = gUnknown_80E02CC;
|
||||
break;
|
||||
default:
|
||||
for(iVar1 = 0; iVar1 < 4; iVar1++)
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B304->unk10C[iVar1] = gUnknown_80E0284;
|
||||
gUnknown_203B304->unk10C[index] = gUnknown_80E0284;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -189,41 +189,41 @@ 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);
|
||||
case MAIN_MAILBOX_MENU:
|
||||
sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, gUnknown_203B304->unkFC, gUnknown_203B304->menuAction1, 2);
|
||||
break;
|
||||
case 4:
|
||||
case MAIL_MENU:
|
||||
sub_802BD14(0, 0, 4);
|
||||
break;
|
||||
case 5:
|
||||
case MAIL_MENU_1:
|
||||
sub_802BE94(1);
|
||||
break;
|
||||
case 6:
|
||||
case MAIL_ACTION_MENU:
|
||||
CreateMailMenu();
|
||||
CreateMailAcceptedStatusBox(3);
|
||||
sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, 0, gUnknown_203B304->unk68, 2);
|
||||
sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, 0, gUnknown_203B304->menuAction2, 2);
|
||||
break;
|
||||
case 7:
|
||||
case MAIL_INFO:
|
||||
sub_803B35C(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex), &gUnknown_203B304->unkC);
|
||||
gUnknown_203B304->unkC = 3;
|
||||
gUnknown_203B304->unk50 = 0;
|
||||
sub_802DE84(&gUnknown_203B304->unkC);
|
||||
break;
|
||||
case 8:
|
||||
sub_802C860(0);
|
||||
case JOB_LIST_MENU:
|
||||
InitializeJobListMenu(0);
|
||||
break;
|
||||
case 9:
|
||||
case PKMN_NEWS_MENU:
|
||||
sub_802B640(0, 0, 8);
|
||||
break;
|
||||
case 0xA:
|
||||
case PKMN_NEWS_MENU_1:
|
||||
sub_802B7D0(1);
|
||||
break;
|
||||
case 0xB:
|
||||
case DISPLAY_SEL_PKMN_NEWS:
|
||||
sub_802B9FC(gUnknown_203B304->mailIndex);
|
||||
break;
|
||||
case 0:
|
||||
case INITIALIZE_MAILBOX:
|
||||
case 2:
|
||||
case 3:
|
||||
case MAILBOX_EXIT:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ extern void sub_802DF24(void);
|
|||
extern struct WonderMail *GetMailboxSlotInfo(u8);
|
||||
extern u8 HasNoMailinMailbox(void);
|
||||
extern u32 sub_802BDEC(u32);
|
||||
extern void sub_8096A78(struct WonderMail *);
|
||||
extern void AcceptJob(struct WonderMail *);
|
||||
extern void sub_8096C80(void);
|
||||
extern void sub_8096D24(void);
|
||||
extern void ResetMailboxSlot(u8);
|
||||
|
|
@ -48,25 +48,27 @@ void HandleMailboxMenu(void)
|
|||
if(!sub_8012FD8(&gUnknown_203B304->unk6C))
|
||||
{
|
||||
sub_8013114(&gUnknown_203B304->unk6C, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B304->unk64 = menuAction;
|
||||
if(menuAction != 1) gUnknown_203B304->menuAction1 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
// Check Mail
|
||||
case 2:
|
||||
if(!HasNoMailinMailbox())
|
||||
SetMailboxState(4);
|
||||
SetMailboxState(MAIL_MENU);
|
||||
else
|
||||
sub_8012EA4(&gUnknown_203B304->unk6C, 1);
|
||||
break;
|
||||
// Job List
|
||||
case 3:
|
||||
if(!HasNoAcceptedJobs())
|
||||
SetMailboxState(8);
|
||||
SetMailboxState(JOB_LIST_MENU);
|
||||
else
|
||||
sub_8012EA4(&gUnknown_203B304->unk6C, 1);
|
||||
break;
|
||||
case 4:
|
||||
if(!HasNoPKMNNews())
|
||||
SetMailboxState(9);
|
||||
SetMailboxState(PKMN_NEWS_MENU);
|
||||
else
|
||||
sub_8012EA4(&gUnknown_203B304->unk6C, 1);
|
||||
break;
|
||||
|
|
@ -74,37 +76,37 @@ void HandleMailboxMenu(void)
|
|||
SetMailboxState(2);
|
||||
break;
|
||||
case 1:
|
||||
SetMailboxState(3);
|
||||
SetMailboxState(MAILBOX_EXIT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802E578(void)
|
||||
{
|
||||
struct WonderMail *return_var;
|
||||
struct WonderMail *mail;
|
||||
|
||||
switch(sub_802BDEC(1))
|
||||
{
|
||||
|
||||
case 3:
|
||||
gUnknown_203B304->mailboxIndex = sub_802BE74();
|
||||
SetMailboxState(6);
|
||||
SetMailboxState(MAIL_ACTION_MENU);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B304->mailboxIndex = sub_802BE74();
|
||||
return_var = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex);
|
||||
if(return_var->mailType == 1)
|
||||
mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex);
|
||||
if(mail->mailType == 1)
|
||||
{
|
||||
gUnknown_203B304->mailIndex = return_var->dungeon.floor;
|
||||
gUnknown_203B304->fallbackState = 5;
|
||||
SetMailboxState(0xB);
|
||||
gUnknown_203B304->mailIndex = mail->dungeon.floor;
|
||||
gUnknown_203B304->fallbackState = MAIL_MENU_1;
|
||||
SetMailboxState(DISPLAY_SEL_PKMN_NEWS);
|
||||
}
|
||||
else
|
||||
SetMailboxState(7);
|
||||
SetMailboxState(MAIL_INFO);
|
||||
break;
|
||||
case 2:
|
||||
sub_802BEDC();
|
||||
SetMailboxState(1);
|
||||
SetMailboxState(MAIN_MAILBOX_MENU);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
|
|
@ -115,14 +117,14 @@ void sub_802E578(void)
|
|||
void HandleMailActionMenu(void)
|
||||
{
|
||||
s32 menuAction = 0;
|
||||
struct WonderMail *return_var;
|
||||
struct WonderMail *mail;
|
||||
|
||||
|
||||
sub_802BDEC(0);
|
||||
if(!sub_8012FD8(&gUnknown_203B304->unk6C))
|
||||
{
|
||||
sub_8013114(&gUnknown_203B304->unk6C, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B304->unk68 = menuAction;
|
||||
if(menuAction != 1) gUnknown_203B304->menuAction2 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
|
|
@ -130,9 +132,11 @@ void HandleMailActionMenu(void)
|
|||
case 3:
|
||||
case 4:
|
||||
break;
|
||||
|
||||
// Accept
|
||||
case 5:
|
||||
PlaySound(0x133);
|
||||
sub_8096A78(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex));
|
||||
AcceptJob(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex));
|
||||
sub_8096C80();
|
||||
sub_8096D24();
|
||||
ResetMailboxSlot(gUnknown_203B304->mailboxIndex);
|
||||
|
|
@ -140,37 +144,43 @@ void HandleMailActionMenu(void)
|
|||
if(HasNoMailinMailbox())
|
||||
{
|
||||
sub_802BEDC();
|
||||
SetMailboxState(1);
|
||||
SetMailboxState(MAIN_MAILBOX_MENU);
|
||||
}
|
||||
else
|
||||
SetMailboxState(5);
|
||||
SetMailboxState(MAIL_MENU_1);
|
||||
break;
|
||||
|
||||
// Info
|
||||
case 8:
|
||||
SetMailboxState(7);
|
||||
SetMailboxState(MAIL_INFO);
|
||||
break;
|
||||
|
||||
// Store
|
||||
case 6:
|
||||
PlaySound(0x133);
|
||||
return_var = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex);
|
||||
ReceivePKMNNews(return_var->dungeon.floor);
|
||||
mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex);
|
||||
ReceivePKMNNews(mail->dungeon.floor);
|
||||
ResetMailboxSlot(gUnknown_203B304->mailboxIndex);
|
||||
sub_8096078();
|
||||
if(HasNoMailinMailbox())
|
||||
{
|
||||
sub_802BEDC();
|
||||
SetMailboxState(1);
|
||||
SetMailboxState(MAIN_MAILBOX_MENU);
|
||||
}
|
||||
else
|
||||
SetMailboxState(5);
|
||||
SetMailboxState(MAIL_MENU_1);
|
||||
break;
|
||||
|
||||
// Read
|
||||
case 7:
|
||||
PlayMenuSoundEffect(0);
|
||||
return_var = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex);
|
||||
gUnknown_203B304->mailIndex = return_var->dungeon.floor;
|
||||
gUnknown_203B304->fallbackState = 5;
|
||||
SetMailboxState(0xB);
|
||||
mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex);
|
||||
gUnknown_203B304->mailIndex = mail->dungeon.floor;
|
||||
gUnknown_203B304->fallbackState = MAIL_MENU_1;
|
||||
SetMailboxState(DISPLAY_SEL_PKMN_NEWS);
|
||||
break;
|
||||
case 1:
|
||||
SetMailboxState(5);
|
||||
SetMailboxState(MAIL_MENU_1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -182,7 +192,7 @@ void sub_802E73C(void)
|
|||
case 2:
|
||||
case 3:
|
||||
sub_802DF24();
|
||||
SetMailboxState(5);
|
||||
SetMailboxState(MAIL_MENU_1);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
|
|
@ -196,7 +206,7 @@ void sub_802E758(void)
|
|||
case 2:
|
||||
case 3:
|
||||
sub_802C8F4();
|
||||
SetMailboxState(1);
|
||||
SetMailboxState(MAIN_MAILBOX_MENU);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
|
|
@ -213,12 +223,12 @@ void sub_802E774(void)
|
|||
case 3:
|
||||
case 4:
|
||||
gUnknown_203B304->mailIndex = GetPokemonNewsIndex();
|
||||
gUnknown_203B304->fallbackState = 0xA;
|
||||
SetMailboxState(0xB);
|
||||
gUnknown_203B304->fallbackState = PKMN_NEWS_MENU_1;
|
||||
SetMailboxState(DISPLAY_SEL_PKMN_NEWS);
|
||||
break;
|
||||
case 2:
|
||||
sub_802B81C();
|
||||
SetMailboxState(1);
|
||||
SetMailboxState(MAIN_MAILBOX_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -460,7 +460,7 @@ void SetUpMenu(void)
|
|||
|
||||
s32 UpdateMenu(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 nextMenu1;
|
||||
s32 nextMenu;
|
||||
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
|
|
@ -475,37 +475,37 @@ s32 UpdateMenu(void)
|
|||
nextMenu = UpdateLoadScreenMenu();
|
||||
break;
|
||||
case MENU_TRADE_ITEMS:
|
||||
iVar1 = UpdateTradeItemsMenu();
|
||||
nextMenu1 = UpdateTradeItemsMenu();
|
||||
nextMenu = MENU_MAIN_SCREEN;
|
||||
if (iVar1 != 3) {
|
||||
if (nextMenu1 != 3) {
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
}
|
||||
break;
|
||||
case MENU_FRIEND_RESCUE:
|
||||
iVar1 = UpdateFriendRescueMenu();
|
||||
nextMenu1 = UpdateFriendRescueMenu();
|
||||
nextMenu = MENU_MAIN_SCREEN;
|
||||
if (iVar1 != 3) {
|
||||
if (nextMenu1 != 3) {
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
}
|
||||
break;
|
||||
case MENU_WONDER_MAIL:
|
||||
iVar1 = UpdateWonderMailMenu();
|
||||
nextMenu1 = UpdateWonderMailMenu();
|
||||
nextMenu = MENU_MAIN_SCREEN;
|
||||
if (iVar1 != 3) {
|
||||
if (nextMenu1 != 3) {
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
}
|
||||
break;
|
||||
case MENU_DUAL_SLOT:
|
||||
iVar1 = UpdateDualSlotMenu();
|
||||
nextMenu1 = UpdateDualSlotMenu();
|
||||
nextMenu = MENU_MAIN_SCREEN;
|
||||
if (iVar1 != 3) {
|
||||
if (nextMenu1 != 3) {
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
}
|
||||
break;
|
||||
case MENU_WIRELESS_COMMS:
|
||||
iVar1 = UpdateWirelessCommsMenu();
|
||||
nextMenu1 = UpdateWirelessCommsMenu();
|
||||
nextMenu = 5;
|
||||
if ((iVar1 != 3) && (nextMenu = MENU_NO_SCREEN_CHANGE, iVar1 == 2)) {
|
||||
if ((nextMenu1 != 3) && (nextMenu = MENU_NO_SCREEN_CHANGE, nextMenu1 == 2)) {
|
||||
nextMenu = MENU_MAIN_SCREEN;
|
||||
}
|
||||
break;
|
||||
|
|
@ -623,13 +623,13 @@ void sub_8035C1C(void)
|
|||
}
|
||||
|
||||
void
|
||||
SetMenuItems(struct MenuStruct *param_1, struct UnkTextStruct2 *unkData, s32 index, const struct UnkTextStruct2 *param_4, const struct MenuItem *menuItems, u8 param_6 ,u32 param_7, u32 unused_8)
|
||||
SetMenuItems(struct MenuStruct *param_1, struct UnkTextStruct2 *unkData, s32 index, const struct UnkTextStruct2 *param_4, const struct MenuItem *menuItems, u8 param_6 ,u32 menuAction, u32 unused_8)
|
||||
{
|
||||
unkData[index] = *param_4;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(unkData,1,1);
|
||||
if (param_6 != 0) {
|
||||
sub_8012D60(¶m_1[index],menuItems,0,0,param_7,index);
|
||||
sub_8012D60(¶m_1[index],menuItems,0,0,menuAction,index);
|
||||
}
|
||||
else {
|
||||
sub_8012E04(¶m_1[index],menuItems,0,0,0,index);
|
||||
|
|
@ -757,7 +757,7 @@ s32 sub_8035DB4(u32 currMenu)
|
|||
|
||||
void DrawMainMenu(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
s32 index;
|
||||
|
||||
if(gUnknown_203B34C == NULL)
|
||||
{
|
||||
|
|
@ -765,9 +765,9 @@ void DrawMainMenu(void)
|
|||
MemoryFill8((u8 *)gUnknown_203B34C, 0, sizeof(struct unkStruct_203B34C));
|
||||
}
|
||||
|
||||
for(iVar3 = 0; iVar3 < 4; iVar3++)
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B34C->unk144[iVar3] = gUnknown_80E59C8;
|
||||
gUnknown_203B34C->unk144[index] = gUnknown_80E59C8;
|
||||
}
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2)
|
|||
"\tbx r0");
|
||||
}
|
||||
|
||||
void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5,
|
||||
void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 menuAction,
|
||||
s32 index)
|
||||
{
|
||||
const u8 *textPtr;
|
||||
|
|
@ -214,7 +214,7 @@ void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32
|
|||
if(textPtr)
|
||||
{
|
||||
while (textPtr != 0) {
|
||||
if ((0 <= param_5) && (param_5 == menuItems->menuAction)) {
|
||||
if ((0 <= menuAction) && (menuAction == menuItems->menuAction)) {
|
||||
menuIndex = counter;
|
||||
}
|
||||
if (*menuItems->text == '*') {
|
||||
|
|
@ -237,7 +237,7 @@ void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32
|
|||
param_1->menuAction = -1;
|
||||
}
|
||||
|
||||
void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5,
|
||||
void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 menuAction,
|
||||
s32 index)
|
||||
{
|
||||
const u8 *textPtr;
|
||||
|
|
@ -253,7 +253,7 @@ void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32
|
|||
if (textPtr) {
|
||||
menuItemPtr = menuItems;
|
||||
while (textPtr != NULL) {
|
||||
if ((0 <= param_5) && (param_5 == menuItemPtr->menuAction)) {
|
||||
if ((0 <= menuAction) && (menuAction == menuItemPtr->menuAction)) {
|
||||
menuIndex = counter;
|
||||
}
|
||||
if (*menuItemPtr->text == '*') {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ struct unkStruct_203B25C
|
|||
u32 state;
|
||||
u32 chosenHintIndex;
|
||||
struct GameOptions newOptions;
|
||||
u32 unk18;
|
||||
u32 menuAction;
|
||||
struct MenuStruct unk1C;
|
||||
struct MenuItem menuItems[8];
|
||||
u16 unkAC[8];
|
||||
|
|
@ -383,7 +383,7 @@ void sub_801DED0(void)
|
|||
case 0:
|
||||
case 1:
|
||||
gUnknown_203B25C->unk1C.unk0 = gOthers_MenuOption;
|
||||
sub_8012D60(&gUnknown_203B25C->unk1C,gUnknown_203B25C->menuItems,0,gUnknown_203B25C->unkAC,gUnknown_203B25C->unk18,0);
|
||||
sub_8012D60(&gUnknown_203B25C->unk1C,gUnknown_203B25C->menuItems,0,gUnknown_203B25C->unkAC,gUnknown_203B25C->menuAction,0);
|
||||
break;
|
||||
case 3:
|
||||
sub_801E3F0(0);
|
||||
|
|
@ -454,7 +454,7 @@ void HandleOthersMenu(void)
|
|||
menuAction = 0;
|
||||
if (sub_8012FD8(&gUnknown_203B25C->unk1C) == '\0') {
|
||||
sub_8013114(&gUnknown_203B25C->unk1C,&menuAction);
|
||||
gUnknown_203B25C->unk18 = menuAction;
|
||||
gUnknown_203B25C->menuAction = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,27 +4,8 @@
|
|||
#include "menu.h"
|
||||
#include "input.h"
|
||||
#include "menu_input.h"
|
||||
#include "pelipper_board.h"
|
||||
|
||||
// Guessing based off of 203B304
|
||||
struct unkStruct_203B308
|
||||
{
|
||||
// size: 0xB6 << 1
|
||||
u32 state;
|
||||
u32 unk4;
|
||||
u8 jobIndex;
|
||||
u8 fill9[0xC - 9];
|
||||
u32 unkC;
|
||||
u8 fill10[0x50 - 0x10];
|
||||
u8 unk50;
|
||||
u8 fill51[0x64 - 0x51];
|
||||
u32 unk64;
|
||||
u32 unk68;
|
||||
struct MenuStruct unk6C;
|
||||
struct MenuItem unkBC[8];
|
||||
u16 unkFC[8];
|
||||
struct UnkTextStruct2 unk10C[4];
|
||||
};
|
||||
extern struct unkStruct_203B308 *gUnknown_203B308;
|
||||
extern void SetPelipperBoardState(u32);
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80E0330 =
|
||||
|
|
@ -86,31 +67,31 @@ extern void sub_802EC10(void);
|
|||
|
||||
extern void sub_802C10C(u32, u32, u32);
|
||||
extern void sub_802C28C(u32);
|
||||
extern void sub_802C39C(void);
|
||||
extern void DrawPelipperBoardJobMenu(void);
|
||||
extern void CreatePelipperAcceptedStatusBox(u32);
|
||||
extern struct WonderMail *GetPelipperBoardSlotInfo(u32);
|
||||
extern void sub_803B35C(struct WonderMail *, u32 *);
|
||||
extern void sub_802DE84(u32 *);
|
||||
extern void sub_802C860(u32);
|
||||
extern void InitializeJobListMenu(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);
|
||||
gPelipperBoard = MemoryAlloc(sizeof(struct unkStruct_203B308), 8);
|
||||
gPelipperBoard->menuAction1 = 0;
|
||||
gPelipperBoard->menuAction2 = 0;
|
||||
gPelipperBoard->unk4 = 0;
|
||||
SetPelipperBoardState(INITIALIZE_PELIPPER_BOARD);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802E890(void)
|
||||
{
|
||||
switch(gUnknown_203B308->state)
|
||||
switch(gPelipperBoard->state)
|
||||
{
|
||||
case 0:
|
||||
SetPelipperBoardState(1);
|
||||
case INITIALIZE_PELIPPER_BOARD:
|
||||
SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU);
|
||||
break;
|
||||
case 1:
|
||||
case MAIN_PELIPPER_BOARD_MENU:
|
||||
sub_802ECB4();
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -123,13 +104,13 @@ u32 sub_802E890(void)
|
|||
case 6:
|
||||
sub_802EDBC();
|
||||
break;
|
||||
case 7:
|
||||
case PELIPPER_JOB_INFO:
|
||||
sub_802EEA0();
|
||||
break;
|
||||
case 8:
|
||||
case PELIPPER_JOB_LIST_MENU:
|
||||
sub_802EEBC();
|
||||
break;
|
||||
case 3:
|
||||
case PELIPPER_BOARD_EXIT:
|
||||
default:
|
||||
return 3;
|
||||
}
|
||||
|
|
@ -138,64 +119,64 @@ u32 sub_802E890(void)
|
|||
|
||||
u32 sub_802E90C(void)
|
||||
{
|
||||
return gUnknown_203B308->unk4;
|
||||
return gPelipperBoard->unk4;
|
||||
}
|
||||
|
||||
void sub_802E918(void)
|
||||
{
|
||||
if(gUnknown_203B308 != NULL)
|
||||
if(gPelipperBoard != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B308);
|
||||
gUnknown_203B308 = NULL;
|
||||
MemoryFree(gPelipperBoard);
|
||||
gPelipperBoard = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void SetPelipperBoardState(u32 newState)
|
||||
{
|
||||
gUnknown_203B308->state = newState;
|
||||
gPelipperBoard->state = newState;
|
||||
sub_802E94C();
|
||||
sub_802EA58();
|
||||
}
|
||||
|
||||
void sub_802E94C(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
sub_8006518(gUnknown_203B308->unk10C);
|
||||
switch(gUnknown_203B308->state)
|
||||
s32 index;
|
||||
sub_8006518(gPelipperBoard->unk10C);
|
||||
switch(gPelipperBoard->state)
|
||||
{
|
||||
case 1:
|
||||
for(iVar1 = 0; iVar1 < 4; iVar1++)
|
||||
case MAIN_PELIPPER_BOARD_MENU:
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B308->unk10C[iVar1] = gUnknown_80E0330;
|
||||
gPelipperBoard->unk10C[index] = gUnknown_80E0330;
|
||||
}
|
||||
CreatePelipperBoardMenu();
|
||||
gUnknown_203B308->unk10C[2] = gUnknown_80E0348;
|
||||
sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC);
|
||||
gPelipperBoard->unk10C[2] = gUnknown_80E0348;
|
||||
sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->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].unkC = 6;
|
||||
gUnknown_203B308->unk10C[3] = gUnknown_80E0378;
|
||||
gPelipperBoard->unk10C[2] = gUnknown_80E0360;
|
||||
sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->unkBC);
|
||||
gPelipperBoard->unk10C[2].unkC = 6;
|
||||
gPelipperBoard->unk10C[3] = gUnknown_80E0378;
|
||||
break;
|
||||
default:
|
||||
for(iVar1 = 0; iVar1 < 4; iVar1++)
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B308->unk10C[iVar1] = gUnknown_80E0330;
|
||||
gPelipperBoard->unk10C[index] = gUnknown_80E0330;
|
||||
}
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B308->unk10C, 1, 1);
|
||||
sub_800641C(gPelipperBoard->unk10C, 1, 1);
|
||||
}
|
||||
|
||||
void sub_802EA58(void)
|
||||
{
|
||||
switch(gUnknown_203B308->state)
|
||||
switch(gPelipperBoard->state)
|
||||
{
|
||||
case 1:
|
||||
sub_8012D60(&gUnknown_203B308->unk6C, gUnknown_203B308->unkBC, 0, gUnknown_203B308->unkFC, gUnknown_203B308->unk64, 2);
|
||||
case MAIN_PELIPPER_BOARD_MENU:
|
||||
sub_8012D60(&gPelipperBoard->unk6C, gPelipperBoard->unkBC, 0, gPelipperBoard->unkFC, gPelipperBoard->menuAction1, 2);
|
||||
break;
|
||||
case 4:
|
||||
sub_802C10C(0, 0, 4);
|
||||
|
|
@ -204,22 +185,22 @@ void sub_802EA58(void)
|
|||
sub_802C28C(1);
|
||||
break;
|
||||
case 6:
|
||||
sub_802C39C();
|
||||
DrawPelipperBoardJobMenu();
|
||||
CreatePelipperAcceptedStatusBox(3);
|
||||
sub_8012D60(&gUnknown_203B308->unk6C, gUnknown_203B308->unkBC, 0, 0, gUnknown_203B308->unk68, 2);
|
||||
sub_8012D60(&gPelipperBoard->unk6C, gPelipperBoard->unkBC, 0, 0, gPelipperBoard->menuAction2, 2);
|
||||
break;
|
||||
case 7:
|
||||
sub_803B35C(GetPelipperBoardSlotInfo(gUnknown_203B308->jobIndex), &gUnknown_203B308->unkC);
|
||||
gUnknown_203B308->unkC = 3;
|
||||
gUnknown_203B308->unk50 = 0;
|
||||
sub_802DE84(&gUnknown_203B308->unkC);
|
||||
case PELIPPER_JOB_INFO:
|
||||
sub_803B35C(GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex), &gPelipperBoard->unkC);
|
||||
gPelipperBoard->unkC = 3;
|
||||
gPelipperBoard->unk50 = 0;
|
||||
sub_802DE84(&gPelipperBoard->unkC);
|
||||
break;
|
||||
case 8:
|
||||
sub_802C860(0);
|
||||
case PELIPPER_JOB_LIST_MENU:
|
||||
InitializeJobListMenu(0);
|
||||
break;
|
||||
case 0:
|
||||
case INITIALIZE_PELIPPER_BOARD:
|
||||
case 2:
|
||||
case 3:
|
||||
case PELIPPER_BOARD_EXIT:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,26 +8,7 @@
|
|||
#include "team_inventory.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "menu_input.h"
|
||||
|
||||
struct unkStruct_203B308
|
||||
{
|
||||
// size: 0xB6 << 1
|
||||
u32 state;
|
||||
u32 unk4;
|
||||
u8 jobIndex;
|
||||
u8 fill9[0xC - 9];
|
||||
u32 unkC;
|
||||
u8 fill10[0x50 - 0x10];
|
||||
u8 unk50;
|
||||
u8 fill51[0x64 - 0x51];
|
||||
u32 unk64;
|
||||
u32 unk68;
|
||||
struct MenuStruct unk6C;
|
||||
struct MenuItem unkBC[8];
|
||||
u16 unkFC[8];
|
||||
struct UnkTextStruct2 unk10C[4];
|
||||
};
|
||||
extern struct unkStruct_203B308 *gUnknown_203B308;
|
||||
#include "pelipper_board.h"
|
||||
|
||||
extern u8 gPelipperBoard_Accepted[];
|
||||
extern u8 gPelipperStatusSlash[];
|
||||
|
|
@ -40,10 +21,10 @@ extern void sub_802C8F4(void);
|
|||
extern u32 sub_802DEE0(void);
|
||||
extern void sub_802DF24(void);
|
||||
extern struct WonderMail *GetPelipperBoardSlotInfo(u8);
|
||||
extern u8 sub_802C4A4(void);
|
||||
extern u8 HasNoPelipperBoardJobs(void);
|
||||
extern void sub_8096C80(void);
|
||||
extern void sub_8096D24(void);
|
||||
extern void sub_8096A78(struct WonderMail*);
|
||||
extern void AcceptJob(struct WonderMail*);
|
||||
extern void ResetPelipperBoardSlot(u8);
|
||||
extern void sub_80965F4(void);
|
||||
extern void sub_802C2D4(void);
|
||||
|
|
@ -57,31 +38,33 @@ void sub_802ECB4(void)
|
|||
{
|
||||
s32 menuAction = 0;
|
||||
|
||||
if(!sub_8012FD8(&gUnknown_203B308->unk6C))
|
||||
if(!sub_8012FD8(&gPelipperBoard->unk6C))
|
||||
{
|
||||
sub_8013114(&gUnknown_203B308->unk6C, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B308->unk64 = menuAction;
|
||||
sub_8013114(&gPelipperBoard->unk6C, &menuAction);
|
||||
if(menuAction != 1) gPelipperBoard->menuAction1 = menuAction;
|
||||
}
|
||||
|
||||
switch(menuAction)
|
||||
{
|
||||
// Bulletin Board
|
||||
case 2:
|
||||
if(!sub_802C4A4())
|
||||
if(!HasNoPelipperBoardJobs())
|
||||
SetPelipperBoardState(4);
|
||||
else
|
||||
sub_8012EA4(&gUnknown_203B308->unk6C, 1);
|
||||
sub_8012EA4(&gPelipperBoard->unk6C, 1);
|
||||
break;
|
||||
// Job List
|
||||
case 3:
|
||||
if(!HasNoAcceptedJobs())
|
||||
SetPelipperBoardState(8);
|
||||
SetPelipperBoardState(PELIPPER_JOB_LIST_MENU);
|
||||
else
|
||||
sub_8012EA4(&gUnknown_203B308->unk6C, 1);
|
||||
sub_8012EA4(&gPelipperBoard->unk6C, 1);
|
||||
break;
|
||||
case 5:
|
||||
SetPelipperBoardState(2);
|
||||
break;
|
||||
case 1:
|
||||
SetPelipperBoardState(3);
|
||||
SetPelipperBoardState(PELIPPER_BOARD_EXIT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -91,16 +74,16 @@ void sub_802ED4C(void)
|
|||
switch(sub_802C1E4(1))
|
||||
{
|
||||
case 3:
|
||||
gUnknown_203B308->jobIndex = sub_802C26C();
|
||||
gPelipperBoard->jobIndex = sub_802C26C();
|
||||
SetPelipperBoardState(6);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B308->jobIndex = sub_802C26C();
|
||||
gPelipperBoard->jobIndex = sub_802C26C();
|
||||
SetPelipperBoardState(7);
|
||||
break;
|
||||
case 2:
|
||||
sub_802C2D4();
|
||||
SetPelipperBoardState(1);
|
||||
SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
|
|
@ -114,55 +97,57 @@ void sub_802EDBC(void)
|
|||
s32 menuAction = 0;
|
||||
|
||||
sub_802C1E4(0);
|
||||
if(!sub_8012FD8(&gUnknown_203B308->unk6C))
|
||||
if(!sub_8012FD8(&gPelipperBoard->unk6C))
|
||||
{
|
||||
sub_8013114(&gUnknown_203B308->unk6C, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B308->unk68 = menuAction;
|
||||
sub_8013114(&gPelipperBoard->unk6C, &menuAction);
|
||||
if(menuAction != 1) gPelipperBoard->menuAction2 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
// Accept
|
||||
case 4:
|
||||
PlaySound(0x133);
|
||||
mail = GetPelipperBoardSlotInfo(gUnknown_203B308->jobIndex);
|
||||
mail = GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex);
|
||||
switch(mail->mailType)
|
||||
{
|
||||
case 2:
|
||||
gUnknown_203B308->unk4 = 1;
|
||||
ResetPelipperBoardSlot(gUnknown_203B308->jobIndex);
|
||||
gPelipperBoard->unk4 = 1;
|
||||
ResetPelipperBoardSlot(gPelipperBoard->jobIndex);
|
||||
sub_80965F4();
|
||||
sub_802C2D4();
|
||||
SetPelipperBoardState(3);
|
||||
SetPelipperBoardState(PELIPPER_BOARD_EXIT);
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B308->unk4 = 2;
|
||||
ResetPelipperBoardSlot(gUnknown_203B308->jobIndex);
|
||||
gPelipperBoard->unk4 = 2;
|
||||
ResetPelipperBoardSlot(gPelipperBoard->jobIndex);
|
||||
sub_80965F4();
|
||||
sub_802C2D4();
|
||||
SetPelipperBoardState(3);
|
||||
SetPelipperBoardState(PELIPPER_BOARD_EXIT);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B308->unk4 = 3;
|
||||
ResetPelipperBoardSlot(gUnknown_203B308->jobIndex);
|
||||
gPelipperBoard->unk4 = 3;
|
||||
ResetPelipperBoardSlot(gPelipperBoard->jobIndex);
|
||||
sub_80965F4();
|
||||
sub_802C2D4();
|
||||
SetPelipperBoardState(3);
|
||||
SetPelipperBoardState(PELIPPER_BOARD_EXIT);
|
||||
break;
|
||||
default:
|
||||
sub_8096A78(mail);
|
||||
AcceptJob(mail);
|
||||
sub_8096C80();
|
||||
sub_8096D24();
|
||||
if(sub_802C4A4())
|
||||
if(HasNoPelipperBoardJobs())
|
||||
{
|
||||
sub_802C2D4();
|
||||
SetPelipperBoardState(1);
|
||||
SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU);
|
||||
}
|
||||
else
|
||||
SetPelipperBoardState(5);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
// Info
|
||||
case 5:
|
||||
SetPelipperBoardState(7);
|
||||
SetPelipperBoardState(PELIPPER_JOB_INFO);
|
||||
break;
|
||||
case 1:
|
||||
SetPelipperBoardState(5);
|
||||
|
|
@ -191,7 +176,7 @@ void sub_802EEBC(void)
|
|||
case 2:
|
||||
case 3:
|
||||
sub_802C8F4();
|
||||
SetPelipperBoardState(1);
|
||||
SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
|
|
|
|||
741
src/pokemon_news.c
Normal file
741
src/pokemon_news.c
Normal file
|
|
@ -0,0 +1,741 @@
|
|||
#include "constants/input.h"
|
||||
#include "global.h"
|
||||
#include "file_system.h"
|
||||
#include "input.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
#include "save.h"
|
||||
#include "menu_input.h"
|
||||
|
||||
struct unkStruct_203B2CC
|
||||
{
|
||||
// size: 0xD4;
|
||||
u8 receivedNewsletters[NUM_POKEMON_NEWS];
|
||||
|
||||
u32 unk38;
|
||||
u8 fill3C[0x50 - 0x3C];
|
||||
|
||||
s16 unk50;
|
||||
s16 unk52;
|
||||
s16 unk54;
|
||||
s16 unk56;
|
||||
|
||||
u16 unk58;
|
||||
u16 numPKMNNews;
|
||||
|
||||
u8 fill5C[0x6C - 0x5C];
|
||||
|
||||
u32 unk6C;
|
||||
|
||||
struct UnkTextStruct2 *unk70;
|
||||
struct UnkTextStruct2 unk74[4];
|
||||
};
|
||||
extern struct unkStruct_203B2CC *gUnknown_203B2CC;
|
||||
|
||||
struct unkStruct_203B2D4
|
||||
{
|
||||
// size: 0x94
|
||||
/* 0x0 */ s32 state;
|
||||
/* 0x4 */ u8 currMailIndex;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
const u8 *unk10[4];
|
||||
u32 unk20;
|
||||
u32 unk24;
|
||||
struct UnkTextStruct2 unk28[4];
|
||||
u32 unk88;
|
||||
u8 fill8C[0x94 - 0x8C];
|
||||
};
|
||||
extern struct unkStruct_203B2D4 *gUnknown_203B2D4;
|
||||
|
||||
struct unkStruct_203B2D8
|
||||
{
|
||||
// size: 0xA4
|
||||
u8 unk0[4];
|
||||
u32 unk4;
|
||||
u8 fill8[0x1C - 0x8];
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
s16 unk22;
|
||||
s16 fill24;
|
||||
/* 0x26 */ s16 emptyMailSlots;
|
||||
u8 fill28[0x38 - 0x28];
|
||||
u32 unk38;
|
||||
struct UnkTextStruct2 *unk3C;
|
||||
struct UnkTextStruct2 unk40[4];
|
||||
u8 unkA0[4];
|
||||
};
|
||||
extern struct unkStruct_203B2D8 *gUnknown_203B2D8;
|
||||
extern struct GameOptions *gGameOptionsRef;
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFBD0 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const u8 gUnknown_80DFBE8[] = { 0x01, 0x00, 0x0C, 0x00 };
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFBEC =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x18, 0x0E,
|
||||
0x0E, 0x00,
|
||||
gUnknown_80DFBE8
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFC04[] = "News List";
|
||||
ALIGNED(4) static const char wonder_mail_2_fill1[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC18 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const u8 gUnkData_80DFC30[] = { 0x01, 0x00, 0x16, 0x00 };
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC34 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x1A, 0x10,
|
||||
0x10, 0x00,
|
||||
gUnkData_80DFC30
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFC4C[] = "She";
|
||||
ALIGNED(4) const u8 gUnknown_80DFC50[] = "He";
|
||||
ALIGNED(4) static const char wonder_mail_2_fill2[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC5C =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC74 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x18, 0x0E,
|
||||
0x0E, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gMailboxText[] = "Mailbox";
|
||||
ALIGNED(4) static const char wonder_mail_2_fill3[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC9C =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFCB4 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x18, 0x0E,
|
||||
0x0E, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gBulletinBoardText[] = "Bulletin Board";
|
||||
ALIGNED(4) static const char wonder_mail_2_fill4[] = "pksdir0";
|
||||
|
||||
extern u8 HasNoPKMNNews(void);
|
||||
extern u8 CheckPKMNNewsSlot(u8 r0);
|
||||
extern u16 gUnknown_203B2D0;
|
||||
extern u16 gUnknown_203B2D2;
|
||||
extern u16 gUnknown_203B2DC;
|
||||
extern s32 GetNumPKMNNews(void);
|
||||
extern void sub_802B880(void);
|
||||
extern void CreatePKMNNewsMenu(void);
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 GetKeyPress(u32 *);
|
||||
extern void sub_8013660(u32 *);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern void sub_802BCC4(void);
|
||||
extern void sub_802BB14(u32);
|
||||
extern void sub_801317C(u32 *);
|
||||
extern u8 HasNoMailinMailbox(void);
|
||||
extern void sub_802BF30(void);
|
||||
extern void CreateMailMenu(void);
|
||||
extern s32 CountEmptyMailSlots(void);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
void sub_802BB28(void);
|
||||
extern void sub_802BB98(void);
|
||||
extern void sub_802BC08(void);
|
||||
extern void sub_802BB28(void);
|
||||
extern void sub_8013E54(void);
|
||||
extern s32 sub_8012A64(u32 *, u32);
|
||||
extern char gUnknown_202E5D8[0x50];
|
||||
extern char gAvailablePokemonNames[0x50];
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_802BC7C(void);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
|
||||
extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32);
|
||||
extern void sub_803B6B0(u32, u32, u32, u32);
|
||||
extern s32 sub_8013800(u32 *, s32);
|
||||
extern void sub_8013984(u32 *);
|
||||
extern struct PokemonStruct *sub_808D3BC(void);
|
||||
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
|
||||
|
||||
u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2)
|
||||
{
|
||||
|
||||
if(HasNoPKMNNews())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(gUnknown_203B2CC == NULL)
|
||||
{
|
||||
gUnknown_203B2CC = MemoryAlloc(sizeof(struct unkStruct_203B2CC), 8);
|
||||
}
|
||||
gUnknown_203B2CC->unk6C = r0;
|
||||
gUnknown_203B2CC->unk70 = &gUnknown_203B2CC->unk74[r0];
|
||||
|
||||
sub_8006518(gUnknown_203B2CC->unk74);
|
||||
|
||||
gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C] = gUnknown_80DFBEC;
|
||||
|
||||
if(r1 != NULL)
|
||||
{
|
||||
gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C].unk08 = *r1;
|
||||
}
|
||||
|
||||
sub_8012D08(gUnknown_203B2CC->unk70, r2);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2CC->unk74, 1, 1);
|
||||
|
||||
sub_8013818(&gUnknown_203B2CC->unk38, GetNumPKMNNews(), r2, r0);
|
||||
|
||||
gUnknown_203B2CC->unk50 = gUnknown_203B2D0;
|
||||
gUnknown_203B2CC->unk56 = gUnknown_203B2D2;
|
||||
|
||||
sub_8013984(&gUnknown_203B2CC->unk38);
|
||||
sub_802B880();
|
||||
CreatePKMNNewsMenu();
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802B720(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B2CC->unk38);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(&gUnknown_203B2CC->unk38))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case INPUT_A_BUTTON:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case INPUT_START_BUTTON:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
}
|
||||
if(sub_80138B8(&gUnknown_203B2CC->unk38, 1) != 0)
|
||||
{
|
||||
sub_802B880();
|
||||
CreatePKMNNewsMenu();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 GetPokemonNewsIndex(void)
|
||||
{
|
||||
return gUnknown_203B2CC->receivedNewsletters[(gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + gUnknown_203B2CC->unk50];
|
||||
}
|
||||
|
||||
void sub_802B7D0(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2CC->unk74, 0, 0);
|
||||
|
||||
gUnknown_203B2CC->numPKMNNews = GetNumPKMNNews();
|
||||
sub_8013984(&gUnknown_203B2CC->unk38);
|
||||
sub_802B880();
|
||||
CreatePKMNNewsMenu();
|
||||
|
||||
if(r0 != 0)
|
||||
{
|
||||
AddMenuCursorSprite(&gUnknown_203B2CC->unk38);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802B81C(void)
|
||||
{
|
||||
if(gUnknown_203B2CC != NULL)
|
||||
{
|
||||
gUnknown_203B2D0 = gUnknown_203B2CC->unk50;
|
||||
|
||||
gUnknown_203B2D2 = gUnknown_203B2CC->unk56;
|
||||
|
||||
gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C] = gUnknown_80DFBD0;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2CC->unk74, 1, 1);
|
||||
|
||||
MemoryFree(gUnknown_203B2CC);
|
||||
gUnknown_203B2CC = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_802B880(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0802B8D0\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x52\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl sub_80095E4\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tldr r3, [r2, 0x6C]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x82\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x6C]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x84\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x74\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"\t_0802B8D0: .4byte gUnknown_203B2CC");
|
||||
}
|
||||
|
||||
void CreatePKMNNewsMenu(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 y;
|
||||
s32 new_index;
|
||||
u8 mailIndex;
|
||||
|
||||
|
||||
sub_8008C54(gUnknown_203B2CC->unk6C);
|
||||
sub_80073B8(gUnknown_203B2CC->unk6C);
|
||||
xxx_call_draw_string(0xA, 0, gUnknown_80DFC04, gUnknown_203B2CC->unk6C, 0);
|
||||
sub_8012BC4(((gUnknown_80DFBE8[2] << 3) + 4), 0, gUnknown_203B2CC->unk56 + 1, 2, 7, gUnknown_203B2CC->unk6C);
|
||||
for(index = 0; index < gUnknown_203B2CC->unk52; index++)
|
||||
{
|
||||
y = sub_8013800(&gUnknown_203B2CC->unk38, index);
|
||||
new_index = (gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + index;
|
||||
mailIndex = gUnknown_203B2CC->receivedNewsletters[new_index];
|
||||
sub_803B6B0(0xA, y, 6, gUnknown_203B2CC->unk6C);
|
||||
sub_802BC7C();
|
||||
xxx_format_and_draw(0x15, y, GetPokemonMailHeadline(mailIndex), gUnknown_203B2CC->unk6C, 0);
|
||||
}
|
||||
sub_80073E0(gUnknown_203B2CC->unk6C);
|
||||
}
|
||||
|
||||
s32 GetNumPKMNNews(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 newsCount;
|
||||
|
||||
newsCount = 0;
|
||||
|
||||
for(index = 0; index < NUM_POKEMON_NEWS; index++)
|
||||
{
|
||||
if(CheckPKMNNewsSlot(index))
|
||||
{
|
||||
gUnknown_203B2CC->receivedNewsletters[newsCount] = index;
|
||||
newsCount++;
|
||||
}
|
||||
}
|
||||
return newsCount;
|
||||
}
|
||||
|
||||
bool8 HasNoPKMNNews(void)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < NUM_POKEMON_NEWS; index++)
|
||||
{
|
||||
if(CheckPKMNNewsSlot(index))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_802B9FC(u8 mailIndex)
|
||||
{
|
||||
gUnknown_203B2D4 = MemoryAlloc(sizeof(struct unkStruct_203B2D4), 8);
|
||||
gUnknown_203B2D4->currMailIndex = mailIndex;
|
||||
sub_801317C(&gUnknown_203B2D4->unk88);
|
||||
gUnknown_203B2D4->unk24 = 0;
|
||||
gUnknown_203B2D4->unk28[0] = gUnknown_80DFC34;
|
||||
gUnknown_203B2D4->unk28[1] = gUnknown_80DFC18;
|
||||
gUnknown_203B2D4->unk28[2] = gUnknown_80DFC18;
|
||||
gUnknown_203B2D4->unk28[3] = gUnknown_80DFC18;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D4->unk28, 1, 1);
|
||||
gUnknown_203B2D4->unk8 = 0;
|
||||
sub_802BCC4();
|
||||
sub_802BC7C();
|
||||
sub_802BB14(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802BA8C(void)
|
||||
{
|
||||
switch(gUnknown_203B2D4->state)
|
||||
{
|
||||
case 0:
|
||||
sub_802BB98();
|
||||
break;
|
||||
case 1:
|
||||
sub_802BC08();
|
||||
break;
|
||||
case 3:
|
||||
return 3;
|
||||
case 2:
|
||||
default:
|
||||
return 2;
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_802BACC(void)
|
||||
{
|
||||
if(gUnknown_203B2D4 != NULL)
|
||||
{
|
||||
gUnknown_203B2D4->unk28[gUnknown_203B2D4->unk24] = gUnknown_80DFC18;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D4->unk28, 1, 1);
|
||||
MemoryFree(gUnknown_203B2D4);
|
||||
gUnknown_203B2D4 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BB14(u32 newState)
|
||||
{
|
||||
gUnknown_203B2D4->state = newState;
|
||||
sub_802BB28();
|
||||
}
|
||||
|
||||
void sub_802BB28(void)
|
||||
{
|
||||
switch(gUnknown_203B2D4->state)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
sub_8008C54(gUnknown_203B2D4->unk24);
|
||||
sub_80073B8(gUnknown_203B2D4->unk24);
|
||||
xxx_format_and_draw(0xA, 0, GetPokemonMailHeadline(gUnknown_203B2D4->currMailIndex), gUnknown_203B2D4->unk24, 0);
|
||||
xxx_format_and_draw(0x6, 0x14, gUnknown_203B2D4->unk10[gUnknown_203B2D4->unk8], gUnknown_203B2D4->unk24, 0);
|
||||
sub_80073E0(gUnknown_203B2D4->unk24);
|
||||
gUnknown_203B2D4->unk8++;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BB98(void)
|
||||
{
|
||||
if(gUnknown_203B2D4->unkC != 0)
|
||||
{
|
||||
if(gUnknown_203B2D4->unk20 & 8)
|
||||
sub_8013E54();
|
||||
gUnknown_203B2D4->unk20++;
|
||||
}
|
||||
switch(sub_8012A64(&gUnknown_203B2D4->unk88, gUnknown_203B2D4->unk24))
|
||||
{
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
if(gUnknown_203B2D4->unkC != 0)
|
||||
sub_802BB14(1);
|
||||
else
|
||||
sub_802BB14(3);
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_802BB14(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BC08(void)
|
||||
{
|
||||
if(gUnknown_203B2D4->unk8 < gUnknown_203B2D4->unkC)
|
||||
{
|
||||
if(gUnknown_203B2D4->unk20 & 8)
|
||||
sub_8013E54();
|
||||
gUnknown_203B2D4->unk20++;
|
||||
}
|
||||
switch(sub_8012A64(&gUnknown_203B2D4->unk88, gUnknown_203B2D4->unk24))
|
||||
{
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
if(gUnknown_203B2D4->unk8 < gUnknown_203B2D4->unkC)
|
||||
sub_802BB14(1);
|
||||
else
|
||||
sub_802BB14(3);
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_802BB14(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BC7C(void)
|
||||
{
|
||||
PrintPokeNameToBuffer(gAvailablePokemonNames, sub_808D3BC());
|
||||
if(gGameOptionsRef->playerGender == FEMALE)
|
||||
{
|
||||
strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC4C); // She
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC50); // He
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BCC4(void)
|
||||
{
|
||||
const char *mailTextPtr;
|
||||
|
||||
mailTextPtr = GetPokemonMailText(gUnknown_203B2D4->currMailIndex);
|
||||
gUnknown_203B2D4->unkC = 0;
|
||||
gUnknown_203B2D4->unk10[0] = mailTextPtr;
|
||||
|
||||
// Count all the {EXTRA_MSG}'s
|
||||
while (*mailTextPtr != '\0') {
|
||||
if (*mailTextPtr == '#') {
|
||||
if ((mailTextPtr[1] == 'P') || (mailTextPtr[1] == 'p')) {
|
||||
gUnknown_203B2D4->unkC++;
|
||||
gUnknown_203B2D4->unk10[gUnknown_203B2D4->unkC] = mailTextPtr + 2;
|
||||
}
|
||||
mailTextPtr += 2;
|
||||
}
|
||||
else {
|
||||
mailTextPtr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802BD14(s32 param_1, struct UnkTextStruct2_sub *param_2, u32 param_3)
|
||||
{
|
||||
|
||||
if (HasNoMailinMailbox()) {
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_203B2D8 == NULL) {
|
||||
gUnknown_203B2D8 = MemoryAlloc(sizeof(struct unkStruct_203B2D8),8);
|
||||
}
|
||||
gUnknown_203B2D8->unk38 = param_1;
|
||||
gUnknown_203B2D8->unk3C = &gUnknown_203B2D8->unk40[param_1];
|
||||
sub_8006518(gUnknown_203B2D8->unk40);
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC74;
|
||||
gUnknown_203B2D8->unk3C->unk14 = gUnknown_203B2D8->unkA0;
|
||||
if (param_2 != NULL) {
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38].unk08 = *param_2;
|
||||
}
|
||||
sub_8012D34(gUnknown_203B2D8->unk3C,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40,1,1);
|
||||
sub_8013848(&gUnknown_203B2D8->unk4,CountEmptyMailSlots(),param_3,param_1);
|
||||
gUnknown_203B2D8->unk1C = gUnknown_203B2DC;
|
||||
sub_8013984(&gUnknown_203B2D8->unk4);
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802BDEC(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B2D8->unk4);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B2D8->unk4))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case INPUT_A_BUTTON:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case INPUT_START_BUTTON:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B2D8->unk4, 1) != 0)
|
||||
{
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_802BE74(void) {
|
||||
return gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + gUnknown_203B2D8->unk1C];
|
||||
}
|
||||
|
||||
void sub_802BE94(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40, 0, 0);
|
||||
|
||||
gUnknown_203B2D8->emptyMailSlots = CountEmptyMailSlots();
|
||||
sub_8013984(&gUnknown_203B2D8->unk4);
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
|
||||
if(r0 != 0)
|
||||
{
|
||||
AddMenuCursorSprite(&gUnknown_203B2D8->unk4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BEDC(void)
|
||||
{
|
||||
if(gUnknown_203B2D8 != NULL)
|
||||
{
|
||||
gUnknown_203B2DC = gUnknown_203B2D8->unk1C;
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC5C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40, 1, 1);
|
||||
MemoryFree(gUnknown_203B2D8);
|
||||
gUnknown_203B2D8 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_802BF30(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0802BF9C\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA2\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA3\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0x1E\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0x18\n"
|
||||
"\tbl sub_8009614\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tldr r3, [r2, 0x38]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x4E\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x38]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x50\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x40\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0802BF9C: .4byte gUnknown_203B2D8"
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -244,7 +244,7 @@ s32 UpdateRescuePasswordMenu(void)
|
|||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
local_44.mailType = 5;
|
||||
sub_80951FC(&local_44);
|
||||
puVar5 = sub_8095228(sub_809539C(1, local_44.unk10.unk10));
|
||||
puVar5 = sub_8095228(GetMailIndex(1, local_44.unk10.unk10));
|
||||
puVar5->mailType = WONDER_MAIL_TYPE_OKD;
|
||||
MemoryFill8((u8 *)&gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
|
||||
break;
|
||||
|
|
@ -264,7 +264,7 @@ s32 UpdateRescuePasswordMenu(void)
|
|||
DisplayPasswordAcceptScreen();
|
||||
gRescuePasswordMenu->state = 9;
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
puVar6 = sub_8095228(sub_809539C(4, local_44.unk10.unk10));
|
||||
puVar6 = sub_8095228(GetMailIndex(4, local_44.unk10.unk10));
|
||||
*puVar6 = local_44;
|
||||
puVar6->mailType = 6;
|
||||
iVar9 = GetMainMenu();
|
||||
|
|
@ -461,7 +461,7 @@ u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_203B480 *para
|
|||
if (param_3->mailType != WONDER_MAIL_TYPE_SOS) {
|
||||
return PASSWORD_ENTRY_NOT_SOS_MAIL;
|
||||
}
|
||||
else if ( (sub_80952F0(2, param_3->unk10.unk10)) || (sub_80952F0(WONDER_MAIL_TYPE_AOK, param_3->unk10.unk10)) || (sub_80952F0(WONDER_MAIL_TYPE_COMPLETED, param_3->unk10.unk10)) || (sub_8095298(param_3->unk10.unk10))) {
|
||||
else if ( (HasMail(2, param_3->unk10.unk10)) || (HasMail(WONDER_MAIL_TYPE_AOK, param_3->unk10.unk10)) || (HasMail(WONDER_MAIL_TYPE_COMPLETED, param_3->unk10.unk10)) || (sub_8095298(param_3->unk10.unk10))) {
|
||||
return PASSWORD_ENTRY_DUPLICATE_SOS_MAIL;
|
||||
}
|
||||
else if (FindOpenMailSlot() == -1) {
|
||||
|
|
@ -475,7 +475,7 @@ u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_203B480 *para
|
|||
if (param_3->mailType != WONDER_MAIL_TYPE_AOK) {
|
||||
return PASSWORD_ENTRY_NOT_AOK_MAIL;
|
||||
}
|
||||
else if (!sub_80952F0(1, param_3->unk10.unk10)) {
|
||||
else if (!HasMail(1, param_3->unk10.unk10)) {
|
||||
return PASSWORD_ENTRY_DUPLICATE_AOK_MAIL;
|
||||
}
|
||||
else {
|
||||
|
|
@ -486,7 +486,7 @@ u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_203B480 *para
|
|||
if (param_3->mailType != WONDER_MAIL_TYPE_THANK_YOU) {
|
||||
return PASSWORD_ENTRY_NOT_THANK_YOU_MAIL;
|
||||
}
|
||||
else if ((!sub_80952F0(4, param_3->unk10.unk10)) || (param_3->unk28 != sub_8011C34())) {
|
||||
else if ((!HasMail(4, param_3->unk10.unk10)) || (param_3->unk28 != sub_8011C34())) {
|
||||
return PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL;
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
|
|||
|
||||
#define THANK_YOU_MAIL_MAIN_MENU 0
|
||||
#define ANYTHING_ELSE_THANK_YOU_MAIN_MENU 1
|
||||
#define EXIT_THANK_YOU_MAIL_PRE 2
|
||||
#define EXIT_THANK_YOU_MAIL 3
|
||||
#define NO_THANK_YOU_MAIL 4
|
||||
#define SELECT_THANK_YOU_MAIL_COMMS 6
|
||||
|
|
@ -160,7 +161,6 @@ extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32);
|
|||
extern void sub_8030810(u32);
|
||||
extern u32 sub_8031DCC(void);
|
||||
extern void sub_8031E00(void);
|
||||
extern void sub_8095240(u8);
|
||||
extern u32 sub_802F298();
|
||||
extern u8 sub_801CF14(u32);
|
||||
extern u32 sub_8030768(u32);
|
||||
|
|
@ -285,7 +285,7 @@ u32 CreateThankYouMailPelipper(void)
|
|||
gUnknown_203B2C4->wonderMailMethod = WONDER_MAIL_GAME_LINK;
|
||||
gUnknown_203B2C4->wonderMailMode = WONDER_MAIL_MODE_SEND;
|
||||
|
||||
index = sub_80953D4(6);
|
||||
index = GetFirstIndexofMailType(6);
|
||||
if (index != -1) {
|
||||
mail = sub_8095228(index);
|
||||
gUnknown_203B2C4->unk41C = mail->unk20;
|
||||
|
|
@ -424,7 +424,7 @@ u32 ThankYouMailPelipperCallback(void)
|
|||
case ANYTHING_ELSE_THANK_YOU_MAIN_MENU:
|
||||
HandleThankYouMailPelipperMainMenu();
|
||||
break;
|
||||
case 2:
|
||||
case EXIT_THANK_YOU_MAIL_PRE:
|
||||
sub_802AAC8();
|
||||
break;
|
||||
case EXIT_THANK_YOU_MAIL:
|
||||
|
|
@ -815,7 +815,7 @@ void AdvanceToThankYouPasswordProcessing(void)
|
|||
|
||||
void HandleThankYouMailPasswordMenu(void)
|
||||
{
|
||||
u8 uVar1;
|
||||
u8 mailIndex;
|
||||
struct unkStruct_203B480 *mail;
|
||||
u32 return_var;
|
||||
struct unkStruct_203B480 mail1;
|
||||
|
|
@ -840,8 +840,8 @@ void HandleThankYouMailPasswordMenu(void)
|
|||
SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
|
||||
break;
|
||||
case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS:
|
||||
uVar1 = sub_809539C(4,mail1.unk10.unk10);
|
||||
mail = sub_8095228(uVar1);
|
||||
mailIndex = GetMailIndex(4,mail1.unk10.unk10);
|
||||
mail = sub_8095228(mailIndex);
|
||||
*mail = mail1;
|
||||
mail->mailType = 6;
|
||||
gUnknown_203B2C4->unk430 = mail1.unk10.unk10;
|
||||
|
|
@ -1143,7 +1143,7 @@ void HandleMailCommunicationMenu(void)
|
|||
switch(gUnknown_203B2C4->wonderMailMode)
|
||||
{
|
||||
case WONDER_MAIL_MODE_SEND:
|
||||
mail = sub_8095228(sub_80953D4(WONDER_MAIL_TYPE_THANK_YOU));
|
||||
mail = sub_8095228(GetFirstIndexofMailType(WONDER_MAIL_TYPE_THANK_YOU));
|
||||
if(mail->unk20.id != ITEM_NOTHING)
|
||||
{
|
||||
SetThankYouMailMenuState(ITEM_EXISTS_ON_THANK_YOU_MAIL);
|
||||
|
|
@ -1250,7 +1250,7 @@ void sub_802AB98(void)
|
|||
CopyYellowMonsterNametoBuffer(gUnknown_202E5D8, MONSTER_PELIPPER);
|
||||
monName = GetMonSpecies(MONSTER_PELIPPER);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sub_8095240(sub_809539C(6, gUnknown_203B2C4->unk430));
|
||||
DeleteMailAtIndex(GetMailIndex(6, gUnknown_203B2C4->unk430));
|
||||
SetThankYouMailMenuState(0x24);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -1268,7 +1268,7 @@ void UpdateThankYouMailText(void)
|
|||
char *monName;
|
||||
u8 buffer1 [80];
|
||||
u8 buffer2 [80];
|
||||
u8 uVar2;
|
||||
u8 mailIndex;
|
||||
struct PokemonStruct *pokeStruct;
|
||||
struct PokemonStruct *pokeStruct2;
|
||||
s32 linkStatus;
|
||||
|
|
@ -1294,7 +1294,7 @@ void UpdateThankYouMailText(void)
|
|||
break;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
sub_80306A8(5,0,0,6);
|
||||
sub_80306A8(WONDER_MAIL_TYPE_THANK_YOU,0,0,6);
|
||||
break;
|
||||
case 0x11:
|
||||
sub_8006518(gUnknown_203B2C4->unk35C);
|
||||
|
|
@ -1407,8 +1407,8 @@ void UpdateThankYouMailText(void)
|
|||
gUnknown_203B2C4->unk53C.unk14 = MONSTER_PELIPPER; // 0x550
|
||||
gUnknown_203B2C4->unk53C.unk16 = 2; // 0x552
|
||||
gUnknown_203B2C4->unk53C.moneyReward = 0; // 0x554
|
||||
uVar2 = sub_809539C(6,gUnknown_203B2C4->unk430);
|
||||
mail = sub_8095228(uVar2);
|
||||
mailIndex = GetMailIndex(6,gUnknown_203B2C4->unk430);
|
||||
mail = sub_8095228(mailIndex);
|
||||
itemIndex = mail->unk20.id;
|
||||
if (itemIndex != ITEM_NOTHING)
|
||||
gUnknown_203B2C4->unk53C.itemRewards[0] = itemIndex; // unk558
|
||||
|
|
@ -1484,7 +1484,7 @@ void UpdateThankYouMailText(void)
|
|||
// May I help you with anything else?
|
||||
sub_8014248(gUnknown_80DF928,0,1,gThankYouMailMainMenuItems,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case 2:
|
||||
case EXIT_THANK_YOU_MAIL_PRE:
|
||||
// Please come see me anytime
|
||||
sub_80141B4(gUnknown_80DF94C,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
break;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -34,95 +34,6 @@ struct unkStruct_203B2C8
|
|||
u32 fill13C;
|
||||
};
|
||||
|
||||
struct unkStruct_203B2CC
|
||||
{
|
||||
// size: 0xD4;
|
||||
u8 receivedNewsletters[NUM_POKEMON_NEWS];
|
||||
|
||||
u32 unk38;
|
||||
u8 fill3C[0x50 - 0x3C];
|
||||
|
||||
s16 unk50;
|
||||
s16 unk52;
|
||||
s16 unk54;
|
||||
s16 unk56;
|
||||
|
||||
u16 unk58;
|
||||
u16 numPKMNNews;
|
||||
|
||||
u8 fill5C[0x6C - 0x5C];
|
||||
|
||||
u32 unk6C;
|
||||
|
||||
struct UnkTextStruct2 *unk70;
|
||||
struct UnkTextStruct2 unk74[4];
|
||||
};
|
||||
extern struct unkStruct_203B2CC *gUnknown_203B2CC;
|
||||
|
||||
struct unkStruct_203B2D4
|
||||
{
|
||||
// size: 0x94
|
||||
/* 0x0 */ s32 state;
|
||||
/* 0x4 */ u8 currMailIndex;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
const u8 *unk10[4];
|
||||
u32 unk20;
|
||||
u32 unk24;
|
||||
struct UnkTextStruct2 unk28[4];
|
||||
u32 unk88;
|
||||
u8 fill8C[0x94 - 0x8C];
|
||||
};
|
||||
extern struct unkStruct_203B2D4 *gUnknown_203B2D4;
|
||||
|
||||
struct unkStruct_203B2D8
|
||||
{
|
||||
// size: 0xA4
|
||||
u8 unk0[4];
|
||||
u32 unk4;
|
||||
u8 fill8[0x1C - 0x8];
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
s16 unk22;
|
||||
s16 fill24;
|
||||
/* 0x26 */ s16 emptyMailSlots;
|
||||
u8 fill28[0x38 - 0x28];
|
||||
u32 unk38;
|
||||
struct UnkTextStruct2 *unk3C;
|
||||
struct UnkTextStruct2 unk40[4];
|
||||
u8 unkA0[4];
|
||||
};
|
||||
extern struct unkStruct_203B2D8 *gUnknown_203B2D8;
|
||||
|
||||
extern struct GameOptions *gGameOptionsRef;
|
||||
|
||||
|
||||
extern s32 GetNumPKMNNews(void);
|
||||
extern void sub_802B880(void);
|
||||
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 HasNoPKMNNews(void);
|
||||
extern u8 CheckPKMNNewsSlot(u8 r0);
|
||||
extern struct PokemonStruct *sub_808D3BC(void);
|
||||
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
|
||||
extern u16 gUnknown_203B2D0;
|
||||
extern u16 gUnknown_203B2D2;
|
||||
extern u16 gUnknown_203B2DC;
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 GetKeyPress(u32 *);
|
||||
extern void sub_8013660(u32 *);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
|
||||
extern void sub_802BB98(void);
|
||||
extern void sub_802BC08(void);
|
||||
extern void sub_802BB28(void);
|
||||
extern void sub_8013E54(void);
|
||||
extern s32 sub_8012A64(u32 *, u32);
|
||||
|
||||
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
|
||||
|
||||
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
|
||||
|
|
@ -148,26 +59,6 @@ extern void sub_803C37C(struct DungeonLocation *, u32, u8 *);
|
|||
extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32);
|
||||
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern bool8 sub_80023E4(u32);
|
||||
extern void nullsub_131(void);
|
||||
extern void sub_802ABF8(void);
|
||||
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_802BC7C(void);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
|
||||
extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32);
|
||||
extern void sub_803B6B0(u32, u32, u32, u32);
|
||||
extern s32 sub_8013800(u32 *, s32);
|
||||
|
||||
extern void sub_802BCC4(void);
|
||||
extern void sub_802BB14(u32);
|
||||
extern void sub_801317C(u32 *);
|
||||
extern u8 HasNoMailinMailbox(void);
|
||||
extern void sub_802BF30(void);
|
||||
extern void CreateMailMenu(void);
|
||||
extern s32 CountEmptyMailSlots(void);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
|
||||
ALIGNED(4) const char gRescueTeamNamePlaceholder[] = "????";
|
||||
|
||||
|
|
@ -195,103 +86,6 @@ ALIGNED(4) const char gUnknown_80DFB14[] = _(
|
|||
|
||||
ALIGNED(4) const char wonder_mail_2_fill[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFBD0 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const u8 gUnknown_80DFBE8[] = { 0x01, 0x00, 0x0C, 0x00 };
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFBEC =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x18, 0x0E,
|
||||
0x0E, 0x00,
|
||||
gUnknown_80DFBE8
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFC04[] = "News List";
|
||||
ALIGNED(4) static const char wonder_mail_2_fill1[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC18 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const u8 gUnkData_80DFC30[] = { 0x01, 0x00, 0x16, 0x00 };
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC34 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x1A, 0x10,
|
||||
0x10, 0x00,
|
||||
gUnkData_80DFC30
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFC4C[] = "She";
|
||||
ALIGNED(4) const u8 gUnknown_80DFC50[] = "He";
|
||||
ALIGNED(4) static const char wonder_mail_2_fill2[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC5C =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC74 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x18, 0x0E,
|
||||
0x0E, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gMailboxText[] = "Mailbox";
|
||||
ALIGNED(4) static const char wonder_mail_2_fill3[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFC9C =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFCB4 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x18, 0x0E,
|
||||
0x0E, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gBulletinBoardText[] = "Bulletin Board";
|
||||
ALIGNED(4) static const char wonder_mail_2_fill4[] = "pksdir0";
|
||||
|
||||
u32 sub_802B2D4(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
|
@ -477,532 +271,3 @@ void sub_802B624(void)
|
|||
sub_802B548(5);
|
||||
}
|
||||
}
|
||||
|
||||
// Start of some Pokemon News related stuff
|
||||
u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2)
|
||||
{
|
||||
|
||||
if(HasNoPKMNNews())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(gUnknown_203B2CC == NULL)
|
||||
{
|
||||
gUnknown_203B2CC = MemoryAlloc(sizeof(struct unkStruct_203B2CC), 8);
|
||||
}
|
||||
gUnknown_203B2CC->unk6C = r0;
|
||||
gUnknown_203B2CC->unk70 = &gUnknown_203B2CC->unk74[r0];
|
||||
|
||||
sub_8006518(gUnknown_203B2CC->unk74);
|
||||
|
||||
gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C] = gUnknown_80DFBEC;
|
||||
|
||||
if(r1 != NULL)
|
||||
{
|
||||
gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C].unk08 = *r1;
|
||||
}
|
||||
|
||||
sub_8012D08(gUnknown_203B2CC->unk70, r2);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2CC->unk74, 1, 1);
|
||||
|
||||
sub_8013818(&gUnknown_203B2CC->unk38, GetNumPKMNNews(), r2, r0);
|
||||
|
||||
gUnknown_203B2CC->unk50 = gUnknown_203B2D0;
|
||||
gUnknown_203B2CC->unk56 = gUnknown_203B2D2;
|
||||
|
||||
sub_8013984(&gUnknown_203B2CC->unk38);
|
||||
sub_802B880();
|
||||
sub_802B8D4();
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802B720(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B2CC->unk38);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(&gUnknown_203B2CC->unk38))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
}
|
||||
if(sub_80138B8(&gUnknown_203B2CC->unk38, 1) != 0)
|
||||
{
|
||||
sub_802B880();
|
||||
sub_802B8D4();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 GetPokemonNewsIndex(void)
|
||||
{
|
||||
return gUnknown_203B2CC->receivedNewsletters[(gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + gUnknown_203B2CC->unk50];
|
||||
}
|
||||
|
||||
void sub_802B7D0(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2CC->unk74, 0, 0);
|
||||
|
||||
gUnknown_203B2CC->numPKMNNews = GetNumPKMNNews();
|
||||
sub_8013984(&gUnknown_203B2CC->unk38);
|
||||
sub_802B880();
|
||||
sub_802B8D4();
|
||||
|
||||
if(r0 != 0)
|
||||
{
|
||||
AddMenuCursorSprite(&gUnknown_203B2CC->unk38);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802B81C(void)
|
||||
{
|
||||
if(gUnknown_203B2CC != NULL)
|
||||
{
|
||||
gUnknown_203B2D0 = gUnknown_203B2CC->unk50;
|
||||
|
||||
gUnknown_203B2D2 = gUnknown_203B2CC->unk56;
|
||||
|
||||
gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C] = gUnknown_80DFBD0;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2CC->unk74, 1, 1);
|
||||
|
||||
MemoryFree(gUnknown_203B2CC);
|
||||
gUnknown_203B2CC = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_802B880(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0802B8D0\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x52\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl sub_80095E4\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tldr r3, [r2, 0x6C]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x82\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x6C]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x84\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x74\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"\t_0802B8D0: .4byte gUnknown_203B2CC");
|
||||
}
|
||||
|
||||
void sub_802B8D4(void)
|
||||
{
|
||||
s32 iVar2;
|
||||
s32 y;
|
||||
s32 new_index;
|
||||
u8 mailIndex;
|
||||
|
||||
|
||||
sub_8008C54(gUnknown_203B2CC->unk6C);
|
||||
sub_80073B8(gUnknown_203B2CC->unk6C);
|
||||
xxx_call_draw_string(0xA, 0, gUnknown_80DFC04, gUnknown_203B2CC->unk6C, 0);
|
||||
sub_8012BC4(((gUnknown_80DFBE8[2] << 3) + 4), 0, gUnknown_203B2CC->unk56 + 1, 2, 7, gUnknown_203B2CC->unk6C);
|
||||
for(iVar2 = 0; iVar2 < gUnknown_203B2CC->unk52; iVar2++)
|
||||
{
|
||||
y = sub_8013800(&gUnknown_203B2CC->unk38, iVar2);
|
||||
new_index = (gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + iVar2;
|
||||
mailIndex = gUnknown_203B2CC->receivedNewsletters[new_index];
|
||||
sub_803B6B0(0xA, y, 6, gUnknown_203B2CC->unk6C);
|
||||
sub_802BC7C();
|
||||
xxx_format_and_draw(0x15, y, GetPokemonMailHeadline(mailIndex), gUnknown_203B2CC->unk6C, 0);
|
||||
}
|
||||
sub_80073E0(gUnknown_203B2CC->unk6C);
|
||||
}
|
||||
|
||||
s32 GetNumPKMNNews(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 newsCount;
|
||||
|
||||
newsCount = 0;
|
||||
|
||||
for(index = 0; index < NUM_POKEMON_NEWS; index++)
|
||||
{
|
||||
if(CheckPKMNNewsSlot(index))
|
||||
{
|
||||
gUnknown_203B2CC->receivedNewsletters[newsCount] = index;
|
||||
newsCount++;
|
||||
}
|
||||
}
|
||||
return newsCount;
|
||||
}
|
||||
|
||||
bool8 HasNoPKMNNews(void)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < NUM_POKEMON_NEWS; index++)
|
||||
{
|
||||
if(CheckPKMNNewsSlot(index))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_802B9FC(u8 mailIndex)
|
||||
{
|
||||
gUnknown_203B2D4 = MemoryAlloc(sizeof(struct unkStruct_203B2D4), 8);
|
||||
gUnknown_203B2D4->currMailIndex = mailIndex;
|
||||
sub_801317C(&gUnknown_203B2D4->unk88);
|
||||
gUnknown_203B2D4->unk24 = 0;
|
||||
gUnknown_203B2D4->unk28[0] = gUnknown_80DFC34;
|
||||
gUnknown_203B2D4->unk28[1] = gUnknown_80DFC18;
|
||||
gUnknown_203B2D4->unk28[2] = gUnknown_80DFC18;
|
||||
gUnknown_203B2D4->unk28[3] = gUnknown_80DFC18;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D4->unk28, 1, 1);
|
||||
gUnknown_203B2D4->unk8 = 0;
|
||||
sub_802BCC4();
|
||||
sub_802BC7C();
|
||||
sub_802BB14(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802BA8C(void)
|
||||
{
|
||||
switch(gUnknown_203B2D4->state)
|
||||
{
|
||||
case 0:
|
||||
sub_802BB98();
|
||||
break;
|
||||
case 1:
|
||||
sub_802BC08();
|
||||
break;
|
||||
case 3:
|
||||
return 3;
|
||||
case 2:
|
||||
default:
|
||||
return 2;
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_802BACC(void)
|
||||
{
|
||||
if(gUnknown_203B2D4 != NULL)
|
||||
{
|
||||
gUnknown_203B2D4->unk28[gUnknown_203B2D4->unk24] = gUnknown_80DFC18;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D4->unk28, 1, 1);
|
||||
MemoryFree(gUnknown_203B2D4);
|
||||
gUnknown_203B2D4 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BB14(u32 newState)
|
||||
{
|
||||
gUnknown_203B2D4->state = newState;
|
||||
sub_802BB28();
|
||||
}
|
||||
|
||||
void sub_802BB28(void)
|
||||
{
|
||||
switch(gUnknown_203B2D4->state)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
sub_8008C54(gUnknown_203B2D4->unk24);
|
||||
sub_80073B8(gUnknown_203B2D4->unk24);
|
||||
xxx_format_and_draw(0xA, 0, GetPokemonMailHeadline(gUnknown_203B2D4->currMailIndex), gUnknown_203B2D4->unk24, 0);
|
||||
xxx_format_and_draw(0x6, 0x14, gUnknown_203B2D4->unk10[gUnknown_203B2D4->unk8], gUnknown_203B2D4->unk24, 0);
|
||||
sub_80073E0(gUnknown_203B2D4->unk24);
|
||||
gUnknown_203B2D4->unk8++;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BB98(void)
|
||||
{
|
||||
if(gUnknown_203B2D4->unkC != 0)
|
||||
{
|
||||
if(gUnknown_203B2D4->unk20 & 8)
|
||||
sub_8013E54();
|
||||
gUnknown_203B2D4->unk20++;
|
||||
}
|
||||
switch(sub_8012A64(&gUnknown_203B2D4->unk88, gUnknown_203B2D4->unk24))
|
||||
{
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
if(gUnknown_203B2D4->unkC != 0)
|
||||
sub_802BB14(1);
|
||||
else
|
||||
sub_802BB14(3);
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_802BB14(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BC08(void)
|
||||
{
|
||||
if(gUnknown_203B2D4->unk8 < gUnknown_203B2D4->unkC)
|
||||
{
|
||||
if(gUnknown_203B2D4->unk20 & 8)
|
||||
sub_8013E54();
|
||||
gUnknown_203B2D4->unk20++;
|
||||
}
|
||||
switch(sub_8012A64(&gUnknown_203B2D4->unk88, gUnknown_203B2D4->unk24))
|
||||
{
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
if(gUnknown_203B2D4->unk8 < gUnknown_203B2D4->unkC)
|
||||
sub_802BB14(1);
|
||||
else
|
||||
sub_802BB14(3);
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_802BB14(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BC7C(void)
|
||||
{
|
||||
PrintPokeNameToBuffer(gAvailablePokemonNames, sub_808D3BC());
|
||||
if(gGameOptionsRef->playerGender == FEMALE)
|
||||
{
|
||||
strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC4C); // She
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC50); // He
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BCC4(void)
|
||||
{
|
||||
const char *mailTextPtr;
|
||||
|
||||
mailTextPtr = GetPokemonMailText(gUnknown_203B2D4->currMailIndex);
|
||||
gUnknown_203B2D4->unkC = 0;
|
||||
gUnknown_203B2D4->unk10[0] = mailTextPtr;
|
||||
|
||||
// Count all the {EXTRA_MSG}'s
|
||||
while (*mailTextPtr != '\0') {
|
||||
if (*mailTextPtr == '#') {
|
||||
if ((mailTextPtr[1] == 'P') || (mailTextPtr[1] == 'p')) {
|
||||
gUnknown_203B2D4->unkC++;
|
||||
gUnknown_203B2D4->unk10[gUnknown_203B2D4->unkC] = mailTextPtr + 2;
|
||||
}
|
||||
mailTextPtr += 2;
|
||||
}
|
||||
else {
|
||||
mailTextPtr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802BD14(s32 param_1, struct UnkTextStruct2_sub *param_2, u32 param_3)
|
||||
{
|
||||
|
||||
if (HasNoMailinMailbox()) {
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_203B2D8 == NULL) {
|
||||
gUnknown_203B2D8 = MemoryAlloc(sizeof(struct unkStruct_203B2D8),8);
|
||||
}
|
||||
gUnknown_203B2D8->unk38 = param_1;
|
||||
gUnknown_203B2D8->unk3C = &gUnknown_203B2D8->unk40[param_1];
|
||||
sub_8006518(gUnknown_203B2D8->unk40);
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC74;
|
||||
gUnknown_203B2D8->unk3C->unk14 = gUnknown_203B2D8->unkA0;
|
||||
if (param_2 != NULL) {
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38].unk08 = *param_2;
|
||||
}
|
||||
sub_8012D34(gUnknown_203B2D8->unk3C,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40,1,1);
|
||||
sub_8013848(&gUnknown_203B2D8->unk4,CountEmptyMailSlots(),param_3,param_1);
|
||||
gUnknown_203B2D8->unk1C = gUnknown_203B2DC;
|
||||
sub_8013984(&gUnknown_203B2D8->unk4);
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802BDEC(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B2D8->unk4);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B2D8->unk4))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B2D8->unk4, 1) != 0)
|
||||
{
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_802BE74(void) {
|
||||
return gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + gUnknown_203B2D8->unk1C];
|
||||
}
|
||||
|
||||
void sub_802BE94(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40, 0, 0);
|
||||
|
||||
gUnknown_203B2D8->emptyMailSlots = CountEmptyMailSlots();
|
||||
sub_8013984(&gUnknown_203B2D8->unk4);
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
|
||||
if(r0 != 0)
|
||||
{
|
||||
AddMenuCursorSprite(&gUnknown_203B2D8->unk4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BEDC(void)
|
||||
{
|
||||
if(gUnknown_203B2D8 != NULL)
|
||||
{
|
||||
gUnknown_203B2DC = gUnknown_203B2D8->unk1C;
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC5C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40, 1, 1);
|
||||
MemoryFree(gUnknown_203B2D8);
|
||||
gUnknown_203B2D8 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_802BF30(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0802BF9C\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA2\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA3\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0x1E\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0x18\n"
|
||||
"\tbl sub_8009614\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tldr r3, [r2, 0x38]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x4E\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x38]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x50\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x40\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0802BF9C: .4byte gUnknown_203B2D8"
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#include "constants/input.h"
|
||||
#include "global.h"
|
||||
#include "constants/mailbox.h"
|
||||
#include "input.h"
|
||||
|
|
@ -10,7 +11,7 @@
|
|||
struct unkStruct_203B2E8
|
||||
{
|
||||
// size: 0xA8
|
||||
u8 unk0[MAX_ACCEPTED_JOBS];
|
||||
u8 pelipperBoardSlots[MAX_ACCEPTED_JOBS];
|
||||
u32 unk8;
|
||||
u8 fillC[0x20 - 0xC];
|
||||
s16 unk20;
|
||||
|
|
@ -18,7 +19,7 @@ struct unkStruct_203B2E8
|
|||
s16 unk24;
|
||||
s16 unk26;
|
||||
u16 unk28;
|
||||
u16 unk2A;
|
||||
u16 acceptedJobs;
|
||||
u16 unk2C;
|
||||
u8 fill2E[0x3C - 0x2E];
|
||||
u32 unk3C;
|
||||
|
|
@ -37,7 +38,7 @@ struct unkStruct_203B2F0
|
|||
u8 fillD[0x10 - 0xD];
|
||||
u32 unk10;
|
||||
u8 fill14[0x68 - 0x14];
|
||||
u32 unk68;
|
||||
u32 menuAction;
|
||||
struct MenuStruct unk6C;
|
||||
struct MenuStruct unkBC;
|
||||
struct MenuItem unk10C[8];
|
||||
|
|
@ -142,11 +143,11 @@ extern struct WonderMail* GetJobSlotInfo(u8);
|
|||
extern s32 sub_8013800(void *, u32);
|
||||
extern void sub_803B35C(void *, u32 *);
|
||||
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
|
||||
extern void CreateRescueTitle(void *);
|
||||
extern void CreateRescueTitle(struct unkStruct_802C39C *);
|
||||
|
||||
extern void sub_8013984(u32 *);
|
||||
extern void sub_802C6DC(void);
|
||||
extern void sub_802C750(void);
|
||||
extern void DrawJobListMenu(void);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern s32 GetKeyPress(void *);
|
||||
|
|
@ -154,7 +155,7 @@ extern void PlayMenuSoundEffect(u32);
|
|||
extern void sub_8013660(void *);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
extern bool8 IsPelipperBoardSlotEmpty(u8);
|
||||
extern void sub_802C910(u32);
|
||||
extern void SetJobListState(u32);
|
||||
extern void sub_802CC00(void);
|
||||
extern void sub_802CC70(void);
|
||||
extern void sub_802CD38(void);
|
||||
|
|
@ -167,7 +168,7 @@ extern void sub_802CBAC(void);
|
|||
s32 CountAcceptedJobs(void);
|
||||
bool8 HasNoAcceptedJobs(void);
|
||||
|
||||
s32 sub_802C474(void)
|
||||
s32 CountPelipperBoardSlots(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 counter = 0;
|
||||
|
|
@ -175,14 +176,14 @@ s32 sub_802C474(void)
|
|||
{
|
||||
if(!IsPelipperBoardSlotEmpty(index))
|
||||
{
|
||||
gUnknown_203B2E0->unk0[counter] = index;
|
||||
gUnknown_203B2E0->pelipperBoardSlots[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
return counter;
|
||||
}
|
||||
|
||||
bool8 sub_802C4A4(void)
|
||||
bool8 HasNoPelipperBoardJobs(void)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
|
|
@ -218,7 +219,7 @@ bool8 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3)
|
|||
gUnknown_203B2E8->unk20 = gUnknown_203B2EC;
|
||||
sub_8013984(&gUnknown_203B2E8->unk8);
|
||||
sub_802C6DC();
|
||||
sub_802C750();
|
||||
DrawJobListMenu();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -232,20 +233,19 @@ u32 sub_802C598(u8 param_1)
|
|||
else {
|
||||
switch(GetKeyPress(&gUnknown_203B2E8->unk8))
|
||||
{
|
||||
case 2:
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
case INPUT_A_BUTTON:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case 4:
|
||||
case INPUT_START_BUTTON:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
break;
|
||||
}
|
||||
if (sub_80138B8(&gUnknown_203B2E8->unk8, 1) != '\0') {
|
||||
sub_802C6DC();
|
||||
sub_802C750();
|
||||
DrawJobListMenu();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
|
|
@ -254,19 +254,19 @@ u32 sub_802C598(u8 param_1)
|
|||
}
|
||||
}
|
||||
|
||||
u8 sub_802C620(void)
|
||||
u8 GetPelipperBoardSlotIndex(void)
|
||||
{
|
||||
return gUnknown_203B2E8->unk0[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + gUnknown_203B2E8->unk20];
|
||||
return gUnknown_203B2E8->pelipperBoardSlots[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + gUnknown_203B2E8->unk20];
|
||||
}
|
||||
|
||||
void sub_802C640(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E8->unk44, 0, 0);
|
||||
gUnknown_203B2E8->unk2A = CountAcceptedJobs();
|
||||
gUnknown_203B2E8->acceptedJobs = CountAcceptedJobs();
|
||||
sub_8013984(&gUnknown_203B2E8->unk8);
|
||||
sub_802C6DC();
|
||||
sub_802C750();
|
||||
DrawJobListMenu();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B2E8->unk8);
|
||||
}
|
||||
|
|
@ -344,7 +344,7 @@ void sub_802C6DC(void)
|
|||
|
||||
}
|
||||
|
||||
void sub_802C750(void)
|
||||
void DrawJobListMenu(void)
|
||||
{
|
||||
struct WonderMail *mail;
|
||||
int index;
|
||||
|
|
@ -366,7 +366,7 @@ void sub_802C750(void)
|
|||
if(( index < gUnknown_203B2E8->unk22))
|
||||
do
|
||||
{
|
||||
mail = GetJobSlotInfo(gUnknown_203B2E8->unk0[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + index]);
|
||||
mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + index]);
|
||||
local.unk0[0] = gUnknown_203B2E8->unk3C;
|
||||
local.y = sub_8013800(&gUnknown_203B2E8->unk8,index);
|
||||
sub_803B35C(mail,local.unk0);
|
||||
|
|
@ -384,7 +384,7 @@ s32 CountAcceptedJobs(void)
|
|||
{
|
||||
if(!IsJobSlotEmpty(index))
|
||||
{
|
||||
gUnknown_203B2E8->unk0[counter] = index;
|
||||
gUnknown_203B2E8->pelipperBoardSlots[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
|
@ -402,7 +402,7 @@ bool8 HasNoAcceptedJobs(void)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_802C860(u32 r0)
|
||||
bool8 InitializeJobListMenu(u32 r0)
|
||||
{
|
||||
if(HasNoAcceptedJobs())
|
||||
{
|
||||
|
|
@ -411,9 +411,9 @@ bool8 sub_802C860(u32 r0)
|
|||
else
|
||||
{
|
||||
gUnknown_203B2F0 = MemoryAlloc(sizeof(struct unkStruct_203B2F0), 0x8);
|
||||
gUnknown_203B2F0->unk68 = 0;
|
||||
gUnknown_203B2F0->menuAction = 0;
|
||||
gUnknown_203B2F0->unk0 = r0;
|
||||
sub_802C910(0);
|
||||
SetJobListState(0);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -451,7 +451,7 @@ void sub_802C8F4(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_802C910(u32 newState)
|
||||
void SetJobListState(u32 newState)
|
||||
{
|
||||
gUnknown_203B2F0->state = newState;
|
||||
sub_802C928();
|
||||
|
|
@ -494,12 +494,12 @@ void sub_802C9D8(void)
|
|||
sub_802C640(1);
|
||||
break;
|
||||
case 2:
|
||||
sub_802C750();
|
||||
sub_8012D60(&gUnknown_203B2F0->unk6C, gUnknown_203B2F0->unk10C, 0, 0, gUnknown_203B2F0->unk68, 2);
|
||||
DrawJobListMenu();
|
||||
sub_8012D60(&gUnknown_203B2F0->unk6C, gUnknown_203B2F0->unk10C, 0, 0, gUnknown_203B2F0->menuAction, 2);
|
||||
break;
|
||||
case 3:
|
||||
sub_802CBAC();
|
||||
sub_802C750();
|
||||
DrawJobListMenu();
|
||||
sub_8012EA4(&gUnknown_203B2F0->unk6C, 0);
|
||||
sub_8012D60(&gUnknown_203B2F0->unkBC, gUnknown_203B2F0->unk14C, 0, 0, 6, 3);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -13,15 +13,15 @@
|
|||
bool8 IsMailSlotEmpty(u8);
|
||||
extern void sub_8013984(void *);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
extern s32 sub_802C474(void);
|
||||
extern s32 CountPelipperBoardSlots(void);
|
||||
extern void sub_802C328(void);
|
||||
extern void sub_802C39C(void);
|
||||
extern void DrawPelipperBoardJobMenu(void);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013660(u32 *);
|
||||
extern s32 GetKeyPress(u32 *);
|
||||
extern bool8 sub_80138B8(u32 *, u32);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern u8 sub_802C4A4(void);
|
||||
extern u8 HasNoPelipperBoardJobs(void);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
|
|
@ -31,7 +31,7 @@ extern struct WonderMail *GetPelipperBoardSlotInfo(u32);
|
|||
extern void sub_803B35C(struct WonderMail *, u32 *);
|
||||
extern u8 gBulletinBoardText[];
|
||||
extern bool8 IsMailinJobSlot(struct WonderMail *);
|
||||
extern void CreateRescueTitle(void *);
|
||||
extern void CreateRescueTitle(struct unkStruct_802C39C *);
|
||||
extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32);
|
||||
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ struct unkStruct_203B2E0
|
|||
s16 unk24;
|
||||
s16 unk26;
|
||||
s16 unk28;
|
||||
s16 unk2A;
|
||||
s16 pelipperBoardSlots;
|
||||
u8 fill22[0x3C - 0x2C];
|
||||
s32 unk3C;
|
||||
struct UnkTextStruct2 *unk40;
|
||||
|
|
@ -83,7 +83,6 @@ extern struct UnkTextStruct2 gUnknown_80DFC9C;
|
|||
extern u16 gUnknown_203B2E4;
|
||||
|
||||
extern struct WonderMail *GetMailboxSlotInfo(u8);
|
||||
extern void CreateRescueTitle(void *);
|
||||
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
|
||||
extern u8 gMailboxText[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
|
|
@ -158,7 +157,7 @@ bool8 HasNoMailinMailbox(void)
|
|||
|
||||
bool8 sub_802C10C(s32 param_1,struct UnkTextStruct2_sub *param_2,s32 param_3)
|
||||
{
|
||||
if (sub_802C4A4() != 0) {
|
||||
if (HasNoPelipperBoardJobs() != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
|
|
@ -178,11 +177,11 @@ bool8 sub_802C10C(s32 param_1,struct UnkTextStruct2_sub *param_2,s32 param_3)
|
|||
sub_8012D34(gUnknown_203B2E0->unk40,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E0->unk44,1,1);
|
||||
sub_8013848(&gUnknown_203B2E0->unk8,sub_802C474(),param_3,param_1);
|
||||
sub_8013848(&gUnknown_203B2E0->unk8,CountPelipperBoardSlots(),param_3,param_1);
|
||||
gUnknown_203B2E0->unk20 = gUnknown_203B2E4;
|
||||
sub_8013984(&gUnknown_203B2E0->unk8);
|
||||
sub_802C328();
|
||||
sub_802C39C();
|
||||
DrawPelipperBoardJobMenu();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -208,7 +207,7 @@ u32 sub_802C1E4(u8 param_1)
|
|||
default:
|
||||
if (sub_80138B8(&gUnknown_203B2E0->unk8,1)) {
|
||||
sub_802C328();
|
||||
sub_802C39C();
|
||||
DrawPelipperBoardJobMenu();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
|
|
@ -227,10 +226,10 @@ void sub_802C28C(u8 r0)
|
|||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E0->unk44, 0, 0);
|
||||
gUnknown_203B2E0->unk2A = sub_802C474();
|
||||
gUnknown_203B2E0->pelipperBoardSlots = CountPelipperBoardSlots();
|
||||
sub_8013984(&gUnknown_203B2E0->unk8);
|
||||
sub_802C328();
|
||||
sub_802C39C();
|
||||
DrawPelipperBoardJobMenu();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B2E0->unk8);
|
||||
}
|
||||
|
|
@ -308,7 +307,7 @@ void sub_802C328(void)
|
|||
"_0802C398: .4byte gUnknown_203B2E0");
|
||||
}
|
||||
|
||||
void sub_802C39C(void)
|
||||
void DrawPelipperBoardJobMenu(void)
|
||||
{
|
||||
u32 slotIndex;
|
||||
struct WonderMail *mail;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "code_802C39C.h"
|
||||
#include "menu_input.h"
|
||||
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFDD4 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
|
@ -89,7 +90,7 @@ ALIGNED(4) const u8 gUnknown_80E0010[] =
|
|||
"a dungeon with a mission in progress.\n"
|
||||
"Mail cannot be deleted now.";
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E0074[] = _(
|
||||
ALIGNED(4) const u8 gReceivedWonderMail[] = _(
|
||||
"Received the {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1}!");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E0094[] = _(
|
||||
|
|
@ -118,7 +119,7 @@ extern void sub_802D940();
|
|||
extern void sub_802D9F0();
|
||||
extern void sub_802DA60();
|
||||
extern void sub_802D82C();
|
||||
extern void sub_802DA84();
|
||||
extern void AdvancetoFallbackWonderMailRescueState();
|
||||
extern void sub_802D1B8();
|
||||
extern void sub_802D2A8();
|
||||
|
||||
|
|
@ -129,8 +130,7 @@ extern u8 sub_802DAA8(void);
|
|||
extern u8 sub_802DADC(void);
|
||||
extern u8 *sub_8096DD8(void);
|
||||
extern u8 sub_8096C08(u8 *);
|
||||
extern void sub_802C750(void);
|
||||
extern void sub_802D1A0(u32);
|
||||
extern void DrawJobListMenu(void);
|
||||
extern struct WonderMail* GetJobSlotInfo(u8);
|
||||
extern void sub_803B35C(void *, u32*);
|
||||
extern void sub_802DE84(u32 *);
|
||||
|
|
@ -143,14 +143,14 @@ extern void sub_8096C80(void);
|
|||
extern void sub_8096D24(void);
|
||||
extern void sub_80141B4(const u8 *, u32, u32, u32);
|
||||
extern u8 *sub_8096DE8(void);
|
||||
extern void sub_8096A78(struct unkSubStruct_203B2F8 *);
|
||||
extern void AcceptJob(struct unkSubStruct_203B2F8 *);
|
||||
extern void sub_8014248(const char *text, u32, u32, struct MenuItem *r0, u32, u32, u32, u32, u32);
|
||||
struct unkStruct_803B344 *sub_803B344(u8);
|
||||
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueTitle(void *);
|
||||
extern void CreateRescueTitle(struct unkStruct_802C39C *);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern u8 gUnknown_80DFDBC[];
|
||||
|
||||
|
|
@ -188,32 +188,32 @@ void sub_802CFD0(void)
|
|||
sub_80073E0(gUnknown_203B2F4->unk34);
|
||||
}
|
||||
|
||||
u32 sub_802D098(struct unkSubStruct_203B2F8 *param_1)
|
||||
u32 sub_802D098(struct unkSubStruct_203B2F8 *mail)
|
||||
{
|
||||
gUnknown_203B2F8 = MemoryAlloc(0x208,8);
|
||||
gUnknown_203B2F8->unk6C = 0;
|
||||
gUnknown_203B2F8->unk70 = 0;
|
||||
gUnknown_203B2F8->unk74 = 0;
|
||||
gUnknown_203B2F8->unkC = param_1;
|
||||
gUnknown_203B2F8->mail = mail;
|
||||
gUnknown_203B2F8->wonderMailAccepted = FALSE;
|
||||
gUnknown_203B2F8->unk9 = sub_8099328(&gUnknown_203B2F8->dungeonID);
|
||||
if (sub_8011C1C() != 2) {
|
||||
gUnknown_203B2F8->unk9 = FALSE;
|
||||
}
|
||||
sub_802D1A0(0);
|
||||
sub_802D1A0(INITIAL_WONDER_MAIL_CHECK);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802D0E0(void)
|
||||
{
|
||||
switch(gUnknown_203B2F8->state) {
|
||||
case 0:
|
||||
case INITIAL_WONDER_MAIL_CHECK:
|
||||
break;
|
||||
case 1:
|
||||
sub_802D7D0();
|
||||
break;
|
||||
case 0xb:
|
||||
case 0xc:
|
||||
case DRAW_JOB_LIST:
|
||||
case DRAW_JOB_LIST_1:
|
||||
sub_802D8CC();
|
||||
break;
|
||||
case 0xd:
|
||||
|
|
@ -229,10 +229,10 @@ u32 sub_802D0E0(void)
|
|||
case 9:
|
||||
sub_802D82C();
|
||||
break;
|
||||
case 2:
|
||||
case WONDER_MAIL_EXIT:
|
||||
return 3;
|
||||
default:
|
||||
sub_802DA84();
|
||||
AdvancetoFallbackWonderMailRescueState();
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -261,7 +261,7 @@ void sub_802D1A0(u32 newState)
|
|||
|
||||
void sub_802D1B8(void)
|
||||
{
|
||||
s32 iVar2;
|
||||
s32 index;
|
||||
sub_8006518(gUnknown_203B2F8->unk1A8);
|
||||
switch(gUnknown_203B2F8->state)
|
||||
{
|
||||
|
|
@ -278,12 +278,12 @@ void sub_802D1B8(void)
|
|||
gUnknown_203B2F8->unk1A8[3].unkC = 6;
|
||||
break;
|
||||
default:
|
||||
for(iVar2 = 0; iVar2 < 4; iVar2++)
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B2F8->unk1A8[iVar2] = gUnknown_80DFDD4;
|
||||
gUnknown_203B2F8->unk1A8[index] = gUnknown_80DFDD4;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case WONDER_MAIL_EXIT:
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
|
|
@ -294,14 +294,14 @@ void sub_802D2A8(void)
|
|||
{
|
||||
|
||||
switch(gUnknown_203B2F8->state) {
|
||||
case 0:
|
||||
if (IsMailinJobSlot(&gUnknown_203B2F8->unkC->wonderMail)) {
|
||||
sub_802D1A0(3);
|
||||
case INITIAL_WONDER_MAIL_CHECK:
|
||||
if (IsMailinJobSlot(&gUnknown_203B2F8->mail->wonderMail)) {
|
||||
sub_802D1A0(DUPLICATE_WONDER_MAIL);
|
||||
}
|
||||
else if (sub_8096F50(&gUnknown_203B2F8->unkC->wonderMail) != 0) {
|
||||
sub_802D1A0(4);
|
||||
else if (sub_8096F50(&gUnknown_203B2F8->mail->wonderMail) != 0) {
|
||||
sub_802D1A0(DUPLICATE_WONDER_MAIL_1);
|
||||
}
|
||||
else if ((gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) && (sub_8096C08(&gUnknown_203B2F8->jobSlotIndex) != 0)) {
|
||||
else if ((gUnknown_203B2F8->mail->wonderMail.unk2 == 4) && (sub_8096C08(&gUnknown_203B2F8->jobSlotIndex) != 0)) {
|
||||
if (sub_802DAA8() != 0) {
|
||||
sub_802D1A0(9);
|
||||
}
|
||||
|
|
@ -311,49 +311,49 @@ void sub_802D2A8(void)
|
|||
}
|
||||
else if (GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS) {
|
||||
if (sub_802DADC() != 0) {
|
||||
sub_802D1A0(10);
|
||||
sub_802D1A0(JOB_LIST_FULL);
|
||||
}
|
||||
else {
|
||||
sub_802D1A0(6);
|
||||
}
|
||||
}
|
||||
else
|
||||
sub_802D1A0(8);
|
||||
sub_802D1A0(RECEIVE_WONDER_MAIL);
|
||||
break;
|
||||
case 1:
|
||||
sub_802D73C();
|
||||
sub_8014248(gUnknown_80DFE4C,0,gUnknown_203B2F8->unk70,gUnknown_203B2F8->unk158,0,4,0,0,0);
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
case DUPLICATE_WONDER_MAIL:
|
||||
gUnknown_203B2F8->fallbackState = WONDER_MAIL_EXIT;
|
||||
sub_80141B4(gUnknown_80DFE9C,0,0,0x101);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
case DUPLICATE_WONDER_MAIL_1:
|
||||
gUnknown_203B2F8->fallbackState = WONDER_MAIL_EXIT;
|
||||
sub_80141B4(gUnknown_80DFED0,0,0,0x101);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
gUnknown_203B2F8->fallbackState = WONDER_MAIL_EXIT;
|
||||
sub_80141B4(gUnknown_80DFF2C,0,0,0x101);
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
gUnknown_203B2F8->fallbackState = WONDER_MAIL_EXIT;
|
||||
sub_80141B4(gUnknown_80DFFA4,0,0,0x101);
|
||||
break;
|
||||
case 7:
|
||||
gUnknown_203B2F8->fallbackState = 0xc;
|
||||
gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1;
|
||||
sub_80141B4(gUnknown_80E0010,0,0,0x101);
|
||||
break;
|
||||
case 8:
|
||||
case RECEIVE_WONDER_MAIL:
|
||||
gUnknown_203B2F8->wonderMailAccepted = TRUE;
|
||||
sub_8096A78(gUnknown_203B2F8->unkC);
|
||||
AcceptJob(gUnknown_203B2F8->mail);
|
||||
sub_8096C80();
|
||||
sub_8096D24();
|
||||
if (gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) {
|
||||
MemoryCopy8(sub_8096DD8(),gUnknown_203B2F8->unkC->unk14,0x28);
|
||||
MemoryCopy8(sub_8096DE8(),gUnknown_203B2F8->unkC->unk18,0x78);
|
||||
if (gUnknown_203B2F8->mail->wonderMail.unk2 == 4) {
|
||||
MemoryCopy8(sub_8096DD8(),gUnknown_203B2F8->mail->unk14,0x28);
|
||||
MemoryCopy8(sub_8096DE8(),gUnknown_203B2F8->mail->unk18,0x78);
|
||||
}
|
||||
switch(gUnknown_203B2F8->unkC->wonderMail.dungeon.id)
|
||||
switch(gUnknown_203B2F8->mail->wonderMail.dungeon.id)
|
||||
{
|
||||
// NOTE: subtract 1 from each of the case as the input??
|
||||
case DUNGEON_ODDITY_CAVE: // 0x2B
|
||||
|
|
@ -369,30 +369,30 @@ void sub_802D2A8(void)
|
|||
sub_8097418(0x2D, 1);
|
||||
break;
|
||||
}
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80E0074,0,0,0x101);
|
||||
gUnknown_203B2F8->fallbackState = WONDER_MAIL_EXIT;
|
||||
sub_80141B4(gReceivedWonderMail,0,0,0x101);
|
||||
break;
|
||||
case 9:
|
||||
sub_802D690();
|
||||
sub_8014248(gUnknown_80E0094,0,gUnknown_203B2F8->unk74,gUnknown_203B2F8->unk158,0,4,0,0,0);
|
||||
break;
|
||||
case 10:
|
||||
gUnknown_203B2F8->fallbackState = 0xb;
|
||||
case JOB_LIST_FULL:
|
||||
gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST;
|
||||
sub_80141B4(gUnknown_80E0108,0,0,0x101);
|
||||
break;
|
||||
case 0xb:
|
||||
case DRAW_JOB_LIST:
|
||||
sub_802C4C8(0,0,4);
|
||||
break;
|
||||
case 0xc:
|
||||
case DRAW_JOB_LIST_1:
|
||||
sub_802C640(1);
|
||||
break;
|
||||
case 0xd:
|
||||
sub_802C750();
|
||||
DrawJobListMenu();
|
||||
sub_8012D60(&gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198,
|
||||
gUnknown_203B2F8->unk6C,2);
|
||||
break;
|
||||
case 0xe:
|
||||
sub_802C750();
|
||||
DrawJobListMenu();
|
||||
sub_8012EA4(&gUnknown_203B2F8->unk78,0);
|
||||
sub_8012D60(&gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
|
||||
break;
|
||||
|
|
@ -402,10 +402,10 @@ void sub_802D2A8(void)
|
|||
sub_802DE84(&gUnknown_203B2F8->unk14);
|
||||
break;
|
||||
case 0x10:
|
||||
sub_803B35C(gUnknown_203B2F8->unkC,&gUnknown_203B2F8->unk14);
|
||||
sub_803B35C(gUnknown_203B2F8->mail,&gUnknown_203B2F8->unk14);
|
||||
gUnknown_203B2F8->unk14 = 3;
|
||||
gUnknown_203B2F8->unk58 = 0;
|
||||
gUnknown_203B2F8->unk64 = gUnknown_203B2F8->unkC->unk18;
|
||||
gUnknown_203B2F8->unk64 = gUnknown_203B2F8->mail->unk18;
|
||||
sub_802DE84(&gUnknown_203B2F8->unk14);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "friend_area.h"
|
||||
#include "item.h"
|
||||
#include "menu_input.h"
|
||||
#include "code_802C39C.h"
|
||||
|
||||
struct unkStruct_803B344
|
||||
{
|
||||
|
|
@ -28,13 +29,7 @@ struct unkStruct_203B30C
|
|||
// size: 0x150
|
||||
s32 state;
|
||||
u8 unk4;
|
||||
u8 unk5[3];
|
||||
u32 unk8;
|
||||
u8 fillC[0x4C - 0xC];
|
||||
u8 unk4C;
|
||||
u8 fill4D[0x58 - 0x4D];
|
||||
u8 *unk58;
|
||||
u32 unk5C;
|
||||
struct unkStruct_802C39C unk8;
|
||||
struct MenuStruct unk60;
|
||||
struct MenuItem unkB0[8];
|
||||
struct UnkTextStruct2 unkF0[4];
|
||||
|
|
@ -48,8 +43,6 @@ struct unkStruct_203B310
|
|||
/* 0x4 */ u32 nextState;
|
||||
/* 0x8 */ bool8 displayClientDialogueSprite; // true to display the dialogue sprite for the client
|
||||
/* 0x9 */ u8 currTeamRank; // team rank
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
/* 0xC */ s32 itemRewardIndex;
|
||||
struct unkStruct_802F204 *unk10;
|
||||
/* 0x14 */ struct OpenedFile *faceFile;
|
||||
|
|
@ -98,6 +91,20 @@ struct unkStruct_203B314
|
|||
|
||||
extern struct unkStruct_203B314 *gUnknown_203B314;
|
||||
|
||||
|
||||
enum FriendRewardStates {
|
||||
PREP_MONEY_REWARD = 0,
|
||||
MONEY_REWARD = 1,
|
||||
PREP_FRIEND_AREA_REWARD = 2,
|
||||
UNLOCK_FRIEND_AREA = 3,
|
||||
PREP_ITEM_REWARD = 4,
|
||||
GIVE_ITEM_REWARD = 5,
|
||||
NEXT_ITEM = 6,
|
||||
TEAM_PNTS_REWARD = 7,
|
||||
NEW_TEAM_RANK = 8,
|
||||
REWARD_EXIT = 9,
|
||||
};
|
||||
|
||||
extern u8 sub_802FCF0(u32);
|
||||
extern void sub_802F9C0(void);
|
||||
extern void sub_802FA50(void);
|
||||
|
|
@ -107,7 +114,7 @@ extern void sub_8013878(u32 *, s32);
|
|||
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern void sub_8013984(u32 *);
|
||||
extern void sub_802F2E8(u32);
|
||||
extern void SetRewardSceneState(u32);
|
||||
extern void sub_802EFEC(u32);
|
||||
extern void sub_802F148(void);
|
||||
extern void sub_802F184(void);
|
||||
|
|
@ -118,8 +125,8 @@ extern void sub_801B72C(void);
|
|||
extern u32 sub_801B6AC(void);
|
||||
extern void sub_802F108(void);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_803B35C(struct WonderMail*, u32 *);
|
||||
extern void sub_802DE84(u32 *);
|
||||
extern void sub_803B35C(struct WonderMail*, struct unkStruct_802C39C *);
|
||||
extern void sub_802DE84(struct unkStruct_802C39C *);
|
||||
extern void sub_802CDD4(u32);
|
||||
extern void sub_802CED8(u32);
|
||||
extern void sub_802CFD0(void);
|
||||
|
|
@ -131,7 +138,7 @@ extern void sub_802DF24(void);
|
|||
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
|
||||
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
|
||||
extern void sub_802F6FC(void);
|
||||
extern void sub_802F718(void);
|
||||
extern void ProceedToNextRewardSceneState(void);
|
||||
extern u8 sub_80138B8(u32 *, u32);
|
||||
extern void sub_8013660(u32 *);
|
||||
extern u32 GetKeyPress(u32 *);
|
||||
|
|
@ -322,7 +329,7 @@ void sub_802EFEC(u32 newState)
|
|||
|
||||
void sub_802F004(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
s32 index;
|
||||
|
||||
sub_8006518(gUnknown_203B30C->unkF0);
|
||||
switch(gUnknown_203B30C->state)
|
||||
|
|
@ -333,9 +340,9 @@ void sub_802F004(void)
|
|||
sub_8012CAC(&gUnknown_203B30C->unkF0[2], gUnknown_203B30C->unkB0);
|
||||
break;
|
||||
default:
|
||||
for(iVar3 = 0; iVar3 < 4; iVar3++)
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B30C->unkF0[iVar3] = gUnknown_80E03C4;
|
||||
gUnknown_203B30C->unkF0[index] = gUnknown_80E03C4;
|
||||
}
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
|
|
@ -361,9 +368,9 @@ void sub_802F088(void)
|
|||
case 3:
|
||||
temp = sub_803B344(gUnknown_203B30C->unk4);
|
||||
sub_803B35C(&temp->mail, &gUnknown_203B30C->unk8);
|
||||
gUnknown_203B30C->unk8 = 3;
|
||||
gUnknown_203B30C->unk4C = 0;
|
||||
gUnknown_203B30C->unk58 = temp->unk18;
|
||||
gUnknown_203B30C->unk8.unk0[0] = 3;
|
||||
gUnknown_203B30C->unk8.unk44 = 0;
|
||||
gUnknown_203B30C->unk8.unk50[0] = temp->unk18;
|
||||
sub_802DE84(&gUnknown_203B30C->unk8);
|
||||
}
|
||||
}
|
||||
|
|
@ -446,7 +453,7 @@ void sub_802F1E8(void)
|
|||
|
||||
|
||||
|
||||
u32 sub_802F204(struct unkStruct_802F204 *r0, bool8 r1)
|
||||
u32 sub_802F204(struct unkStruct_802F204 *r0, bool8 displayClientSprite)
|
||||
{
|
||||
struct unkStruct_203B310 *preload;
|
||||
|
||||
|
|
@ -455,7 +462,7 @@ u32 sub_802F204(struct unkStruct_802F204 *r0, bool8 r1)
|
|||
gUnknown_203B310 = MemoryAlloc(sizeof(struct unkStruct_203B310), 8);
|
||||
gUnknown_203B310->unk10 = r0;
|
||||
gUnknown_203B310->itemRewardIndex = 0;
|
||||
gUnknown_203B310->displayClientDialogueSprite = r1;
|
||||
gUnknown_203B310->displayClientDialogueSprite = displayClientSprite;
|
||||
|
||||
// NOTE: dumb var to get correct ordering
|
||||
preload = gUnknown_203B310;
|
||||
|
|
@ -476,7 +483,7 @@ u32 sub_802F204(struct unkStruct_802F204 *r0, bool8 r1)
|
|||
gUnknown_203B310->faceData = gUnknown_203B310->faceFile->data;
|
||||
}
|
||||
|
||||
sub_802F2E8(0);
|
||||
SetRewardSceneState(PREP_MONEY_REWARD);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -484,13 +491,13 @@ u32 sub_802F298(void)
|
|||
{
|
||||
switch(gUnknown_203B310->state)
|
||||
{
|
||||
case 9:
|
||||
case REWARD_EXIT:
|
||||
return 3;
|
||||
case 5:
|
||||
case GIVE_ITEM_REWARD:
|
||||
sub_802F6FC();
|
||||
return 0;
|
||||
default:
|
||||
sub_802F718();
|
||||
ProceedToNextRewardSceneState();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -506,7 +513,7 @@ void sub_802F2C0(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_802F2E8(u32 newState)
|
||||
void SetRewardSceneState(u32 newState)
|
||||
{
|
||||
gUnknown_203B310->state = newState;
|
||||
sub_802F300();
|
||||
|
|
@ -515,14 +522,14 @@ void sub_802F2E8(u32 newState)
|
|||
|
||||
void sub_802F300(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
s32 index;
|
||||
switch(gUnknown_203B310->state)
|
||||
{
|
||||
case 0:
|
||||
case PREP_MONEY_REWARD:
|
||||
sub_8006518(gUnknown_203B310->unk24);
|
||||
for(iVar3 = 0; iVar3 < 4; iVar3++)
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B310->unk24[iVar3] = gUnknown_80E041C;
|
||||
gUnknown_203B310->unk24[index] = gUnknown_80E041C;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B310->unk24, 1, 1);
|
||||
|
|
@ -540,24 +547,23 @@ void HandleMissionReward(void)
|
|||
struct Item item;
|
||||
|
||||
switch(gUnknown_203B310->state) {
|
||||
case 0:
|
||||
// Reward intro..
|
||||
case PREP_MONEY_REWARD:
|
||||
moneyReward = gUnknown_203B310->unk10->moneyReward;
|
||||
if (moneyReward == 0) {
|
||||
sub_802F2E8(2);
|
||||
SetRewardSceneState(PREP_FRIEND_AREA_REWARD);
|
||||
}
|
||||
else {
|
||||
gUnknown_202DE30 = moneyReward;
|
||||
if (gUnknown_203B310->displayClientDialogueSprite) {
|
||||
sub_80141B4(gUnknown_80E0434,0,&gUnknown_203B310->faceFile,0x10d);
|
||||
gUnknown_203B310->nextState = 1;
|
||||
gUnknown_203B310->nextState = MONEY_REWARD;
|
||||
}
|
||||
else {
|
||||
sub_802F2E8(1);
|
||||
SetRewardSceneState(MONEY_REWARD);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case MONEY_REWARD:
|
||||
PlaySound(0xcb);
|
||||
AddToTeamMoney(gUnknown_203B310->unk10->moneyReward);
|
||||
if (sub_808D544(0) < 2) {
|
||||
|
|
@ -566,26 +572,24 @@ void HandleMissionReward(void)
|
|||
else {
|
||||
sub_80141B4(gUnknown_80E0484,0,0,0x101);
|
||||
}
|
||||
gUnknown_203B310->nextState = 2;
|
||||
gUnknown_203B310->nextState = PREP_FRIEND_AREA_REWARD;
|
||||
break;
|
||||
case 2:
|
||||
if (gUnknown_203B310->unk10->friendAreaReward == '\0') {
|
||||
// No friend area reward.. go to item reward
|
||||
sub_802F2E8(4);
|
||||
case PREP_FRIEND_AREA_REWARD:
|
||||
if (gUnknown_203B310->unk10->friendAreaReward == 0) {
|
||||
SetRewardSceneState(PREP_ITEM_REWARD);
|
||||
}
|
||||
else {
|
||||
sub_8092578(gUnknown_202E628,gUnknown_203B310->unk10->friendAreaReward,0);
|
||||
if (gUnknown_203B310->displayClientDialogueSprite) {
|
||||
sub_80141B4(gUnknown_80E04B4,0,&gUnknown_203B310->faceFile,0x10d);
|
||||
gUnknown_203B310->nextState = 3;
|
||||
gUnknown_203B310->nextState = UNLOCK_FRIEND_AREA;
|
||||
}
|
||||
else {
|
||||
sub_802F2E8(3);
|
||||
SetRewardSceneState(UNLOCK_FRIEND_AREA);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
// Friend area reward
|
||||
case UNLOCK_FRIEND_AREA:
|
||||
if (GetFriendAreaStatus(gUnknown_203B310->unk10->friendAreaReward)) {
|
||||
// We already have the friend area
|
||||
AddToTeamMoney(1000);
|
||||
|
|
@ -605,9 +609,9 @@ void HandleMissionReward(void)
|
|||
sub_80141B4(gUnknown_80E05FC,0,0,0x101);
|
||||
}
|
||||
}
|
||||
gUnknown_203B310->nextState = 4;
|
||||
gUnknown_203B310->nextState = PREP_ITEM_REWARD;
|
||||
break;
|
||||
case 4:
|
||||
case PREP_ITEM_REWARD:
|
||||
itemID = gUnknown_203B310->unk10->itemRewards[0];
|
||||
if (itemID != ITEM_NOTHING)
|
||||
{
|
||||
|
|
@ -626,26 +630,24 @@ void HandleMissionReward(void)
|
|||
sub_8090E14(gUnknown_202DEA8,&item,&local_20);
|
||||
if (gUnknown_203B310->displayClientDialogueSprite) {
|
||||
sub_80141B4(gUnknown_80E0640,0,&gUnknown_203B310->faceFile,0x10d);
|
||||
gUnknown_203B310->nextState = 5;
|
||||
gUnknown_203B310->nextState = GIVE_ITEM_REWARD;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_802F2E8(5);
|
||||
SetRewardSceneState(GIVE_ITEM_REWARD);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_802F2E8(5);
|
||||
SetRewardSceneState(GIVE_ITEM_REWARD);
|
||||
}
|
||||
}
|
||||
else
|
||||
sub_802F2E8(7);
|
||||
SetRewardSceneState(TEAM_PNTS_REWARD);
|
||||
break;
|
||||
case 5:
|
||||
// Item reward
|
||||
case GIVE_ITEM_REWARD:
|
||||
if ((gUnknown_203B310->unk10->itemRewards[gUnknown_203B310->itemRewardIndex]) == 0) {
|
||||
// No item in this reward slot
|
||||
sub_802F2E8(6);
|
||||
SetRewardSceneState(NEXT_ITEM);
|
||||
}
|
||||
else {
|
||||
if ((gUnknown_203B310->itemRewardIndex == 0) && (gUnknown_203B310->unk10->moneyReward == 0)) {
|
||||
|
|
@ -656,47 +658,41 @@ void HandleMissionReward(void)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
// Increase item reward slot index
|
||||
case NEXT_ITEM:
|
||||
gUnknown_203B310->itemRewardIndex++;
|
||||
if(gUnknown_203B310->itemRewardIndex < MAX_ITEM_REWARDS)
|
||||
sub_802F2E8(5);
|
||||
SetRewardSceneState(GIVE_ITEM_REWARD);
|
||||
else
|
||||
// No more items to check... move to give points
|
||||
sub_802F2E8(7);
|
||||
SetRewardSceneState(TEAM_PNTS_REWARD);
|
||||
break;
|
||||
case 7:
|
||||
case TEAM_PNTS_REWARD:
|
||||
if (gUnknown_203B310->unk10->teamRankPtsReward == 0) {
|
||||
// No pnts to reward
|
||||
sub_802F2E8(9);
|
||||
SetRewardSceneState(REWARD_EXIT);
|
||||
}
|
||||
else {
|
||||
gUnknown_203B310->currTeamRank = GetRescueTeamRank();
|
||||
AddToTeamRankPts(gUnknown_203B310->unk10->teamRankPtsReward);
|
||||
PlaySound(0xcb);
|
||||
if (gUnknown_203B310->currTeamRank != GetRescueTeamRank()) {
|
||||
// Rank up time
|
||||
gUnknown_203B310->nextState = 8;
|
||||
gUnknown_203B310->nextState = NEW_TEAM_RANK;
|
||||
}
|
||||
else {
|
||||
// No rank up.. close out
|
||||
gUnknown_203B310->nextState = 9;
|
||||
gUnknown_203B310->nextState = REWARD_EXIT;
|
||||
}
|
||||
gUnknown_202DE30 = gUnknown_203B310->unk10->teamRankPtsReward;
|
||||
sub_80141B4(gUnknown_80E0670,0,0,0x101);
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
// Rank up
|
||||
case NEW_TEAM_RANK:
|
||||
PlaySound(0xc9);
|
||||
gUnknown_203B310->nextState = 9;
|
||||
gUnknown_203B310->nextState = REWARD_EXIT;
|
||||
rankString = GetTeamRankString(gUnknown_203B310->currTeamRank);
|
||||
strcpy(gUnknown_202E038,rankString);
|
||||
rankString = GetTeamRankString(GetRescueTeamRank());
|
||||
strcpy(gUnknown_202E038 + 0x50,rankString);
|
||||
sub_80141B4(gUnknown_80E06A8,0,0,0x101);
|
||||
break;
|
||||
case 9:
|
||||
case REWARD_EXIT:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -707,8 +703,8 @@ void sub_802F6FC(void)
|
|||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801B72C();
|
||||
sub_802F2E8(6);
|
||||
sub_801B72C();
|
||||
SetRewardSceneState(NEXT_ITEM);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
|
|
@ -716,12 +712,12 @@ void sub_802F6FC(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_802F718(void)
|
||||
void ProceedToNextRewardSceneState(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_802F2E8(gUnknown_203B310->nextState);
|
||||
SetRewardSceneState(gUnknown_203B310->nextState);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -766,14 +762,14 @@ u32 sub_802F73C(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2, u8 r3)
|
|||
|
||||
u32 sub_802F848(s16 param_1)
|
||||
{
|
||||
int iVar2;
|
||||
int index;
|
||||
s32 param_1_32;
|
||||
|
||||
param_1_32 = param_1; // cast needed
|
||||
|
||||
for( iVar2 = 0; iVar2 < gUnknown_203B314->unkDE; iVar2++ ) {
|
||||
if (gUnknown_203B314->unk0[iVar2] == param_1_32) {
|
||||
sub_8013878(&gUnknown_203B314->unkBC,iVar2);
|
||||
for( index = 0; index < gUnknown_203B314->unkDE; index++ ) {
|
||||
if (gUnknown_203B314->unk0[index] == param_1_32) {
|
||||
sub_8013878(&gUnknown_203B314->unkBC,index);
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
return 1;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#include "constants/input.h"
|
||||
#include "global.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
|
|
@ -100,7 +101,7 @@ extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
|
|||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueTitle(void *);
|
||||
extern void CreateRescueTitle(struct unkStruct_802C39C *);
|
||||
|
||||
u32 sub_80306A8(u32 wonderMailType, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3)
|
||||
{
|
||||
|
|
@ -140,13 +141,13 @@ u32 sub_8030768(u8 r0)
|
|||
}
|
||||
switch(GetKeyPress(&gUnknown_203B320->unk24))
|
||||
{
|
||||
case 4:
|
||||
case INPUT_START_BUTTON:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
case 2:
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
case INPUT_A_BUTTON:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ extern void sub_8030DD4(void);
|
|||
extern void sub_801317C(void *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern u32 sub_8012A64(void *, u32);
|
||||
extern void CreateRescueDescription(void *);
|
||||
extern void CreateRescueDescription(struct unkStruct_802C39C *);
|
||||
extern void xxx_call_draw_string(u32, u32, const char *, u32, u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
|
|
|
|||
|
|
@ -95,7 +95,6 @@ extern void sub_8030DE4();
|
|||
extern void sub_8030810(u32);
|
||||
extern void sub_803092C(void);
|
||||
extern void sub_8030D40(u8, u32);
|
||||
extern void sub_8095240(u8);
|
||||
|
||||
bool8 sub_8030F58(u32 wonderMailType)
|
||||
{
|
||||
|
|
@ -316,7 +315,7 @@ void sub_80313D8(u32 state)
|
|||
switch(state)
|
||||
{
|
||||
case 2:
|
||||
sub_8095240(gUnknown_203B328->mailIndex);
|
||||
DeleteMailAtIndex(gUnknown_203B328->mailIndex);
|
||||
break;
|
||||
case 3:
|
||||
for(index = 0; index < 0x20; index++)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "wonder_mail_3.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "menu_input.h"
|
||||
#include "code_802C39C.h"
|
||||
|
||||
struct unkStruct_203B2FC
|
||||
{
|
||||
|
|
@ -40,7 +41,7 @@ struct unkStruct_203B300
|
|||
{
|
||||
// size: 0x7C
|
||||
u8 fill0[0xC];
|
||||
u32 *unkC;
|
||||
struct unkStruct_802C39C *unkC;
|
||||
u32 unk10;
|
||||
struct UnkTextStruct2 *unk14;
|
||||
struct UnkTextStruct2 unk18[4];
|
||||
|
|
@ -108,7 +109,7 @@ static const u8 wonder_mail_802DF88_fill1[] = "pksdir0";
|
|||
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueDescription(u32 *);
|
||||
extern void CreateRescueDescription(struct unkStruct_802C39C *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 sub_8012A64(void *, u32);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
|
|
@ -128,7 +129,7 @@ extern u32 sub_802C598(s32);
|
|||
extern void sub_802C688(void);
|
||||
extern void sub_8096C80(void);
|
||||
extern void ResetJobSlot(u8);
|
||||
extern u8 sub_802C620(void);
|
||||
extern u8 GetPelipperBoardSlotIndex(void);
|
||||
|
||||
void sub_802DE44(void);
|
||||
void sub_802DE60(void);
|
||||
|
|
@ -149,17 +150,20 @@ void sub_802D7D0(void)
|
|||
gUnknown_203B2F8->unk70 = menuAction;
|
||||
}
|
||||
switch(menuAction) {
|
||||
// Yes
|
||||
case 3:
|
||||
sub_802D1A0(2);
|
||||
sub_802D1A0(WONDER_MAIL_EXIT);
|
||||
break;
|
||||
// New Mail
|
||||
case 6:
|
||||
gUnknown_203B2F8->fallbackState = 1;
|
||||
sub_802D1A0(0x10);
|
||||
break;
|
||||
// No
|
||||
case 4:
|
||||
case 2:
|
||||
default:
|
||||
sub_802D1A0(0);
|
||||
sub_802D1A0(INITIAL_WONDER_MAIL_CHECK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -174,19 +178,23 @@ void sub_802D82C(void)
|
|||
gUnknown_203B2F8->unk74 = menuAction;
|
||||
}
|
||||
switch(menuAction) {
|
||||
// Yes
|
||||
case 3:
|
||||
ResetJobSlot(gUnknown_203B2F8->jobSlotIndex);
|
||||
sub_8096C80();
|
||||
sub_802D1A0(8);
|
||||
sub_802D1A0(RECEIVE_WONDER_MAIL);
|
||||
break;
|
||||
// New Mail
|
||||
case 6:
|
||||
gUnknown_203B2F8->fallbackState = 9;
|
||||
sub_802D1A0(0x10);
|
||||
break;
|
||||
// Old Mail
|
||||
case 7:
|
||||
gUnknown_203B2F8->fallbackState = 9;
|
||||
sub_802D1A0(0xf);
|
||||
break;
|
||||
// No
|
||||
default:
|
||||
case 1:
|
||||
case 2:
|
||||
|
|
@ -204,12 +212,12 @@ void sub_802D8CC(void)
|
|||
case 1:
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B2F8->jobSlotIndex = sub_802C620();
|
||||
gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex();
|
||||
sub_802D1A0(0xd);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2F8->jobSlotIndex = sub_802C620();
|
||||
gUnknown_203B2F8->fallbackState = 0xc;
|
||||
gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex();
|
||||
gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1;
|
||||
sub_802D1A0(0xf);
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -232,21 +240,23 @@ void sub_802D940(void)
|
|||
|
||||
switch(menuAction)
|
||||
{
|
||||
// Delete
|
||||
case 2:
|
||||
if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > 5) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)))
|
||||
{
|
||||
sub_802D1A0(0x7);
|
||||
sub_802D1A0(7);
|
||||
}
|
||||
else {
|
||||
sub_802D1A0(0xE);
|
||||
}
|
||||
break;
|
||||
// Info
|
||||
case 5:
|
||||
gUnknown_203B2F8->fallbackState = 0xc;
|
||||
gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1;
|
||||
sub_802D1A0(0xf);
|
||||
break;
|
||||
case 1:
|
||||
sub_802D1A0(0xc);
|
||||
sub_802D1A0(DRAW_JOB_LIST_1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -264,15 +274,17 @@ void sub_802D9F0(void)
|
|||
|
||||
switch(menuAction)
|
||||
{
|
||||
// No
|
||||
case 1:
|
||||
case 4:
|
||||
sub_802D1A0(0xc);
|
||||
sub_802D1A0(DRAW_JOB_LIST_1);
|
||||
break;
|
||||
// Yes
|
||||
case 3:
|
||||
sub_802C688();
|
||||
ResetJobSlot(gUnknown_203B2F8->jobSlotIndex);
|
||||
sub_8096C80();
|
||||
sub_802D1A0(8);
|
||||
sub_802D1A0(RECEIVE_WONDER_MAIL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -292,7 +304,7 @@ void sub_802DA60(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_802DA84(void)
|
||||
void AdvancetoFallbackWonderMailRescueState(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
|
|
@ -513,12 +525,12 @@ void sub_802DE60(void)
|
|||
}
|
||||
}
|
||||
|
||||
u32 sub_802DE84(u32 *r0)
|
||||
u32 sub_802DE84(struct unkStruct_802C39C *r0)
|
||||
{
|
||||
gUnknown_203B300 = MemoryAlloc(sizeof(struct unkStruct_203B300), 8);
|
||||
gUnknown_203B300->unkC = r0;
|
||||
sub_801317C();
|
||||
gUnknown_203B300->unk10 = *gUnknown_203B300->unkC;
|
||||
gUnknown_203B300->unk10 = gUnknown_203B300->unkC->unk0[0];
|
||||
gUnknown_203B300->unk14 = &gUnknown_203B300->unk18[gUnknown_203B300->unk10];
|
||||
sub_8006518(gUnknown_203B300->unk18);
|
||||
gUnknown_203B300->unk18[gUnknown_203B300->unk10] = gUnknown_80E0264;
|
||||
|
|
|
|||
|
|
@ -413,7 +413,7 @@ gUnknown_203B300: /* 203B300 */
|
|||
gUnknown_203B304: /* 203B304 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B308: /* 203B308 */
|
||||
gPelipperBoard: /* 203B308 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B30C: /* 203B30C */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user