Merge pull request #519 from DizzyEggg/trainer_hill

Trainer Hill
This commit is contained in:
Diegoisawesome 2019-01-14 14:18:29 -06:00 committed by GitHub
commit b4b4fb951a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 1312 additions and 2549 deletions

File diff suppressed because it is too large Load Diff

View File

@ -599,7 +599,7 @@ BattleScript_EffectBide::
ppreduce
attackanimation
waitanimation
orword gHitMarker, HITMARKER_x8000000
orword gHitMarker, HITMARKER_CHARGING
setbide
goto BattleScript_MoveEnd
@ -824,7 +824,7 @@ BattleScriptFirstChargingTurn::
ppreduce
attackanimation
waitanimation
orword gHitMarker, HITMARKER_x8000000
orword gHitMarker, HITMARKER_CHARGING
setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
copybyte cMULTISTRING_CHOOSER, sTWOTURN_STRINGID
@ -1941,7 +1941,7 @@ BattleScript_SolarbeamDecideTurn::
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
BattleScript_SolarbeamOnFirstTurn::
orword gHitMarker, HITMARKER_x8000000
orword gHitMarker, HITMARKER_CHARGING
setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
ppreduce

View File

@ -3221,7 +3221,7 @@ EventScript_2736F8:: @ 82736F8
compare VAR_RESULT, 2
goto_if_eq BattleFrontier_BattlePyramidTop_EventScript_252B42
setvar VAR_0x8004, 10
special sp194_trainer_tower
special CallTrainerHillFunction
compare VAR_RESULT, 1
goto_if_eq TrainerHill_1F_EventScript_2C83C9
special sub_80B05B4
@ -7429,7 +7429,7 @@ TrainerHill_4F_MapScript1_2C8336: @ 82C8336
TrainerHill_Roof_MapScript1_2C8336: @ 82C8336
setvar VAR_TEMP_2, 0
setvar VAR_0x8004, 4
special sp194_trainer_tower
special CallTrainerHillFunction
setvar VAR_0x8004, 1
setvar VAR_0x8005, 5
special CallFrontierUtilFunc
@ -7462,7 +7462,7 @@ TrainerHill_Roof_MapScript2_2C8381: @ 82C8381
EventScript_TrainerHillTimer:: @ 82C8393
lockall
setvar VAR_0x8004, 7
special sp194_trainer_tower
special CallTrainerHillFunction
msgbox TrainerHill_Entrance_Text_268D47, MSGBOX_DEFAULT
releaseall
end
@ -7470,7 +7470,7 @@ EventScript_TrainerHillTimer:: @ 82C8393
TrainerHill_1F_EventScript_2C83A6:: @ 82C83A6
setvar VAR_TEMP_2, 1
setvar VAR_0x8004, 9
special sp194_trainer_tower
special CallTrainerHillFunction
compare VAR_RESULT, 1
goto_if_eq TrainerHill_1F_EventScript_2C83BF
end
@ -7482,9 +7482,9 @@ TrainerHill_1F_EventScript_2C83BF:: @ 82C83BF
TrainerHill_1F_EventScript_2C83C9:: @ 82C83C9
setvar VAR_0x8004, 12
special sp194_trainer_tower
special CallTrainerHillFunction
setvar VAR_0x8004, 5
special sp194_trainer_tower
special CallTrainerHillFunction
setvar VAR_TEMP_1, 1
end
@ -7502,7 +7502,7 @@ TrainerHill_1F_Movement_2C83EE:: @ 82C83EE
EventScript_2C83F0:: @ 82C83F0
trainerbattle TRAINER_BATTLE_12, TRAINER_PHILLIP, 0, BattleFrontier_BattlePyramidEmptySquare_Text_252C8D, BattleFrontier_BattlePyramidEmptySquare_Text_252C8D
setvar VAR_0x8004, 11
special sp194_trainer_tower
special CallTrainerHillFunction
waitmessage
waitbuttonpress
closemessage

View File

@ -16,10 +16,10 @@ TrainerHill_Entrance_MapScript1_2680CF: @ 82680CF
TrainerHill_Entrance_MapScript1_2680D0: @ 82680D0
setvar VAR_0x8004, 4
special sp194_trainer_tower
special CallTrainerHillFunction
setvar VAR_TEMP_0, 0
setvar VAR_0x8004, 9
special sp194_trainer_tower
special CallTrainerHillFunction
compare VAR_RESULT, 0
goto_if_eq TrainerHill_Entrance_EventScript_2680FF
setobjectxy EVENT_OBJ_ID_PLAYER, 9, 6
@ -28,7 +28,7 @@ TrainerHill_Entrance_MapScript1_2680D0: @ 82680D0
TrainerHill_Entrance_EventScript_2680FF:: @ 82680FF
setvar VAR_0x8004, 16
special sp194_trainer_tower
special CallTrainerHillFunction
compare VAR_RESULT, 1
goto_if_eq TrainerHill_Entrance_EventScript_26811A
applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_26837F
@ -75,7 +75,7 @@ TrainerHill_Entrance_EventScript_268160:: @ 8268160
TrainerHill_Entrance_EventScript_268182:: @ 8268182
setvar VAR_TEMP_0, 1
setvar VAR_0x8004, 6
special sp194_trainer_tower
special CallTrainerHillFunction
switch VAR_RESULT
case 0, TrainerHill_Entrance_EventScript_2681B5
case 1, TrainerHill_Entrance_EventScript_2681CA
@ -115,7 +115,7 @@ TrainerHill_Entrance_EventScript_2681FD:: @ 82681FD
lock
faceplayer
setvar VAR_0x8004, 10
special sp194_trainer_tower
special CallTrainerHillFunction
compare VAR_RESULT, 0
goto_if_eq TrainerHill_Entrance_EventScript_26821F
msgbox TrainerHill_Entrance_Text_2686F4, MSGBOX_DEFAULT
@ -134,11 +134,11 @@ TrainerHill_Entrance_EventScript_268229:: @ 8268229
goto_if_unset FLAG_SYS_GAME_CLEAR, TrainerHill_Entrance_EventScript_26836A
msgbox TrainerHill_Entrance_Text_2684C6, MSGBOX_DEFAULT
setvar VAR_0x8004, 13
special sp194_trainer_tower
special CallTrainerHillFunction
compare VAR_RESULT, 0
call_if_eq TrainerHill_Entrance_EventScript_26832E
setvar VAR_0x8004, 8
special sp194_trainer_tower
special CallTrainerHillFunction
compare VAR_RESULT, 1
goto_if_eq TrainerHill_Entrance_EventScript_268275
msgbox TrainerHill_Entrance_Text_268564, MSGBOX_DEFAULT
@ -170,13 +170,13 @@ TrainerHill_Entrance_EventScript_2682C8:: @ 82682C8
case 127, TrainerHill_Entrance_EventScript_268314
setvar VAR_0x8004, 17
copyvar VAR_0x8005, VAR_RESULT
special sp194_trainer_tower
special CallTrainerHillFunction
setvar VAR_0x40D6, 1
setvar VAR_TEMP_5, 0
special HealPlayerParty
msgbox TrainerHill_Entrance_Text_26862A, MSGBOX_DEFAULT
setvar VAR_0x8004, 0
special sp194_trainer_tower
special CallTrainerHillFunction
releaseall
end
@ -192,18 +192,18 @@ TrainerHill_Entrance_EventScript_268314:: @ 8268314
TrainerHill_Entrance_EventScript_26832E:: @ 826832E
msgbox TrainerHill_Entrance_Text_26851C, MSGBOX_DEFAULT
setvar VAR_0x8004, 14
special sp194_trainer_tower
special CallTrainerHillFunction
setvar VAR_TEMP_5, 1
call TrainerHill_Entrance_EventScript_27134F
compare VAR_RESULT, 0
goto_if_eq TrainerHill_Entrance_EventScript_26835C
setvar VAR_0x8004, 14
special sp194_trainer_tower
special CallTrainerHillFunction
return
TrainerHill_Entrance_EventScript_26835C:: @ 826835C
setvar VAR_0x8004, 15
special sp194_trainer_tower
special CallTrainerHillFunction
goto TrainerHill_Entrance_EventScript_268314
end

