summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-10-24 10:22:39 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-10-24 10:22:39 -0400
commit779d6187c613ce4491533bf0c24e9f60ddf697b4 (patch)
treee127f75d964baf78032f4adf18e6774d7d14d692
parentdb3be6ef2e9482edae2446cd71d03d7c6ae143f7 (diff)
field_specials through sub_80CC534
-rw-r--r--asm/field_specials.s731
-rw-r--r--asm/pokemon_summary_screen.s2
-rw-r--r--data/event_scripts.s20
-rw-r--r--data/field_specials.s127
-rw-r--r--data/specials.inc4
-rw-r--r--include/constants/flags.h1
-rw-r--r--include/constants/vars.h82
-rw-r--r--include/field_specials.h3
-rw-r--r--include/global.fieldmap.h3
-rw-r--r--src/field_specials.c195
-rw-r--r--src/itemfinder.c4
11 files changed, 320 insertions, 852 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s
index e76602b01..df5af36d3 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -5,735 +5,6 @@
.text
- thumb_func_start ChangeBoxPokemonNickname
-ChangeBoxPokemonNickname: @ 80CBFE0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- ldr r0, _080CC050 @ =gSpecialVar_MonBoxId
- ldrb r0, [r0]
- ldr r1, _080CC054 @ =gSpecialVar_MonBoxPos
- ldrb r1, [r1]
- bl GetBoxedMonPtr
- adds r6, r0, 0
- ldr r2, _080CC058 @ =gStringVar3
- movs r1, 0x2
- bl GetBoxMonData
- ldr r0, _080CC05C @ =gStringVar2
- mov r8, r0
- adds r0, r6, 0
- movs r1, 0x2
- mov r2, r8
- bl GetBoxMonData
- adds r0, r6, 0
- movs r1, 0xB
- movs r2, 0
- bl GetBoxMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl GetBoxMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0
- bl GetBoxMonData
- str r0, [sp]
- ldr r0, _080CC060 @ =ChangeBoxPokemonNickname_CB
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r8
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC050: .4byte gSpecialVar_MonBoxId
-_080CC054: .4byte gSpecialVar_MonBoxPos
-_080CC058: .4byte gStringVar3
-_080CC05C: .4byte gStringVar2
-_080CC060: .4byte ChangeBoxPokemonNickname_CB
- thumb_func_end ChangeBoxPokemonNickname
-
- thumb_func_start ChangeBoxPokemonNickname_CB
-ChangeBoxPokemonNickname_CB: @ 80CC064
- push {lr}
- ldr r0, _080CC07C @ =gSpecialVar_MonBoxId
- ldrb r0, [r0]
- ldr r1, _080CC080 @ =gSpecialVar_MonBoxPos
- ldrb r1, [r1]
- ldr r2, _080CC084 @ =gStringVar2
- bl SetBoxMonNickFromAnyBox
- bl CB2_ReturnToFieldContinueScriptPlayMapMusic
- pop {r0}
- bx r0
- .align 2, 0
-_080CC07C: .4byte gSpecialVar_MonBoxId
-_080CC080: .4byte gSpecialVar_MonBoxPos
-_080CC084: .4byte gStringVar2
- thumb_func_end ChangeBoxPokemonNickname_CB
-
- thumb_func_start ChangePokemonNickname
-ChangePokemonNickname: @ 80CC088
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x8
- ldr r0, _080CC130 @ =gSpecialVar_0x8004
- mov r9, r0
- ldrh r0, [r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r6, _080CC134 @ =gPlayerParty
- adds r0, r6
- ldr r2, _080CC138 @ =gStringVar3
- movs r1, 0x2
- bl GetMonData
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- ldr r1, _080CC13C @ =gStringVar2
- mov r10, r1
- movs r1, 0x2
- mov r2, r10
- bl GetMonData
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- bl GetMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- ldr r0, _080CC140 @ =ChangePokemonNickname_CB
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r10
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC130: .4byte gSpecialVar_0x8004
-_080CC134: .4byte gPlayerParty
-_080CC138: .4byte gStringVar3
-_080CC13C: .4byte gStringVar2
-_080CC140: .4byte ChangePokemonNickname_CB
- thumb_func_end ChangePokemonNickname
-
- thumb_func_start ChangePokemonNickname_CB
-ChangePokemonNickname_CB: @ 80CC144
- push {lr}
- ldr r0, _080CC164 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080CC168 @ =gPlayerParty
- adds r0, r1
- ldr r2, _080CC16C @ =gStringVar2
- movs r1, 0x2
- bl SetMonData
- bl CB2_ReturnToFieldContinueScriptPlayMapMusic
- pop {r0}
- bx r0
- .align 2, 0
-_080CC164: .4byte gSpecialVar_0x8004
-_080CC168: .4byte gPlayerParty
-_080CC16C: .4byte gStringVar2
- thumb_func_end ChangePokemonNickname_CB
-
- thumb_func_start TV_CopyNicknameToStringVar1AndEnsureTerminated
-TV_CopyNicknameToStringVar1AndEnsureTerminated: @ 80CC170
- push {r4,lr}
- ldr r0, _080CC194 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080CC198 @ =gPlayerParty
- adds r0, r1
- ldr r4, _080CC19C @ =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC194: .4byte gSpecialVar_0x8004
-_080CC198: .4byte gPlayerParty
-_080CC19C: .4byte gStringVar1
- thumb_func_end TV_CopyNicknameToStringVar1AndEnsureTerminated
-
- thumb_func_start TV_CheckMonOTIDEqualsPlayerID
-TV_CheckMonOTIDEqualsPlayerID: @ 80CC1A0
- push {r4,lr}
- bl sub_80CC1E4
- adds r4, r0, 0
- ldr r0, _080CC1C8 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080CC1CC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- cmp r4, r0
- bne _080CC1D4
- ldr r1, _080CC1D0 @ =gSpecialVar_Result
- movs r0, 0
- b _080CC1D8
- .align 2, 0
-_080CC1C8: .4byte gSpecialVar_0x8004
-_080CC1CC: .4byte gPlayerParty
-_080CC1D0: .4byte gSpecialVar_Result
-_080CC1D4:
- ldr r1, _080CC1E0 @ =gSpecialVar_Result
- movs r0, 0x1
-_080CC1D8:
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC1E0: .4byte gSpecialVar_Result
- thumb_func_end TV_CheckMonOTIDEqualsPlayerID
-
- thumb_func_start sub_80CC1E4
-sub_80CC1E4: @ 80CC1E4
- ldr r0, _080CC200 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r0, [r2, 0xD]
- lsls r0, 24
- ldrb r1, [r2, 0xC]
- lsls r1, 16
- orrs r0, r1
- ldrb r1, [r2, 0xB]
- lsls r1, 8
- orrs r0, r1
- ldrb r1, [r2, 0xA]
- orrs r0, r1
- bx lr
- .align 2, 0
-_080CC200: .4byte gSaveBlock2Ptr
- thumb_func_end sub_80CC1E4
-
- thumb_func_start GetUnlockedSeviiAreas
-GetUnlockedSeviiAreas: @ 80CC204
- push {r4,lr}
- movs r4, 0
- ldr r0, _080CC2A4 @ =0x0000089b
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080CC218
- movs r4, 0x1
-_080CC218:
- ldr r0, _080CC2A8 @ =0x0000089c
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080CC22A
- movs r0, 0x2
- orrs r4, r0
-_080CC22A:
- ldr r0, _080CC2AC @ =0x0000089d
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080CC240
- movs r0, 0x4
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080CC240:
- ldr r0, _080CC2B0 @ =0x0000089e
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080CC256
- movs r0, 0x8
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080CC256:
- ldr r0, _080CC2B4 @ =0x0000089f
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080CC26C
- movs r0, 0x10
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080CC26C:
- ldr r0, _080CC2B8 @ =0x000008a1
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080CC282
- movs r0, 0x20
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080CC282:
- movs r0, 0x8A
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080CC29A
- movs r0, 0x40
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080CC29A:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080CC2A4: .4byte 0x0000089b
-_080CC2A8: .4byte 0x0000089c
-_080CC2AC: .4byte 0x0000089d
-_080CC2B0: .4byte 0x0000089e
-_080CC2B4: .4byte 0x0000089f
-_080CC2B8: .4byte 0x000008a1
- thumb_func_end GetUnlockedSeviiAreas
-
- thumb_func_start sub_80CC2BC
-sub_80CC2BC: @ 80CC2BC
- push {r4-r7,lr}
- sub sp, 0x24
- movs r5, 0
- add r7, sp, 0xC
- movs r1, 0
-_080CC2C6:
- lsls r0, r5, 1
- add r0, sp
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _080CC2C6
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- cmp r5, r6
- bcs _080CC318
-_080CC2E4:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _080CC3BC @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- lsls r1, r5, 1
- add r1, sp
- strh r0, [r1]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl GetMonData
- lsls r1, r5, 2
- adds r1, r7, r1
- str r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r6
- bcc _080CC2E4
-_080CC318:
- ldr r4, _080CC3C0 @ =0x00004043
- mov r0, sp
- ldrh r0, [r0]
- ldr r1, [sp, 0xC]
- bl SpeciesToMailSpecies
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- adds r4, 0x1
- mov r0, sp
- ldrh r0, [r0, 0x2]
- ldr r1, [r7, 0x4]
- bl SpeciesToMailSpecies
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- adds r4, 0x1
- mov r0, sp
- ldrh r0, [r0, 0x4]
- ldr r1, [r7, 0x8]
- bl SpeciesToMailSpecies
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- adds r4, 0x1
- mov r0, sp
- ldrh r0, [r0, 0x6]
- ldr r1, [r7, 0xC]
- bl SpeciesToMailSpecies
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- adds r4, 0x1
- mov r0, sp
- ldrh r0, [r0, 0x8]
- ldr r1, [r7, 0x10]
- bl SpeciesToMailSpecies
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- adds r4, 0x1
- mov r0, sp
- ldrh r0, [r0, 0xA]
- ldr r1, [r7, 0x14]
- bl SpeciesToMailSpecies
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- ldr r0, _080CC3C4 @ =0x00004042
- ldr r1, _080CC3C8 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- bl VarSet
- add sp, 0x24
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC3BC: .4byte gPlayerParty
-_080CC3C0: .4byte 0x00004043
-_080CC3C4: .4byte 0x00004042
-_080CC3C8: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80CC2BC
-
- thumb_func_start sub_80CC3CC
-sub_80CC3CC: @ 80CC3CC
- push {r4-r6,lr}
- movs r5, 0
- ldr r4, _080CC3F8 @ =gSpecialVar_0x8004
- movs r0, 0xA
- bl GetGameStat
- strh r0, [r4]
- movs r0, 0xD
- bl GetGameStat
- adds r6, r0, 0
- ldr r4, _080CC3FC @ =gSpecialVar_0x8006
- movs r0, 0x17
- bl GetGameStat
- strh r0, [r4]
- ldr r1, _080CC400 @ =0x0000ffff
- cmp r6, r1
- bls _080CC408
- ldr r0, _080CC404 @ =gSpecialVar_0x8005
- strh r1, [r0]
- b _080CC40C
- .align 2, 0
-_080CC3F8: .4byte gSpecialVar_0x8004
-_080CC3FC: .4byte gSpecialVar_0x8006
-_080CC400: .4byte 0x0000ffff
-_080CC404: .4byte gSpecialVar_0x8005
-_080CC408:
- ldr r0, _080CC440 @ =gSpecialVar_0x8005
- strh r6, [r0]
-_080CC40C:
- adds r1, r0, 0
- ldr r0, _080CC444 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _080CC41A
- movs r0, 0x1
- orrs r5, r0
-_080CC41A:
- ldrh r0, [r1]
- cmp r0, 0
- beq _080CC428
- movs r0, 0x2
- orrs r5, r0
- lsls r0, r5, 16
- lsrs r5, r0, 16
-_080CC428:
- ldr r0, _080CC448 @ =gSpecialVar_0x8006
- ldrh r0, [r0]
- cmp r0, 0
- beq _080CC438
- movs r0, 0x4
- orrs r5, r0
- lsls r0, r5, 16
- lsrs r5, r0, 16
-_080CC438:
- adds r0, r5, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080CC440: .4byte gSpecialVar_0x8005
-_080CC444: .4byte gSpecialVar_0x8004
-_080CC448: .4byte gSpecialVar_0x8006
- thumb_func_end sub_80CC3CC
-
- thumb_func_start GetHiddenItemAttr
-GetHiddenItemAttr: @ 80CC44C
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0
- bne _080CC45E
- lsls r0, 16
- lsrs r0, 16
- b _080CC486
-_080CC45E:
- cmp r1, 0x1
- bne _080CC470
- lsrs r0, 16
- movs r1, 0xFF
- ands r0, r1
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r1
- b _080CC486
-_080CC470:
- cmp r1, 0x2
- bne _080CC47C
- lsrs r0, 24
- movs r1, 0x7F
- ands r0, r1
- b _080CC486
-_080CC47C:
- cmp r2, 0x3
- beq _080CC484
- movs r0, 0x1
- b _080CC486
-_080CC484:
- lsrs r0, 31
-_080CC486:
- pop {r1}
- bx r1
- thumb_func_end GetHiddenItemAttr
-
- thumb_func_start Special_PlayerPartyContainsSpecies
-Special_PlayerPartyContainsSpecies: @ 80CC48C
- push {r4,r5,lr}
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _080CC4CA
-_080CC49C:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080CC4B8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- ldr r1, _080CC4BC @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- cmp r0, r1
- bne _080CC4C0
- movs r0, 0x1
- b _080CC4CC
- .align 2, 0
-_080CC4B8: .4byte gPlayerParty
-_080CC4BC: .4byte gSpecialVar_0x8004
-_080CC4C0:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _080CC49C
-_080CC4CA:
- movs r0, 0
-_080CC4CC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end Special_PlayerPartyContainsSpecies
-
- thumb_func_start sub_80CC4D4
-sub_80CC4D4: @ 80CC4D4
- push {r4-r7,lr}
- movs r3, 0
- ldr r0, _080CC508 @ =gSaveBlock1Ptr
- ldr r4, [r0]
- movs r6, 0x4
- ldrsb r6, [r4, r6]
- ldr r5, _080CC50C @ =gUnknown_83F5D32
- adds r0, r5, 0x2
- mov r12, r0
- adds r7, r5, 0x1
-_080CC4E8:
- lsls r0, r3, 1
- adds r2, r0, r3
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r6, r0
- bne _080CC510
- movs r1, 0x5
- ldrsb r1, [r4, r1]
- adds r0, r2, r7
- ldrb r0, [r0]
- cmp r1, r0
- bne _080CC510
- mov r1, r12
- adds r0, r2, r1
- ldrb r0, [r0]
- b _080CC51C
- .align 2, 0
-_080CC508: .4byte gSaveBlock1Ptr
-_080CC50C: .4byte gUnknown_83F5D32
-_080CC510:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xB
- bls _080CC4E8
- movs r0, 0x1
-_080CC51C:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80CC4D4
-
- thumb_func_start sub_80CC524
-sub_80CC524: @ 80CC524
- push {lr}
- movs r0, 0xB
- movs r1, 0
- bl sub_8113550
- pop {r0}
- bx r0
- thumb_func_end sub_80CC524
-
- thumb_func_start sub_80CC534
-sub_80CC534: @ 80CC534
- push {r4-r6,lr}
- movs r4, 0
- ldr r6, _080CC57C @ =gSaveBlock1Ptr
- ldr r5, _080CC580 @ =gUnknown_83F5D58
-_080CC53C:
- ldr r3, [r6]
- movs r1, 0x4
- ldrsb r1, [r3, r1]
- lsls r0, r4, 3
- adds r2, r0, r5
- ldrh r0, [r2]
- cmp r1, r0
- bne _080CC58C
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- ldrh r2, [r2, 0x2]
- cmp r0, r2
- bne _080CC58C
- ldr r5, _080CC584 @ =0x0000404d
- adds r0, r5, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x23
- bne _080CC56A
- cmp r4, 0x20
- beq _080CC596
-_080CC56A:
- adds r0, r5, 0
- adds r1, r4, 0
- bl VarSet
- ldr r0, _080CC588 @ =0x00000808
- bl FlagSet
- b _080CC596
- .align 2, 0
-_080CC57C: .4byte gSaveBlock1Ptr
-_080CC580: .4byte gUnknown_83F5D58
-_080CC584: .4byte 0x0000404d
-_080CC588: .4byte 0x00000808
-_080CC58C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x32
- bls _080CC53C
-_080CC596:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80CC534
-
thumb_func_start sub_80CC59C
sub_80CC59C: @ 80CC59C
push {r4-r7,lr}
@@ -2192,7 +1463,7 @@ _080CD104:
ldrh r1, [r1]
cmp r0, r1
bne _080CD140
- bl sub_80CC1E4
+ bl GetPlayerTrainerId
adds r4, r0, 0
adds r0, r5, 0
movs r1, 0x1
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index dcf8f6bfe..d9ef35bd4 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -7652,7 +7652,7 @@ _081384C4: .4byte gEnemyParty
_081384C8: .4byte gLinkPlayers
_081384CC: .4byte 0x0000304c
_081384D0:
- bl sub_80CC1E4
+ bl GetPlayerTrainerId
adds r4, r0, 0
ldr r0, _0813851C @ =0x0000ffff
ands r4, r0
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 2018e9fe0..f4276cc9c 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -7917,7 +7917,7 @@ EventScript_1B2907:: @ 81B2907
playse MUS_ME_PHOTO
dofieldeffect FLDEFF_UNK_45
delay 60
- special sub_80CC2BC
+ special Special_UpdateTrainerCardPhotoIcons
msgbox gUnknown_81B1E7D
hidemoneybox
nop
@@ -7942,7 +7942,7 @@ EventScript_1B292B:: @ 81B292B
FourIsland_House2_EventScript_1B2938:: @ 81B2938
lock
- specialvar VAR_0x8008, sub_80CC3CC
+ specialvar VAR_0x8008, Special_StickerLadyGetBragFlags
checkflag FLAG_MET_STICKER_LADY
goto_if FALSE, EventScript_1B2951
checkflag FLAG_MET_STICKER_LADY
@@ -8078,9 +8078,9 @@ EventScript_1B2B98:: @ 81B2B98
end
EventScript_1B2BC5:: @ 81B2BC5
- compare_var_to_value VAR_HOF_BRAG_STATE, 1
+ compare_var_to_value VAR_0x4049, 1
goto_if eq, EventScript_1B2C3D
- setvar VAR_HOF_BRAG_STATE, 1
+ setvar VAR_0x4049, 1
msgbox gUnknown_81B206E
goto EventScript_1B2C51
@@ -8088,9 +8088,9 @@ EventScript_1B2BE2:: @ 81B2BE2
end
EventScript_1B2BE3:: @ 81B2BE3
- compare_var_to_value VAR_HOF_BRAG_STATE, 2
+ compare_var_to_value VAR_0x4049, 2
goto_if eq, EventScript_1B2C3D
- setvar VAR_HOF_BRAG_STATE, 2
+ setvar VAR_0x4049, 2
msgbox gUnknown_81B20CF
goto EventScript_1B2C51
@@ -8098,9 +8098,9 @@ EventScript_1B2C00:: @ 81B2C00
end
EventScript_1B2C01:: @ 81B2C01
- compare_var_to_value VAR_HOF_BRAG_STATE, 3
+ compare_var_to_value VAR_0x4049, 3
goto_if eq, EventScript_1B2C3D
- setvar VAR_HOF_BRAG_STATE, 3
+ setvar VAR_0x4049, 3
msgbox gUnknown_81B2133
goto EventScript_1B2C51
@@ -8108,9 +8108,9 @@ EventScript_1B2C1E:: @ 81B2C1E
end
EventScript_1B2C1F:: @ 81B2C1F
- compare_var_to_value VAR_HOF_BRAG_STATE, 4
+ compare_var_to_value VAR_0x4049, 4
goto_if eq, EventScript_1B2C47
- setvar VAR_HOF_BRAG_STATE, 4
+ setvar VAR_0x4049, 4
msgbox gUnknown_81B21C4
goto EventScript_1B2C51
diff --git a/data/field_specials.s b/data/field_specials.s
index 3eadee1aa..35c70a476 100644
--- a/data/field_specials.s
+++ b/data/field_specials.s
@@ -1,5 +1,6 @@
#include "constants/species.h"
#include "constants/items.h"
+#include "constants/maps.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
@@ -235,72 +236,72 @@ sStarterMon:: @ 83F5D2C
.2byte SPECIES_CHARMANDER
gUnknown_83F5D32:: @ 83F5D32
- .byte 0x05, 0x03, 0x01
- .byte 0x06, 0x03, 0x03
- .byte 0x07, 0x07, 0x01
- .byte 0x08, 0x05, 0x01
- .byte 0x09, 0x05, 0x01
- .byte 0x0b, 0x01, 0x01
- .byte 0x0c, 0x07, 0x01
- .byte 0x0e, 0x05, 0x01
- .byte 0x22, 0x03, 0x01
- .byte 0x23, 0x07, 0x01
- .byte 0x1f, 0x02, 0x01
- .byte 0x25, 0x04, 0x01
+ .byte MAP_GROUP(VIRIDIAN_CITY_MART), MAP_NUM(VIRIDIAN_CITY_MART), 1
+ .byte MAP_GROUP(PEWTER_CITY_MART), MAP_NUM(PEWTER_CITY_MART), 3
+ .byte MAP_GROUP(CERULEAN_CITY_MART), MAP_NUM(CERULEAN_CITY_MART), 1
+ .byte MAP_GROUP(LAVENDER_TOWN_MART), MAP_NUM(LAVENDER_TOWN_MART), 1
+ .byte MAP_GROUP(VERMILION_CITY_MART), MAP_NUM(VERMILION_CITY_MART), 1
+ .byte MAP_GROUP(FUCHSIA_CITY_MART), MAP_NUM(FUCHSIA_CITY_MART), 1
+ .byte MAP_GROUP(CINNABAR_ISLAND_MART), MAP_NUM(CINNABAR_ISLAND_MART), 1
+ .byte MAP_GROUP(SAFFRON_CITY_MART), MAP_NUM(SAFFRON_CITY_MART), 1
+ .byte MAP_GROUP(THREE_ISLAND_MART), MAP_NUM(THREE_ISLAND_MART), 1
+ .byte MAP_GROUP(FOUR_ISLAND_MART), MAP_NUM(FOUR_ISLAND_MART), 1
+ .byte MAP_GROUP(SEVEN_ISLAND_MART), MAP_NUM(SEVEN_ISLAND_MART), 1
+ .byte MAP_GROUP(SIX_ISLAND_MART), MAP_NUM(SIX_ISLAND_MART), 1
.align 2
gUnknown_83F5D58:: @ 83F5D58
- .2byte 0x0004, 0x0000, 0x0003, 0x0000
- .2byte 0x0004, 0x0003, 0x0003, 0x0000
- .2byte 0x0005, 0x0001, 0x0003, 0x0001
- .2byte 0x001c, 0x0000, 0x0003, 0x0029
- .2byte 0x001c, 0x0000, 0x0003, 0x002a
- .2byte 0x0001, 0x0000, 0x000f, 0x0000
- .2byte 0x0001, 0x0000, 0x000f, 0x0003
- .2byte 0x0006, 0x0000, 0x0003, 0x0002
- .2byte 0x0006, 0x0002, 0x0003, 0x0002
- .2byte 0x0001, 0x0001, 0x0003, 0x0016
- .2byte 0x0001, 0x0002, 0x0003, 0x0016
- .2byte 0x0007, 0x0005, 0x0003, 0x0003
- .2byte 0x0007, 0x0006, 0x0003, 0x0003
- .2byte 0x001e, 0x0000, 0x0003, 0x002c
- .2byte 0x0011, 0x0000, 0x0003, 0x0017
- .2byte 0x0001, 0x001e, 0x0003, 0x0017
- .2byte 0x0001, 0x0020, 0x0003, 0x0018
- .2byte 0x0009, 0x0003, 0x0003, 0x0005
- .2byte 0x0009, 0x0006, 0x0003, 0x0005
- .2byte 0x0001, 0x0005, 0x0003, 0x0005
- .2byte 0x0001, 0x0024, 0x0003, 0x0014
- .2byte 0x0001, 0x0026, 0x0003, 0x001d
- .2byte 0x0001, 0x0051, 0x0003, 0x001c
- .2byte 0x0001, 0x0051, 0x0003, 0x001c
- .2byte 0x0001, 0x005f, 0x0003, 0x001c
- .2byte 0x0001, 0x0058, 0x0003, 0x0004
- .2byte 0x0008, 0x0002, 0x0003, 0x0004
- .2byte 0x0008, 0x0004, 0x0003, 0x0004
- .2byte 0x0001, 0x0023, 0x0003, 0x001a
- .2byte 0x0001, 0x0021, 0x0003, 0x0019
- .2byte 0x000a, 0x0000, 0x0003, 0x0006
- .2byte 0x000a, 0x0007, 0x0003, 0x0006
- .2byte 0x000a, 0x000e, 0x0003, 0x0006
- .2byte 0x000a, 0x0010, 0x0003, 0x0006
- .2byte 0x000a, 0x0011, 0x0003, 0x0006
- .2byte 0x0001, 0x002a, 0x000a, 0x000e
- .2byte 0x0001, 0x003f, 0x000b, 0x0000
- .2byte 0x000b, 0x0003, 0x0003, 0x0007
- .2byte 0x000b, 0x0007, 0x0003, 0x0007
- .2byte 0x000e, 0x0002, 0x0003, 0x000a
- .2byte 0x000e, 0x0003, 0x0003, 0x000a
- .2byte 0x0001, 0x002f, 0x0003, 0x000a
- .2byte 0x0001, 0x0053, 0x0003, 0x0026
- .2byte 0x0001, 0x0053, 0x0003, 0x0026
- .2byte 0x0001, 0x003b, 0x0003, 0x0008
- .2byte 0x000c, 0x0000, 0x0003, 0x0008
- .2byte 0x000c, 0x0001, 0x0003, 0x0008
- .2byte 0x0001, 0x0027, 0x0003, 0x002a
- .2byte 0x0001, 0x0028, 0x0003, 0x002a
- .2byte 0x000d, 0x0000, 0x0003, 0x0009
- .2byte 0x0001, 0x0048, 0x0003, 0x0003
+ .2byte MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F), 0x03, 0x00
+ .2byte MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB), 0x03, 0x00
+ .2byte MAP_GROUP(VIRIDIAN_CITY_GYM), MAP_NUM(VIRIDIAN_CITY_GYM), 0x03, 0x01
+ .2byte MAP_GROUP(ROUTE22_NORTH_ENTRANCE), MAP_NUM(ROUTE22_NORTH_ENTRANCE), 0x03, 0x29
+ .2byte MAP_GROUP(ROUTE22_NORTH_ENTRANCE), MAP_NUM(ROUTE22_NORTH_ENTRANCE), 0x03, 0x2a
+ .2byte MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 0x0f, 0x00
+ .2byte MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 0x0f, 0x03
+ .2byte MAP_GROUP(PEWTER_CITY_MUSEUM_1F), MAP_NUM(PEWTER_CITY_MUSEUM_1F), 0x03, 0x02
+ .2byte MAP_GROUP(PEWTER_CITY_GYM), MAP_NUM(PEWTER_CITY_GYM), 0x03, 0x02
+ .2byte MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), 0x03, 0x16
+ .2byte MAP_GROUP(MT_MOON_B1F), MAP_NUM(MT_MOON_B1F), 0x03, 0x16
+ .2byte MAP_GROUP(CERULEAN_CITY_GYM), MAP_NUM(CERULEAN_CITY_GYM), 0x03, 0x03
+ .2byte MAP_GROUP(CERULEAN_CITY_BIKE_SHOP), MAP_NUM(CERULEAN_CITY_BIKE_SHOP), 0x03, 0x03
+ .2byte MAP_GROUP(ROUTE25_SEA_COTTAGE), MAP_NUM(ROUTE25_SEA_COTTAGE), 0x03, 0x2c
+ .2byte MAP_GROUP(ROUTE5_POKEMON_DAY_CARE), MAP_NUM(ROUTE5_POKEMON_DAY_CARE), 0x03, 0x17
+ .2byte MAP_GROUP(UNDERGROUND_PATH_NORTH_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_NORTH_ENTRANCE), 0x03, 0x17
+ .2byte MAP_GROUP(UNDERGROUND_PATH_SOUTH_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_SOUTH_ENTRANCE), 0x03, 0x18
+ .2byte MAP_GROUP(VERMILION_CITY_POKEMON_FAN_CLUB), MAP_NUM(VERMILION_CITY_POKEMON_FAN_CLUB), 0x03, 0x05
+ .2byte MAP_GROUP(VERMILION_CITY_GYM), MAP_NUM(VERMILION_CITY_GYM), 0x03, 0x05
+ .2byte MAP_GROUP(SSANNE_1F_CORRIDOR), MAP_NUM(SSANNE_1F_CORRIDOR), 0x03, 0x05
+ .2byte MAP_GROUP(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_NORTH_ENTRANCE), 0x03, 0x14
+ .2byte MAP_GROUP(DIGLETTS_CAVE_SOUTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_SOUTH_ENTRANCE), 0x03, 0x1d
+ .2byte MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 0x03, 0x1c
+ .2byte MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 0x03, 0x1c
+ .2byte MAP_GROUP(POWER_PLANT), MAP_NUM(POWER_PLANT), 0x03, 0x1c
+ .2byte MAP_GROUP(POKEMON_TOWER_1F), MAP_NUM(POKEMON_TOWER_1F), 0x03, 0x04
+ .2byte MAP_GROUP(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), MAP_NUM(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), 0x03, 0x04
+ .2byte MAP_GROUP(LAVENDER_TOWN_HOUSE2), MAP_NUM(LAVENDER_TOWN_HOUSE2), 0x03, 0x04
+ .2byte MAP_GROUP(UNDERGROUND_PATH_EAST_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_EAST_ENTRANCE), 0x03, 0x1a
+ .2byte MAP_GROUP(UNDERGROUND_PATH_WEST_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_WEST_ENTRANCE), 0x03, 0x19
+ .2byte MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F), MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_1F), 0x03, 0x06
+ .2byte MAP_GROUP(CELADON_CITY_CONDOMINIUMS_1F), MAP_NUM(CELADON_CITY_CONDOMINIUMS_1F), 0x03, 0x06
+ .2byte MAP_GROUP(CELADON_CITY_GAME_CORNER), MAP_NUM(CELADON_CITY_GAME_CORNER), 0x03, 0x06
+ .2byte MAP_GROUP(CELADON_CITY_GYM), MAP_NUM(CELADON_CITY_GYM), 0x03, 0x06
+ .2byte MAP_GROUP(CELADON_CITY_RESTAURANT), MAP_NUM(CELADON_CITY_RESTAURANT), 0x03, 0x06
+ .2byte MAP_GROUP(ROCKET_HIDEOUT_B1F), MAP_NUM(ROCKET_HIDEOUT_B1F), 0x0a, 0x0e
+ .2byte MAP_GROUP(SAFARI_ZONE_CENTER), MAP_NUM(SAFARI_ZONE_CENTER), 0x0b, 0x00
+ .2byte MAP_GROUP(FUCHSIA_CITY_GYM), MAP_NUM(FUCHSIA_CITY_GYM), 0x03, 0x07
+ .2byte MAP_GROUP(FUCHSIA_CITY_BUILDING1), MAP_NUM(FUCHSIA_CITY_BUILDING1), 0x03, 0x07
+ .2byte MAP_GROUP(SAFFRON_CITY_DOJO), MAP_NUM(SAFFRON_CITY_DOJO), 0x03, 0x0a
+ .2byte MAP_GROUP(SAFFRON_CITY_GYM), MAP_NUM(SAFFRON_CITY_GYM), 0x03, 0x0a
+ .2byte MAP_GROUP(SILPH_CO_1F), MAP_NUM(SILPH_CO_1F), 0x03, 0x0a
+ .2byte MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), 0x03, 0x26
+ .2byte MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), 0x03, 0x26
+ .2byte MAP_GROUP(POKEMON_MANSION_1F), MAP_NUM(POKEMON_MANSION_1F), 0x03, 0x08
+ .2byte MAP_GROUP(CINNABAR_ISLAND_GYM), MAP_NUM(CINNABAR_ISLAND_GYM), 0x03, 0x08
+ .2byte MAP_GROUP(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), MAP_NUM(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), 0x03, 0x08
+ .2byte MAP_GROUP(VICTORY_ROAD_1F), MAP_NUM(VICTORY_ROAD_1F), 0x03, 0x2a
+ .2byte MAP_GROUP(VICTORY_ROAD_2F), MAP_NUM(VICTORY_ROAD_2F), 0x03, 0x2a
+ .2byte MAP_GROUP(INDIGO_PLATEAU_POKEMON_CENTER_1F), MAP_NUM(INDIGO_PLATEAU_POKEMON_CENTER_1F), 0x03, 0x09
+ .2byte MAP_GROUP(CERULEAN_CAVE_1F), MAP_NUM(CERULEAN_CAVE_1F), 0x03, 0x03
.align 2
gUnknown_83F5EF0:: @ 83F5EF0
diff --git a/data/specials.inc b/data/specials.inc
index 94d00fb33..3efb437bf 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -368,8 +368,8 @@ gSpecials:: @ 815FD60
def_special sub_810C444
def_special sub_80CC7B4
def_special ChangeBoxPokemonNickname
- def_special sub_80CC2BC
- def_special sub_80CC3CC
+ def_special Special_UpdateTrainerCardPhotoIcons
+ def_special Special_StickerLadyGetBragFlags
def_special sub_80CC524
def_special IsWirelessAdapterConnected
def_special sub_8115A24
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 0719371d8..50619c941 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1325,6 +1325,7 @@
#define FLAG_SYS_STRENGTH_ACTIVE (SYS_FLAGS + 0x5)
#define FLAG_SYS_FLASH_ACTIVE (SYS_FLAGS + 0x6)
#define FLAG_SYS_SPECIAL_WILD_BATTLE (SYS_FLAGS + 0x7)
+#define FLAG_0x808 (SYS_FLAGS + 0x8)
#define PERMA_SYS_FLAGS_START 0x820
#define FLAG_BADGE01_GET (SYS_FLAGS + 0x20)
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 9e34127f9..715cde5a7 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -78,50 +78,50 @@
// with the species sanity bit set.
// Bits 12-15 are the same for the player's party.
// Used by Quest Log.
-#define VAR_QUEST_LOG_MON_COUNTS 0x4027
-#define VAR_MENEWS_JISAN_STEP_COUNTER 0x4028
-#define VAR_0x4029 0x4029
-#define VAR_HAPPINESS_STEP_COUNTER 0x402A
-#define VAR_POISON_STEP_COUNTER 0x402B
-#define VAR_RESET_RTC_ENABLE 0x402C
-#define VAR_0x402D 0x402D
-#define VAR_0x402E 0x402E
+#define VAR_QUEST_LOG_MON_COUNTS 0x4027
+#define VAR_MENEWS_JISAN_STEP_COUNTER 0x4028
+#define VAR_0x4029 0x4029
+#define VAR_HAPPINESS_STEP_COUNTER 0x402A
+#define VAR_POISON_STEP_COUNTER 0x402B
+#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_0x402D 0x402D
+#define VAR_0x402E 0x402E
-#define VAR_0x402F 0x402F
+#define VAR_0x402F 0x402F
-#define VAR_0x4030 0x4030
-#define VAR_STARTER_MON 0x4031
-#define VAR_0x4032 0x4032
-#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033
+#define VAR_0x4030 0x4030
+#define VAR_STARTER_MON 0x4031
+#define VAR_0x4032 0x4032
+#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033
-#define VAR_0x4034 0x4034
-#define VAR_RESORT_GOREGEOUS_STEP_COUNTER 0x4035
-#define VAR_RESORT_GOREGOUS_REQUESTED_MON 0x4036
-#define VAR_0x4037 0x4037
-#define VAR_0x4038 0x4038
-#define VAR_0x4039 0x4039
-#define VAR_ELEVATOR_FLOOR 0x403A
-#define VAR_RESORT_GOREGOUS_REWARD 0x403B
-#define VAR_0x403C 0x403C
-#define VAR_0x403D 0x403D
-#define VAR_DEOXYS_INTERACTION_NUM 0x403E
-#define VAR_0x403F 0x403F
-#define VAR_DAYS 0x4040
-#define VAR_0x4041 0x4041
-#define VAR_0x4042 0x4042
-#define VAR_DEPT_STORE_FLOOR 0x4043
-#define VAR_0x4044 0x4044
-#define VAR_POKELOT_PRIZE 0x4045
-#define VAR_NATIONAL_DEX 0x4046
-#define VAR_SEEDOT_SIZE_RECORD 0x4047
-#define VAR_ASH_GATHER_COUNT 0x4048
-#define VAR_HOF_BRAG_STATE 0x4049
-#define VAR_EGG_BRAG_STATE 0x404A
-#define VAR_LINK_WIN_BRAG_STATE 0x404B
-#define VAR_POKELOT_RND2 0x404C
-#define VAR_0x404D 0x404D
-#define VAR_0x404E 0x404E
-#define VAR_LOTAD_SIZE_RECORD 0x404F
+#define VAR_0x4034 0x4034
+#define VAR_RESORT_GOREGEOUS_STEP_COUNTER 0x4035
+#define VAR_RESORT_GOREGOUS_REQUESTED_MON 0x4036
+#define VAR_0x4037 0x4037
+#define VAR_0x4038 0x4038
+#define VAR_0x4039 0x4039
+#define VAR_ELEVATOR_FLOOR 0x403A
+#define VAR_RESORT_GOREGOUS_REWARD 0x403B
+#define VAR_0x403C 0x403C
+#define VAR_0x403D 0x403D
+#define VAR_DEOXYS_INTERACTION_NUM 0x403E
+#define VAR_0x403F 0x403F
+#define VAR_DAYS 0x4040
+#define VAR_0x4041 0x4041
+#define VAR_TRAINER_CARD_MON_ICON_TINT_IDX 0x4042
+#define VAR_TRAINER_CARD_MON_ICON_1 0x4043
+#define VAR_TRAINER_CARD_MON_ICON_2 0x4044
+#define VAR_TRAINER_CARD_MON_ICON_3 0x4045
+#define VAR_TRAINER_CARD_MON_ICON_4 0x4046
+#define VAR_TRAINER_CARD_MON_ICON_5 0x4047
+#define VAR_TRAINER_CARD_MON_ICON_6 0x4048
+#define VAR_0x4049 0x4049
+#define VAR_EGG_BRAG_STATE 0x404A
+#define VAR_LINK_WIN_BRAG_STATE 0x404B
+#define VAR_POKELOT_RND2 0x404C
+#define VAR_0x404D 0x404D
+#define VAR_0x404E 0x404E
+#define VAR_LOTAD_SIZE_RECORD 0x404F
// Map Scene
#define VAR_MAP_SCENE_PALLET_TOWN_OAK 0x4050
diff --git a/include/field_specials.h b/include/field_specials.h
index 24ef0d00b..e82439fe7 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -22,7 +22,8 @@ u8 ContextNpcGetTextColor(void);
void set_unknown_box_id(u8);
u16 get_unknown_box_id(void);
bool8 sub_80CC7B4(void);
-u16 GetHiddenItemAttr(struct HiddenItemStruct hiddenItem, u8 attr);
+u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr);
u8 GetUnlockedSeviiAreas(void);
+u32 GetPlayerTrainerId(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index bf142d265..a4358081d 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -134,7 +134,8 @@ union BgUnion
u8 *script;
// hidden item type probably
- struct HiddenItemStruct hiddenItem;
+ struct HiddenItemStruct hiddenItemStr;
+ u32 hiddenItem;
// secret base type
u32 secretBaseId;
diff --git a/src/field_specials.c b/src/field_specials.c
index ecebf8c8b..5f4795154 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -20,6 +20,7 @@
#include "field_map_obj.h"
#include "menu_indicators.h"
#include "random.h"
+#include "mail_data.h"
#include "help_system.h"
#include "sound.h"
#include "text.h"
@@ -30,6 +31,7 @@
#include "window.h"
#include "text_window.h"
#include "menu.h"
+#include "naming_screen.h"
#include "dynamic_placeholder_text_util.h"
#include "new_menu_helpers.h"
#include "constants/songs.h"
@@ -68,6 +70,8 @@ static void Task_RedrawScrollArrowsAndWaitInput(u8 taskId);
static void Task_CreateMenuRemoveScrollIndicatorArrowPair(u8 taskId);
static void Task_ListMenuRemoveScrollIndicatorArrowPair(u8 taskId);
static u16 GetStarterPokemon(u16 starterIdx);
+static void ChangeBoxPokemonNickname_CB(void);
+static void ChangePokemonNickname_CB(void);
extern const struct ScrollArrowsTemplate gUnknown_83F5D1C;
extern const u16 sStarterMon[3];
@@ -81,6 +85,13 @@ extern const u16 sElevatorWindowMetatilesGoingDown[3][3];
extern const u8 sElevatorAnimationDuration[9];
extern const u8 sElevatorWindowAnimDuration[9];
extern u8 *const gUnknown_83F5AF8[3];
+extern const u8 gUnknown_83F5D32[12][3];
+extern const struct {
+ u16 grp;
+ u16 num;
+ u16 unk4;
+ u16 unk6;
+} gUnknown_83F5D58[51];
void Special_ShowDiploma(void)
{
@@ -1152,9 +1163,9 @@ static void Task_ListMenuHandleInput(u8 taskId)
{
s32 input;
struct Task * task;
- asm("":::"r6", "r4"); // fakematch register allocation
task = &gTasks[taskId];
+ task++;task--;
input = ListMenu_ProcessInput(task->data[14]);
switch (input)
{
@@ -1350,3 +1361,185 @@ bool8 sub_80CBFA0(void)
else
return TRUE;
}
+
+void ChangeBoxPokemonNickname(void)
+{
+ struct BoxPokemon * pokemon = GetBoxedMonPtr(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos);
+ u16 species;
+ u8 gender;
+ u32 personality;
+
+ GetBoxMonData(pokemon, MON_DATA_NICKNAME, gStringVar3);
+ GetBoxMonData(pokemon, MON_DATA_NICKNAME, gStringVar2);
+ species = GetBoxMonData(pokemon, MON_DATA_SPECIES, NULL);
+ gender = GetBoxMonGender(pokemon);
+ personality = GetBoxMonData(pokemon, MON_DATA_PERSONALITY, NULL);
+ DoNamingScreen(3, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB);
+}
+
+static void ChangeBoxPokemonNickname_CB(void)
+{
+ SetBoxMonNickFromAnyBox(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2);
+ CB2_ReturnToFieldContinueScriptPlayMapMusic();
+}
+
+void ChangePokemonNickname(void)
+{
+ u16 species;
+ u8 gender;
+ u32 personality;
+
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2);
+ species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
+ gender = GetMonGender(&gPlayerParty[gSpecialVar_0x8004]);
+ personality = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_PERSONALITY, NULL);
+ DoNamingScreen(3, gStringVar2, species, gender, personality, ChangePokemonNickname_CB);
+}
+
+static void ChangePokemonNickname_CB(void)
+{
+ SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2);
+ CB2_ReturnToFieldContinueScriptPlayMapMusic();
+}
+
+void TV_CopyNicknameToStringVar1AndEnsureTerminated(void)
+{
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
+ StringGetEnd10(gStringVar1);
+}
+
+void TV_CheckMonOTIDEqualsPlayerID(void)
+{
+ if (GetPlayerTrainerId() == GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_ID, NULL))
+ gSpecialVar_Result = FALSE;
+ else
+ gSpecialVar_Result = TRUE;
+}
+
+u32 GetPlayerTrainerId(void)
+{
+ return (gSaveBlock2Ptr->playerTrainerId[3] << 24) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0];
+}
+
+u8 GetUnlockedSeviiAreas(void)
+{
+ u8 result = 0;
+ if (FlagGet(FLAG_WORLD_MAP_ONE_ISLAND) == TRUE)
+ result |= 1 << 0;
+ if (FlagGet(FLAG_WORLD_MAP_TWO_ISLAND) == TRUE)
+ result |= 1 << 1;
+ if (FlagGet(FLAG_WORLD_MAP_THREE_ISLAND) == TRUE)
+ result |= 1 << 2;
+ if (FlagGet(FLAG_WORLD_MAP_FOUR_ISLAND) == TRUE)
+ result |= 1 << 3;
+ if (FlagGet(FLAG_WORLD_MAP_FIVE_ISLAND) == TRUE)
+ result |= 1 << 4;
+ if (FlagGet(FLAG_WORLD_MAP_SIX_ISLAND) == TRUE)
+ result |= 1 << 5;
+ if (FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND) == TRUE)
+ result |= 1 << 6;
+ return result;
+}
+
+void Special_UpdateTrainerCardPhotoIcons(void)
+{
+ u16 species[PARTY_SIZE];
+ u32 personality[PARTY_SIZE];
+ u8 i;
+ u8 partyCount;
+ for (i = 0; i < PARTY_SIZE; i++)
+ species[i] = SPECIES_NONE;
+ partyCount = CalculatePlayerPartyCount();
+ for (i = 0; i < partyCount; i++)
+ {
+ species[i] = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL);
+ personality[i] = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, NULL);
+ }
+ VarSet(VAR_TRAINER_CARD_MON_ICON_1, SpeciesToMailSpecies(species[0], personality[0]));
+ VarSet(VAR_TRAINER_CARD_MON_ICON_2, SpeciesToMailSpecies(species[1], personality[1]));
+ VarSet(VAR_TRAINER_CARD_MON_ICON_3, SpeciesToMailSpecies(species[2], personality[2]));
+ VarSet(VAR_TRAINER_CARD_MON_ICON_4, SpeciesToMailSpecies(species[3], personality[3]));
+ VarSet(VAR_TRAINER_CARD_MON_ICON_5, SpeciesToMailSpecies(species[4], personality[4]));
+ VarSet(VAR_TRAINER_CARD_MON_ICON_6, SpeciesToMailSpecies(species[5], personality[5]));
+ VarSet(VAR_TRAINER_CARD_MON_ICON_TINT_IDX, gSpecialVar_0x8004);
+}
+
+u16 Special_StickerLadyGetBragFlags(void)
+{
+ u16 result = 0;
+ u32 numEggs;
+ gSpecialVar_0x8004 = GetGameStat(GAME_STAT_ENTERED_HOF);
+ numEggs = GetGameStat(GAME_STAT_HATCHED_EGGS);
+ gSpecialVar_0x8006 = GetGameStat(GAME_STAT_LINK_BATTLE_WINS);
+ if (numEggs > 0xFFFF)
+ gSpecialVar_0x8005 = 0xFFFF;
+ else
+ gSpecialVar_0x8005 = numEggs;
+ if (gSpecialVar_0x8004 != 0)
+ result |= 1 << 0;
+ if (gSpecialVar_0x8005 != 0)
+ result |= 1 << 1;
+ if (gSpecialVar_0x8006 != 0)
+ result |= 1 << 2;
+ return result;
+}
+
+u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr)
+{
+ if (attr == 0)
+ return hiddenItem & 0xFFFF;
+ else if (attr == 1)
+ return ((hiddenItem >> 16) & 0xFF) + 1000;
+ else if (attr == 2)
+ return (hiddenItem >> 24) & 0x7F;
+ else if (attr == 3)
+ return (hiddenItem >> 31) & 0x01;
+ else
+ return 1;
+}
+
+bool8 Special_PlayerPartyContainsSpecies(void)
+{
+ u8 partyCount = CalculatePlayerPartyCount();
+ u8 i;
+ for (i = 0; i < partyCount; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == gSpecialVar_0x8004)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 sub_80CC4D4(void)
+{
+ u8 i;
+ for (i = 0; i < NELEMS(gUnknown_83F5D32); i++)
+ {
+ if (gSaveBlock1Ptr->location.mapGroup == gUnknown_83F5D32[i][0] && gSaveBlock1Ptr->location.mapNum == gUnknown_83F5D32[i][1])
+ return gUnknown_83F5D32[i][2];
+ }
+ return 1;
+}
+
+void sub_80CC524(void)
+{
+ sub_8113550(11, NULL);
+}
+
+void sub_80CC534(void)
+{
+ u8 i;
+ for (i = 0; i < NELEMS(gUnknown_83F5D58); i++)
+ {
+ if (gSaveBlock1Ptr->location.mapGroup == gUnknown_83F5D58[i].grp && gSaveBlock1Ptr->location.mapNum == gUnknown_83F5D58[i].num)
+ {
+ if (VarGet(VAR_0x404D) != 35 || i != 32)
+ {
+ VarSet(VAR_0x404D, i);
+ FlagSet(FLAG_0x808);
+ }
+ break;
+ }
+ }
+}
diff --git a/src/itemfinder.c b/src/itemfinder.c
index e6448a166..05072c49e 100644
--- a/src/itemfinder.c
+++ b/src/itemfinder.c
@@ -17,7 +17,7 @@ static void Task_NoResponse_CleanUp(u8 taskId);
static void Task_ItemfinderResponseSoundsAndAnims(u8 taskId);
static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId);
static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskId);
-static void SetUnderfootHiddenItem(u8 taskId, struct HiddenItemStruct hiddenItem);
+static void SetUnderfootHiddenItem(u8 taskId, u32 hiddenItem);
static void SetNormalHiddenItem(u8 taskId);
static void FindHiddenItemsInConnectedMaps(u8 taskId);
static void RegisterHiddenItemRelativeCoordsIfCloser(u8 taskId, s16 dx, s16 dy);
@@ -239,7 +239,7 @@ static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskI
return FALSE;
}
-static void SetUnderfootHiddenItem(u8 taskId, struct HiddenItemStruct hiddenItem)
+static void SetUnderfootHiddenItem(u8 taskId, u32 hiddenItem)
{
s16 *data = gTasks[taskId].data;
gSpecialVar_0x8004 = GetHiddenItemAttr(hiddenItem, HIDDEN_ITEM_FLAG);