diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-24 10:22:39 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-24 10:22:39 -0400 |
commit | 779d6187c613ce4491533bf0c24e9f60ddf697b4 (patch) | |
tree | e127f75d964baf78032f4adf18e6774d7d14d692 | |
parent | db3be6ef2e9482edae2446cd71d03d7c6ae143f7 (diff) |
field_specials through sub_80CC534
-rw-r--r-- | asm/field_specials.s | 731 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 2 | ||||
-rw-r--r-- | data/event_scripts.s | 20 | ||||
-rw-r--r-- | data/field_specials.s | 127 | ||||
-rw-r--r-- | data/specials.inc | 4 | ||||
-rw-r--r-- | include/constants/flags.h | 1 | ||||
-rw-r--r-- | include/constants/vars.h | 82 | ||||
-rw-r--r-- | include/field_specials.h | 3 | ||||
-rw-r--r-- | include/global.fieldmap.h | 3 | ||||
-rw-r--r-- | src/field_specials.c | 195 | ||||
-rw-r--r-- | src/itemfinder.c | 4 |
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); |