View File

@ -5,11 +5,11 @@ TrainerHill_Roof_MapScripts:: @ 8268FA7
TrainerHill_Roof_EventScript_268FB2:: @ 8268FB2
setvar VAR_0x8004, 12
special sp194_trainer_tower
special CallTrainerHillFunction
lock
faceplayer
setvar VAR_0x8004, 1
special sp194_trainer_tower
special CallTrainerHillFunction
switch VAR_RESULT
case 0, TrainerHill_Roof_EventScript_268FEA
case 1, TrainerHill_Roof_EventScript_268FF2
@ -20,7 +20,7 @@ TrainerHill_Roof_EventScript_268FEA:: @ 8268FEA
TrainerHill_Roof_EventScript_268FF2:: @ 8268FF2
setvar VAR_0x8004, 2
special sp194_trainer_tower
special CallTrainerHillFunction
switch VAR_RESULT
case 0, TrainerHill_Roof_EventScript_269020
case 1, TrainerHill_Roof_EventScript_269037
@ -42,7 +42,7 @@ TrainerHill_Roof_EventScript_269037:: @ 8269037
TrainerHill_Roof_EventScript_269054:: @ 8269054
setvar VAR_0x8004, 3
special sp194_trainer_tower
special CallTrainerHillFunction
switch VAR_RESULT
case 0, TrainerHill_Roof_EventScript_269082
case 1, TrainerHill_Roof_EventScript_269090

View File

@ -2292,146 +2292,3 @@ gUnknown_086285E4:: @ 86285E4
gUnknown_086294CC:: @ 86294CC
.incbin "data/pokenav/unk_struct_4.bin"
gUnknown_0862A3B4:: @ 862A3B4
.byte 0x03, 0x06, 0x00, 0x00, 0x0B, 0x06, 0x00, 0x00, 0x0D, 0x06, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x24, 0x09, 0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2E, 0x09, 0x00, 0x00, 0x11, 0x0C, 0x00, 0x00, 0x10, 0x0B, 0x00, 0x00, 0x1E, 0x0D, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x17, 0x03, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x00, 0x38, 0x04, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x19, 0x0B, 0x00, 0x00, 0x09, 0x07, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x16, 0x0D, 0x00, 0x00, 0x0E, 0x03, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x1D, 0x04, 0x00, 0x00, 0x22, 0x09, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x05, 0x00, 0x00, 0x27, 0x0B, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x00, 0x39, 0x08, 0x00, 0x00, 0x02, 0x0B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00
gUnknown_0862A48C:: @ 862A48C
.2byte 0x44, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A498:: @ 862A498
.2byte 0xB, 0x22, 0x14, 0x18, 0x51, 3
gUnknown_0862A4A4:: @ 862A4A4
.2byte 0x19, 0x22, 0x14, 0x18, 0x51, 3
gUnknown_0862A4B0:: @ 862A4B0
.2byte 0x23, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A4BC:: @ 862A4BC
.2byte 0x24, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A4C8:: @ 862A4C8
.2byte 0x125, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A4D4:: @ 862A4D4
.2byte 0x144, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A4E0:: @ 862A4E0
.2byte 0x126, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A4EC:: @ 862A4EC
.2byte 0x12B, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A4F8:: @ 862A4F8
.2byte 0x13A, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A504:: @ 862A504
.2byte 0x44, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A510:: @ 862A510
.2byte 0xB, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A51C:: @ 862A51C
.2byte 0x19, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A528:: @ 862A528
.2byte 0x23, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A534:: @ 862A534
.2byte 0x24, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A540:: @ 862A540
.2byte 0x13F, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A54C:: @ 862A54C
.2byte 0x149, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A558:: @ 862A558
.2byte 0x150, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A564:: @ 862A564
.2byte 0x133, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A570:: @ 862A570
.2byte 0x14D, 0x22, 0x14, 0x18, 0x51, 0x3
gUnknown_0862A57C:: @ 862A57C
.4byte gUnknown_0862A48C
.4byte gUnknown_0862A498
.4byte gUnknown_0862A4A4
.4byte gUnknown_0862A4B0
.4byte gUnknown_0862A4BC
.4byte gUnknown_0862A4C8
.4byte gUnknown_0862A4D4
.4byte gUnknown_0862A4E0
.4byte gUnknown_0862A4EC
.4byte gUnknown_0862A4F8
gUnknown_0862A5A4:: @ 862A5A4
.4byte gUnknown_0862A504
.4byte gUnknown_0862A510
.4byte gUnknown_0862A51C
.4byte gUnknown_0862A528
.4byte gUnknown_0862A534
.4byte gUnknown_0862A540
.4byte gUnknown_0862A54C
.4byte gUnknown_0862A558
.4byte gUnknown_0862A564
.4byte gUnknown_0862A570
gUnknown_0862A5CC:: @ 862A5CC
.4byte gUnknown_0862A57C
.4byte gUnknown_0862A5A4
gUnknown_0862A5D4:: @ 862A5D4
.incbin "graphics/pokenav/862A5D4.gbapal"
gUnknown_0862A5F4:: @ 862A5F4
.byte 0, 2, 3, 0
gUnknown_0862A5F8:: @ 862A5F8
.4byte gUnknown_08626814
.4byte gUnknown_086276FC
.4byte gUnknown_086285E4
.4byte gUnknown_086294CC
.4byte gUnknown_085EF8B6
.4byte gUnknown_085EF8B9
.4byte gUnknown_085EF8BC
.4byte gUnknown_085EF8BF
gUnknown_0862A618:: @ 862A618
.4byte sub_81D581C
.4byte sub_81D58D8
.4byte sub_81D5924
.4byte sub_81D59D0
.4byte sub_81D5A70
.4byte sub_81D5AB4
.4byte sub_81D5AD0
.4byte sub_81D5B2C
.4byte sub_81D5BBC
.4byte sub_81D5C00
.4byte sub_81D5C5C
.4byte sub_81D62B4
.4byte sub_81D64AC
.4byte sub_81D64DC
.4byte sub_81D64FC
.4byte sub_81D6518
.4byte sub_81D6568
.4byte sub_81D65A0
gUnknown_0862A660:: @ 862A660
.4byte gUnknown_085EB32D
.4byte gUnknown_085EB33E
.4byte gUnknown_085EB350
.4byte gUnknown_085EB361
gUnknown_0862A670:: @ 862A670
.byte 0, 0x64
.4byte NULL
.2byte 0, 0x103, 17, 1, 0, 0, 0, 0, 0
gUnknown_0862A688:: @ 862A688
.2byte 0x3E, 0, 0x3F, 0, 0x40, 0, 0x41, 0
gUnknown_0862A698:: @ 862A698
.byte 0, 1, 2, 3, 4, 5, 0, 0

