mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-01 00:41:13 -05:00
Luminous cave (#72)
* fully decomp luminous cave * remove header file. this one isn't ready yet * doc few fields and func * doc more of luminous cave
This commit is contained in:
parent
681ca68ac9
commit
561ea52847
|
|
@ -1251,7 +1251,7 @@ _08001060: .4byte gUnknown_203B040
|
|||
sub_8001064:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x28
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
cmp r0, 0
|
||||
bne _080010AE
|
||||
ldr r5, _0800109C
|
||||
|
|
|
|||
|
|
@ -6923,7 +6923,7 @@ sub_801059C:
|
|||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x14
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r7, r0, 0
|
||||
ldr r6, _080106E4
|
||||
ldr r0, [r6]
|
||||
|
|
@ -7898,7 +7898,7 @@ sub_8010DA4:
|
|||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0xC
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
mov r9, r0
|
||||
ldr r6, _08010EBC
|
||||
ldr r0, [r6]
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ _0801B65E:
|
|||
ldr r0, [r5]
|
||||
strb r2, [r0, 0x1C]
|
||||
ldr r4, _0801B6A4
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x6
|
||||
|
|
|
|||
|
|
@ -1008,7 +1008,7 @@ _0801D08C:
|
|||
strb r5, [r0, 0x8]
|
||||
ldr r0, [r4]
|
||||
strb r5, [r0, 0x9]
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0xC]
|
||||
strb r5, [r1, 0x7]
|
||||
|
|
@ -1128,7 +1128,7 @@ _0801D196:
|
|||
movs r0, 0x1
|
||||
b _0801D1CC
|
||||
_0801D1A0:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
ldr r1, [r4, 0xC]
|
||||
cmp r1, r0
|
||||
bne _0801D1C6
|
||||
|
|
|
|||
11152
asm/code_801EE10.s
Normal file
11152
asm/code_801EE10.s
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -2133,7 +2133,7 @@ _0803C154:
|
|||
cmp r0, 0
|
||||
bne _0803C154
|
||||
_0803C168:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, r4
|
||||
|
|
|
|||
|
|
@ -405,11 +405,11 @@ sub_809542C:
|
|||
bl sub_8094E4C
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0x10]
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
ldr r1, [r4]
|
||||
ldrh r0, [r0, 0x8]
|
||||
strh r0, [r1, 0xC]
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r1, r0, 0
|
||||
mov r0, sp
|
||||
bl sub_808DA34
|
||||
|
|
|
|||
|
|
@ -5878,7 +5878,7 @@ _0809BD84:
|
|||
_0809BDB2:
|
||||
cmp r4, 0x3
|
||||
bne _0809BDCC
|
||||
bl sub_80247C0
|
||||
bl CleanLuminousCave
|
||||
ldr r0, _0809BDC8
|
||||
ldr r0, [r0]
|
||||
movs r2, 0x86
|
||||
|
|
@ -5892,7 +5892,7 @@ _0809BDCC:
|
|||
beq _0809BDD2
|
||||
b _0809B784
|
||||
_0809BDD2:
|
||||
bl sub_80247C0
|
||||
bl CleanLuminousCave
|
||||
ldr r0, _0809BDE4
|
||||
ldr r0, [r0]
|
||||
movs r3, 0x86
|
||||
|
|
|
|||
|
|
@ -659,7 +659,7 @@ _0802798C:
|
|||
muls r1, r0
|
||||
ldr r0, [r2]
|
||||
adds r4, r0, r1
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
ldrb r1, [r4, 0x2]
|
||||
cmp r1, 0
|
||||
bne _080279B2
|
||||
|
|
@ -734,95 +734,4 @@ _08027A36:
|
|||
bx r0
|
||||
thumb_func_end sub_80278B4
|
||||
|
||||
thumb_func_start sub_8027A40
|
||||
sub_8027A40:
|
||||
push {lr}
|
||||
bl sub_80244E4
|
||||
cmp r0, 0x1
|
||||
bls _08027A58
|
||||
cmp r0, 0x3
|
||||
bhi _08027A58
|
||||
bl sub_802453C
|
||||
movs r0, 0x2
|
||||
bl SetFriendAreaActionMenuState
|
||||
_08027A58:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8027A40
|
||||
|
||||
thumb_func_start sub_8027A5C
|
||||
sub_8027A5C:
|
||||
push {lr}
|
||||
bl sub_801BF48
|
||||
cmp r0, 0x1
|
||||
bls _08027A74
|
||||
cmp r0, 0x3
|
||||
bhi _08027A74
|
||||
bl sub_801BF98
|
||||
movs r0, 0x2
|
||||
bl SetFriendAreaActionMenuState
|
||||
_08027A74:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8027A5C
|
||||
|
||||
thumb_func_start sub_8027A78
|
||||
sub_8027A78:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _08027AD8
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x2
|
||||
beq _08027AA2
|
||||
cmp r0, 0x2
|
||||
bgt _08027A96
|
||||
cmp r0, 0x1
|
||||
beq _08027A9A
|
||||
b _08027AD8
|
||||
_08027A96:
|
||||
cmp r0, 0x3
|
||||
bne _08027AD8
|
||||
_08027A9A:
|
||||
movs r0, 0x2
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _08027AD8
|
||||
_08027AA2:
|
||||
ldr r0, _08027AB8
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x18]
|
||||
ldrb r0, [r0, 0x4]
|
||||
subs r0, 0x44
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bhi _08027ABC
|
||||
movs r0, 0x1
|
||||
b _08027ABE
|
||||
.align 2, 0
|
||||
_08027AB8: .4byte gUnknown_203B2BC
|
||||
_08027ABC:
|
||||
movs r0, 0
|
||||
_08027ABE:
|
||||
cmp r0, 0
|
||||
beq _08027ACA
|
||||
movs r0, 0x9
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _08027AD8
|
||||
_08027ACA:
|
||||
bl sub_8027EB8
|
||||
ldr r0, _08027AE0
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x18]
|
||||
bl sub_808D31C
|
||||
_08027AD8:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08027AE0: .4byte gUnknown_203B2BC
|
||||
thumb_func_end sub_8027A78
|
||||
|
||||
.align 2,0
|
||||
|
|
|
|||
13479
asm/friend_list_menu.s
13479
asm/friend_list_menu.s
File diff suppressed because it is too large
Load Diff
|
|
@ -1530,7 +1530,7 @@ _080335B8:
|
|||
.align 2, 0
|
||||
_080335BC: .4byte gUnknown_80E2D7C
|
||||
_080335C0:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r1, r0, 0
|
||||
adds r1, 0x4C
|
||||
add r0, sp, 0x14
|
||||
|
|
|
|||
|
|
@ -533,7 +533,7 @@ _080A7BDE:
|
|||
strh r0, [r7]
|
||||
b _080A7C10
|
||||
_080A7BE4:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r6, r0, 0
|
||||
bl sub_808D3BC
|
||||
cmp r0, r6
|
||||
|
|
@ -601,7 +601,7 @@ _080A7C5A:
|
|||
beq _080A7C60
|
||||
b _080A7DA6
|
||||
_080A7C60:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r4, r0, 0
|
||||
bl sub_808D3BC
|
||||
cmp r0, r4
|
||||
|
|
@ -636,7 +636,7 @@ _080A7C94:
|
|||
b _080A7CCA
|
||||
_080A7C9A:
|
||||
movs r6, 0x2
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r4, r0, 0
|
||||
bl sub_808D3BC
|
||||
cmp r4, r0
|
||||
|
|
@ -647,7 +647,7 @@ _080A7CAC:
|
|||
b _080A7DD2
|
||||
_080A7CB0:
|
||||
movs r6, 0x1
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r4, r0, 0
|
||||
bl sub_808D3F8
|
||||
cmp r4, r0
|
||||
|
|
@ -779,7 +779,7 @@ _080A7DAC:
|
|||
_080A7DB0:
|
||||
cmp r2, 0x23
|
||||
bne _080A7DD2
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r4, r0, 0
|
||||
bl sub_808D3BC
|
||||
cmp r0, r4
|
||||
|
|
@ -1046,7 +1046,7 @@ _080A7FEC:
|
|||
ldrh r0, [r0, 0x8]
|
||||
b _080A8094
|
||||
_080A7FF4:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
ldrh r0, [r0, 0x8]
|
||||
b _080A8094
|
||||
_080A7FFC:
|
||||
|
|
@ -2893,7 +2893,7 @@ _080A8D8E:
|
|||
cmp r0, 0x23
|
||||
bne _080A8DA0
|
||||
_080A8D9A:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
b _080A8E94
|
||||
_080A8DA0:
|
||||
adds r0, r1, 0
|
||||
|
|
|
|||
|
|
@ -7814,7 +7814,7 @@ _080A1B18:
|
|||
bl HasRecruitedMon
|
||||
b _080A171E
|
||||
_080A1B20:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
ldrh r0, [r0, 0x8]
|
||||
subs r0, 0x90
|
||||
lsls r0, 16
|
||||
|
|
@ -7825,7 +7825,7 @@ _080A1B20:
|
|||
_080A1B32:
|
||||
bl _080A236A
|
||||
_080A1B36:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
cmp r0, 0
|
||||
beq _080A1B4A
|
||||
movs r5, 0x8
|
||||
|
|
@ -8420,7 +8420,7 @@ _080A2024:
|
|||
bge _080A1FE0
|
||||
b _080A236A
|
||||
_080A202C:
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
cmp r0, 0
|
||||
beq _080A2040
|
||||
movs r4, 0x8
|
||||
|
|
|
|||
730
asm/kecleon_items_1.s
Normal file
730
asm/kecleon_items_1.s
Normal file
|
|
@ -0,0 +1,730 @@
|
|||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_801A9E0
|
||||
sub_801A9E0:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0xCC
|
||||
ldr r4, _0801AA2C
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x88
|
||||
ldr r0, [r0]
|
||||
bl sub_8008C54
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x88
|
||||
ldr r0, [r0]
|
||||
bl sub_80073B8
|
||||
ldr r4, [r4]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x72
|
||||
movs r2, 0
|
||||
ldrsh r0, [r1, r2]
|
||||
lsls r0, 3
|
||||
adds r5, r0, 0
|
||||
adds r5, 0xA
|
||||
movs r3, 0
|
||||
ldrsh r1, [r1, r3]
|
||||
cmp r1, 0
|
||||
bne _0801AA34
|
||||
ldr r2, _0801AA30
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
str r1, [sp]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
b _0801AA48
|
||||
.align 2, 0
|
||||
_0801AA2C: .4byte gUnknown_203B224
|
||||
_0801AA30: .4byte gTeamToolboxA
|
||||
_0801AA34:
|
||||
ldr r2, _0801AA58
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
_0801AA48:
|
||||
movs r7, 0
|
||||
ldr r1, _0801AA5C
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x6E
|
||||
movs r4, 0
|
||||
ldrsh r0, [r0, r4]
|
||||
b _0801AD0A
|
||||
.align 2, 0
|
||||
_0801AA58: .4byte gTeamToolboxB
|
||||
_0801AA5C: .4byte gUnknown_203B224
|
||||
_0801AA60:
|
||||
ldr r2, [r1]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x72
|
||||
movs r3, 0
|
||||
ldrsh r1, [r0, r3]
|
||||
subs r0, 0x2
|
||||
movs r4, 0
|
||||
ldrsh r0, [r0, r4]
|
||||
muls r0, r1
|
||||
adds r0, r7
|
||||
mov r8, r0
|
||||
ldr r0, _0801AA9C
|
||||
ldr r0, [r0]
|
||||
mov r3, r8
|
||||
lsls r1, r3, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
add r1, sp, 0xC8
|
||||
str r0, [r1]
|
||||
ldr r0, [r2]
|
||||
adds r4, r1, 0
|
||||
cmp r0, 0x5
|
||||
bls _0801AA90
|
||||
b _0801ACC4
|
||||
_0801AA90:
|
||||
lsls r0, 2
|
||||
ldr r1, _0801AAA0
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0801AA9C: .4byte gTeamInventory_203B460
|
||||
_0801AAA0: .4byte _0801AAA4
|
||||
.align 2, 0
|
||||
_0801AAA4:
|
||||
.4byte _0801AABC
|
||||
.4byte _0801AAE4
|
||||
.4byte _0801AAE4
|
||||
.4byte _0801AB18
|
||||
.4byte _0801AB90
|
||||
.4byte _0801AC50
|
||||
_0801AABC:
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl sub_8090E14
|
||||
ldr r4, _0801AAE0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
b _0801AC8C
|
||||
.align 2, 0
|
||||
_0801AAE0: .4byte gUnknown_203B224
|
||||
_0801AAE4:
|
||||
add r2, sp, 0x54
|
||||
movs r5, 0
|
||||
str r5, [sp, 0x54]
|
||||
strb r5, [r2, 0x4]
|
||||
movs r0, 0x1
|
||||
strb r0, [r2, 0x8]
|
||||
strb r0, [r4]
|
||||
add r1, sp, 0xC8
|
||||
add r0, sp, 0x4
|
||||
bl sub_8090E14
|
||||
ldr r4, _0801AB14
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
str r5, [sp]
|
||||
b _0801AC8C
|
||||
.align 2, 0
|
||||
_0801AB14: .4byte gUnknown_203B224
|
||||
_0801AB18:
|
||||
add r2, sp, 0x60
|
||||
movs r6, 0
|
||||
str r6, [sp, 0x60]
|
||||
strb r6, [r2, 0x4]
|
||||
movs r0, 0x1
|
||||
strb r0, [r2, 0x8]
|
||||
strb r0, [r4]
|
||||
add r1, sp, 0xC8
|
||||
add r0, sp, 0x4
|
||||
bl sub_8090E14
|
||||
ldr r5, _0801AB60
|
||||
ldr r0, [r5]
|
||||
mov r4, r8
|
||||
lsls r1, r4, 2
|
||||
adds r0, 0x4
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0801AB4E
|
||||
mov r0, r8
|
||||
bl sub_801ADA0
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
cmp r4, 0
|
||||
beq _0801AB64
|
||||
_0801AB4E:
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, [r5]
|
||||
b _0801AC86
|
||||
.align 2, 0
|
||||
_0801AB60: .4byte gUnknown_203B224
|
||||
_0801AB64:
|
||||
ldr r0, _0801AB88
|
||||
add r1, sp, 0x4
|
||||
movs r2, 0x50
|
||||
bl strncpy
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r2, _0801AB8C
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
str r4, [sp]
|
||||
b _0801AC3C
|
||||
.align 2, 0
|
||||
_0801AB88: .4byte gUnknown_202DE58
|
||||
_0801AB8C: .4byte gUnknown_80DB994
|
||||
_0801AB90:
|
||||
ldrb r0, [r4, 0x2]
|
||||
bl CanSellItem
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r5, 0
|
||||
beq _0801AC10
|
||||
add r2, sp, 0x6C
|
||||
movs r1, 0x3
|
||||
str r1, [sp, 0x6C]
|
||||
movs r6, 0
|
||||
strb r6, [r2, 0x4]
|
||||
movs r0, 0x58
|
||||
strh r0, [r2, 0x6]
|
||||
movs r0, 0x1
|
||||
strb r0, [r2, 0x8]
|
||||
strb r1, [r4]
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
bl sub_8090E14
|
||||
adds r0, r4, 0
|
||||
bl GetStackSellPrice
|
||||
ldr r1, _0801AC00
|
||||
ldr r1, [r1]
|
||||
movs r2, 0x98
|
||||
lsls r2, 2
|
||||
adds r1, r2
|
||||
ldr r1, [r1]
|
||||
adds r0, r1
|
||||
ldr r1, _0801AC04
|
||||
cmp r0, r1
|
||||
ble _0801AC76
|
||||
add r5, sp, 0x78
|
||||
ldr r1, _0801AC08
|
||||
adds r0, r5, 0
|
||||
add r2, sp, 0x4
|
||||
bl ExpandPlaceholdersBuffer
|
||||
ldr r4, _0801AC0C
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x8
|
||||
adds r2, r5, 0
|
||||
bl xxx_call_draw_string
|
||||
b _0801ACC4
|
||||
.align 2, 0
|
||||
_0801AC00: .4byte gTeamInventory_203B460
|
||||
_0801AC04: .4byte 0x0001869f
|
||||
_0801AC08: .4byte gUnknown_80DB9A0
|
||||
_0801AC0C: .4byte gUnknown_203B224
|
||||
_0801AC10:
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl sub_8090E14
|
||||
ldr r0, _0801AC44
|
||||
add r1, sp, 0x4
|
||||
movs r2, 0x50
|
||||
bl strncpy
|
||||
ldr r4, _0801AC48
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r2, _0801AC4C
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
str r5, [sp]
|
||||
_0801AC3C:
|
||||
movs r0, 0x8
|
||||
bl xxx_format_and_draw
|
||||
b _0801ACC4
|
||||
.align 2, 0
|
||||
_0801AC44: .4byte gUnknown_202DE58
|
||||
_0801AC48: .4byte gUnknown_203B224
|
||||
_0801AC4C: .4byte gUnknown_80DB994
|
||||
_0801AC50:
|
||||
add r2, sp, 0x78
|
||||
movs r6, 0
|
||||
str r6, [sp, 0x78]
|
||||
strb r6, [r2, 0x4]
|
||||
movs r0, 0x1
|
||||
strb r0, [r2, 0x8]
|
||||
strb r0, [r4]
|
||||
add r4, sp, 0xC8
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
bl sub_8090E14
|
||||
ldrb r0, [r4, 0x2]
|
||||
bl IsGummiItem
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r5, 0
|
||||
beq _0801AC9C
|
||||
_0801AC76:
|
||||
ldr r4, _0801AC98
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, [r4]
|
||||
_0801AC86:
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
str r6, [sp]
|
||||
_0801AC8C:
|
||||
movs r0, 0x8
|
||||
add r2, sp, 0x4
|
||||
bl xxx_call_draw_string
|
||||
b _0801ACC4
|
||||
.align 2, 0
|
||||
_0801AC98: .4byte gUnknown_203B224
|
||||
_0801AC9C:
|
||||
ldr r0, _0801AD28
|
||||
add r1, sp, 0x4
|
||||
movs r2, 0x50
|
||||
bl strncpy
|
||||
ldr r4, _0801AD2C
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r2, _0801AD30
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x88
|
||||
ldr r3, [r0]
|
||||
str r5, [sp]
|
||||
movs r0, 0x8
|
||||
bl xxx_format_and_draw
|
||||
_0801ACC4:
|
||||
mov r0, r8
|
||||
bl sub_801AED0
|
||||
movs r1, 0x1
|
||||
ands r1, r0
|
||||
cmp r1, 0
|
||||
beq _0801ACFE
|
||||
ldr r4, _0801AD2C
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x54
|
||||
adds r1, r7, 0
|
||||
bl sub_8013800
|
||||
adds r2, r0, 0
|
||||
ldr r1, [r4]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x88
|
||||
ldr r0, [r0]
|
||||
adds r1, 0x8C
|
||||
ldr r1, [r1]
|
||||
movs r4, 0xC
|
||||
ldrsh r3, [r1, r4]
|
||||
subs r3, 0x2
|
||||
lsls r3, 3
|
||||
movs r1, 0xA
|
||||
str r1, [sp]
|
||||
movs r1, 0x8
|
||||
bl sub_8007B7C
|
||||
_0801ACFE:
|
||||
adds r7, 0x1
|
||||
ldr r1, _0801AD2C
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x6E
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
_0801AD0A:
|
||||
adds r2, r1, 0
|
||||
cmp r7, r0
|
||||
bge _0801AD12
|
||||
b _0801AA60
|
||||
_0801AD12:
|
||||
ldr r0, [r2]
|
||||
adds r0, 0x88
|
||||
ldr r0, [r0]
|
||||
bl sub_80073E0
|
||||
add sp, 0xCC
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801AD28: .4byte gUnknown_202DE58
|
||||
_0801AD2C: .4byte gUnknown_203B224
|
||||
_0801AD30: .4byte gUnknown_80DB994
|
||||
thumb_func_end sub_801A9E0
|
||||
|
||||
thumb_func_start sub_801AD34
|
||||
sub_801AD34:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
bl sub_8008C54
|
||||
adds r0, r4, 0
|
||||
bl sub_80073B8
|
||||
ldr r2, _0801AD98
|
||||
movs r6, 0
|
||||
str r6, [sp]
|
||||
movs r0, 0x6
|
||||
movs r1, 0
|
||||
adds r3, r4, 0
|
||||
bl xxx_call_draw_string
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
adds r2, r0, 0
|
||||
movs r5, 0x7
|
||||
str r5, [sp]
|
||||
str r4, [sp, 0x4]
|
||||
movs r0, 0x12
|
||||
movs r1, 0xD
|
||||
movs r3, 0x2
|
||||
bl sub_8012BC4
|
||||
ldr r2, _0801AD9C
|
||||
str r6, [sp]
|
||||
movs r0, 0x16
|
||||
movs r1, 0xD
|
||||
adds r3, r4, 0
|
||||
bl xxx_call_draw_string
|
||||
str r5, [sp]
|
||||
str r4, [sp, 0x4]
|
||||
movs r0, 0x2B
|
||||
movs r1, 0xD
|
||||
movs r2, 0x14
|
||||
movs r3, 0x2
|
||||
bl sub_8012BC4
|
||||
adds r0, r4, 0
|
||||
bl sub_80073E0
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801AD98: .4byte gUnknown_80DB9A8
|
||||
_0801AD9C: .4byte gUnknown_80DB9B0
|
||||
thumb_func_end sub_801AD34
|
||||
|
||||
thumb_func_start sub_801ADA0
|
||||
sub_801ADA0:
|
||||
push {r4-r6,lr}
|
||||
ldr r5, _0801ADEC
|
||||
ldr r1, [r5]
|
||||
lsls r0, 2
|
||||
adds r1, r0
|
||||
ldr r6, [r1]
|
||||
lsls r4, r6, 8
|
||||
lsrs r0, r4, 24
|
||||
bl IsNotMoneyOrUsedTMItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801AE12
|
||||
lsrs r0, r4, 24
|
||||
bl IsThrowableItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801ADF4
|
||||
lsrs r0, r4, 24
|
||||
bl sub_801AE24
|
||||
ldr r2, [r5]
|
||||
lsrs r1, r4, 24
|
||||
lsls r1, 1
|
||||
adds r2, 0x50
|
||||
adds r2, r1
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldrh r2, [r2]
|
||||
adds r0, r2
|
||||
lsrs r1, r6, 8
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r1
|
||||
ldr r1, _0801ADF0
|
||||
b _0801AE0E
|
||||
.align 2, 0
|
||||
_0801ADEC: .4byte gTeamInventory_203B460
|
||||
_0801ADF0: .4byte 0x000003e7
|
||||
_0801ADF4:
|
||||
lsrs r0, r4, 24
|
||||
bl sub_801AE24
|
||||
ldr r2, [r5]
|
||||
lsrs r1, r4, 24
|
||||
lsls r1, 1
|
||||
adds r2, 0x50
|
||||
adds r2, r1
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldrh r2, [r2]
|
||||
adds r0, r2
|
||||
ldr r1, _0801AE18
|
||||
_0801AE0E:
|
||||
cmp r0, r1
|
||||
ble _0801AE1C
|
||||
_0801AE12:
|
||||
movs r0, 0
|
||||
b _0801AE1E
|
||||
.align 2, 0
|
||||
_0801AE18: .4byte 0x000003e6
|
||||
_0801AE1C:
|
||||
movs r0, 0x1
|
||||
_0801AE1E:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801ADA0
|
||||
|
||||
thumb_func_start sub_801AE24
|
||||
sub_801AE24:
|
||||
push {r4-r7,lr}
|
||||
adds r7, r0, 0
|
||||
movs r5, 0
|
||||
movs r6, 0
|
||||
b _0801AE74
|
||||
_0801AE2E:
|
||||
ldr r0, _0801AE64
|
||||
ldr r0, [r0]
|
||||
lsls r1, r6, 2
|
||||
adds r0, 0x4
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0801AE72
|
||||
ldr r0, _0801AE68
|
||||
ldr r0, [r0]
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
lsls r1, r4, 8
|
||||
lsrs r0, r1, 24
|
||||
cmp r0, r7
|
||||
bne _0801AE72
|
||||
bl IsThrowableItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801AE6C
|
||||
lsrs r0, r4, 8
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
adds r0, r5, r0
|
||||
b _0801AE6E
|
||||
.align 2, 0
|
||||
_0801AE64: .4byte gUnknown_203B224
|
||||
_0801AE68: .4byte gTeamInventory_203B460
|
||||
_0801AE6C:
|
||||
adds r0, r5, 0x1
|
||||
_0801AE6E:
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
_0801AE72:
|
||||
adds r6, 0x1
|
||||
_0801AE74:
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
cmp r6, r0
|
||||
blt _0801AE2E
|
||||
adds r0, r5, 0
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801AE24
|
||||
|
||||
thumb_func_start sub_801AE84
|
||||
sub_801AE84:
|
||||
push {r4,lr}
|
||||
movs r2, 0
|
||||
ldr r4, _0801AEA4
|
||||
movs r3, 0
|
||||
_0801AE8C:
|
||||
ldr r0, [r4]
|
||||
lsls r1, r2, 2
|
||||
adds r0, 0x4
|
||||
adds r0, r1
|
||||
str r3, [r0]
|
||||
adds r2, 0x1
|
||||
cmp r2, 0x13
|
||||
ble _0801AE8C
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801AEA4: .4byte gUnknown_203B224
|
||||
thumb_func_end sub_801AE84
|
||||
|
||||
thumb_func_start sub_801AEA8
|
||||
sub_801AEA8:
|
||||
push {lr}
|
||||
movs r3, 0
|
||||
ldr r0, _0801AECC
|
||||
ldr r0, [r0]
|
||||
adds r1, r0, 0x4
|
||||
movs r2, 0x13
|
||||
_0801AEB4:
|
||||
ldr r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _0801AEBC
|
||||
adds r3, 0x1
|
||||
_0801AEBC:
|
||||
adds r1, 0x4
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bge _0801AEB4
|
||||
adds r0, r3, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0801AECC: .4byte gUnknown_203B224
|
||||
thumb_func_end sub_801AEA8
|
||||
|
||||
thumb_func_start sub_801AED0
|
||||
sub_801AED0:
|
||||
ldr r1, _0801AEE0
|
||||
ldr r1, [r1]
|
||||
lsls r0, 2
|
||||
adds r1, 0x4
|
||||
adds r1, r0
|
||||
ldr r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0801AEE0: .4byte gUnknown_203B224
|
||||
thumb_func_end sub_801AED0
|
||||
|
||||
thumb_func_start sub_801AEE4
|
||||
sub_801AEE4:
|
||||
ldr r2, _0801AEF4
|
||||
ldr r2, [r2]
|
||||
lsls r0, 2
|
||||
adds r2, 0x4
|
||||
adds r2, r0
|
||||
str r1, [r2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0801AEF4: .4byte gUnknown_203B224
|
||||
thumb_func_end sub_801AEE4
|
||||
|
||||
thumb_func_start sub_801AEF8
|
||||
sub_801AEF8:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
b _0801AF78
|
||||
_0801AF08:
|
||||
movs r1, 0x1
|
||||
add r1, r9
|
||||
mov r8, r1
|
||||
mov r7, r8
|
||||
b _0801AF6E
|
||||
_0801AF12:
|
||||
ldr r2, _0801AF90
|
||||
ldr r0, [r2]
|
||||
mov r1, r9
|
||||
lsls r6, r1, 2
|
||||
adds r0, r6
|
||||
ldrb r0, [r0, 0x2]
|
||||
str r2, [sp]
|
||||
bl GetItemOrder
|
||||
adds r4, r0, 0
|
||||
ldr r2, [sp]
|
||||
ldr r0, [r2]
|
||||
lsls r5, r7, 2
|
||||
adds r0, r5
|
||||
ldrb r0, [r0, 0x2]
|
||||
bl GetItemOrder
|
||||
ldr r2, [sp]
|
||||
cmp r4, r0
|
||||
bgt _0801AF4C
|
||||
cmp r4, r0
|
||||
bne _0801AF6C
|
||||
ldr r0, [r2]
|
||||
adds r1, r0, r6
|
||||
adds r0, r5
|
||||
ldrb r1, [r1, 0x1]
|
||||
ldrb r0, [r0, 0x1]
|
||||
cmp r1, r0
|
||||
bcs _0801AF6C
|
||||
_0801AF4C:
|
||||
ldr r0, [r2]
|
||||
adds r2, r0, r6
|
||||
ldr r3, [r2]
|
||||
adds r0, r5
|
||||
ldr r1, [r0]
|
||||
str r1, [r2]
|
||||
str r3, [r0]
|
||||
ldr r0, _0801AF94
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x4
|
||||
adds r2, r0, r6
|
||||
ldr r3, [r2]
|
||||
adds r0, r5
|
||||
ldr r1, [r0]
|
||||
str r1, [r2]
|
||||
str r3, [r0]
|
||||
_0801AF6C:
|
||||
adds r7, 0x1
|
||||
_0801AF6E:
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
cmp r7, r0
|
||||
blt _0801AF12
|
||||
mov r9, r8
|
||||
_0801AF78:
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
subs r0, 0x1
|
||||
cmp r9, r0
|
||||
blt _0801AF08
|
||||
add sp, 0x4
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801AF90: .4byte gTeamInventory_203B460
|
||||
_0801AF94: .4byte gUnknown_203B224
|
||||
thumb_func_end sub_801AEF8
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -190,7 +190,7 @@ _080300F4:
|
|||
_08030108: .4byte gMakuhitaDialogue
|
||||
_0803010C:
|
||||
ldr r4, _08030138
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x6
|
||||
|
|
|
|||
|
|
@ -636,8 +636,8 @@ _0808D338:
|
|||
bx r0
|
||||
thumb_func_end sub_808D31C
|
||||
|
||||
thumb_func_start sub_808D33C
|
||||
sub_808D33C:
|
||||
thumb_func_start GetPlayerPokemonStruct
|
||||
GetPlayerPokemonStruct:
|
||||
push {r4,lr}
|
||||
movs r3, 0
|
||||
ldr r0, _0808D360
|
||||
|
|
@ -669,7 +669,7 @@ _0808D370:
|
|||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_808D33C
|
||||
thumb_func_end GetPlayerPokemonStruct
|
||||
|
||||
thumb_func_start sub_808D378
|
||||
sub_808D378:
|
||||
|
|
|
|||
1898
asm/pokemon_square.s
1898
asm/pokemon_square.s
File diff suppressed because it is too large
Load Diff
|
|
@ -443,7 +443,7 @@ _0802BFE8:
|
|||
adds r1, r4, 0
|
||||
movs r2, 0x6
|
||||
bl sub_803B6B0
|
||||
bl sub_808D33C
|
||||
bl GetPlayerPokemonStruct
|
||||
adds r1, r0, 0
|
||||
mov r0, r9
|
||||
bl sub_808DA34
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ bool8 IsGummiItem(u8);
|
|||
void xxx_init_unk230_substruct(u8);
|
||||
bool8 xxx_insert_unk230_80919FC(u8);
|
||||
struct HeldItem *xxx_get_inv_unk230_at_809185C(u8);
|
||||
struct HeldItem* xxx_get_unk250_at_8091A90(u8);
|
||||
s32 xxx_count_inv_unk230();
|
||||
u32 xxx_count_non_empty_inv_unk250_8091A48();
|
||||
void sub_8091BB4(u8);
|
||||
|
|
@ -105,6 +106,7 @@ void ShiftItemsDownFrom(s32 start);
|
|||
void MoveToStorage(struct ItemSlot* slot);
|
||||
void FillInventoryGaps();
|
||||
bool8 sub_8091274(struct HeldItem* slot);
|
||||
bool8 IsNotMoneyOrUsedTMItem(u8 id);
|
||||
|
||||
|
||||
void RestoreHeldItem(struct unkStruct_8094924*, struct HeldItem*);
|
||||
|
|
|
|||
|
|
@ -41,4 +41,25 @@ struct unkStruct_203B210
|
|||
struct UnkTextStruct2 unkE8[4];
|
||||
};
|
||||
|
||||
struct unkStruct_203B224
|
||||
{
|
||||
// size: 0xF4
|
||||
u32 unk0;
|
||||
|
||||
u32 unk4[INVENTORY_SIZE];
|
||||
u32 unk54;
|
||||
u8 fill58[0x6C - 0x58];
|
||||
s16 unk6C;
|
||||
s16 unk6E;
|
||||
s16 unk70;
|
||||
s16 unk72;
|
||||
u16 unk74;
|
||||
u16 unk76;
|
||||
u8 fill78[0x88 - 0x78];
|
||||
u32 unk88;
|
||||
struct UnkTextStruct2 *unk8C;
|
||||
struct UnkTextStruct2 unk90[4];
|
||||
u8 unkF0[4];
|
||||
};
|
||||
|
||||
#endif // GUARD_KECLEON_ITEMS_H
|
||||
|
|
|
|||
|
|
@ -100,7 +100,8 @@ SECTIONS {
|
|||
src/kecleon_items.o(.text);
|
||||
asm/kecleon_items.o(.text);
|
||||
src/kecleon_items_1.o(.text);
|
||||
asm/pokemon_square.o(.text);
|
||||
asm/kecleon_items_1.o(.text);
|
||||
src/kecleon_items_2.o(.text);
|
||||
src/code_801AFA4.o(.text);
|
||||
asm/code_801AFA4.o(.text);
|
||||
src/code_801B3C0.o(.text);
|
||||
|
|
@ -115,7 +116,10 @@ SECTIONS {
|
|||
src/gulpin_shop.o(.text);
|
||||
asm/gulpin_shop.o(.text);
|
||||
src/gulpin_shop_1.o(.text);
|
||||
asm/code_801EE10.o(.text);
|
||||
src/luminous_cave.o(.text);
|
||||
asm/friend_list_menu.o(.text);
|
||||
src/friend_list_menu.o(.text);
|
||||
src/friend_area_action_menu.o(.text);
|
||||
asm/friend_area_action_menu.o(.text);
|
||||
src/friend_area_action_menu_1.o(.text);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,6 @@ extern void sub_8012EA4(u32 *, u32);
|
|||
extern void sub_80073E0(u32);
|
||||
extern void sub_8013C68(u32 *);
|
||||
extern void xxx_call_draw_string(s32, u32, const char *, u32, u32);
|
||||
extern bool8 IsNotMoneyOrUsedTMItem(u8);
|
||||
extern u32 sub_801CA08(u32);
|
||||
extern u8 sub_801CB24();
|
||||
extern void sub_801CBB8();
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ extern const char gUnknown_81098A4;
|
|||
extern const char gUnknown_81098AC;
|
||||
|
||||
extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *r2, ...);
|
||||
extern void sub_8090FEC(u32, u32 *r1, u32);
|
||||
extern void sub_8090FEC(u32, u8 *r1, u32);
|
||||
|
||||
const struct FriendAreaSettings gFriendAreaSettings[NUM_FRIEND_AREAS] =
|
||||
{
|
||||
|
|
@ -605,11 +605,11 @@ void sub_8092558(u8 *buffer, u8 index)
|
|||
void sub_8092578(u8 *buffer, u8 index, u8 r2)
|
||||
{
|
||||
// I think this is when we buy the friend area from wigglytuff
|
||||
u32 temp[5];
|
||||
u8 priceBuffer[0x14];
|
||||
if(r2)
|
||||
{
|
||||
sub_8090FEC(gFriendAreaSettings[index].price, (&temp[0]), 1);
|
||||
ExpandPlaceholdersBuffer(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, temp);
|
||||
sub_8090FEC(gFriendAreaSettings[index].price, priceBuffer, 1);
|
||||
ExpandPlaceholdersBuffer(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, priceBuffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@
|
|||
extern struct unkStruct_203B2BC *gUnknown_203B2BC;
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
|
||||
u32 sub_801B410();
|
||||
void sub_801B450();
|
||||
extern u32 sub_801B410();
|
||||
extern void sub_801B450();
|
||||
extern u32 sub_801EF38(u8 r0);
|
||||
extern void sub_801F214();
|
||||
|
||||
|
|
@ -29,9 +29,6 @@ extern u32 sub_801A6E8(u32);
|
|||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_8027EB8();
|
||||
extern void sub_808D31C(struct PokemonStruct *);
|
||||
u32 sub_8027E18(struct PokemonStruct *);
|
||||
bool8 IsNotMoneyOrUsedTMItem(u8 id);
|
||||
u8 sub_8027E4C(struct PokemonStruct *r0);
|
||||
extern u8 sub_80023E4(u32);
|
||||
extern struct PokemonStruct *sub_808D3F8(void);
|
||||
extern struct PokemonStruct *sub_808D3BC(void);
|
||||
|
|
@ -45,6 +42,74 @@ extern void sub_80073E0(u32);
|
|||
extern u8 gUnknown_202DE58[];
|
||||
extern u32 sub_801F194(void);
|
||||
|
||||
u32 sub_8027E18(struct PokemonStruct *);
|
||||
u8 sub_8027E4C(struct PokemonStruct *r0);
|
||||
extern u32 sub_801BF48(void);
|
||||
extern void sub_801BF98(void);
|
||||
extern u32 sub_80244E4(void);
|
||||
extern void sub_802453C(void);
|
||||
|
||||
void sub_8027A40(void)
|
||||
{
|
||||
switch(sub_80244E4())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802453C();
|
||||
SetFriendAreaActionMenuState(2);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8027A5C(void)
|
||||
{
|
||||
switch(sub_801BF48())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801BF98();
|
||||
SetFriendAreaActionMenuState(2);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool8 sub_8027A78_sub(void) {
|
||||
if (gUnknown_203B2BC->unk18->unk4.unk4 == 0x44 || gUnknown_203B2BC->unk18->unk4.unk4 == 0x45)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8027A78(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
SetFriendAreaActionMenuState(2);
|
||||
break;
|
||||
case 2:
|
||||
if (sub_8027A78_sub())
|
||||
SetFriendAreaActionMenuState(9);
|
||||
else
|
||||
{
|
||||
sub_8027EB8();
|
||||
sub_808D31C(gUnknown_203B2BC->unk18);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8027AE4(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
|
@ -194,7 +259,7 @@ void sub_8027D40(u32 r0, struct HeldItem *heldItem)
|
|||
a3.unk0 = 0;
|
||||
a3.unk4 = 0;
|
||||
a3.unk8 = 1;
|
||||
slot.itemFlags = 1;
|
||||
slot.itemFlags = ITEM_FLAG_EXISTS;
|
||||
sub_8090E14(gUnknown_202DE58, &slot, &a3);
|
||||
xxx_format_and_draw(4, 3, gUnknown_80DD958, r0, 0);
|
||||
sub_80073E0(r0);
|
||||
|
|
|
|||
446
src/friend_list_menu.c
Normal file
446
src/friend_list_menu.c
Normal file
|
|
@ -0,0 +1,446 @@
|
|||
#include "global.h"
|
||||
#include "item.h"
|
||||
#include "pokemon.h"
|
||||
#include "text.h"
|
||||
#include "team_inventory.h"
|
||||
#include "constants/move.h"
|
||||
|
||||
struct unkStruct_203B2B8
|
||||
{
|
||||
// size: 0x280
|
||||
u32 state;
|
||||
u32 unk4;
|
||||
u8 unk8;
|
||||
s16 pokeSpecies;
|
||||
u32 unkC;
|
||||
struct HeldItem unk10;
|
||||
struct HeldItem unk14;
|
||||
struct PokemonStruct *unk18;
|
||||
u8 fill1C[0x4];
|
||||
u32 unk20;
|
||||
u16 unk24;
|
||||
struct PokemonMove unk28[4];
|
||||
u8 fill48[0x70 - 0x48];
|
||||
u32 unk70;
|
||||
u32 unk74;
|
||||
u32 unk78;
|
||||
u32 unk7C;
|
||||
u8 fill80[0xCC - 0x80];
|
||||
u32 unkCC;
|
||||
};
|
||||
extern struct unkStruct_203B2B8 *gUnknown_203B2B8;
|
||||
extern u8 gAvailablePokemonNames[0x58];
|
||||
extern u8 gUnknown_202DEA8[0x58];
|
||||
extern u8 gUnknown_202DE58[0x58];
|
||||
extern u8 gUnknown_80DD6E0[];
|
||||
extern u8 gPartyMenuItemPlaceholder[];
|
||||
extern struct UnkTextStruct2 gUnknown_80DD370;
|
||||
|
||||
extern u32 sub_8026F04(struct PokemonStruct *);
|
||||
extern void GivePokemonItem(s16 index_, struct HeldItem* item);
|
||||
extern void sub_8026074(u32);
|
||||
extern void PlaySound(u32);
|
||||
bool8 sub_8026F38(struct PokemonStruct *r0);
|
||||
extern u8 sub_80023E4(u8);
|
||||
extern struct PokemonStruct *sub_808D3F8(void);
|
||||
extern struct PokemonStruct *sub_808D3BC(void);
|
||||
extern void sub_801F214(void);
|
||||
extern u32 sub_801F194(void);
|
||||
extern u32 sub_801EF38(u32);
|
||||
|
||||
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void sub_80922B4(u8 *, const u8 *, u32);
|
||||
extern void ExpandPlaceholdersBuffer(u8 *buffer, const u8 *text, ...);
|
||||
extern void sub_808D930(u8 *, s16);
|
||||
extern s32 sub_8008ED0(u8 *);
|
||||
extern void xxx_call_draw_string(s32 x, s32 y, u8 *, u32, u32);
|
||||
extern void xxx_format_and_draw(s32, s32, u8 *, ...);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
|
||||
extern u32 sub_801F890(void);
|
||||
extern void sub_801F8D0(void);
|
||||
extern u32 sub_801B410(void);
|
||||
extern void sub_801B450(void);
|
||||
|
||||
extern void nullsub_104(void);
|
||||
extern void sub_801A928(void);
|
||||
extern void sub_8099690(u32);
|
||||
extern u32 sub_801A6E8(u32);
|
||||
extern u8 sub_8012FD8(u32 *);
|
||||
extern void sub_8013114(u32 *, s32 *);
|
||||
|
||||
extern u32 sub_801A8AC(void);
|
||||
extern u32 sub_8022860(void);
|
||||
extern void sub_8022908(void);
|
||||
|
||||
extern void sub_801BF98(void);
|
||||
extern u32 sub_801BF48(void);
|
||||
extern void sub_802453C(void);
|
||||
extern u32 sub_80244E4(void);
|
||||
|
||||
|
||||
void sub_8026A78(void)
|
||||
{
|
||||
switch(sub_80244E4())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802453C();
|
||||
sub_8026074(2);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8026A94(void)
|
||||
{
|
||||
switch(sub_801BF48())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801BF98();
|
||||
sub_8026074(2);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline bool8 sub_8026AB0_sub(void) {
|
||||
if (gUnknown_203B2B8->unk18->unk4.unk4 == 0x44 || gUnknown_203B2B8->unk18->unk4.unk4 == 0x45)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8026AB0(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
sub_8026074(2);
|
||||
break;
|
||||
case 2:
|
||||
if (sub_8026AB0_sub())
|
||||
sub_8026074(0xD);
|
||||
else
|
||||
sub_8026074(8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8026B10(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
switch(temp)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
sub_8026074(2);
|
||||
break;
|
||||
case 2:
|
||||
sub_8026074(8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_8026B48(void)
|
||||
{
|
||||
switch(sub_8022860())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_8022908();
|
||||
sub_8026074(2);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_8026B64(void)
|
||||
{
|
||||
switch(sub_801A6E8(1))
|
||||
{
|
||||
case 3:
|
||||
gUnknown_203B2B8->unkC = sub_801A8AC();
|
||||
gUnknown_203B2B8->unk10.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].itemIndex;
|
||||
gUnknown_203B2B8->unk10.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].numItems;
|
||||
sub_8026074(0x14);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2B8->unkC = sub_801A8AC();
|
||||
gUnknown_203B2B8->unk10.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].itemIndex;
|
||||
gUnknown_203B2B8->unk10.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].numItems;
|
||||
sub_8099690(0);
|
||||
sub_8026074(0x15);
|
||||
break;
|
||||
case 2:
|
||||
sub_801A928();
|
||||
sub_8026074(2);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8026C14(void)
|
||||
{
|
||||
u32 nextState;
|
||||
struct unkStruct_8090F58 temp;
|
||||
int menuAction;
|
||||
struct ItemSlot slot;
|
||||
|
||||
menuAction = 0;
|
||||
sub_801A6E8(0);
|
||||
if ((sub_8012FD8(&gUnknown_203B2B8->unkCC) == '\0') && (sub_8013114(&gUnknown_203B2B8->unkCC,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B2B8->unk74 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
case 0xb:
|
||||
nextState = 0xF;
|
||||
PlaySound(0x14d);
|
||||
ShiftItemsDownFrom(gUnknown_203B2B8->unkC);
|
||||
FillInventoryGaps();
|
||||
if (gUnknown_203B2B8->unk14.itemIndex != '\0') {
|
||||
sub_8091274(&gUnknown_203B2B8->unk14);
|
||||
nextState = 0x10;
|
||||
}
|
||||
HeldItemToSlot(&slot,&gUnknown_203B2B8->unk10);
|
||||
temp.unk0 = 0;
|
||||
temp.unk4 = 0;
|
||||
temp.unk8 = 1;
|
||||
slot.itemFlags = ITEM_FLAG_EXISTS;
|
||||
sub_8090E14(gUnknown_202DEA8,&slot,&temp);
|
||||
GivePokemonItem(gUnknown_203B2B8->pokeSpecies,&gUnknown_203B2B8->unk10);
|
||||
sub_801A928();
|
||||
nullsub_104();
|
||||
sub_8026074(nextState);
|
||||
break;
|
||||
case 4:
|
||||
sub_8099690(0);
|
||||
sub_8026074(0x15);
|
||||
break;
|
||||
case 1:
|
||||
sub_8026074(0x13);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8026CF0(void)
|
||||
{
|
||||
switch(sub_801B410())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801B450();
|
||||
sub_8026074(0x13);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_8026D0C(void)
|
||||
{
|
||||
switch(sub_801EF38(1))
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
gUnknown_203B2B8->unk20 = sub_801F194();
|
||||
gUnknown_203B2B8->unk24 = gUnknown_203B2B8->unk28[gUnknown_203B2B8->unk20].moveID;
|
||||
sub_8026074(0x18);
|
||||
break;
|
||||
case 2:
|
||||
sub_801F214();
|
||||
sub_8026074(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8026D6C(void)
|
||||
{
|
||||
switch(sub_801F890())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801F8D0();
|
||||
sub_8026074(0x17);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8026D88(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_8026074(gUnknown_203B2B8->unk4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8026DAC(u32 r0, struct HeldItem *r1)
|
||||
{
|
||||
struct ItemSlot slot;
|
||||
struct unkStruct_8090F58 temp;
|
||||
|
||||
sub_8008C54(r0);
|
||||
sub_80073B8(r0);
|
||||
HeldItemToSlot(&slot, r1);
|
||||
temp.unk0 = 0;
|
||||
temp.unk4 = 0;
|
||||
temp.unk8 = 1;
|
||||
slot.itemFlags = ITEM_FLAG_EXISTS;
|
||||
sub_8090E14(gUnknown_202DE58, &slot, &temp);
|
||||
xxx_format_and_draw(4, 3, gPartyMenuItemPlaceholder, r0, 0);
|
||||
sub_80073E0(r0);
|
||||
}
|
||||
|
||||
void sub_8026E08(u32 r0)
|
||||
{
|
||||
u8 buffer1[40];
|
||||
u8 buffer[20];
|
||||
s32 x;
|
||||
|
||||
sub_8008C54(r0);
|
||||
sub_80073B8(r0);
|
||||
sub_80922B4(gAvailablePokemonNames, gUnknown_203B2B8->unk18->name, POKEMON_NAME_LENGTH);
|
||||
sub_808D930(buffer, gUnknown_203B2B8->unk18->speciesNum);
|
||||
ExpandPlaceholdersBuffer(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames);
|
||||
x = sub_8008ED0(buffer1);
|
||||
xxx_call_draw_string(((gUnknown_80DD370.unk0c << 3) - x) / 2, 3, buffer1, r0, 0);
|
||||
sub_80073E0(r0);
|
||||
}
|
||||
|
||||
u32 sub_8026E88(struct PokemonStruct *r0)
|
||||
{
|
||||
u8 iVar3;
|
||||
if(r0->unk2 == 0)
|
||||
{
|
||||
iVar3 = (r0->unk4.unk4 == 0x41);
|
||||
if(iVar3 != 0)
|
||||
if(sub_80023E4(0x8) == 0)
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_8026EB8(struct PokemonStruct *r0)
|
||||
{
|
||||
u8 iVar3;
|
||||
if(sub_808D3BC() != r0)
|
||||
if(sub_808D3F8() != r0)
|
||||
if(r0->unk2 == 0)
|
||||
{
|
||||
iVar3 = (r0->unk4.unk4 == 0x41);
|
||||
if(iVar3 != 0)
|
||||
{
|
||||
if(sub_80023E4(0x8) != 0)
|
||||
goto check;
|
||||
}
|
||||
else
|
||||
check:
|
||||
if(sub_8026F04(r0) != 3)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
u32 sub_8026F04(struct PokemonStruct *r0)
|
||||
{
|
||||
if(r0->heldItem.itemIndex == 0)
|
||||
return 0;
|
||||
else if(GetNumberOfFilledInventorySlots() < INVENTORY_SIZE)
|
||||
return 1;
|
||||
else if(sub_8026F38(r0))
|
||||
return 2;
|
||||
else
|
||||
return 3;
|
||||
}
|
||||
|
||||
bool8 sub_8026F38(struct PokemonStruct *r0)
|
||||
{
|
||||
if(IsNotMoneyOrUsedTMItem(r0->heldItem.itemIndex))
|
||||
{
|
||||
if(IsThrowableItem(r0->heldItem.itemIndex))
|
||||
{
|
||||
if((gTeamInventory_203B460->teamStorage[r0->heldItem.itemIndex] + r0->heldItem.numItems) > 999)
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(gTeamInventory_203B460->teamStorage[r0->heldItem.itemIndex] > 998)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8026FA4(void)
|
||||
{
|
||||
switch(sub_8026F04(gUnknown_203B2B8->unk18))
|
||||
{
|
||||
case 1:
|
||||
PlaySound(0x14d);
|
||||
sub_8091274(&gUnknown_203B2B8->unk14);
|
||||
FillInventoryGaps();
|
||||
gUnknown_203B2B8->unk14.itemIndex = 0;
|
||||
gUnknown_203B2B8->unk14.numItems = 0;
|
||||
GivePokemonItem(gUnknown_203B2B8->pokeSpecies, &gUnknown_203B2B8->unk14);
|
||||
sub_8026074(0xA);
|
||||
break;
|
||||
case 2:
|
||||
PlaySound(0x14d);
|
||||
if(IsThrowableItem(gUnknown_203B2B8->unk14.itemIndex))
|
||||
{
|
||||
gTeamInventory_203B460->teamStorage[gUnknown_203B2B8->unk14.itemIndex] += gUnknown_203B2B8->unk14.numItems;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTeamInventory_203B460->teamStorage[gUnknown_203B2B8->unk14.itemIndex] += 1;
|
||||
}
|
||||
|
||||
gUnknown_203B2B8->unk14.itemIndex = 0;
|
||||
gUnknown_203B2B8->unk14.numItems = 0;
|
||||
GivePokemonItem(gUnknown_203B2B8->pokeSpecies, &gUnknown_203B2B8->unk14);
|
||||
sub_8026074(0xB);
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
sub_8026074(0x19);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -339,7 +339,7 @@ void sub_8090E14(u8* ext_buffer, struct ItemSlot* slot, struct unkStruct_8090F58
|
|||
ExpandPlaceholdersBuffer(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer);
|
||||
}
|
||||
}
|
||||
else if (slot->itemIndex == 105) {
|
||||
else if (slot->itemIndex == ITEM_ID_POKE) {
|
||||
ExpandPlaceholdersBuffer(buffer, gUnknown_810977C, GetMoneyValue(slot));
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ extern u8 sub_8012FD8(u32 *r0);
|
|||
extern void sub_8013114(u32 *, s32 *);
|
||||
extern void sub_801CBB8();
|
||||
|
||||
extern bool8 IsNotMoneyOrUsedTMItem(u8);
|
||||
extern bool8 sub_801ADA0(u32);
|
||||
extern void sub_8099690(u32);
|
||||
extern u32 sub_8013BBC(u32 *);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "global.h"
|
||||
#include "item.h"
|
||||
#include "kangaskhan_storage.h"
|
||||
#include "team_inventory.h"
|
||||
|
||||
|
|
@ -24,7 +25,6 @@ extern void sub_801CBB8(void);
|
|||
extern void sub_8017F10(u32);
|
||||
extern void sub_8012EA4(u32 *, u32);
|
||||
|
||||
bool8 IsNotMoneyOrUsedTMItem(u8 id);
|
||||
extern u8 sub_801ADA0(s32);
|
||||
extern void sub_801A928(void);
|
||||
extern void sub_8099690(u32);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@
|
|||
#include "team_inventory.h"
|
||||
|
||||
extern struct unkStruct_203B210 *gUnknown_203B210;
|
||||
extern u8 gUnknown_80DB8E4[];
|
||||
extern u8 gUnknown_80DB8EC[];
|
||||
extern u8 gUnknown_80DB92C[];
|
||||
extern u8 gUnknown_80DB934[];
|
||||
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
void UpdateKecleonStoreState(u32);
|
||||
|
|
@ -18,11 +22,27 @@ extern void sub_8099690(u32);
|
|||
extern u8 sub_8012FD8(u32 *);
|
||||
extern void sub_8013114(u32 *, u32 *);
|
||||
extern u32 sub_8019EDC(u8);
|
||||
extern void sub_801A2A8(u32);
|
||||
extern u32 sub_801A2A8(u8);
|
||||
extern s32 sub_801A8AC(void);
|
||||
extern u32 sub_801A6E8(u32);
|
||||
extern u32 sub_801A6E8(u8);
|
||||
extern void sub_801A928(void);
|
||||
extern void DrawTeamMoneyBox(u32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern void ExpandPlaceholdersBuffer(u8 *, u8 *, ...);
|
||||
extern void xxx_call_draw_string(s32 x, s32, u8 *, u32, u32);
|
||||
extern void sub_801AE84(void);
|
||||
extern void sub_8012D08(void *, u32);
|
||||
extern void sub_801A998(void);
|
||||
extern void sub_801A9E0(void);
|
||||
extern void sub_801AEF8(void);
|
||||
extern bool8 sub_801ADA0(u32);
|
||||
extern u32 sub_801AEA8(void);
|
||||
|
||||
|
||||
extern struct unkStruct_203B224 *gUnknown_203B224;
|
||||
|
||||
struct unkStruct_203B214
|
||||
{;
|
||||
|
|
@ -47,6 +67,7 @@ struct unkStruct_203B214
|
|||
};
|
||||
|
||||
extern struct unkStruct_203B214 *gUnknown_203B214;
|
||||
extern struct unkStruct_203B214 *gUnknown_203B21C;
|
||||
|
||||
struct ItemSlot_Alt
|
||||
{
|
||||
|
|
@ -67,12 +88,22 @@ extern void sub_8013660(void *);
|
|||
|
||||
extern struct UnkTextStruct2 gUnknown_80DB8CC;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB8B4;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB8FC;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB944;
|
||||
extern const struct UnkTextStruct2 gUnknown_80DB914;
|
||||
extern u16 gUnknown_203B218;
|
||||
extern u16 gUnknown_203B220;
|
||||
extern void sub_801A430(void);
|
||||
extern void sub_801A4A4(void);
|
||||
extern void sub_8013984(u8 *);
|
||||
extern void sub_801A064(void);
|
||||
extern void sub_801A0D8(void);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
extern s32 xxx_count_inv_unk230();
|
||||
extern u8 sub_801A37C(void);
|
||||
extern u16 gUnknown_203B228;
|
||||
extern u16 gUnknown_203B22A;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB95C;
|
||||
|
||||
void sub_8019B08(void)
|
||||
{
|
||||
|
|
@ -368,3 +399,509 @@ void sub_801A010(void)
|
|||
gUnknown_203B214 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_801A064(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0801A0D4\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldrh r1, [r0, 0x20]\n"
|
||||
"\tadds r0, 0x9C\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldrh r1, [r0, 0x1E]\n"
|
||||
"\tadds r0, 0x9D\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x9E\n"
|
||||
"\tmovs r1, 0xA\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x9F\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0x1A\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, 0x34]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x4A\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x34]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x4C\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x3C\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"
|
||||
"_0801A0D4: .4byte gUnknown_203B214");
|
||||
}
|
||||
|
||||
void sub_801A0D8(void)
|
||||
{
|
||||
struct HeldItem *heldItem;
|
||||
s32 iVar2;
|
||||
s32 y;
|
||||
s32 iVar4;
|
||||
u8 auStack204 [80];
|
||||
struct unkStruct_8090F58 local_7c;
|
||||
u8 auStack112 [80];
|
||||
struct ItemSlot_Alt slot;
|
||||
u8 temp_calc;
|
||||
|
||||
// Needed for the shifts..
|
||||
u32 index_shift;
|
||||
u32 numItems_shift;
|
||||
|
||||
sub_8008C54(gUnknown_203B214->unk34);
|
||||
sub_80073B8(gUnknown_203B214->unk34);
|
||||
xxx_call_draw_string(gUnknown_203B214->unk1E * 8 + 10,0,gUnknown_80DB8E4,
|
||||
gUnknown_203B214->unk34,0);
|
||||
|
||||
for(iVar4 = 0; iVar4 < gUnknown_203B214->unk1A; iVar4++)
|
||||
{
|
||||
temp_calc = (gUnknown_203B214->unk1E * gUnknown_203B214->unk1C) + iVar4;
|
||||
heldItem = xxx_get_inv_unk230_at_809185C(temp_calc);
|
||||
|
||||
index_shift = heldItem->itemIndex << 16;
|
||||
slot.temp.full_bits = (slot.temp.full_bits & 0xff00ffff) | index_shift;
|
||||
|
||||
numItems_shift = heldItem->numItems << 8;
|
||||
slot.temp.full_bits = (slot.temp.full_bits & 0xffff00ff) | numItems_shift;
|
||||
|
||||
slot.temp.full_bits = (slot.temp.full_bits & 0xffffff00) | (ITEM_FLAG_EXISTS | ITEM_FLAG_FOR_SALE);
|
||||
|
||||
local_7c.unk0 = 1;
|
||||
local_7c.unk4 = 0;
|
||||
local_7c.unk6 = 0x58;
|
||||
local_7c.unk8 = 1;
|
||||
sub_8090E14(auStack204,(struct ItemSlot *)&slot,&local_7c);
|
||||
iVar2 = GetStackBuyPrice((struct ItemSlot *)&slot);
|
||||
if (iVar2 <= gTeamInventory_203B460->teamMoney) {
|
||||
y = sub_8013800(gUnknown_203B214,iVar4);
|
||||
xxx_call_draw_string(8,y,auStack204,gUnknown_203B214->unk34,0);
|
||||
}
|
||||
else {
|
||||
ExpandPlaceholdersBuffer(auStack112,gUnknown_80DB8EC,auStack204);
|
||||
y = sub_8013800(gUnknown_203B214,iVar4);
|
||||
xxx_call_draw_string(8,y,auStack112,gUnknown_203B214->unk34,0);
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B214->unk34);
|
||||
}
|
||||
|
||||
u32 sub_801A20C(u32 r0)
|
||||
{
|
||||
if(xxx_count_non_empty_inv_unk250_8091A48() == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B21C = MemoryAlloc(sizeof(struct unkStruct_203B214), 0x8);
|
||||
gUnknown_203B21C->unk34 = r0;
|
||||
gUnknown_203B21C->unk38 = &gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34];
|
||||
sub_8006518(gUnknown_203B21C->unk3C);
|
||||
gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34] = gUnknown_80DB914;
|
||||
gUnknown_203B21C->unk38->unk14 = gUnknown_203B21C->unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B21C->unk3C, 1, 1);
|
||||
sub_8013818(gUnknown_203B21C, xxx_count_non_empty_inv_unk250_8091A48(), 0xA, r0);
|
||||
gUnknown_203B21C->temp.unk18 = gUnknown_203B220;
|
||||
sub_8013984((u8 *)gUnknown_203B21C);
|
||||
sub_801A430();
|
||||
sub_801A4A4();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_801A2A8(u8 r0)
|
||||
{
|
||||
struct ItemSlot_Alt slot;
|
||||
struct HeldItem *return_var;
|
||||
u32 r2;
|
||||
u32 r3;
|
||||
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(gUnknown_203B21C);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B21C))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
return_var = xxx_get_unk250_at_8091A90(sub_801A37C());
|
||||
|
||||
// NOTE: needs seperate vars to match
|
||||
r2 = return_var->itemIndex << 16;
|
||||
slot.temp.full_bits = (slot.temp.full_bits & 0xff00ffff) | r2;
|
||||
r3 = return_var->numItems << 8;
|
||||
slot.temp.full_bits = (slot.temp.full_bits & 0xffff00ff) | r3;
|
||||
|
||||
if(GetStackBuyPrice((struct ItemSlot *)&slot) > gTeamInventory_203B460->teamMoney)
|
||||
{
|
||||
PlayMenuSoundEffect(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayMenuSoundEffect(0);
|
||||
}
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(gUnknown_203B21C, 1) != 0)
|
||||
{
|
||||
sub_801A430();
|
||||
sub_801A4A4();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_801A37C(void)
|
||||
{
|
||||
return (gUnknown_203B21C->unk1E * gUnknown_203B21C->unk1C) + gUnknown_203B21C->temp.unk18_u8;
|
||||
}
|
||||
|
||||
void sub_801A398(u32 r0)
|
||||
{
|
||||
u8 r0_u8;
|
||||
|
||||
r0_u8 = r0;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B21C->unk3C, 0, 0);
|
||||
gUnknown_203B21C->unk22 = xxx_count_non_empty_inv_unk250_8091A48();
|
||||
sub_8013984((u8 *)gUnknown_203B21C);
|
||||
sub_801A430();
|
||||
sub_801A4A4();
|
||||
if(r0_u8)
|
||||
AddMenuCursorSprite(gUnknown_203B21C);
|
||||
}
|
||||
|
||||
void sub_801A3DC(void)
|
||||
{
|
||||
if(gUnknown_203B21C != NULL)
|
||||
{
|
||||
gUnknown_203B220 = gUnknown_203B21C->temp.unk18;
|
||||
gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34] = gUnknown_80DB8FC;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B21C->unk3C, 1, 1);
|
||||
MemoryFree(gUnknown_203B21C);
|
||||
gUnknown_203B21C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_801A430(void)
|
||||
{
|
||||
asm_unified("\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0801A4A0\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldrh r1, [r0, 0x20]\n"
|
||||
"\tadds r0, 0x9C\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldrh r1, [r0, 0x1E]\n"
|
||||
"\tadds r0, 0x9D\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x9E\n"
|
||||
"\tmovs r1, 0xA\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x9F\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0x1A\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, 0x34]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x4A\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x34]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x4C\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x3C\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"
|
||||
"_0801A4A0: .4byte gUnknown_203B21C");
|
||||
}
|
||||
|
||||
void sub_801A4A4(void)
|
||||
{
|
||||
struct HeldItem *heldItem;
|
||||
s32 iVar2;
|
||||
s32 y;
|
||||
s32 iVar4;
|
||||
u8 auStack204 [80];
|
||||
struct unkStruct_8090F58 local_7c;
|
||||
u8 auStack112 [80];
|
||||
struct ItemSlot_Alt slot;
|
||||
u8 temp_calc;
|
||||
|
||||
// Needed for the shifts..
|
||||
u32 index_shift;
|
||||
u32 numItems_shift;
|
||||
|
||||
sub_8008C54(gUnknown_203B21C->unk34);
|
||||
sub_80073B8(gUnknown_203B21C->unk34);
|
||||
xxx_call_draw_string(gUnknown_203B21C->unk1E * 8 + 10,0,gUnknown_80DB92C,
|
||||
gUnknown_203B21C->unk34,0);
|
||||
|
||||
for(iVar4 = 0; iVar4 < gUnknown_203B21C->unk1A; iVar4++)
|
||||
{
|
||||
temp_calc = (gUnknown_203B21C->unk1E * gUnknown_203B21C->unk1C) + iVar4;
|
||||
heldItem = xxx_get_unk250_at_8091A90(temp_calc);
|
||||
|
||||
index_shift = heldItem->itemIndex << 16;
|
||||
slot.temp.full_bits = (slot.temp.full_bits & 0xff00ffff) | index_shift;
|
||||
|
||||
numItems_shift = heldItem->numItems << 8;
|
||||
slot.temp.full_bits = (slot.temp.full_bits & 0xffff00ff) | numItems_shift;
|
||||
|
||||
slot.temp.full_bits = (slot.temp.full_bits & 0xffffff00) | (ITEM_FLAG_EXISTS | ITEM_FLAG_FOR_SALE);
|
||||
|
||||
local_7c.unk0 = 1;
|
||||
local_7c.unk4 = 0;
|
||||
local_7c.unk6 = 0x58;
|
||||
local_7c.unk8 = 1;
|
||||
sub_8090E14(auStack204,(struct ItemSlot *)&slot,&local_7c);
|
||||
iVar2 = GetStackBuyPrice((struct ItemSlot *)&slot);
|
||||
if (iVar2 <= gTeamInventory_203B460->teamMoney) {
|
||||
y = sub_8013800(gUnknown_203B21C,iVar4);
|
||||
xxx_call_draw_string(8,y,auStack204,gUnknown_203B21C->unk34,0);
|
||||
}
|
||||
else {
|
||||
ExpandPlaceholdersBuffer(auStack112,gUnknown_80DB934,auStack204);
|
||||
y = sub_8013800(gUnknown_203B21C,iVar4);
|
||||
xxx_call_draw_string(8,y,auStack112,gUnknown_203B21C->unk34,0);
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B21C->unk34);
|
||||
}
|
||||
|
||||
u32 sub_801A5D8(u32 param_1,int param_2,struct UnkTextStruct2_sub *param_3,u32 param_4)
|
||||
{
|
||||
|
||||
if (GetNumberOfFilledInventorySlots() == 0) {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
if (gUnknown_203B224 == NULL) {
|
||||
gUnknown_203B224 = MemoryAlloc(sizeof(struct unkStruct_203B224),8);
|
||||
}
|
||||
gUnknown_203B224->unk0 = param_1;
|
||||
FillInventoryGaps();
|
||||
sub_801AE84();
|
||||
|
||||
gUnknown_203B224->unk88 = param_2;
|
||||
gUnknown_203B224->unk8C = &gUnknown_203B224->unk90[param_2];
|
||||
|
||||
sub_8006518(gUnknown_203B224->unk90);
|
||||
gUnknown_203B224->unk90[gUnknown_203B224->unk88] = gUnknown_80DB95C;
|
||||
|
||||
gUnknown_203B224->unk8C->unk14 = gUnknown_203B224->unkF0;
|
||||
if (param_3 != NULL) {
|
||||
gUnknown_203B224->unk90[gUnknown_203B224->unk88].unk08 = *param_3;
|
||||
}
|
||||
sub_8012D08(gUnknown_203B224->unk8C,param_4);
|
||||
sub_8099690(1);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B224->unk90,1,1);
|
||||
sub_8013818(&gUnknown_203B224->unk54,GetNumberOfFilledInventorySlots(),param_4,param_2);
|
||||
gUnknown_203B224->unk6C = gUnknown_203B228;
|
||||
gUnknown_203B224->unk72 = gUnknown_203B22A;
|
||||
sub_8013984((u8 *)&gUnknown_203B224->unk54);
|
||||
sub_801A998();
|
||||
sub_801A9E0();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_801A6E8(u8 param_1)
|
||||
{
|
||||
s32 iVar5;
|
||||
struct ItemSlot local_10;
|
||||
|
||||
if (param_1 == '\0') {
|
||||
sub_8013660(&gUnknown_203B224->unk54);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B224->unk54)) {
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
switch(gUnknown_203B224->unk0) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
if (gUnknown_203B224->unk4[sub_801A8AC()] != 0)
|
||||
PlayMenuSoundEffect(2);
|
||||
else
|
||||
PlayMenuSoundEffect(0);
|
||||
break;
|
||||
case 3:
|
||||
if ((sub_801AEA8() != 0) || (sub_801ADA0(sub_801A8AC()) != '\0'))
|
||||
PlayMenuSoundEffect(0);
|
||||
else
|
||||
PlayMenuSoundEffect(2);
|
||||
break;
|
||||
case 4:
|
||||
local_10 = gTeamInventory_203B460->teamItems[sub_801A8AC()];
|
||||
if (CanSellItem(local_10.itemIndex) && (GetStackSellPrice(&local_10) + gTeamInventory_203B460->teamMoney < 100000))
|
||||
PlayMenuSoundEffect(0);
|
||||
else
|
||||
PlayMenuSoundEffect(2);
|
||||
break;
|
||||
case 5:
|
||||
PlayMenuSoundEffect(0);
|
||||
break;
|
||||
}
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
case 5:
|
||||
case 6:
|
||||
if (gUnknown_203B224->unk0 != 3) goto _0801A87C;
|
||||
iVar5 = sub_801A8AC();
|
||||
if ((gUnknown_203B224->unk4[iVar5] != 0) || (sub_801ADA0(iVar5) != '\0')) {
|
||||
PlayMenuSoundEffect(6);
|
||||
gUnknown_203B224->unk4[iVar5] = gUnknown_203B224->unk4[iVar5] ^ 1;
|
||||
sub_80138B8(&gUnknown_203B224->unk54,0);
|
||||
sub_801A9E0();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayMenuSoundEffect(2);
|
||||
goto _0801A87C;
|
||||
}
|
||||
case 3:
|
||||
if (gUnknown_203B224->unk0 != 2) {
|
||||
PlayMenuSoundEffect(5);
|
||||
sub_801AEF8();
|
||||
sub_801A9E0();
|
||||
}
|
||||
// NOTE: fallthrough needed here
|
||||
default:
|
||||
_0801A87C:
|
||||
if (sub_80138B8(&gUnknown_203B224->unk54,1) != '\0') {
|
||||
sub_801A998();
|
||||
sub_801A9E0();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_801A8AC(void)
|
||||
{
|
||||
return (gUnknown_203B224->unk72 * gUnknown_203B224->unk70) + gUnknown_203B224->unk6C;
|
||||
}
|
||||
|
||||
void sub_801A8D0(u32 r0)
|
||||
{
|
||||
u8 r0_u8;
|
||||
|
||||
r0_u8 = r0;
|
||||
|
||||
sub_8099690(1);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B224->unk90, 0, 0);
|
||||
FillInventoryGaps();
|
||||
gUnknown_203B224->unk76 = GetNumberOfFilledInventorySlots();
|
||||
sub_8013984((u8 *)&gUnknown_203B224->unk54);
|
||||
sub_801A998();
|
||||
sub_801A9E0();
|
||||
if(r0_u8)
|
||||
AddMenuCursorSprite((u8 *)&gUnknown_203B224->unk54);
|
||||
}
|
||||
|
||||
void sub_801A928(void)
|
||||
{
|
||||
if(gUnknown_203B224 != NULL)
|
||||
{
|
||||
gUnknown_203B228 = gUnknown_203B224->unk6C;
|
||||
gUnknown_203B22A = gUnknown_203B224->unk72;
|
||||
gUnknown_203B224->unk90[gUnknown_203B224->unk88] = gUnknown_80DB944;
|
||||
sub_8099690(0);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B224->unk90, 1, 1);
|
||||
MemoryFree(gUnknown_203B224);
|
||||
gUnknown_203B224 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801A998(void)
|
||||
{
|
||||
gUnknown_203B224->unkF0[0] = gUnknown_203B224->unk74;
|
||||
gUnknown_203B224->unkF0[1] = gUnknown_203B224->unk72;
|
||||
gUnknown_203B224->unkF0[2] = 0xB;
|
||||
gUnknown_203B224->unkF0[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B224->unk90, 1, 1);
|
||||
}
|
||||
|
|
|
|||
15
src/kecleon_items_2.c
Normal file
15
src/kecleon_items_2.c
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include "global.h"
|
||||
#include "file_system.h"
|
||||
#include "memory.h"
|
||||
#include "pokemon.h"
|
||||
#include "input.h"
|
||||
#include "item.h"
|
||||
#include "kecleon_items.h"
|
||||
#include "team_inventory.h"
|
||||
|
||||
extern struct unkStruct_203B224 *gUnknown_203B224;
|
||||
|
||||
struct unkStruct_203B224 * sub_801AF98(void)
|
||||
{
|
||||
return gUnknown_203B224;
|
||||
}
|
||||
|
|
@ -98,7 +98,7 @@ extern void sub_8013114(u32 *, u32 *);
|
|||
extern void sub_8095240(u32);
|
||||
|
||||
extern void sub_80920D8(u8 *);
|
||||
extern struct PokemonStruct *sub_808D33C(void);
|
||||
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
|
||||
extern u8 sub_80023E4(u32);
|
||||
extern u8 *sub_8098FB4();
|
||||
extern void ExpandPlaceholdersBuffer(u8 *buffer, const u8 *text, ...);
|
||||
|
|
@ -259,7 +259,7 @@ void DrawLoadScreenText(void)
|
|||
xxx_call_draw_string(64,0,gLoadScreen->formattedTeamName,0,0);
|
||||
|
||||
// Draw Player Name
|
||||
playerInfo = sub_808D33C();
|
||||
playerInfo = GetPlayerPokemonStruct();
|
||||
if (playerInfo == NULL)
|
||||
sub_80922B4(playerName, gNoNamePlaceholder, POKEMON_NAME_LENGTH);
|
||||
else
|
||||
|
|
|
|||
850
src/luminous_cave.c
Normal file
850
src/luminous_cave.c
Normal file
|
|
@ -0,0 +1,850 @@
|
|||
#include "global.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "input.h"
|
||||
#include "item.h"
|
||||
#include "memory.h"
|
||||
#include "menu.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
#include "text.h"
|
||||
#include "team_inventory.h"
|
||||
|
||||
struct unkStruct_203B2B0
|
||||
{
|
||||
// size: 0x174
|
||||
u8 unk0;
|
||||
u8 fill1[0x3];
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u16 unk8;
|
||||
/* 0xA */ s16 targetSpecies; // species # of the evolved pokemon (what we are evolving to)
|
||||
struct PokemonStruct *pokeStruct;
|
||||
/* 0x10 */ bool8 pokeRenamed;
|
||||
/* 0x14 */ u32 evoItem1_InvIndex; // inventory index of item
|
||||
/* 0x18 */ u32 evoItem2_InvIndex; // inventory index of item
|
||||
struct ItemSlot unk1C;
|
||||
u32 state;
|
||||
u32 fallbackState;
|
||||
u32 unk28;
|
||||
u32 unk2C;
|
||||
u32 unk30;
|
||||
struct MenuItem unk34[8];
|
||||
u16 unk74[0x8];
|
||||
u32 unk84;
|
||||
u8 fill88[0x104 - 0x88];
|
||||
struct OpenedFile *unk104;
|
||||
u8 *unk108;
|
||||
u16 unk10C;
|
||||
u16 unk10E;
|
||||
u8 unk110;
|
||||
u8 unk111;
|
||||
u8 unk112;
|
||||
struct UnkTextStruct2 unk114[4];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B2B0 *gUnknown_203B2B0;
|
||||
extern struct UnkTextStruct2 gUnknown_80DCA00;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC9E8;
|
||||
extern u8 gPlayerName[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
extern u8 gUnknown_202DFE8[];
|
||||
extern u8 gLuminousCaveSeekAwakening[];
|
||||
extern u8 gLuminousCaveEvolutionInfo[];
|
||||
extern u8 gLuminousCaveAskEvolution[];
|
||||
extern u8 gLuminousCaveYeShallReturn[];
|
||||
extern u8 gLuminousCaveGiveItem[];
|
||||
extern u8 gLuminousCaveGiveAnotherItem[];
|
||||
extern u8 gLuminousCaveLackWhatIsNeeded[];
|
||||
extern u8 gLuminousCaveOnlyOneItem[];
|
||||
extern u8 gLuminousCaveLetUsBegin[];
|
||||
extern u8 gLuminousCaveChangedAppearance[];
|
||||
extern u8 gLuminousCaveEvolved[];
|
||||
extern u8 gLuminousCaveGiveName[];
|
||||
extern u8 gLuminousCaveComeAlone[];
|
||||
extern u8 gLuminousCaveLackLevel[];
|
||||
extern u8 gLuminousCaveCantEvolveAnymore[];
|
||||
extern u8 gLuminousCaveLackFriendArea[];
|
||||
extern u8 gLuminousCaveLackRoom[];
|
||||
extern u8 gLuminousCaveLackIQ[];
|
||||
extern u8 gLuminousCaveLackItem[];
|
||||
extern u8 gLuminousCaveCantEvolveYet[];
|
||||
extern u8 gUnknown_80DCA18[];
|
||||
extern u8 *gUnknown_80D4970[];
|
||||
extern u8 *gUnknown_80D4934[];
|
||||
extern u8 gUnknown_80DCA24[];
|
||||
extern u8 gUnknown_80DCA2C[];
|
||||
|
||||
extern bool8 IsPokemonRenamed(struct PokemonStruct* pokemon);
|
||||
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
|
||||
extern void UpdateLuminousCaveState(u32);
|
||||
|
||||
extern void sub_8024E9C(void);
|
||||
extern void sub_8024F00(void);
|
||||
extern void sub_8024FD4(void);
|
||||
extern void sub_80250EC(void);
|
||||
extern void sub_80251CC(void);
|
||||
extern void sub_8024F70(void);
|
||||
extern void sub_8025058(void);
|
||||
extern void sub_802515C(void);
|
||||
extern void sub_80251E8(void);
|
||||
extern void sub_8025204(void);
|
||||
extern void LuminousCave_AdvancetoFallbackState(void);
|
||||
extern void sub_8024804(void);
|
||||
extern void UpdateLuminousCaveDialogue(void);
|
||||
|
||||
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u16 *, u32, u32, struct OpenedFile **r5, u32);
|
||||
void xxx_call_fade_out_bgm(u16 speed);
|
||||
void sub_801199C(u16 songIndex);
|
||||
void ClearItemSlotAt(u32 index);
|
||||
void xxx_call_fade_in_new_bgm(u16 songIndex, u16 speed);
|
||||
void sub_80977D0(void);
|
||||
void PlaySound(u32);
|
||||
void sub_8024CFC(void);
|
||||
void sub_8025254(void);
|
||||
void sub_8024D48(void);
|
||||
extern void sub_801A5D8(u32, u32, u32, u32);
|
||||
extern void sub_801A8D0(u32);
|
||||
extern void sub_801A9E0();
|
||||
extern void sub_801B3C0(struct ItemSlot *);
|
||||
extern void nullsub_104();
|
||||
void sub_8024DBC(void);
|
||||
void sub_8024E30(void);
|
||||
void sub_801AEE4(u32, u32);
|
||||
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
|
||||
void sub_808F734(struct PokemonStruct *, s16);
|
||||
void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size);
|
||||
u32 sub_801602C(u32 r0, u8 *name);
|
||||
void sub_808D9AC(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern u32 sub_801A6E8(u32);
|
||||
extern s32 sub_801A8AC(void);
|
||||
extern void sub_8099690(u32);
|
||||
extern void sub_801A928(void);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern u8 sub_8012FD8(u32 *);
|
||||
extern void sub_8013114(u32 *, u32 *);
|
||||
extern u32 sub_801B410(void);
|
||||
extern void sub_801B450(void);
|
||||
extern u32 sub_8016080(void);
|
||||
extern void sub_80160D8(void);
|
||||
extern void sub_808F468(struct PokemonStruct *, u8 *, u32);
|
||||
|
||||
bool8 LuminousCave_HasOnly1Member(void);
|
||||
|
||||
enum
|
||||
{
|
||||
LUMINOUS_CAVE_ENTRY,
|
||||
LUMINOUS_CAVE_ASK_EVOLVE,
|
||||
LUMINOUS_CAVE_EVOLVE_INFO,
|
||||
LUMINOUS_CAVE_SHALL_RETURN,
|
||||
LUMINOUS_CAVE_GIVE_ITEM_1 = 5,
|
||||
LUMINOUS_CAVE_GIVE_ITEM_2 = 10,
|
||||
LUMINOUS_CAVE_LACK_WHAT_NEEDED = 0xF,
|
||||
LUMINOUS_CAVE_ONLY_ONE_ITEM = 0x10,
|
||||
LUMINOUS_CAVE_LET_US_BEGIN = 0x11,
|
||||
LUMINOUS_CAVE_CHANGED_APPEARANCE = 0x12,
|
||||
LUMINOUS_CAVE_EVOLVED = 0x13,
|
||||
LUMINOUS_CAVE_PROMPT_NAME = 0x14,
|
||||
LUMINOUS_CAVE_FINISH_NAME = 0x15,
|
||||
LUMINOUS_CAVE_COME_ALONE = 0x16,
|
||||
LUMINOUS_CAVE_LACK_LEVEL = 0x17,
|
||||
LUMINOUS_CAVE_CANT_EVOLVE_ANYMORE = 0x18,
|
||||
LUMINOUS_CAVE_LACK_FRIEND_AREA = 0x19,
|
||||
LUMINOUS_CAVE_LACK_ROOM = 0x1A,
|
||||
LUMINOUS_CAVE_LACK_IQ = 0x1B,
|
||||
LUMINOUS_CAVE_LACK_ITEM = 0x1C,
|
||||
LUMINOUS_CAVE_CANT_EVOLVE_YET = 0x1D,
|
||||
};
|
||||
|
||||
u32 sub_802465C(void)
|
||||
{
|
||||
struct OpenedFile *faceFile;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B2B0 = MemoryAlloc(sizeof(struct unkStruct_203B2B0),8);
|
||||
gUnknown_203B2B0->unk28 = 0;
|
||||
gUnknown_203B2B0->unk2C = 0;
|
||||
gUnknown_203B2B0->unk30 = 0;
|
||||
gUnknown_203B2B0->pokeStruct = GetPlayerPokemonStruct();
|
||||
gUnknown_203B2B0->pokeRenamed = IsPokemonRenamed(gUnknown_203B2B0->pokeStruct);
|
||||
gUnknown_203B2B0->unk0 = 0;
|
||||
faceFile = GetDialogueSpriteDataPtr(SPECIES_GULPIN);
|
||||
gUnknown_203B2B0->unk104 = faceFile;
|
||||
gUnknown_203B2B0->unk108 = faceFile->data;
|
||||
gUnknown_203B2B0->unk110 = 0;
|
||||
gUnknown_203B2B0->unk111 = 0;
|
||||
gUnknown_203B2B0->unk112 = 0;
|
||||
gUnknown_203B2B0->unk10C = 2;
|
||||
gUnknown_203B2B0->unk10E = 8;
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_ENTRY);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_80246F0(void)
|
||||
{
|
||||
switch(gUnknown_203B2B0->state) {
|
||||
case LUMINOUS_CAVE_ENTRY:
|
||||
case LUMINOUS_CAVE_ASK_EVOLVE:
|
||||
sub_8024E9C();
|
||||
break;
|
||||
case LUMINOUS_CAVE_GIVE_ITEM_1:
|
||||
sub_8024F00();
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
sub_8024FD4();
|
||||
break;
|
||||
case 8:
|
||||
sub_80250EC();
|
||||
break;
|
||||
case 9:
|
||||
sub_80251CC();
|
||||
break;
|
||||
case LUMINOUS_CAVE_GIVE_ITEM_2:
|
||||
sub_8024F70();
|
||||
break;
|
||||
case 0xb:
|
||||
case 0xc:
|
||||
sub_8025058();
|
||||
break;
|
||||
case 0xd:
|
||||
sub_802515C();
|
||||
break;
|
||||
case 0xe:
|
||||
sub_80251E8();
|
||||
break;
|
||||
case LUMINOUS_CAVE_FINISH_NAME:
|
||||
sub_8025204();
|
||||
break;
|
||||
case 4:
|
||||
return 3;
|
||||
default:
|
||||
LuminousCave_AdvancetoFallbackState();
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 sub_80247B4(void)
|
||||
{
|
||||
return gUnknown_203B2B0->unk0;
|
||||
}
|
||||
|
||||
void CleanLuminousCave(void)
|
||||
{
|
||||
if(gUnknown_203B2B0 != NULL)
|
||||
{
|
||||
CloseFile(gUnknown_203B2B0->unk104);
|
||||
MemoryFree(gUnknown_203B2B0);
|
||||
gUnknown_203B2B0 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateLuminousCaveState(u32 newState)
|
||||
{
|
||||
gUnknown_203B2B0->state = newState;
|
||||
sub_8024804();
|
||||
UpdateLuminousCaveDialogue();
|
||||
}
|
||||
|
||||
void sub_8024804(void)
|
||||
{
|
||||
s32 iVar4;
|
||||
|
||||
sub_8006518(gUnknown_203B2B0->unk114);
|
||||
switch(gUnknown_203B2B0->state) {
|
||||
case 8:
|
||||
case 0xD:
|
||||
gUnknown_203B2B0->unk114[2] = gUnknown_80DCA00;
|
||||
break;
|
||||
case LUMINOUS_CAVE_LET_US_BEGIN:
|
||||
case LUMINOUS_CAVE_CHANGED_APPEARANCE:
|
||||
case LUMINOUS_CAVE_EVOLVED:
|
||||
case LUMINOUS_CAVE_COME_ALONE:
|
||||
case LUMINOUS_CAVE_LACK_LEVEL:
|
||||
case LUMINOUS_CAVE_CANT_EVOLVE_ANYMORE:
|
||||
case LUMINOUS_CAVE_LACK_FRIEND_AREA:
|
||||
case LUMINOUS_CAVE_LACK_ROOM:
|
||||
case LUMINOUS_CAVE_LACK_IQ:
|
||||
case LUMINOUS_CAVE_LACK_ITEM:
|
||||
break;
|
||||
default:
|
||||
for(iVar4 = 0; iVar4 < 4; iVar4++)
|
||||
{
|
||||
gUnknown_203B2B0->unk114[iVar4] = gUnknown_80DC9E8;
|
||||
}
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2B0->unk114, 1, 1);
|
||||
}
|
||||
|
||||
void UpdateLuminousCaveDialogue(void)
|
||||
{
|
||||
char *monName;
|
||||
|
||||
switch(gUnknown_203B2B0->state) {
|
||||
case LUMINOUS_CAVE_ENTRY:
|
||||
if (LuminousCave_HasOnly1Member()) {
|
||||
gUnknown_203B2B0->unk28 = 3;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B2B0->unk28 = 1;
|
||||
}
|
||||
sub_8024CFC();
|
||||
sub_8014248(gLuminousCaveSeekAwakening,0,gUnknown_203B2B0->unk28,gUnknown_203B2B0->unk34,gUnknown_203B2B0->unk74,4,0,0,5);
|
||||
break;
|
||||
case LUMINOUS_CAVE_ASK_EVOLVE:
|
||||
sub_8024CFC();
|
||||
sub_8014248(gLuminousCaveAskEvolution,0,gUnknown_203B2B0->unk28,gUnknown_203B2B0->unk34,gUnknown_203B2B0->unk74,4,0,0,5);
|
||||
break;
|
||||
case LUMINOUS_CAVE_EVOLVE_INFO:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_ASK_EVOLVE;
|
||||
sub_80141B4(gLuminousCaveEvolutionInfo,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_SHALL_RETURN:
|
||||
gUnknown_203B2B0->fallbackState = 4;
|
||||
xxx_call_fade_in_new_bgm(MUS_LOADING_SCREEN,0x3c);
|
||||
sub_80141B4(gLuminousCaveYeShallReturn,0,0,0x305);
|
||||
break;
|
||||
|
||||
case LUMINOUS_CAVE_GIVE_ITEM_1:
|
||||
sub_8024D48();
|
||||
sub_8014248(gLuminousCaveGiveItem,0,gUnknown_203B2B0->unk2C,gUnknown_203B2B0->unk34,gUnknown_203B2B0->unk74,4,0,0,5);
|
||||
break;
|
||||
case 6:
|
||||
sub_801A5D8(2,3,0,10);
|
||||
break;
|
||||
case 7:
|
||||
sub_801A8D0(1);
|
||||
break;
|
||||
case LUMINOUS_CAVE_GIVE_ITEM_2:
|
||||
sub_8024DBC();
|
||||
sub_8014248(gLuminousCaveGiveAnotherItem,0,gUnknown_203B2B0->unk2C,gUnknown_203B2B0->unk34,gUnknown_203B2B0->unk74,4,0,0,5);
|
||||
break;
|
||||
case 0xb:
|
||||
sub_801A5D8(2,3,0,10);
|
||||
sub_801AEE4(gUnknown_203B2B0->evoItem1_InvIndex,1);
|
||||
sub_801A9E0();
|
||||
break;
|
||||
case 0xc:
|
||||
sub_801A8D0(1);
|
||||
sub_801AEE4(gUnknown_203B2B0->evoItem1_InvIndex,1);
|
||||
sub_801A9E0();
|
||||
break;
|
||||
case 8:
|
||||
case 0xd:
|
||||
sub_801A9E0();
|
||||
sub_8024E30();
|
||||
sub_8012D60(&gUnknown_203B2B0->unk84,gUnknown_203B2B0->unk34,0,gUnknown_203B2B0->unk74,
|
||||
gUnknown_203B2B0->unk30,2);
|
||||
break;
|
||||
case 9:
|
||||
case 0xe:
|
||||
sub_801B3C0(&gUnknown_203B2B0->unk1C);
|
||||
break;
|
||||
case LUMINOUS_CAVE_LACK_WHAT_NEEDED:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_GIVE_ITEM_1;
|
||||
sub_80141B4(gLuminousCaveLackWhatIsNeeded,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_ONLY_ONE_ITEM:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_GIVE_ITEM_2;
|
||||
sub_80141B4(gLuminousCaveOnlyOneItem,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_LET_US_BEGIN:
|
||||
sub_8025254();
|
||||
|
||||
if((gUnknown_203B2B0->unk8 & 1) != 0)
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_CHANGED_APPEARANCE;
|
||||
else if(gUnknown_203B2B0->unk8 == 4)
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_CANT_EVOLVE_ANYMORE;
|
||||
else if(gUnknown_203B2B0->unk8 == 2)
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_LACK_LEVEL;
|
||||
else if(gUnknown_203B2B0->unk8 == 0x10)
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_LACK_IQ;
|
||||
else if(gUnknown_203B2B0->unk8 == 0x20)
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_LACK_FRIEND_AREA;
|
||||
else if(gUnknown_203B2B0->unk8 == 0x40)
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_LACK_ROOM;
|
||||
else if(gUnknown_203B2B0->unk8 == 8)
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_LACK_ITEM;
|
||||
else
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_CANT_EVOLVE_YET;
|
||||
xxx_call_fade_out_bgm(0x3c);
|
||||
sub_80141B4(gLuminousCaveLetUsBegin,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_CHANGED_APPEARANCE:
|
||||
sub_808D9AC(gPlayerName,gUnknown_203B2B0->pokeStruct,5);
|
||||
PlaySound(0x1ff);
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_EVOLVED;
|
||||
sub_80141B4(gLuminousCaveChangedAppearance,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_EVOLVED:
|
||||
monName = GetMonSpecies(gUnknown_203B2B0->pokeStruct->speciesNum);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
monName = GetMonSpecies(gUnknown_203B2B0->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames + 0x50,monName);
|
||||
gUnknown_203B2B0->unk0 = 1;
|
||||
sub_80977D0();
|
||||
sub_808F734(gUnknown_203B2B0->pokeStruct,gUnknown_203B2B0->targetSpecies);
|
||||
nullsub_104();
|
||||
gUnknown_203B2B0->pokeStruct = GetPlayerPokemonStruct();
|
||||
if (gUnknown_203B2B0->evoItem1_InvIndex != INVENTORY_SIZE) {
|
||||
ClearItemSlotAt(gUnknown_203B2B0->evoItem1_InvIndex);
|
||||
}
|
||||
if (gUnknown_203B2B0->evoItem2_InvIndex != INVENTORY_SIZE) {
|
||||
ClearItemSlotAt(gUnknown_203B2B0->evoItem2_InvIndex);
|
||||
}
|
||||
FillInventoryGaps();
|
||||
sub_801199C(0x1ff);
|
||||
PlaySound(0xd2);
|
||||
if (gUnknown_203B2B0->pokeRenamed) {
|
||||
BoundedCopyStringtoBuffer(gUnknown_203B2B0->pokeStruct->name,GetMonSpecies(gUnknown_203B2B0->pokeStruct->speciesNum),POKEMON_NAME_LENGTH);
|
||||
}
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveEvolved,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_COME_ALONE:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveComeAlone,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_LACK_LEVEL:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveLackLevel,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_CANT_EVOLVE_ANYMORE:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveCantEvolveAnymore,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_LACK_FRIEND_AREA:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveLackFriendArea,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_LACK_ROOM:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveLackRoom,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_LACK_IQ:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveLackIQ,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_LACK_ITEM:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveLackItem,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_CANT_EVOLVE_YET:
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_SHALL_RETURN;
|
||||
sub_80141B4(gLuminousCaveCantEvolveYet,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_PROMPT_NAME:
|
||||
xxx_call_fade_in_new_bgm(8,0x3c);
|
||||
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_FINISH_NAME;
|
||||
sub_80141B4(gLuminousCaveGiveName,0,0,0x105);
|
||||
break;
|
||||
case LUMINOUS_CAVE_FINISH_NAME:
|
||||
if (gUnknown_203B2B0->pokeRenamed) {
|
||||
BoundedCopyStringtoBuffer(gUnknown_203B2B0->pokeStruct->name,GetMonSpecies(gUnknown_203B2B0->pokeStruct->speciesNum),POKEMON_NAME_LENGTH);
|
||||
}
|
||||
sub_801602C(0,gUnknown_203B2B0->pokeStruct->name);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8024CFC(void)
|
||||
{
|
||||
u8 *nullString;
|
||||
struct unkStruct_203B2B0 *preload;
|
||||
u32 defaultAction;
|
||||
|
||||
MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74));
|
||||
preload = gUnknown_203B2B0;
|
||||
nullString = NULL;
|
||||
preload->unk34[0].text = gUnknown_80DCA18;
|
||||
preload->unk34[0].menuAction = 3;
|
||||
defaultAction = 1;
|
||||
preload->unk34[1].text = *gUnknown_80D4970;
|
||||
preload->unk34[1].menuAction = 2;
|
||||
preload->unk34[2].text = *gUnknown_80D4934;
|
||||
preload->unk34[2].menuAction = defaultAction;
|
||||
preload->unk34[3].text = nullString;
|
||||
preload->unk34[3].menuAction = defaultAction;
|
||||
}
|
||||
|
||||
void sub_8024D48(void)
|
||||
{
|
||||
u8 *nullString;
|
||||
struct unkStruct_203B2B0 *preload;
|
||||
u32 defaultAction;
|
||||
s32 iVar4;
|
||||
s32 loopMax;
|
||||
|
||||
MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74));
|
||||
preload = gUnknown_203B2B0;
|
||||
nullString = NULL;
|
||||
preload->unk34[0].text = gUnknown_80DCA24;
|
||||
preload->unk34[0].menuAction = 4;
|
||||
defaultAction = 1;
|
||||
preload->unk34[1].text = gUnknown_80DCA2C;
|
||||
preload->unk34[1].menuAction = 5;
|
||||
preload->unk34[2].text = *gUnknown_80D4934;
|
||||
preload->unk34[2].menuAction = defaultAction;
|
||||
|
||||
loopMax = 3;
|
||||
|
||||
preload->unk34[3].text = nullString;
|
||||
preload->unk34[3].menuAction = defaultAction;
|
||||
|
||||
for(iVar4 = 0; iVar4 < loopMax; iVar4++)
|
||||
{
|
||||
if(gUnknown_203B2B0->unk74[iVar4] == 0)
|
||||
{
|
||||
if(gUnknown_203B2B0->unk34[iVar4].menuAction == gUnknown_203B2B0->unk2C)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
gUnknown_203B2B0->unk2C = 4;
|
||||
}
|
||||
|
||||
void sub_8024DBC(void)
|
||||
{
|
||||
u8 *nullString;
|
||||
struct unkStruct_203B2B0 *preload;
|
||||
u32 defaultAction;
|
||||
s32 iVar4;
|
||||
s32 loopMax;
|
||||
|
||||
MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74));
|
||||
preload = gUnknown_203B2B0;
|
||||
nullString = NULL;
|
||||
preload->unk34[0].text = gUnknown_80DCA24;
|
||||
preload->unk34[0].menuAction = 4;
|
||||
defaultAction = 1;
|
||||
preload->unk34[1].text = gUnknown_80DCA2C;
|
||||
preload->unk34[1].menuAction = 5;
|
||||
preload->unk34[2].text = *gUnknown_80D4934;
|
||||
preload->unk34[2].menuAction = defaultAction;
|
||||
|
||||
loopMax = 3;
|
||||
|
||||
preload->unk34[3].text = nullString;
|
||||
preload->unk34[3].menuAction = defaultAction;
|
||||
|
||||
for(iVar4 = 0; iVar4 < loopMax; iVar4++)
|
||||
{
|
||||
if(gUnknown_203B2B0->unk74[iVar4] == 0)
|
||||
{
|
||||
if(gUnknown_203B2B0->unk34[iVar4].menuAction == gUnknown_203B2B0->unk2C)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
gUnknown_203B2B0->unk2C = 4;
|
||||
}
|
||||
|
||||
void sub_8024E30(void)
|
||||
{
|
||||
u8 *nullString;
|
||||
struct unkStruct_203B2B0 *preload;
|
||||
u32 defaultAction;
|
||||
s32 iVar4;
|
||||
s32 loopMax;
|
||||
|
||||
MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74));
|
||||
preload = gUnknown_203B2B0;
|
||||
nullString = NULL;
|
||||
preload->unk34[0].text = gUnknown_80DCA2C;
|
||||
preload->unk34[0].menuAction = 5;
|
||||
defaultAction = 1;
|
||||
preload->unk34[1].text = *gUnknown_80D4970;
|
||||
preload->unk34[1].menuAction = 2;
|
||||
|
||||
loopMax = 2;
|
||||
|
||||
preload->unk34[2].text = nullString;
|
||||
preload->unk34[2].menuAction = defaultAction;
|
||||
|
||||
for(iVar4 = 0; iVar4 < loopMax; iVar4++)
|
||||
{
|
||||
if(gUnknown_203B2B0->unk74[iVar4] == 0)
|
||||
{
|
||||
if(gUnknown_203B2B0->unk34[iVar4].menuAction == gUnknown_203B2B0->unk30)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
gUnknown_203B2B0->unk30 = 5;
|
||||
}
|
||||
|
||||
void sub_8024E9C(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
if(sub_80144A4(&menuAction) == 0)
|
||||
{
|
||||
if(menuAction != 1) gUnknown_203B2B0->unk28 = menuAction;
|
||||
switch(menuAction)
|
||||
{
|
||||
case 3:
|
||||
if(LuminousCave_HasOnly1Member())
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_GIVE_ITEM_1);
|
||||
else
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_COME_ALONE);
|
||||
break;
|
||||
case 2:
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_EVOLVE_INFO);
|
||||
break;
|
||||
case 1:
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_SHALL_RETURN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8024F00(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
if(sub_80144A4(&menuAction) == 0)
|
||||
{
|
||||
if(menuAction != 1) gUnknown_203B2B0->unk2C = menuAction;
|
||||
switch(menuAction)
|
||||
{
|
||||
case 4:
|
||||
gUnknown_203B2B0->evoItem1_InvIndex = INVENTORY_SIZE;
|
||||
gUnknown_203B2B0->evoItem2_InvIndex = INVENTORY_SIZE;
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_LET_US_BEGIN);
|
||||
break;
|
||||
case 5:
|
||||
if(GetNumberOfFilledInventorySlots() == 0)
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_LACK_WHAT_NEEDED);
|
||||
else
|
||||
UpdateLuminousCaveState(0x6);
|
||||
break;
|
||||
case 1:
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_ASK_EVOLVE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8024F70(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
if(sub_80144A4(&menuAction) == 0)
|
||||
{
|
||||
if(menuAction != 1) gUnknown_203B2B0->unk2C = menuAction;
|
||||
switch(menuAction)
|
||||
{
|
||||
case 4:
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_LET_US_BEGIN);
|
||||
break;
|
||||
case 5:
|
||||
if(GetNumberOfFilledInventorySlots() < 2)
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_ONLY_ONE_ITEM);
|
||||
else
|
||||
UpdateLuminousCaveState(0xB);
|
||||
break;
|
||||
case 1:
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_ASK_EVOLVE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8024FD4(void)
|
||||
{
|
||||
switch(sub_801A6E8(1))
|
||||
{
|
||||
case 3:
|
||||
gUnknown_203B2B0->evoItem1_InvIndex = sub_801A8AC();
|
||||
gUnknown_203B2B0->evoItem2_InvIndex = INVENTORY_SIZE;
|
||||
gUnknown_203B2B0->unk1C = gTeamInventory_203B460->teamItems[gUnknown_203B2B0->evoItem1_InvIndex];
|
||||
UpdateLuminousCaveState(8);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2B0->unk1C = gTeamInventory_203B460->teamItems[sub_801A8AC()];
|
||||
sub_8099690(0);
|
||||
UpdateLuminousCaveState(9);
|
||||
break;
|
||||
case 2:
|
||||
sub_801A928();
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_GIVE_ITEM_1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8025058(void)
|
||||
{
|
||||
switch(sub_801A6E8(1))
|
||||
{
|
||||
case 3:
|
||||
if(gUnknown_203B2B0->evoItem1_InvIndex != sub_801A8AC())
|
||||
{
|
||||
gUnknown_203B2B0->evoItem2_InvIndex = sub_801A8AC();
|
||||
gUnknown_203B2B0->unk1C = gTeamInventory_203B460->teamItems[gUnknown_203B2B0->evoItem2_InvIndex];
|
||||
UpdateLuminousCaveState(0xD);
|
||||
}
|
||||
else
|
||||
PlayMenuSoundEffect(2);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2B0->unk1C = gTeamInventory_203B460->teamItems[sub_801A8AC()];
|
||||
sub_8099690(0);
|
||||
UpdateLuminousCaveState(0xE);
|
||||
break;
|
||||
case 2:
|
||||
sub_801A928();
|
||||
UpdateLuminousCaveState(0xA);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80250EC(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
menuAction = 0;
|
||||
sub_801A6E8(0);
|
||||
|
||||
if(!sub_8012FD8(&gUnknown_203B2B0->unk84))
|
||||
{
|
||||
sub_8013114(&gUnknown_203B2B0->unk84, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B2B0->unk30 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
case 5:
|
||||
sub_801A928();
|
||||
UpdateLuminousCaveState(0xA);
|
||||
break;
|
||||
case 2:
|
||||
sub_8099690(0);
|
||||
UpdateLuminousCaveState(0x9);
|
||||
break;
|
||||
case 1:
|
||||
UpdateLuminousCaveState(0x7);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802515C(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
menuAction = 0;
|
||||
sub_801A6E8(0);
|
||||
|
||||
if(!sub_8012FD8(&gUnknown_203B2B0->unk84))
|
||||
{
|
||||
sub_8013114(&gUnknown_203B2B0->unk84, &menuAction);
|
||||
if(menuAction != 1) gUnknown_203B2B0->unk30 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
case 5:
|
||||
sub_801A928();
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_LET_US_BEGIN);
|
||||
break;
|
||||
case 2:
|
||||
sub_8099690(0);
|
||||
UpdateLuminousCaveState(0xE);
|
||||
break;
|
||||
case 1:
|
||||
UpdateLuminousCaveState(0xC);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80251CC(void)
|
||||
{
|
||||
switch(sub_801B410())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801B450();
|
||||
UpdateLuminousCaveState(0x7);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80251E8(void)
|
||||
{
|
||||
switch(sub_801B410())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801B450();
|
||||
UpdateLuminousCaveState(0xC);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8025204(void)
|
||||
{
|
||||
switch(sub_8016080())
|
||||
{
|
||||
case 3:
|
||||
sub_80160D8();
|
||||
gUnknown_203B2B0->pokeRenamed = IsPokemonRenamed(gUnknown_203B2B0->pokeStruct);
|
||||
UpdateLuminousCaveState(LUMINOUS_CAVE_SHALL_RETURN);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void LuminousCave_AdvancetoFallbackState(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
UpdateLuminousCaveState(gUnknown_203B2B0->fallbackState);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8025254(void)
|
||||
{
|
||||
if(gUnknown_203B2B0->evoItem1_InvIndex == INVENTORY_SIZE)
|
||||
gUnknown_203B2B0->unk4 = 0;
|
||||
else
|
||||
{
|
||||
gUnknown_203B2B0->unk4 = gTeamInventory_203B460->teamItems[gUnknown_203B2B0->evoItem1_InvIndex].itemIndex;
|
||||
}
|
||||
if(gUnknown_203B2B0->evoItem2_InvIndex == INVENTORY_SIZE)
|
||||
gUnknown_203B2B0->unk5 = 0;
|
||||
else
|
||||
{
|
||||
gUnknown_203B2B0->unk5 = gTeamInventory_203B460->teamItems[gUnknown_203B2B0->evoItem2_InvIndex].itemIndex;
|
||||
}
|
||||
|
||||
gUnknown_203B2B0->unk6 = RandomCapped(0xFF);
|
||||
sub_808F468(gUnknown_203B2B0->pokeStruct, &gUnknown_203B2B0->unk4, 1);
|
||||
}
|
||||
|
||||
bool8 LuminousCave_HasOnly1Member(void)
|
||||
{
|
||||
s32 r3;
|
||||
s32 iVar3; // loop index
|
||||
struct PokemonStruct *preload;
|
||||
|
||||
preload = &gRecruitedPokemonRef->pokemon[0];
|
||||
r3 = 0;
|
||||
for(iVar3 = 0; iVar3 < NUM_SPECIES; iVar3++, preload++)
|
||||
{
|
||||
if((preload->unk0 >> 1) & 1)
|
||||
r3++;
|
||||
}
|
||||
|
||||
if(r3 == 1)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -419,7 +419,7 @@ extern void sub_8031E10();
|
|||
extern void sub_802F2C0();
|
||||
extern u32 sub_80144A4(s32 *r0);
|
||||
extern void SetThankYouMailMenuState(u32);
|
||||
extern struct PokemonStruct *sub_808D33C(void);
|
||||
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
|
||||
extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
|
||||
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
|
||||
extern void sub_80922B4(u8 *, u8 *, u32);
|
||||
|
|
@ -1487,7 +1487,7 @@ void UpdateThankYouMailText(void)
|
|||
|
||||
switch(gUnknown_203B2C4->state) {
|
||||
case 5:
|
||||
pokeStruct = sub_808D33C();
|
||||
pokeStruct = GetPlayerPokemonStruct();
|
||||
sub_80922B4(auStack180,pokeStruct->name, POKEMON_NAME_LENGTH);
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180);
|
||||
sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
|
|
@ -1646,7 +1646,7 @@ void UpdateThankYouMailText(void)
|
|||
sub_8014248(gUnknown_80DF5E4,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
|
||||
break;
|
||||
case THANK_YOU_MAIL_COMMS_CLEANUP:
|
||||
pokeStruct2 = sub_808D33C();
|
||||
pokeStruct2 = GetPlayerPokemonStruct();
|
||||
sub_80922B4(auStack100, pokeStruct2->name, POKEMON_NAME_LENGTH);
|
||||
ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100);
|
||||
sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ extern void sub_8013114(u32 *, s32 *);
|
|||
extern u32 sub_802DEE0(void);
|
||||
extern void sub_802DF24(void);
|
||||
extern void sub_808DA34(u8 *buffer, struct PokemonStruct *pokemon);
|
||||
extern struct PokemonStruct *sub_808D33C(void);
|
||||
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
|
||||
extern void sub_802F6FC(void);
|
||||
extern void sub_802F718(void);
|
||||
extern u8 sub_80138B8(u32 *, u32);
|
||||
|
|
@ -368,7 +368,7 @@ u32 sub_802F204(struct unkStruct_802F204 *r0, u8 r1)
|
|||
// NOTE: dumb var to get correct ordering
|
||||
preload = gUnknown_203B310;
|
||||
strcpy(gUnknown_202E5D8, preload->unk10->clientName);
|
||||
sub_808DA34(gAvailablePokemonNames, sub_808D33C());
|
||||
sub_808DA34(gAvailablePokemonNames, GetPlayerPokemonStruct());
|
||||
|
||||
gUnknown_203B310->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B310->unk10->unk14);
|
||||
gUnknown_203B310->faceData = NULL;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user