ported battle_controller_player from pokeem and matched several new functions

This commit is contained in:
jiangzhengwenjz
2019-08-05 08:15:58 +08:00
parent 5568895b04
commit b9d547a02f
33 changed files with 3154 additions and 11135 deletions
+3 -5
View File
@@ -5,7 +5,7 @@
#include "constants/battle.h"
#include "battle_util.h"
#include "battle_script_commands.h"
#include "battle_2.h"
#include "battle_main.h"
#include "battle_ai_switch_items.h"
#include "battle_gfx_sfx_util.h"
#include "battle_util2.h"
@@ -385,10 +385,6 @@ extern u8 gActiveBattler;
extern u8 gBattlerTarget;
extern u8 gAbsentBattlerFlags;
// TODO: move these to constants/battle.h
#define MAX_BATTLERS_COUNT 4
#define BIT_FLANK 2
// script's table id to bit
#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0)
#define AI_SCRIPT_TRY_TO_FAINT (1 << 1)
@@ -984,5 +980,7 @@ extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT];
extern u16 gDynamicBasePower;
extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT];
extern u8 gLastHitBy[MAX_BATTLERS_COUNT];
extern u8 gMultiUsePlayerCursor;
extern u8 gNumberOfMovesToChoose;
#endif // GUARD_BATTLE_H
+4
View File
@@ -133,6 +133,8 @@ u8 GetBattlerSpriteDefault_Y(u8 bank);
u8 sub_80A82E4(u8 bank);
u8 GetSubstituteSpriteDefault_Y(u8 bank);
u8 GetGhostSpriteDefault_Y(u8 battlerId);
void sub_8072E48(u8 battlerId, u8);
void sub_8073128(u8);
// battle_anim_80A9C70.s
void LaunchStatusAnimation(u8 bank, u8 statusAnimId);
@@ -154,6 +156,8 @@ void sub_80759DC(u8 spriteId);
bool8 IsBattlerSpritePresent(u8 battlerId);
u8 GetBattlerSpriteSubpriority(u8 battlerId);
void StartAnimLinearTranslation(struct Sprite *sprite);
void sub_80755B8(struct Sprite *sprite);
u8 sub_80768B0(u8 battlerId);
// battle_anim_mon_movement.c
void AnimTask_ShakeMon(u8 taskId);
+10 -3
View File
@@ -82,6 +82,9 @@ enum
#define INSTANT_HP_BAR_DROP 32767
// Special return values in gBattleBufferB from Battle Controller functions.
#define RET_VALUE_LEVELED_UP 11
struct UnusedControllerStruct
{
u8 field_0 : 7;
@@ -227,17 +230,20 @@ void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void BtlController_EmitCmd55(u8 bufferId, u8 arg1);
// player controller
void nullsub_13(void);
void SetControllerToPlayer(void);
void PlayerHandleGetRawMonData(void);
void sub_80587B0(void);
void sub_805CC00(struct Sprite *sprite);
void sub_80335F8(struct Sprite *sprite);
void SetCB2ToReshowScreenAfterMenu(void);
void SetCB2ToReshowScreenAfterMenu2(void);
void c3_0802FDF4(u8 taskId);
void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
void ActionSelectionDestroyCursorAt(u8 cursorPos);
void InitMoveSelectionsVarsAndStrings(void);
void nullsub_13(void);
void sub_802F6A8(void);
void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1);
void MoveSelectionDestroyCursorAt(u8 cursorPos);
void HandleInputChooseMove(void);
// recorded player controller
void SetControllerToRecordedPlayer(void);
@@ -262,6 +268,7 @@ void sub_80EB2F4(u8);
void sub_80E8570(void);
void sub_80E85C0(void);
void sub_80E8598(void);
void sub_80E7988(void);
// link opponent
void SetControllerToLinkOpponent(void);
+50 -11
View File
@@ -1,8 +1,47 @@
#ifndef GUARD_BATTLE_2_H
#define GUARD_BATTLE_2_H
#ifndef GUARD_BATTLE_MAIN_H
#define GUARD_BATTLE_MAIN_H
#include "global.h"
#include "sprite.h"
struct TrainerMoney
{
u8 classId;
u8 value;
};
struct UnknownPokemonStruct4
{
/*0x00*/ u16 species;
/*0x02*/ u16 heldItem;
/*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0F*/ u8 level;
/*0x10*/ u16 hp;
/*0x12*/ u16 maxhp;
/*0x14*/ u32 status;
/*0x18*/ u32 personality;
/*0x1C*/ u8 gender;
/*0x1D*/ u8 language;
};
#define TYPE_NAME_LENGTH 6
#define ABILITY_NAME_LENGTH 12
// defines for the u8 array gTypeEffectiveness
#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2]))
// defines for the gTypeEffectiveness multipliers
#define TYPE_MUL_NO_EFFECT 0
#define TYPE_MUL_NOT_EFFECTIVE 5
#define TYPE_MUL_NORMAL 10
#define TYPE_MUL_SUPER_EFFECTIVE 20
// special type table Ids
#define TYPE_FORESIGHT 0xFE
#define TYPE_ENDTABLE 0xFF
// defines for the 'DoBounceEffect' function
#define BOUNCE_MON 0x0
#define BOUNCE_HEALTHBOX 0x1
void CB2_InitBattle(void);
void BattleMainCB2(void);
@@ -11,20 +50,20 @@ void sub_8038528(struct Sprite* sprite);
void sub_8038A04(void); // unused
void VBlankCB_Battle(void);
void sub_8038B74(struct Sprite *sprite);
void sub_8038D64(void);
void sub_8011A1C(void);
u32 sub_80391E0(u8 arrayId, u8 caseId);
u32 sub_80397C4(u32 setId, u32 tableId);
void oac_poke_opponent(struct Sprite *sprite);
void SpriteCallbackDummy_2(struct Sprite *sprite);
void sub_8039934(struct Sprite *sprite);
void sub_8039AD8(struct Sprite *sprite);
void sub_8039B2C(struct Sprite *sprite);
void sub_8012098(struct Sprite *sprite);
void sub_8012044(struct Sprite *sprite);
void sub_8039B58(struct Sprite *sprite);
void sub_8039BB4(struct Sprite *sprite);
void sub_80105DC(struct Sprite *sprite);
void sub_8039C00(struct Sprite *sprite);
void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d);
void dp11b_obj_free(u8 bank, bool8 b);
void sub_8012110(struct Sprite *sprite);
void DoBounceEffect(u8 bank, u8 b, s8 c, s8 d);
void EndBounceEffect(u8 bank, bool8 b);
void sub_8039E44(struct Sprite *sprite);
void sub_8039E60(struct Sprite *sprite);
void sub_8039E84(struct Sprite *sprite);
@@ -61,4 +100,4 @@ extern const u8 * const gStatusConditionStringsTable[7][2];
extern const u8 gTypeEffectiveness[336];
#endif // GUARD_BATTLE_2_H
#endif // GUARD_BATTLE_MAIN_H
+1
View File
@@ -61,6 +61,7 @@ void BattleCreateYesNoCursorAt(u8 cursorPosition);
void BufferMoveToLearnIntoBattleTextBuff2(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
bool8 UproarWakeUpCheck(u8 bank);
bool32 IsMonGettingExpSentOut(void);
extern void (* const gBattleScriptingCommandsTable[])(void);
extern const u8 gUnknown_0831C494[][4];
+1 -1
View File
@@ -30,7 +30,7 @@ extern const struct CompressedSpritePalette gMonPaletteTable[];
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gUnknown_8239FD4[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow;
extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
+2 -2
View File
@@ -192,14 +192,14 @@ void sub_800E0E8(void);
bool8 sub_800A520(void);
bool8 sub_8010500(void);
void sub_800DFB4(u8, u8);
void sub_800ADF8(void);
void sub_800AB9C(void);
void sub_800B488(void);
void sub_8009734(void);
void sub_800A620(void);
void sub_8011BD0(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
void sub_800AC34(void);
void sub_800AAC0(void);
void OpenLink(void);
bool8 IsLinkMaster(void);
void CheckShouldAdvanceLinkState(void);
+4 -1
View File
@@ -29,7 +29,9 @@ struct Struct203B0A0
};
extern struct Struct203B0A0 gUnknown_203B0A0;
extern u8 gUnknown_203B0C0;
extern u8 gUnknown_203B0C1;
extern u8 gUnknown_203B0DC[3];
extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func);
bool8 FieldCallback_PrepareFadeInFromMenu(void);
@@ -64,5 +66,6 @@ u8 GetItemEffectType(u16 itemId);
u8 pokemon_order_func(u8);
void sub_8127CAC(void);
void sub_8127DA8(u8 battlerId, u8 multiplayerFlag);
void OpenPartyMenuInBattle(u8 arg);
#endif // GUARD_PARTY_MENU_H
+2
View File
@@ -94,6 +94,8 @@
#define MON_DATA_SPATK2 87
#define MON_DATA_SPDEF2 88
#define MAX_LEVEL 100
#define OT_ID_RANDOM_NO_SHINY 2
#define OT_ID_PRESET 1
#define OT_ID_PLAYER_ID 0
+9
View File
@@ -0,0 +1,9 @@
#ifndef GUARD_POKEMON_SPECIAL_ANIM_H
#define GUARD_POKEMON_SPECIAL_ANIM_H
#include "global.h"
void sub_811E5B8(u16, u16, u16, u16, u16, u16);
bool8 sub_811E680(void);
#endif // GUARD_POKEMON_SPECIAL_ANIM_H
+10
View File
@@ -213,4 +213,14 @@ extern const u8 gUnknown_83FDA4C[];
extern const u8 gUnknown_83FE747[];
extern const u8 gUnknown_83FE6E6[];
// battle_controller_player
extern const u8 gText_BattleSwitchWhich[];
extern const u8 gUnknown_83FE770[];
extern const u8 gText_MoveInterfacePP[];
extern const u8 gUnknown_83FE770[];
extern const u8 gText_MoveInterfaceType[];
extern const u8 gText_LinkStandby[];
extern const u8 gUnknown_83FE725[];
extern const u8 gText_WhatWillPkmnDo[];
#endif //GUARD_STRINGS_H