View File

@ -515,7 +515,7 @@ gSpecials:: @ 81DBA64
def_special sub_813B514
def_special sub_813B568
def_special sub_813B534
def_special sp194_trainer_tower
def_special CallTrainerHillFunction
def_special sub_813B7D8
def_special sub_813B80C
def_special sub_81D4BEC

View File

@ -79,7 +79,7 @@ void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId);
u8 SetFacilityPtrsGetLevel(void);
u8 GetFrontierEnemyMonLevel(u8 lvlMode);
s32 GetHighestLevelInPlayerParty(void);
u8 sub_81660B8(u8 facilityClass);
u8 FacilityClassToGraphicsId(u8 facilityClass);
bool32 ValidateBattleTowerRecord(u8 recordId); // unused
void sub_8166188(void);

View File

@ -174,7 +174,7 @@
#define HITMARKER_GRUDGE 0x01000000
#define HITMARKER_OBEYS 0x02000000
#define HITMARKER_x4000000 0x04000000
#define HITMARKER_x8000000 0x08000000
#define HITMARKER_CHARGING 0x08000000
#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C)
#define HITMARKER_UNK(battler) (0x10000000 << battler)

View File

@ -584,4 +584,7 @@ extern const u8 EventScript_275A86[];
extern const u8 EventScript_275ADF[];
extern const u8 EventScript_275B38[];
// trainer hill
extern const u8 EventScript_2C83F0[];
#endif // GUARD_EVENT_SCRIPTS_H

View File

@ -11,6 +11,7 @@ enum
bool8 ShowFieldMessage(const u8 *message);
bool8 sub_8098238(const u8 *message);
bool8 sub_80982B8(void);
bool8 ShowFieldAutoScrollMessage(const u8 *message);
void HideFieldMessageBox(void);
bool8 IsFieldMessageBoxHidden(void);

View File

@ -378,7 +378,8 @@ struct BattleFrontier
/*0xEE0*/ u8 field_EE0;
/*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH + 1];
/*0xEF1*/ u8 field_EF1[2][4];
/*0xEF9*/ u8 field_EF9;
/*0xEF9*/ u8 field_EF9_0:7;
/*0xEF9*/ u8 field_EF9_1:1;
/*0xEFA*/ u8 field_EFA;
/*0xEFB*/ u8 field_EFB;
/*0xEFC*/ struct FrontierMonData field_EFC[3];
@ -792,6 +793,21 @@ struct UnkSaveSubstruct_3b98
u8 trainerName[PLAYER_NAME_LENGTH + 1];
};
struct SaveTrainerHill
{
/*0x3D64*/ u32 field_3D64;
/*0x3D68*/ u32 field_3D68;
/*0x3D6C*/ u8 field_3D6C;
/*0x3D6D*/ u8 unused;
/*0x3D6E*/ u16 field_3D6E_0a:1; // 1
/*0x3D6E*/ u16 field_3D6E_0b:1; // 2
/*0x3D6E*/ u16 field_3D6E_0c:1; // 4
/*0x3D6E*/ u16 field_3D6E_0d:1; // 8
/*0x3D6E*/ u16 field_3D6E_0e:1; // x10
/*0x3D6E*/ u16 field_3D6E_0f:1; // x20
/*0x3D6E*/ u16 tag:2; // x40, x80 = xC0
};
struct SaveBlock1
{
/*0x00*/ struct Coords16 pos;
@ -869,13 +885,15 @@ struct SaveBlock1
/*0x31A8*/ u8 giftRibbons[52];
/*0x31DC*/ struct Roamer roamer;
/*0x31F8*/ struct EnigmaBerry enigmaBerry;
/*0x322C*/ u8 field_322C[1276];
/*0x322C*/ u8 field_322C[1260];
/*0x3718*/ u32 trainerHillTimes[4];
/*0x3728*/ struct RamScript ramScript;
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
/*0x3B24*/ u8 seen2[DEX_FLAGS_NO];
/*0x3B58*/ LilycoveLady lilycoveLady;
/*0x3B98*/ struct UnkSaveSubstruct_3b98 unk_3B98[20];
/*0x3C88*/ u8 filler_3C88[0xE8];
/*0x3C88*/ u8 filler_3C88[0xDC];
/*0x3D64*/ struct SaveTrainerHill trainerHill;
/*0x3D70*/ struct WaldaPhrase waldaPhrase;
// sizeof: 0x3D88
};

View File

@ -61,6 +61,8 @@ void SetHBlankCallback(IntrCallback callback);
void SetVCountCallback(IntrCallback callback);
void SetSerialCallback(IntrCallback callback);
void InitFlashTimer(void);
void sub_80008DC(u32 *var);
void sub_80008E8(void);
void DoSoftReset(void);
void ClearPokemonCrySongs(void);
void RestoreSerialTimer3IntrHandlers(void);

View File

@ -451,8 +451,8 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src);
void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50);
void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src);
void CreateBattleTowerMon2(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50);
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest);

View File

