field_specials through sub_80CC534
This commit is contained in:
+1
-730
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+10
-10
@@ -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
|
||||
|
||||
|
||||
+64
-63
@@ -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
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
+41
-41
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
+194
-1
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user