@ -3,7 +3,6 @@
#include "player_pc.h"
#include "list_menu.h"
bool8 sub_81D5C18(void);
bool8 sub_81D20BC(void *arg0);
bool8 sub_81D312C(void *arg0);
void sub_81D1ED4(void *arg0);
@ -14,28 +13,21 @@ void sub_81D3464(void *arg0);
void sub_81D3480(void *arg0, u8 arg1);
void sub_81D2754(void *arg0, void *arg1);
void sub_81D1F84(void *arg0, void *arg1, void *arg2);
const u8 *sub_81D62AC(void);
u8 sub_81D1C84(u8);
u8 sub_81D1DC0(struct PlayerPCItemPageStruct *);
void sub_81D1E90(struct PlayerPCItemPageStruct *);
void sub_81D1EC0(void);
void sub_81D1D04(u8);
bool8 sub_81D1C44(u8);
void sub_81D5FB4(u16*);
bool8 sub_81D4A58(struct EventObject*);
void sub_81D2BF4(u8 *);
u16 sub_81D2C3C(void);
void sub_81D2C50(void);
u8 sub_81D28C8(const struct ListMenuItem *items, u16 numChoices);
void sub_81D2824(u16);
bool32 InTrainerHill(void);
bool8 EventObjectIsFarawayIslandMew(struct EventObject *);
u32 sub_81D427C(void);
void sub_81D4998(void);
u8 GetCurrentTrainerHillMapId(void);
u8 sub_81D6490(void);
const struct WarpEvent *sub_81D6120(void);
const struct WarpEvent *sub_81D6134(u8);
void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);

View File

@ -1231,10 +1231,17 @@ extern const u8 gText_MtPyre[];
extern const u8 gText_SkyPillar[];
extern const u8 gText_DontRemember[];
extern const u8 gUnknown_085EB597[];
extern const u8 gUnknown_085EB32D[];
extern const u8 gUnknown_085EB33E[];
extern const u8 gUnknown_085EB350[];
extern const u8 gUnknown_085EB361[];
extern const u8 gText_NormalTagMatch[];
extern const u8 gText_VarietyTagMatch[];
extern const u8 gText_UniqueTagMatch[];
extern const u8 gText_ExpertTagMatch[];
extern const u8 gText_TimeBoard[];
extern const u8 gText_TimeCleared[];
extern const u8 gText_XMinYDotZSec[];
extern const u8 gText_TrainerHill1F[];
extern const u8 gText_TrainerHill2F[];
extern const u8 gText_TrainerHill3F[];
extern const u8 gText_TrainerHill4F[];
extern const u8 OldaleTown_PokemonCenter_2F_Text_277F1B[];
extern const u8 OldaleTown_PokemonCenter_2F_Text_277F5A[];

36
include/trainer_hill.h Normal file
View File

@ -0,0 +1,36 @@
#ifndef GUARD_TRAINER_HILL_H
#define GUARD_TRAINER_HILL_H
extern u32 *gUnknown_0203CF5C;
void CallTrainerHillFunction(void);
void ResetTrainerHillResults(void);
u8 GetTrainerHillOpponentClass(u16 trainerId);
void GetTrainerHillTrainerName(u8 *dst, u16 trainerId);
u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId);
void InitTrainerHillBattleStruct(void);
void FreeTrainerHillBattleStruct(void);
void CopyTrainerHillTrainerText(u8 which, u16 trainerId);
bool8 sub_81D5C18(void);
void nullsub_129(void);
void PrintOnTrainerHillRecordsWindow(void);
void sub_81D5DF8(void);
bool32 sub_81D5F48(void);
void sub_81D5FB4(u16 *mapArg);
bool32 InTrainerHill(void);
u8 GetCurrentTrainerHillMapId(void);
const struct WarpEvent* sub_81D6120(void);
const struct WarpEvent* sub_81D6134(u8 warpEventId);
u16 LocalIdToHillTrainerId(u8 localId);
bool8 GetHillTrainerFlag(u8 eventObjectId);
void SetHillTrainerFlag(void);
const u8 *sub_81D62AC(void);
void FillHillTrainerParty(void);
void FillHillTrainersParties(void);
u32 sub_81D63C4(void);
u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId);
u8 sub_81D6490(void);
void sub_81D64C0(void);
bool32 sub_81D6534(void);
#endif // GUARD_TRAINER_HILL_H

View File

@ -292,6 +292,7 @@ SECTIONS {
asm/pokenav.o(.text);
src/pokenav_match_call.o(.text);
asm/pokenav.o(.text.after.match.call);
src/trainer_hill.o(.text);
src/rayquaza_scene.o(.text);
src/walda_phrase.o(.text);
src/contest_link_81D9DE4.o(.text);
@ -596,6 +597,7 @@ SECTIONS {
data/pokenav.o(.rodata);
src/pokenav_match_call.o(.rodata);
data/pokenav.o(.rodata.after.match.call);
src/trainer_hill.o(.rodata);
src/rayquaza_scene.o(.rodata);
src/walda_phrase.o(.rodata);
src/gym_leader_rematch.o(.rodata);

View File

@ -1080,7 +1080,7 @@ void ResetApprenticeStruct(struct Apprentice *apprentice)
u8 i;
for (i = 0; i < 6; i++)
apprentice->easyChatWords[i] |= 0xFFFF;
apprentice->easyChatWords[i] = 0xFFFF;
apprentice->playerName[0] = EOS;
apprentice->id = 16;
@ -1094,7 +1094,7 @@ void ResetAllApprenticeData(void)
for (i = 0; i < 4; i++)
{
for (j = 0; j < 6; j++)
gSaveBlock2Ptr->apprentices[i].easyChatWords[j] |= 0xFFFF;
gSaveBlock2Ptr->apprentices[i].easyChatWords[j] = 0xFFFF;
gSaveBlock2Ptr->apprentices[i].id = 16;
gSaveBlock2Ptr->apprentices[i].playerName[0] = EOS;
gSaveBlock2Ptr->apprentices[i].lvlMode = 0;

View File

@ -1450,7 +1450,7 @@ void ClearBattleAnimationVars(void)
// Clear index array.
for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
sAnimSpriteIndexArray[i] |= 0xFFFF;
sAnimSpriteIndexArray[i] = 0xFFFF;
// Clear anim args.
for (i = 0; i < ANIM_ARGS_COUNT; i++)
@ -1511,7 +1511,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
gAnimScriptCallback = RunAnimScriptCommand;
for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
sAnimSpriteIndexArray[i] |= 0xFFFF;
sAnimSpriteIndexArray[i] = 0xFFFF;
if (isMoveAnim)
{
@ -1572,7 +1572,7 @@ static void ClearSpriteIndex(u16 index)
{
if (sAnimSpriteIndexArray[i] == index)
{
sAnimSpriteIndexArray[i] |= 0xFFFF;
sAnimSpriteIndexArray[i] = 0xFFFF;
return;
}
}
@ -1779,7 +1779,7 @@ static void ScriptCmd_end(void)
{
FreeSpriteTilesByTag(gBattleAnimPicTable[sAnimSpriteIndexArray[i]].tag);
FreeSpritePaletteByTag(gBattleAnimPicTable[sAnimSpriteIndexArray[i]].tag);
sAnimSpriteIndexArray[i] |= 0xFFFF; // set terminator.
sAnimSpriteIndexArray[i] = 0xFFFF; // set terminator.
}
}

View File

@ -3548,7 +3548,7 @@ static void sub_8190400(u8 taskId)
SetVBlankCallback(VblankCb0_BattleDome);
sBattleDomeStruct = AllocZeroed(sizeof(*sBattleDomeStruct));
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
sBattleDomeStruct->arr[i] |= 0xFF;
sBattleDomeStruct->arr[i] = 0xFF;
LoadMonIconPalettes();
i = CreateTask(sub_8190CD4, 0);
gTasks[i].data[0] = 0;

View File

@ -198,9 +198,9 @@ static void sub_81A5E94(void)
gUnknown_03001288 = FALSE;
for (i = 0; i < 6; i++)
gSaveBlock2Ptr->frontier.field_E70[i].monId |= 0xFFFF;
gSaveBlock2Ptr->frontier.field_E70[i].monId = 0xFFFF;
for (i = 0; i < 3; i++)
gUnknown_03006298[i] |= 0xFFFF;
gUnknown_03006298[i] = 0xFFFF;
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
gTrainerBattleOpponent_A = 0;

View File

@ -5862,7 +5862,7 @@ static void HandleAction_NothingIsFainted(void)
| HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
| HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000
| HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
| HITMARKER_x8000000 | HITMARKER_x4000000);
| HITMARKER_CHARGING | HITMARKER_x4000000);
}
static void HandleAction_ActionFinished(void)
@ -5875,7 +5875,7 @@ static void HandleAction_ActionFinished(void)
| HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
| HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000
| HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
| HITMARKER_x8000000 | HITMARKER_x4000000);
| HITMARKER_CHARGING | HITMARKER_x4000000);
gCurrentMove = 0;
gBattleMoveDamage = 0;

View File

@ -16,6 +16,7 @@
#include "string_util.h"
#include "strings.h"
#include "text.h"
#include "trainer_hill.h"
#include "window.h"
#include "constants/battle_string_ids.h"
#include "constants/items.h"
@ -41,10 +42,6 @@ extern u8 gUnknown_0203C7B4;
extern const u8 gTrainerClassNames[][13];
extern const u16 gUnknown_08D85620[];
extern u8 GetTrainerHillOpponentClass(u16 trainerId); // pokenav
extern void GetTrainerHillTrainerName(u8 *txtPtr, u16 trainerId); // pokenav
extern void CopyTrainerHillTrainerText(u8 arg0, u16 trainerId); // pokenav
// this file's functions
static void ChooseMoveUsedParticle(u8 *textPtr);
static void ChooseTypeOfMoveUsedString(u8 *dst);

View File

@ -1446,7 +1446,7 @@ static void sub_81A84B4(void)
u8 i;
for (i = 0; i < 14; i++)
gSaveBlock2Ptr->frontier.field_CB4[i] |= 0xFFFF;
gSaveBlock2Ptr->frontier.field_CB4[i] = 0xFFFF;
}
static void sub_81A84EC(void)

View File

@ -1537,7 +1537,7 @@ void sub_81AA1D8(void)
u8 var0, var1;
for (i = 0; i < 8; i++)
gSaveBlock2Ptr->frontier.field_CB4[i] |= 0xFFFF;
gSaveBlock2Ptr->frontier.field_CB4[i] = 0xFFFF;
id = sub_81AA9E4();
sub_81AA33C(&var0, &var1);

View File

@ -8459,7 +8459,7 @@ static u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a c
|| gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE
|| gBattleMoves[move].effect == EFFECT_BIDE)
{
if ((gHitMarker & HITMARKER_x8000000))
if ((gHitMarker & HITMARKER_CHARGING))
return 1;
}
return 2;

View File

@ -29,6 +29,7 @@
#include "field_message_box.h"
#include "sound.h"
#include "strings.h"
#include "trainer_hill.h"
#include "secret_base.h"
#include "string_util.h"
#include "overworld.h"
@ -61,18 +62,9 @@ struct TrainerBattleParameter
u8 ptrType;
};
extern bool32 InTrainerHill(void);
extern void ClearPoisonStepCounter(void);
extern void sub_808BCF4(void);
extern void sub_80AF6F0(void);
extern u16 sub_81D6180(u8 localId);
extern bool8 GetTrainerHillTrainerFlag(u8 eventObjId);
extern bool8 sub_81D5C18(void);
extern void sub_81D639C(void);
extern void sub_81D6384(void);
extern void sub_81D61E8(void);
extern void sub_80982B8(void);
extern void CopyTrainerHillTrainerText(u8 a0, u16 arg1);
// this file's functions
static void DoBattlePikeWildBattle(void);
@ -1148,12 +1140,12 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
{
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
SetMapVarsToTrainer();
gTrainerBattleOpponent_A = sub_81D6180(gSpecialVar_LastTalked);
gTrainerBattleOpponent_A = LocalIdToHillTrainerId(gSpecialVar_LastTalked);
}
else
{
TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
gTrainerBattleOpponent_B = sub_81D6180(gSpecialVar_LastTalked);
gTrainerBattleOpponent_B = LocalIdToHillTrainerId(gSpecialVar_LastTalked);
}
return EventScript_TryDoNormalTrainerBattle;
default:
@ -1215,7 +1207,7 @@ bool8 GetTrainerFlag(void)
if (InBattlePyramid())
return GetBattlePyramidTrainerFlag(gSelectedEventObject);
else if (InTrainerHill())
return GetTrainerHillTrainerFlag(gSelectedEventObject);
return GetHillTrainerFlag(gSelectedEventObject);
else
return FlagGet(GetTrainerAFlag());
}
@ -1281,11 +1273,11 @@ void BattleSetup_StartTrainerBattle(void)
gBattleTypeFlags |= BATTLE_TYPE_TRAINER_HILL;
if (gNoOfApproachingTrainers == 2)
sub_81D639C();
FillHillTrainersParties();
else
sub_81D6384();
FillHillTrainerParty();
sub_81D61E8();
SetHillTrainerFlag();
}
sNoOfPossibleTrainerRetScripts = gNoOfApproachingTrainers;
@ -1367,9 +1359,9 @@ void ShowTrainerIntroSpeech(void)
else if (sub_81D5C18())
{
if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
CopyTrainerHillTrainerText(2, sub_81D6180(gSpecialVar_LastTalked));
CopyTrainerHillTrainerText(2, LocalIdToHillTrainerId(gSpecialVar_LastTalked));
else
CopyTrainerHillTrainerText(2, sub_81D6180(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
CopyTrainerHillTrainerText(2, LocalIdToHillTrainerId(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
sub_80982B8();
}

View File

@ -1888,7 +1888,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
else if (trainerId == TRAINER_EREADER)
{
for (i = firstMonId; i < firstMonId + 3; i++)
sub_806819C(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]);
CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]);
return;
}
else if (trainerId == TRAINER_FRONTIER_BRAIN)
@ -1904,7 +1904,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
if (gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[j].species != 0
&& gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[j].level <= level)
{
sub_8068338(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[j], FALSE);
CreateBattleTowerMon2(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[j], FALSE);
}
}
return;
@ -2075,7 +2075,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId)
else if (trainerId == TRAINER_EREADER)
{
for (i = firstMonId; i < firstMonId + 3; i++)
sub_806819C(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]);
CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]);
return;
}
else if (trainerId == TRAINER_FRONTIER_BRAIN)
@ -2276,7 +2276,7 @@ void DoSpecialTrainerBattle(void)
case SPECIAL_BATTLE_EREADER:
ZeroEnemyPartyMons();
for (i = 0; i < 3; i++)
sub_806819C(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i]);
CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i]);
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_EREADER_TRAINER;
gTrainerBattleOpponent_A = 0;
CreateTask(Task_StartBattleAfterTransition, 1);
@ -3258,7 +3258,7 @@ static void FillPartnerParty(u16 trainerId)
if (monData.nickname[0] == EXT_CTRL_CODE_BEGIN && monData.nickname[1] == EXT_CTRL_CODE_JPN)
trainerName[5] = EOS;
}
sub_8068338(&gPlayerParty[3 + i], &monData, TRUE);
CreateBattleTowerMon2(&gPlayerParty[3 + i], &monData, TRUE);
SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_NAME, trainerName);
j = IsFrontierTrainerFemale(trainerId + TRAINER_RECORD_MIXING_FRIEND);
SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_GENDER, &j);
@ -3663,7 +3663,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount)
}
}
u8 sub_81660B8(u8 facilityClass)
u8 FacilityClassToGraphicsId(u8 facilityClass)
{
u8 trainerObjectGfxId;
u8 i;

View File

@ -3,21 +3,19 @@
#include "battle_controllers.h"
#include "alloc.h"
#include "pokemon.h"
#include "trainer_hill.h"
#include "party_menu.h"
#include "event_data.h"
#include "constants/abilities.h"
#include "random.h"
#include "battle_scripts.h"
extern void sub_81D55D0(void);
extern void sub_81D5694(void);
void AllocateBattleResources(void)
{
gBattleResources = gBattleResources; // something dumb needed to match
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
sub_81D55D0();
InitTrainerHillBattleStruct();
gBattleStruct = AllocZeroed(sizeof(*gBattleStruct));
@ -47,7 +45,7 @@ void AllocateBattleResources(void)
void FreeBattleResources(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
sub_81D5694();
FreeTrainerHillBattleStruct();
if (gBattleResources != NULL)
{

View File

@ -20,6 +20,7 @@
#include "sprite.h"
#include "task.h"
#include "trainer_see.h"
#include "trainer_hill.h"
#include "util.h"
#include "constants/event_object_movement_constants.h"
#include "constants/event_objects.h"

View File

@ -25,6 +25,7 @@
#include "sound.h"
#include "start_menu.h"
#include "trainer_see.h"
#include "trainer_hill.h"
#include "wild_encounter.h"
#include "constants/bg_event_constants.h"
#include "constants/event_objects.h"

View File

@ -13,6 +13,7 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "trainer_hill.h"
#include "constants/species.h"
static bool32 IsMonValidSpecies(struct Pokemon *pokemon)

View File

@ -11,6 +11,7 @@
#include "pokenav.h"
#include "script.h"
#include "secret_base.h"
#include "trainer_hill.h"
#include "tv.h"
#include "constants/rgb.h"

View File

@ -1827,7 +1827,7 @@ void sub_81A3ACC(void)
s32 i;
for (i = 0; i < 20; i++)
gSaveBlock2Ptr->frontier.field_CB4[i] |= 0xFFFF;
gSaveBlock2Ptr->frontier.field_CB4[i] = 0xFFFF;
}
static void sub_81A3B00(void)

View File

@ -4524,7 +4524,7 @@ void sub_80115EC(s32 a0)
if ((a0 >> i) & 1)
{
gUnknown_03005000.unk_cea[i] = 0;
gUnknown_03005000.unk_cee[i] |= 0xFF;
gUnknown_03005000.unk_cee[i] = 0xFF;
}
}
}

View File

@ -8,13 +8,12 @@
#include "pokemon_storage_system.h"
#include "random.h"
#include "save_location.h"
#include "trainer_hill.h"
#include "gba/flash_internal.h"
#include "decoration_inventory.h"
static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
extern void* gUnknown_0203CF5C;
extern bool16 IdentifyFlash(void);
extern void ApplyNewEncryptionKeyToBerryPowder(u32 key);

View File

@ -22,10 +22,10 @@
#include "text.h"
#include "intro.h"
#include "main.h"
#include "trainer_hill.h"
extern void sub_800B9B8(void);
extern u8 gUnknown_03002748;
extern u32 *gUnknown_0203CF5C;
static void VBlankIntr(void);
static void HBlankIntr(void);

View File

@ -17,6 +17,7 @@
#include "easy_chat.h"
#include "event_data.h"
#include "money.h"
#include "trainer_hill.h"
#include "tv.h"
#include "coins.h"
#include "text.h"
@ -49,7 +50,6 @@ extern void copy_strings_to_sav1(void);
extern void InitMatchCallCounters(void);
extern void sub_801AFD8(void);
extern void sub_800E5AC(void);
extern void sub_81D54BC(void);
extern void ResetContestLinkResults(void);
extern void ResetPokeJumpResults(void);
extern void SetBerryPowder(u32* powder, u32 newValue);
@ -212,7 +212,7 @@ void NewGameInitData(void)
InitMatchCallCounters();
sub_801AFD8();
sub_800E5AC();
sub_81D54BC();
ResetTrainerHillResults();
ResetContestLinkResults();
}

View File

@ -19,7 +19,6 @@
#include "field_tasks.h"
#include "field_weather.h"
#include "fieldmap.h"
// #include "fldeff_flash.h"
#include "gpu_regs.h"
#include "heal_location.h"
#include "link.h"
@ -50,6 +49,7 @@
#include "task.h"
// #include "tileset_anim.h"
#include "time_events.h"
#include "trainer_hill.h"
#include "tv.h"
#include "scanline_effect.h"
#include "wild_encounter.h"
@ -106,7 +106,6 @@ extern void apply_map_tileset2_palette(const struct MapLayout *);
extern void copy_map_tileset2_to_vram_2(const struct MapLayout *);
extern void RestartWildEncounterImmunitySteps(void);
extern void ShowMapNamePopup(void);
extern bool32 InTrainerHill(void);
extern bool32 sub_808651C(void);
extern bool8 sub_80AF6A4(void);
extern bool8 sub_80E909C(void);
@ -129,14 +128,11 @@ extern void WriteFlashScanlineEffectBuffer(u8);
extern void sub_81AA2F8(void);
extern void InitMatchCallCounters(void);
extern void sub_80EDB44(void);
extern void sub_81D64C0(void);
extern void InitFieldMessageBox(void);
extern void copy_map_tileset1_to_vram(const struct MapLayout *);
extern void copy_map_tileset2_to_vram(const struct MapLayout *);
extern void FieldUpdateBgTilemapScroll(void);
extern void TransferTilesetAnimsBuffer(void);
extern bool32 sub_81D5F48(void);
extern u8 GetCurrentTrainerHillMapId(void);
extern bool8 warp0_in_pokecenter(void);
extern void ResetAllPicSprites(void);
extern void FieldEffectActiveListClear(void);

View File

@ -1563,7 +1563,7 @@ static void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc task, MainCallb
for (i = 0; i <= 15; i++)
gUnknown_0203CEC4->data[i] = 0;
for (i = 0; i < 3; i++)
gUnknown_0203CEC4->unkC[i] |= 0xFF;
gUnknown_0203CEC4->unkC[i] = 0xFF;
if (d == 0)
gUnknown_0203CEC8.unk9 = 0;
@ -1851,10 +1851,10 @@ static void PartyMenuInitHelperStructs(u8 a)
gUnknown_0203CEDC[i].unk0 = &gUnknown_086156C4[1];
gUnknown_0203CEDC[i].unk4 = gUnknown_08615704[a][i];
gUnknown_0203CEDC[i].windowId = i;
gUnknown_0203CEDC[i].unk9 |= 0xFF;
gUnknown_0203CEDC[i].unkA |= 0xFF;
gUnknown_0203CEDC[i].unkB |= 0xFF;
gUnknown_0203CEDC[i].unkC |= 0xFF;
gUnknown_0203CEDC[i].unk9 = 0xFF;
gUnknown_0203CEDC[i].unkA = 0xFF;
gUnknown_0203CEDC[i].unkB = 0xFF;
gUnknown_0203CEDC[i].unkC = 0xFF;
}
gUnknown_0203CEDC[0].unk0 = &gUnknown_086156C4[0];
if (a == 3)

View File

@ -1264,7 +1264,7 @@ static void ResetPokedexView(struct PokedexView *pokedexView)
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
{
pokedexView->pokedexList[i].dexNum |= 0xFFFF;
pokedexView->pokedexList[i].dexNum = 0xFFFF;
pokedexView->pokedexList[i].seen = 0;
pokedexView->pokedexList[i].owned = 0;
}
@ -1281,7 +1281,7 @@ static void ResetPokedexView(struct PokedexView *pokedexView)
pokedexView->seenCount = 0;
pokedexView->ownCount = 0;
for (i = 0; i < 4; i++)
pokedexView->unk61E[i] |= 0xFFFF;
pokedexView->unk61E[i] = 0xFFFF;
pokedexView->unk628 = 0;
pokedexView->unk62A = 0;
pokedexView->unk62C = 0;
@ -2030,7 +2030,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
{
sPokedexView->pokedexList[i].dexNum |= 0xFFFF;
sPokedexView->pokedexList[i].dexNum = 0xFFFF;
sPokedexView->pokedexList[i].seen = FALSE;
sPokedexView->pokedexList[i].owned = FALSE;
}
@ -2437,7 +2437,7 @@ u8 sub_80BDA40(void)
if (sPokedexView->unk61E[i] != 0xFFFF)
{
FreeAndDestroyMonPicSprite(sPokedexView->unk61E[i]);
sPokedexView->unk61E[i] |= 0xFFFF;
sPokedexView->unk61E[i] = 0xFFFF;
}
}
return FALSE;

View File

@ -22,7 +22,6 @@
#include "pokemon_animation.h"
#include "pokemon_summary_screen.h"
#include "pokemon_storage_system.h"
#include "pokenav.h"
#include "random.h"
#include "recorded_battle.h"
#include "rtc.h"
@ -31,6 +30,7 @@
#include "strings.h"
#include "task.h"
#include "text.h"
#include "trainer_hill.h"
#include "util.h"
#include "constants/abilities.h"
#include "constants/battle_frontier.h"
@ -74,7 +74,6 @@ extern const u8 gTrainerClassNames[][13];
extern u16 get_unknown_box_id(void);
extern void set_unknown_box_id(u8);
extern bool8 sub_806F104(void);
extern u8 sub_81D63C8(u16 trainerOpponentId);
// this file's functions
static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
@ -2745,7 +2744,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
CalculateMonStats(mon);
}
void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src)
void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src)
{
s32 i;
u8 nickname[30];
@ -2799,7 +2798,7 @@ void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src)
CalculateMonStats(mon);
}
void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50)
void CreateBattleTowerMon2(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50)
{
s32 i;
u8 nickname[30];
@ -6083,7 +6082,7 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
if (InBattlePyramid())
return GetTrainerEncounterMusicIdInBattlePyramind(trainerOpponentId);
else if (sub_81D5C18())
return sub_81D63C8(trainerOpponentId);
return GetTrainerEncounterMusicIdInTrainerHill(trainerOpponentId);
else
return TRAINER_ENCOUNTER_MUSIC(trainerOpponentId);
}

View File

@ -124,7 +124,7 @@ void sub_8184DA4(u8 arg0)
{
for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] |= 0xFF;
sBattleRecords[i][j] = 0xFF;
}
sBattleFlags = gBattleTypeFlags;
sAI_Scripts = gBattleResources->ai->aiFlags;
@ -206,7 +206,7 @@ void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
for (i = 0; i < bytesToClear; i++)
{
sRecordedBytesNo[battlerId]--;
sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] |= 0xFF;
sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] = 0xFF;
if (sRecordedBytesNo[battlerId] == 0)
break;
}

View File

@ -82,7 +82,7 @@ bool32 sub_8034C54(u32 count)
for (i = 0; i < count; i++)
{
gUnknown_02022E10->array[i].isActive = FALSE;
gUnknown_02022E10->array[i].firstOamId |= 0xFF;
gUnknown_02022E10->array[i].firstOamId = 0xFF;
}
return TRUE;

View File

@ -7,6 +7,7 @@
#include "overworld.h"
#include "pokemon_storage_system.h"
#include "main.h"
#include "trainer_hill.h"
#include "constants/game_stat.h"
static u16 CalculateChecksum(void *data, u16 size);
@ -17,10 +18,6 @@ static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location);
static u8 TryWriteSector(u8 sector, u8 *data);
static u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location);
// for the chunk declarations
extern u32 gUnknown_0203CF5C;
// Divide save blocks into individual chunks to be written to flash sectors
// Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer
@ -662,10 +659,10 @@ static void UpdateSaveAddresses(void)
u8 HandleSavingData(u8 saveType)
{
u8 i;
u32 backupVar = gUnknown_0203CF5C;
u32 *backupVar = gUnknown_0203CF5C;
u8 *tempAddr;
gUnknown_0203CF5C = 0;
gUnknown_0203CF5C = NULL;
UpdateSaveAddresses();
switch (saveType)
{

View File

@ -782,10 +782,10 @@ const struct MenuAction MultichoiceList_112[] =
const struct MenuAction MultichoiceList_113[] =
{
{gUnknown_085EB32D, NULL},
{gUnknown_085EB33E, NULL},
{gUnknown_085EB350, NULL},
{gUnknown_085EB361, NULL},
{gText_NormalTagMatch, NULL},
{gText_VarietyTagMatch, NULL},
{gText_UniqueTagMatch, NULL},
{gText_ExpertTagMatch, NULL},
{gText_Exit, NULL},
};
@ -1407,7 +1407,7 @@ static void sub_80E2578(void)
for (i = 0; i < ARRAY_COUNT(gUnknown_03001124); i++)
{
gUnknown_03001124[i] |= 0xFF;
gUnknown_03001124[i] = 0xFF;
}
GetFontAttribute(1, FONTATTR_MAX_LETTER_WIDTH);

View File

@ -252,7 +252,7 @@ const u8 gText_ThePokemonList[] = _("the POKéMON LIST");
const u8 gText_TheShop[] = _("the shop");
const u8 gText_ThePC[] = _("the PC");
const u8 *const gReturnToXStringsTable[] =
const u8 *const gReturnToXStringsTable[] =
{
gText_TheField,
gText_TheBattle,
@ -268,7 +268,7 @@ const u8 *const gReturnToXStringsTable[] =
gText_ThePC
};
const u8 *const gReturnToXStringsTable2[] =
const u8 *const gReturnToXStringsTable2[] =
{
gText_TheField,
gText_TheBattle,
@ -283,7 +283,7 @@ const u8 gText_TMHMPocket[] = _("TMs & HMs");
const u8 gText_BerriesPocket[] = _("BERRIES");
const u8 gText_KeyItemsPocket[] = _("KEY ITEMS");
const u8 *const gPocketNamesStringsTable[] =
const u8 *const gPocketNamesStringsTable[] =
{
gText_ItemsPocket,
gText_PokeBallsPocket,
@ -749,10 +749,10 @@ const u8 gUnknown_085EB2FF[] = _("I'll battle now!");
const u8 gUnknown_085EB310[] = _("I won!");
const u8 gUnknown_085EB317[] = _("I lost!");
const u8 gUnknown_085EB31F[] = _("I won't tell.");
const u8 gUnknown_085EB32D[] = _("NORMAL TAG MATCH");
const u8 gUnknown_085EB33E[] = _("VARIETY TAG MATCH");
const u8 gUnknown_085EB350[] = _("UNIQUE TAG MATCH");
const u8 gUnknown_085EB361[] = _("EXPERT TAG MATCH");
const u8 gText_NormalTagMatch[] = _("NORMAL TAG MATCH");
const u8 gText_VarietyTagMatch[] = _("VARIETY TAG MATCH");
const u8 gText_UniqueTagMatch[] = _("UNIQUE TAG MATCH");
const u8 gText_ExpertTagMatch[] = _("EXPERT TAG MATCH");
const u8 gUnknown_085EB372[] = _("TRADE CENTER");
const u8 gUnknown_085EB37F[] = _("COLOSSEUM");
const u8 gUnknown_085EB389[] = _("RECORD CORNER");
@ -1737,10 +1737,10 @@ const u8 gText_Lv[] = _("{LV}");
const u8 gText_TimeBoard[] = _("TIME BOARD");
const u8 gText_TimeCleared[] = _("TIME CLEARED ");
const u8 gText_XMinYDotZSec[] = _("{STR_VAR_1} min. {STR_VAR_2}.{STR_VAR_3} sec.");
const u8 gUnknown_085EF8B6[] = _("1F");
const u8 gUnknown_085EF8B9[] = _("2F");
const u8 gUnknown_085EF8BC[] = _("3F");
const u8 gUnknown_085EF8BF[] = _("4F");
const u8 gText_TrainerHill1F[] = _("1F");
const u8 gText_TrainerHill2F[] = _("2F");
const u8 gText_TrainerHill3F[] = _("3F");
const u8 gText_TrainerHill4F[] = _("4F");
const u8 gText_TeachWhichMoveToPkmn[] = _("Teach which move to {STR_VAR_1}?");
const u8 gText_TeachX[] = _("Teach {STR_VAR_2}?");
const u8 gText_PkmnLearnedMove4[] = _("{STR_VAR_1} learned\n{STR_VAR_2}!");

1121
src/trainer_hill.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -109,7 +109,7 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8
{
if (paletteTag == 0xFFFF)
{
sCreatingSpriteTemplate.paletteTag |= 0xFFFF;
sCreatingSpriteTemplate.paletteTag = 0xFFFF;
LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20);
}
else
@ -122,7 +122,7 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8
{
if (paletteTag == 0xFFFF)
{
sCreatingSpriteTemplate.paletteTag |= 0xFFFF;
sCreatingSpriteTemplate.paletteTag = 0xFFFF;
LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, 0x100 + paletteSlot * 0x10, 0x20);
}
else

View File

@ -6,18 +6,16 @@
#include "field_effect.h"
#include "field_player_avatar.h"
#include "pokemon.h"
#include "pokenav.h"
#include "script.h"
#include "script_movement.h"
#include "sprite.h"
#include "task.h"
#include "trainer_see.h"
#include "trainer_hill.h"
#include "util.h"
#include "battle_pyramid.h"
#include "constants/field_effects.h"
extern bool32 InTrainerHill(void);
extern bool8 GetTrainerHillTrainerFlag(u8 eventObjectId);
extern void sub_809BE48(u16 npcId);
// this file's functions
@ -240,7 +238,7 @@ static u8 CheckTrainer(u8 eventObjectId)
}
else if (InTrainerHill() == TRUE)
{
if (GetTrainerHillTrainerFlag(eventObjectId))
if (GetHillTrainerFlag(eventObjectId))
return 0;
}
else

View File

@ -289,13 +289,5 @@ gUnknown_0203CF4C: @ 203CF4C
gUnknown_0203CF50: @ 203CF50
.space 0x4
gUnknown_0203CF54: @ 203CF54
.space 0x4
gUnknown_0203CF58: @ 203CF58
.space 0x4
gUnknown_0203CF5C: @ 203CF5C
.space 0x4
.include "src/trainer_hill.o"
.include "src/rayquaza_scene.o"