mirror of
https://github.com/pret/pokeruby.git
synced 2026-04-25 15:44:28 -05:00
resolve some Emerald differences
This commit is contained in:
parent
b8393b3a79
commit
db4af549fd
24
data/battle_scripts_1.s
vendored
24
data/battle_scripts_1.s
vendored
|
|
@ -765,7 +765,7 @@ BattleScript_AlreadyPoisoned: @ 81D7455
|
|||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_ImmunityProtected: @ 81D7463
|
||||
copybyte gEffectBank, gBankTarget
|
||||
copybyte gEffectBattler, gBattlerTarget
|
||||
setbyte cMULTISTRING_CHOOSER, 0
|
||||
call BattleScript_PSNPrevention
|
||||
goto BattleScript_MoveEnd
|
||||
|
|
@ -1086,7 +1086,7 @@ BattleScript_AlreadyParalyzed: @ 81D784B
|
|||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_LimberProtected: @ 81D7859
|
||||
copybyte gEffectBank, gBankTarget
|
||||
copybyte gEffectBattler, gBattlerTarget
|
||||
setbyte cMULTISTRING_CHOOSER, 0
|
||||
call BattleScript_PRLZPrevention
|
||||
goto BattleScript_MoveEnd
|
||||
|
|
@ -1557,7 +1557,7 @@ BattleScript_EffectCurse: @ 81D7D3B
|
|||
jumpifstat USER, EQUAL, DEFENSE, 12, BattleScript_ButItFailed
|
||||
|
||||
BattleScript_CurseTrySpeed: @ 81D7D60
|
||||
copybyte gBankTarget, gBankAttacker
|
||||
copybyte gBattlerTarget, gBattlerAttacker
|
||||
setbyte sANIM_TURN, 1
|
||||
attackanimation
|
||||
waitanimation
|
||||
|
|
@ -1582,7 +1582,7 @@ BattleScript_CurseEnd: @ 81D7DAE
|
|||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_GhostCurse: @ 81D7DB3
|
||||
jumpifbytenotequal gBankAttacker, gBankTarget, BattleScript_DoGhostCurse
|
||||
jumpifbytenotequal gBattlerAttacker, gBattlerTarget, BattleScript_DoGhostCurse
|
||||
getmovetarget USER
|
||||
|
||||
BattleScript_DoGhostCurse: @ 81D7DC4
|
||||
|
|
@ -2291,7 +2291,7 @@ BattleScript_EffectWillOWisp: @ 81D850F
|
|||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_WaterVeilPrevents: @ 81D855B
|
||||
copybyte gEffectBank, gBankTarget
|
||||
copybyte gEffectBattler, gBattlerTarget
|
||||
setbyte cMULTISTRING_CHOOSER, 0
|
||||
call BattleScript_BRNPrevention
|
||||
goto BattleScript_MoveEnd
|
||||
|
|
@ -2680,12 +2680,12 @@ BattleScript_EffectTeeterDance: @ 81D8929
|
|||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setbyte gBankTarget, 0
|
||||
setbyte gBattlerTarget, 0
|
||||
|
||||
BattleScript_TeeterDanceLoop: @ 81D8932
|
||||
movevaluescleanup
|
||||
setmoveeffect EFFECT_CONFUSION
|
||||
jumpifbyteequal gBankAttacker, gBankTarget, BattleScript_TeeterDanceDoMoveEndIncrement
|
||||
jumpifbyteequal gBattlerAttacker, gBattlerTarget, BattleScript_TeeterDanceDoMoveEndIncrement
|
||||
jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_TeeterDanceLoopIncrement
|
||||
jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_TeeterDanceSubstitutePrevents
|
||||
jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_TeeterDanceAlreadyConfused
|
||||
|
|
@ -2700,8 +2700,8 @@ BattleScript_TeeterDanceLoop: @ 81D8932
|
|||
BattleScript_TeeterDanceDoMoveEndIncrement: @ 81D8978
|
||||
setbyte sMOVEEND_STATE, 0
|
||||
moveend 2, 16
|
||||
addbyte gBankTarget, 1
|
||||
jumpifbytenotequal gBankTarget, gBattlersCount, BattleScript_TeeterDanceLoop
|
||||
addbyte gBattlerTarget, 1
|
||||
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_TeeterDanceLoop
|
||||
end
|
||||
|
||||
BattleScript_TeeterDanceLoopIncrement: @ 81D8996
|
||||
|
|
@ -3248,7 +3248,7 @@ BattleScript_DamagingWeatherContinues:: @ 81D8F7D
|
|||
setbyte gBattleCommunication, 0
|
||||
|
||||
BattleScript_DamagingWeatherLoop: @ 81D8F95
|
||||
copyarraywithindex gBankAttacker, gBanksByTurnOrder, gBattleCommunication, 1
|
||||
copyarraywithindex gBattlerAttacker, gBanksByTurnOrder, gBattleCommunication, 1
|
||||
weatherdamage
|
||||
jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_DamagingWeatherLoopIncrement
|
||||
printfromtable gSandStormHailDmgStringIds
|
||||
|
|
@ -4064,7 +4064,7 @@ BattleScript_1D9792: @ 81D9792
|
|||
pause 32
|
||||
|
||||
gUnknown_081D9795:: @ 81D9795
|
||||
setbyte gBankTarget, 0
|
||||
setbyte gBattlerTarget, 0
|
||||
setstatchanger ATTACK, 1, TRUE
|
||||
|
||||
BattleScript_1D97A1: @ 81D97A1
|
||||
|
|
@ -4081,7 +4081,7 @@ BattleScript_1D97A1: @ 81D97A1
|
|||
waitmessage 64
|
||||
|
||||
BattleScript_1D97E4: @ 81D97E4
|
||||
addbyte gBankTarget, 1
|
||||
addbyte gBattlerTarget, 1
|
||||
goto BattleScript_1D97A1
|
||||
|
||||
BattleScript_1D97EF: @ 81D97EF
|
||||
|
|
|
|||
591
include/battle.h
591
include/battle.h
|
|
@ -5,9 +5,9 @@
|
|||
#include "constants/battle.h"
|
||||
#include "battle_setup.h"
|
||||
|
||||
#define GET_BATTLER_POSITION(bank)((gBattlerPositions[bank]))
|
||||
#define GET_BATTLER_SIDE(bank)((GetBattlerPosition(bank) & BIT_SIDE))
|
||||
#define GET_BATTLER_SIDE2(bank)((GET_BATTLER_POSITION(bank) & BIT_SIDE))
|
||||
#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler])
|
||||
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
|
||||
#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE)
|
||||
|
||||
// Battle Actions
|
||||
// These determine what each battler will do in a turn
|
||||
|
|
@ -21,13 +21,39 @@
|
|||
#define B_ACTION_SAFARI_GO_NEAR 7
|
||||
#define B_ACTION_SAFARI_RUN 8
|
||||
// The exact purposes of these are unclear
|
||||
#define B_ACTION_WALLY_THROW 9
|
||||
#define B_ACTION_WALLY_THROW 9
|
||||
#define B_ACTION_EXEC_SCRIPT 10 // when executing an action
|
||||
#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
|
||||
#define B_ACTION_TRY_FINISH 11
|
||||
#define B_ACTION_FINISHED 12 // when executing an action
|
||||
|
||||
#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
|
||||
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
|
||||
#define B_ACTION_NONE 0xFF
|
||||
|
||||
#define MAX_TRAINER_ITEMS 4
|
||||
#define MAX_MON_MOVES 4
|
||||
|
||||
// array entries for battle communication
|
||||
#define MULTIUSE_STATE 0x0
|
||||
#define CURSOR_POSITION 0x1
|
||||
#define TASK_ID 0x1 // task Id and cursor position share the same field
|
||||
#define SPRITES_INIT_STATE1 0x1 // shares the Id as well
|
||||
#define SPRITES_INIT_STATE2 0x2
|
||||
#define MOVE_EFFECT_BYTE 0x3
|
||||
#define ACTIONS_CONFIRMED_COUNT 0x4
|
||||
#define MULTISTRING_CHOOSER 0x5
|
||||
#define MSG_DISPLAY 0x7
|
||||
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8
|
||||
|
||||
#define MOVE_TARGET_SELECTED 0x0
|
||||
#define MOVE_TARGET_DEPENDS 0x1
|
||||
#define MOVE_TARGET_USER_OR_SELECTED 0x2
|
||||
#define MOVE_TARGET_RANDOM 0x4
|
||||
#define MOVE_TARGET_BOTH 0x8
|
||||
#define MOVE_TARGET_USER 0x10
|
||||
#define MOVE_TARGET_FOES_AND_ALLY 0x20
|
||||
#define MOVE_TARGET_OPPONENTS_FIELD 0x40
|
||||
|
||||
// defines for the u8 array gTypeEffectiveness
|
||||
#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
|
||||
#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
|
||||
|
|
@ -47,18 +73,189 @@
|
|||
#define TYPE_IS_PHYSICAL(type) ((type) < TYPE_MYSTERY)
|
||||
#define TYPE_IS_SPECIAL(type) ((type) > TYPE_MYSTERY)
|
||||
|
||||
enum
|
||||
struct DisableStruct
|
||||
{
|
||||
BATTLE_TERRAIN_GRASS,
|
||||
BATTLE_TERRAIN_LONG_GRASS,
|
||||
BATTLE_TERRAIN_SAND,
|
||||
BATTLE_TERRAIN_UNDERWATER,
|
||||
BATTLE_TERRAIN_WATER,
|
||||
BATTLE_TERRAIN_POND,
|
||||
BATTLE_TERRAIN_MOUNTAIN,
|
||||
BATTLE_TERRAIN_CAVE,
|
||||
BATTLE_TERRAIN_BUILDING,
|
||||
BATTLE_TERRAIN_PLAIN,
|
||||
/*0x00*/ u32 transformedMonPersonality;
|
||||
/*0x04*/ u16 disabledMove;
|
||||
/*0x06*/ u16 encoredMove;
|
||||
/*0x08*/ u8 protectUses;
|
||||
/*0x09*/ u8 stockpileCounter;
|
||||
/*0x0A*/ u8 substituteHP;
|
||||
/*0x0B*/ u8 disableTimer1 : 4;
|
||||
/*0x0B*/ u8 disableTimer2 : 4;
|
||||
/*0x0C*/ u8 encoredMovePos;
|
||||
/*0x0D*/ u8 unkD;
|
||||
/*0x0E*/ u8 encoreTimer1 : 4;
|
||||
/*0x0E*/ u8 encoreTimer2 : 4;
|
||||
/*0x0F*/ u8 perishSongTimer1 : 4;
|
||||
/*0x0F*/ u8 perishSongTimer2 : 4;
|
||||
/*0x10*/ u8 furyCutterCounter;
|
||||
/*0x11*/ u8 rolloutTimer1 : 4;
|
||||
/*0x11*/ u8 rolloutTimer2 : 4;
|
||||
/*0x12*/ u8 chargeTimer1 : 4;
|
||||
/*0x12*/ u8 chargeTimer2 : 4;
|
||||
/*0x13*/ u8 tauntTimer1:4;
|
||||
/*0x13*/ u8 tauntTimer2:4;
|
||||
/*0x14*/ u8 bankPreventingEscape;
|
||||
/*0x15*/ u8 bankWithSureHit;
|
||||
/*0x16*/ u8 isFirstTurn;
|
||||
/*0x17*/ u8 unk17;
|
||||
/*0x18*/ u8 truantCounter : 1;
|
||||
/*0x18*/ u8 unk18_a : 3;
|
||||
/*0x18*/ u8 unk18_b : 4;
|
||||
/*0x19*/ u8 rechargeCounter;
|
||||
/*0x1A*/ u8 unk1A[2];
|
||||
};
|
||||
|
||||
struct ProtectStruct
|
||||
{
|
||||
/*field0*/
|
||||
u32 protected:1;
|
||||
u32 endured:1;
|
||||
u32 noValidMoves:1;
|
||||
u32 helpingHand:1;
|
||||
u32 bounceMove:1;
|
||||
u32 stealMove:1;
|
||||
u32 flag0Unknown:1;
|
||||
u32 prlzImmobility:1;
|
||||
/*field1*/
|
||||
u32 confusionSelfDmg:1;
|
||||
u32 targetNotAffected:1;
|
||||
u32 chargingTurn:1;
|
||||
u32 fleeFlag:2; // For RunAway and Smoke Ball.
|
||||
u32 usedImprisonedMove:1;
|
||||
u32 loveImmobility:1;
|
||||
u32 usedDisabledMove:1;
|
||||
/*field2*/
|
||||
u32 usedTauntedMove:1;
|
||||
u32 flag2Unknown:1;
|
||||
u32 flinchImmobility:1;
|
||||
u32 notFirstStrike:1;
|
||||
u32 free : 4;
|
||||
/*field3*/
|
||||
u32 field3 : 8;
|
||||
u32 physicalDmg;
|
||||
u32 specialDmg;
|
||||
u8 physicalBattlerId;
|
||||
u8 specialBattlerId;
|
||||
u16 fieldE;
|
||||
};
|
||||
|
||||
struct SpecialStatus
|
||||
{
|
||||
u8 statLowered:1;
|
||||
u8 lightningRodRedirected:1;
|
||||
u8 restoredBattlerSprite: 1;
|
||||
u8 intimidatedMon:1;
|
||||
u8 traced:1;
|
||||
u8 ppNotAffectedByPressure:1;
|
||||
u8 flag40:1;
|
||||
u8 focusBanded:1;
|
||||
u8 field1[3];
|
||||
s32 dmg;
|
||||
s32 physicalDmg;
|
||||
s32 specialDmg;
|
||||
u8 physicalBattlerId;
|
||||
u8 specialBattlerId;
|
||||
u8 field12;
|
||||
u8 field13;
|
||||
};
|
||||
|
||||
struct SideTimer
|
||||
{
|
||||
u8 reflectTimer; //0x0
|
||||
u8 lightscreenTimer; //0x1
|
||||
u8 mistTimer; //0x2
|
||||
u8 field3; //0x3
|
||||
u16 field4; //0x4
|
||||
u8 spikesAmount; //0x6
|
||||
u8 safeguardTimer; //0x7
|
||||
u8 followmeTimer; //0x8
|
||||
u8 followmeTarget; //0x9
|
||||
u8 fieldA; //0xA
|
||||
u8 fieldB; //0xB
|
||||
};
|
||||
|
||||
struct WishFutureKnock
|
||||
{
|
||||
u8 futureSightCounter[MAX_BATTLERS_COUNT];
|
||||
u8 futureSightAttacker[MAX_BATTLERS_COUNT];
|
||||
s32 futureSightDmg[MAX_BATTLERS_COUNT];
|
||||
u16 futureSightMove[MAX_BATTLERS_COUNT];
|
||||
u8 wishCounter[MAX_BATTLERS_COUNT];
|
||||
u8 wishMonId[MAX_BATTLERS_COUNT];
|
||||
u8 weatherDuration;
|
||||
u8 knockedOffPokes[2];
|
||||
};
|
||||
|
||||
struct AI_ThinkingStruct /* 0x2016800 */
|
||||
{
|
||||
/*0x00*/ u8 aiState;
|
||||
/*0x01*/ u8 movesetIndex;
|
||||
/*0x02*/ u16 moveConsidered;
|
||||
/*0x04*/ s8 score[4]; // score?
|
||||
/*0x08*/ u32 funcResult;
|
||||
/*0x0C*/ u32 aiFlags;
|
||||
/*0x10*/ u8 aiAction;
|
||||
/*0x11*/ u8 aiLogicId;
|
||||
/*0x12*/ u8 filler12[6];
|
||||
/*0x18*/ u8 simulatedRNG[4];
|
||||
};
|
||||
|
||||
struct BattleHistory
|
||||
{
|
||||
/*0x00*/ u16 usedMoves[2][8]; // 0xFFFF means move not used (confuse self hit, etc)
|
||||
/*0x20*/ u8 abilities[MAX_BATTLERS_COUNT / 2];
|
||||
/*0x22*/ u8 itemEffects[MAX_BATTLERS_COUNT / 2];
|
||||
/*0x24*/ u16 trainerItems[MAX_BATTLERS_COUNT];
|
||||
/*0x2C*/ u8 numItems;
|
||||
};
|
||||
|
||||
struct BattleScriptsStack
|
||||
{
|
||||
const u8 *ptr[8];
|
||||
u8 size;
|
||||
};
|
||||
|
||||
struct BattleCallbacksStack
|
||||
{
|
||||
void* ptr[8];
|
||||
u8 size;
|
||||
};
|
||||
|
||||
struct StatsArray
|
||||
{
|
||||
u16 hp;
|
||||
u16 atk;
|
||||
u16 def;
|
||||
u16 spd;
|
||||
u16 spAtk;
|
||||
u16 spDef;
|
||||
};
|
||||
|
||||
struct BattleResults
|
||||
{
|
||||
u8 playerFaintCounter; // 0x0
|
||||
u8 opponentFaintCounter; // 0x1
|
||||
u8 unk2; // 0x2
|
||||
u8 unk3; // 0x3
|
||||
u8 unk4; // 0x4
|
||||
u8 unk5_0:1; // 0x5
|
||||
u8 unk5_1:1; // 0x5
|
||||
u16 poke1Species; // 0x6
|
||||
u8 pokeString1[10]; // 0x8
|
||||
u8 unk12;
|
||||
u8 battleTurnCounter; // 0x13
|
||||
u8 pokeString2[10]; // 0x14
|
||||
u8 filler1E[2];
|
||||
u16 lastOpponentSpecies; // 0x20
|
||||
u16 lastUsedMove; // 0x22
|
||||
u16 opponentMove; // 0x24
|
||||
u16 opponentSpecies; // 0x26
|
||||
u16 caughtPoke; // 0x28
|
||||
u8 caughtNick[10]; // 0x2A
|
||||
u8 filler34[2];
|
||||
u8 usedBalls[11];
|
||||
};
|
||||
|
||||
union TrainerMonPtr
|
||||
|
|
@ -83,35 +280,12 @@ struct Trainer
|
|||
/*0x24*/ union TrainerMonPtr party;
|
||||
};
|
||||
|
||||
struct BattleHistory
|
||||
{
|
||||
/*0x00*/ u16 usedMoves[2][8]; // 0xFFFF means move not used (confuse self hit, etc)
|
||||
/*0x20*/ u8 abilities[MAX_BATTLERS_COUNT / 2];
|
||||
/*0x22*/ u8 itemEffects[MAX_BATTLERS_COUNT / 2];
|
||||
/*0x24*/ u16 trainerItems[MAX_BATTLERS_COUNT];
|
||||
/*0x2C*/ u8 numItems;
|
||||
};
|
||||
|
||||
struct AI_Stack
|
||||
{
|
||||
u8 *ptr[8];
|
||||
u8 size;
|
||||
};
|
||||
|
||||
struct AI_ThinkingStruct /* 0x2016800 */
|
||||
{
|
||||
/*0x00*/ u8 aiState;
|
||||
/*0x01*/ u8 movesetIndex;
|
||||
/*0x02*/ u16 moveConsidered;
|
||||
/*0x04*/ s8 score[4]; // score?
|
||||
/*0x08*/ u32 funcResult;
|
||||
/*0x0C*/ u32 aiFlags;
|
||||
/*0x10*/ u8 aiAction;
|
||||
/*0x11*/ u8 aiLogicId;
|
||||
/*0x12*/ u8 filler12[6];
|
||||
/*0x18*/ u8 simulatedRNG[4];
|
||||
};
|
||||
|
||||
struct BattleStruct /* 0x2000000 */
|
||||
{
|
||||
/*0x00000*/ u8 unk0;
|
||||
|
|
@ -352,77 +526,6 @@ struct BattleStruct /* 0x2000000 */
|
|||
/* 0x16A00 */ struct BattleHistory unk_2016A00_2;
|
||||
};
|
||||
|
||||
struct StatsArray
|
||||
{
|
||||
u16 hp;
|
||||
u16 atk;
|
||||
u16 def;
|
||||
u16 spd;
|
||||
u16 spAtk;
|
||||
u16 spDef;
|
||||
};
|
||||
|
||||
#define gBattleResources_statsBeforeLvlUp ((struct StatsArray *)(gSharedMem + 0x17180))
|
||||
|
||||
struct DisableStruct
|
||||
{
|
||||
/*0x00*/ u32 transformedMonPersonality;
|
||||
/*0x04*/ u16 disabledMove;
|
||||
/*0x06*/ u16 encoredMove;
|
||||
/*0x08*/ u8 protectUses;
|
||||
/*0x09*/ u8 stockpileCounter;
|
||||
/*0x0A*/ u8 substituteHP;
|
||||
/*0x0B*/ u8 disableTimer1 : 4;
|
||||
/*0x0B*/ u8 disableTimer2 : 4;
|
||||
/*0x0C*/ u8 encoredMovePos;
|
||||
/*0x0D*/ u8 unkD;
|
||||
/*0x0E*/ u8 encoreTimer1 : 4;
|
||||
/*0x0E*/ u8 encoreTimer2 : 4;
|
||||
/*0x0F*/ u8 perishSongTimer1 : 4;
|
||||
/*0x0F*/ u8 perishSongTimer2 : 4;
|
||||
/*0x10*/ u8 furyCutterCounter;
|
||||
/*0x11*/ u8 rolloutTimer1 : 4;
|
||||
/*0x11*/ u8 rolloutTimer2 : 4;
|
||||
/*0x12*/ u8 chargeTimer1 : 4;
|
||||
/*0x12*/ u8 chargeTimer2 : 4;
|
||||
/*0x13*/ u8 tauntTimer1:4;
|
||||
/*0x13*/ u8 tauntTimer2:4;
|
||||
/*0x14*/ u8 bankPreventingEscape;
|
||||
/*0x15*/ u8 bankWithSureHit;
|
||||
/*0x16*/ u8 isFirstTurn;
|
||||
/*0x17*/ u8 unk17;
|
||||
/*0x18*/ u8 truantCounter : 1;
|
||||
/*0x18*/ u8 unk18_a : 3;
|
||||
/*0x18*/ u8 unk18_b : 4;
|
||||
/*0x19*/ u8 rechargeCounter;
|
||||
/*0x1A*/ u8 unk1A[2];
|
||||
};
|
||||
|
||||
struct BattleResults
|
||||
{
|
||||
u8 playerFaintCounter; // 0x0
|
||||
u8 opponentFaintCounter; // 0x1
|
||||
u8 unk2; // 0x2
|
||||
u8 unk3; // 0x3
|
||||
u8 unk4; // 0x4
|
||||
u8 unk5_0:1; // 0x5
|
||||
u8 unk5_1:1; // 0x5
|
||||
u16 poke1Species; // 0x6
|
||||
u8 pokeString1[10]; // 0x8
|
||||
u8 unk12;
|
||||
u8 battleTurnCounter; // 0x13
|
||||
u8 pokeString2[10]; // 0x14
|
||||
u8 filler1E[2];
|
||||
u16 lastOpponentSpecies; // 0x20
|
||||
u16 lastUsedMove; // 0x22
|
||||
u16 opponentMove; // 0x24
|
||||
u16 opponentSpecies; // 0x26
|
||||
u16 caughtPoke; // 0x28
|
||||
u8 caughtNick[10]; // 0x2A
|
||||
u8 filler34[2];
|
||||
u8 usedBalls[11];
|
||||
};
|
||||
|
||||
struct Struct2017100
|
||||
{
|
||||
u32 arr[4];
|
||||
|
|
@ -478,96 +581,7 @@ struct Struct20238C8
|
|||
u8 unk0_7:1;
|
||||
};
|
||||
|
||||
struct ProtectStruct
|
||||
{
|
||||
/*field0*/
|
||||
u32 protected:1;
|
||||
u32 endured:1;
|
||||
u32 onlyStruggle:1;
|
||||
u32 helpingHand:1;
|
||||
u32 bounceMove:1;
|
||||
u32 stealMove:1;
|
||||
u32 flag0Unknown:1;
|
||||
u32 prlzImmobility:1;
|
||||
/*field1*/
|
||||
u32 confusionSelfDmg:1;
|
||||
u32 notEffective:1;
|
||||
u32 chargingTurn:1;
|
||||
u32 fleeFlag:2; //for RunAway and Smoke Ball
|
||||
u32 usedImprisionedMove:1;
|
||||
u32 loveImmobility:1;
|
||||
u32 usedDisabledMove:1;
|
||||
/*field2*/
|
||||
u32 usedTauntedMove:1;
|
||||
u32 flag2Unknown:1;
|
||||
u32 flinchImmobility:1;
|
||||
u32 notFirstStrike:1;
|
||||
u32 free : 4;
|
||||
/*field3*/
|
||||
u32 field3 : 8;
|
||||
u32 physicalDmg;
|
||||
u32 specialDmg;
|
||||
u8 physicalBank;
|
||||
u8 specialBank;
|
||||
u16 fieldE;
|
||||
};
|
||||
|
||||
struct SpecialStatus
|
||||
{
|
||||
u8 statLowered : 1;
|
||||
u8 lightningRodRedirected : 1;
|
||||
u8 restoredBankSprite: 1;
|
||||
u8 intimidatedPoke : 1;
|
||||
u8 traced : 1;
|
||||
u8 flag20 : 1;
|
||||
u8 flag40 : 1;
|
||||
u8 focusBanded : 1;
|
||||
u8 field1[3];
|
||||
s32 moveturnLostHP;
|
||||
s32 moveturnLostHP_physical;
|
||||
s32 moveturnLostHP_special;
|
||||
u8 moveturnPhysicalBank;
|
||||
u8 moveturnSpecialBank;
|
||||
u8 field12;
|
||||
u8 field13;
|
||||
};
|
||||
|
||||
struct sideTimer
|
||||
{
|
||||
u8 reflectTimer; //0x0
|
||||
u8 lightscreenTimer; //0x1
|
||||
u8 mistTimer; //0x2
|
||||
u8 field3; //0x3
|
||||
u16 field4; //0x4
|
||||
u8 spikesAmount; //0x6
|
||||
u8 safeguardTimer; //0x7
|
||||
u8 followmeTimer; //0x8
|
||||
u8 followmeTarget; //0x9
|
||||
u8 fieldA; //0xA
|
||||
u8 fieldB; //0xB
|
||||
};
|
||||
|
||||
struct WishFutureKnock
|
||||
{
|
||||
u8 futureSightCounter[MAX_BATTLERS_COUNT];
|
||||
u8 futureSightAttacker[MAX_BATTLERS_COUNT];
|
||||
s32 futureSightDmg[MAX_BATTLERS_COUNT];
|
||||
u16 futureSightMove[MAX_BATTLERS_COUNT];
|
||||
u8 wishCounter[MAX_BATTLERS_COUNT];
|
||||
u8 wishUserID[MAX_BATTLERS_COUNT];
|
||||
u8 weatherDuration;
|
||||
u8 knockedOffPokes[2];
|
||||
};
|
||||
|
||||
extern struct BattleHistory unk_2016A00;
|
||||
extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
|
||||
extern struct BattleResults gBattleResults;
|
||||
extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
|
||||
extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
|
||||
extern struct sideTimer gSideTimers[2];
|
||||
extern struct WishFutureKnock gWishFutureKnock;
|
||||
extern struct AI_ThinkingStruct gAIThinkingSpace;
|
||||
extern struct Struct20238C8 gUnknown_020238C8;
|
||||
#define gBattleResources_statsBeforeLvlUp ((struct StatsArray *)(gSharedMem + 0x17180))
|
||||
|
||||
#define GET_MOVE_TYPE(move, typeArg) \
|
||||
{ \
|
||||
|
|
@ -577,73 +591,20 @@ extern struct Struct20238C8 gUnknown_020238C8;
|
|||
typeArg = gBattleMoves[move].type; \
|
||||
}
|
||||
|
||||
#define MOVE_EFFECT_SLEEP 0x1
|
||||
#define MOVE_EFFECT_POISON 0x2
|
||||
#define MOVE_EFFECT_BURN 0x3
|
||||
#define MOVE_EFFECT_FREEZE 0x4
|
||||
#define MOVE_EFFECT_PARALYSIS 0x5
|
||||
#define MOVE_EFFECT_TOXIC 0x6
|
||||
#define MOVE_EFFECT_CONFUSION 0x7
|
||||
#define MOVE_EFFECT_FLINCH 0x8
|
||||
#define MOVE_EFFECT_TRI_ATTACK 0x9
|
||||
#define MOVE_EFFECT_UPROAR 0xA
|
||||
#define MOVE_EFFECT_PAYDAY 0xB
|
||||
#define MOVE_EFFECT_CHARGING 0xC
|
||||
#define MOVE_EFFECT_WRAP 0xD
|
||||
#define MOVE_EFFECT_RECOIL_25 0xE
|
||||
#define MOVE_EFFECT_ATK_PLUS_1 0xF
|
||||
#define MOVE_EFFECT_DEF_PLUS_1 0x10
|
||||
#define MOVE_EFFECT_SPD_PLUS_1 0x11
|
||||
#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
|
||||
#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
|
||||
#define MOVE_EFFECT_ACC_PLUS_1 0x14
|
||||
#define MOVE_EFFECT_EVS_PLUS_1 0x15
|
||||
#define MOVE_EFFECT_ATK_MINUS_1 0x16
|
||||
#define MOVE_EFFECT_DEF_MINUS_1 0x17
|
||||
#define MOVE_EFFECT_SPD_MINUS_1 0x18
|
||||
#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
|
||||
#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
|
||||
#define MOVE_EFFECT_ACC_MINUS_1 0x1B
|
||||
#define MOVE_EFFECT_EVS_MINUS_1 0x1C
|
||||
#define MOVE_EFFECT_RECHARGE 0x1D
|
||||
#define MOVE_EFFECT_RAGE 0x1E
|
||||
#define MOVE_EFFECT_STEAL_ITEM 0x1F
|
||||
#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
|
||||
#define MOVE_EFFECT_NIGHTMARE 0x21
|
||||
#define MOVE_EFFECT_ALL_STATS_UP 0x22
|
||||
#define MOVE_EFFECT_RAPIDSPIN 0x23
|
||||
#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
|
||||
#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
|
||||
#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
|
||||
#define MOVE_EFFECT_ATK_PLUS_2 0x27
|
||||
#define MOVE_EFFECT_DEF_PLUS_2 0x28
|
||||
#define MOVE_EFFECT_SPD_PLUS_2 0x29
|
||||
#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
|
||||
#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
|
||||
#define MOVE_EFFECT_ACC_PLUS_2 0x2C
|
||||
#define MOVE_EFFECT_EVS_PLUS_2 0x2D
|
||||
#define MOVE_EFFECT_ATK_MINUS_2 0x2E
|
||||
#define MOVE_EFFECT_DEF_MINUS_2 0x2F
|
||||
#define MOVE_EFFECT_SPD_MINUS_2 0x30
|
||||
#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
|
||||
#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
|
||||
#define MOVE_EFFECT_ACC_MINUS_2 0x33
|
||||
#define MOVE_EFFECT_EVS_MINUS_2 0x34
|
||||
#define MOVE_EFFECT_THRASH 0x35
|
||||
#define MOVE_EFFECT_KNOCK_OFF 0x36
|
||||
#define MOVE_EFFECT_NOTHING_37 0x37
|
||||
#define MOVE_EFFECT_NOTHING_38 0x38
|
||||
#define MOVE_EFFECT_NOTHING_39 0x39
|
||||
#define MOVE_EFFECT_NOTHING_3A 0x3A
|
||||
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
|
||||
#define MOVE_EFFECT_NOTHING_3C 0x3C
|
||||
#define MOVE_EFFECT_NOTHING_3D 0x3D
|
||||
#define MOVE_EFFECT_NOTHING_3E 0x3E
|
||||
#define MOVE_EFFECT_NOTHING_3F 0x3F
|
||||
#define MOVE_EFFECT_AFFECTS_USER 0x40
|
||||
#define MOVE_EFFECT_CERTAIN 0x80
|
||||
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
|
||||
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
|
||||
|
||||
#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)))
|
||||
|
||||
#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type))
|
||||
#define SET_BATTLER_TYPE(battlerId, type) \
|
||||
{ \
|
||||
gBattleMons[battlerId].type1 = type; \
|
||||
gBattleMons[battlerId].type2 = type; \
|
||||
}
|
||||
|
||||
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
|
||||
#define GET_STAT_BUFF_VALUE2(n)((n & 0xF0))
|
||||
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
|
||||
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
|
||||
|
||||
|
|
@ -651,6 +612,16 @@ extern struct Struct20238C8 gUnknown_020238C8;
|
|||
|
||||
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
|
||||
|
||||
extern struct BattleHistory unk_2016A00;
|
||||
extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
|
||||
extern struct BattleResults gBattleResults;
|
||||
extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
|
||||
extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
|
||||
extern struct SideTimer gSideTimers[2];
|
||||
extern struct WishFutureKnock gWishFutureKnock;
|
||||
extern struct AI_ThinkingStruct gAIThinkingSpace;
|
||||
extern struct Struct20238C8 gUnknown_020238C8;
|
||||
|
||||
// used in many battle files, it seems as though Hisashi Sogabe wrote
|
||||
// some sort of macro to replace the use of actually calling memset.
|
||||
// Perhaps it was thought calling memset was much slower?
|
||||
|
|
@ -679,60 +650,36 @@ extern struct Struct20238C8 gUnknown_020238C8;
|
|||
|
||||
typedef void (*BattleCmdFunc)(void);
|
||||
|
||||
struct funcStack
|
||||
{
|
||||
void* ptr[8];
|
||||
u8 size;
|
||||
};
|
||||
|
||||
struct scriptsStack
|
||||
{
|
||||
const u8 *ptr[8];
|
||||
u8 size;
|
||||
};
|
||||
|
||||
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
|
||||
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
|
||||
|
||||
#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type))
|
||||
#define SET_BATTLER_TYPE(battlerId, type) \
|
||||
{ \
|
||||
gBattleMons[battlerId].type1 = type; \
|
||||
gBattleMons[battlerId].type2 = type; \
|
||||
}
|
||||
|
||||
#define GET_STAT_BUFF_VALUE2(n)((n & 0xF0))
|
||||
|
||||
extern u8 gBattleTextBuff1[];
|
||||
|
||||
//function declarations of buffer emits
|
||||
void EmitGetAttributes(u8 buffID, u8 request, u8 c); //0x0
|
||||
void Emitcmd1(u8 a, u8 b, u8 c); //0x1
|
||||
void EmitSetMonData(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2
|
||||
void EmitSendOutPoke(u8 a, u8 b, u8 c); //0x5
|
||||
void EmitReturnPokeToBall(u8 a, u8 b); //0x6
|
||||
void EmitTrainerSlide(u8 a); //0x8
|
||||
void Emitcmd10(u8 a); //0xA
|
||||
void EmitBallThrow(u8 a, u8 shakes); //0xD
|
||||
//void EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF
|
||||
void EmitPrintString(u8 a, u16 stringID); //0x10
|
||||
//void EmitPrintStringPlayerOnly(u8 a, u16 stringID); //0x11
|
||||
void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); //0x16
|
||||
//void EmitHealthBarUpdate(u8 a, u16 b); //0x18; Had to declare the second arg as u16 because s16 wont match in atk0b
|
||||
//void EmitExpBarUpdate(u8 a, u8 b, u16 c); //0x19
|
||||
void EmitStatusIconUpdate(u8 a, u32 b, u32 c); //0x1A
|
||||
void EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B
|
||||
void EmitStatusXor(u8 a, u8 b); //0x1C
|
||||
void EmitHitAnimation(u8 a); //0x29
|
||||
void EmitEffectivenessSound(u8 a, u16 sound); //0x2B
|
||||
void Emitcmd44(u8 a, u16 sound); //0x2C
|
||||
void EmitFaintingCry(u8 a); //0x2D
|
||||
void EmitIntroSlide(u8 a, u8 b); //0x2E
|
||||
void Emitcmd49(u8 a); //0x31
|
||||
void EmitSpriteInvisibility(u8 a, u8 b); //0x33
|
||||
void EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34
|
||||
void EmitResetActionMoveSelection(u8 a, u8 b); //0x36
|
||||
void Emitcmd55(u8 a, u8 b); //0x37
|
||||
void BtlController_EmitGetMonData(u8 buffID, u8 request, u8 c); //0x0
|
||||
void BtlController_EmitGetRawMonData(u8 a, u8 b, u8 c); //0x1
|
||||
void BtlController_EmitSetMonData(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2
|
||||
void BtlController_EmitSwitchInAnim(u8 a, u8 b, u8 c); //0x5
|
||||
void BtlController_EmitReturnMonToBall(u8 a, u8 b); //0x6
|
||||
void BtlController_EmitTrainerSlide(u8 a); //0x8
|
||||
void BtlController_EmitFaintAnimation(u8 a); //0xA
|
||||
void BtlController_EmitBallThrowAnim(u8 a, u8 shakes); //0xD
|
||||
//void BtlController_EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF
|
||||
void BtlController_EmitPrintString(u8 a, u16 stringID); //0x10
|
||||
//void BtlController_EmitPrintSelectionString(u8 a, u16 stringID); //0x11
|
||||
void BtlController_EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); //0x16
|
||||
//void BtlController_EmitHealthBarUpdate(u8 a, u16 b); //0x18; Had to declare the second arg as u16 because s16 wont match in atk0b
|
||||
//void BtlController_EmitExpUpdate(u8 a, u8 b, u16 c); //0x19
|
||||
void BtlController_EmitStatusIconUpdate(u8 a, u32 b, u32 c); //0x1A
|
||||
void BtlController_EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B
|
||||
void BtlController_EmitStatusXor(u8 a, u8 b); //0x1C
|
||||
void BtlController_EmitHitAnimation(u8 a); //0x29
|
||||
void BtlController_EmitPlaySE(u8 a, u16 sound); //0x2B
|
||||
void BtlController_EmitPlayFanfareOrBGM(u8 a, u16 sound); //0x2C
|
||||
void BtlController_EmitFaintingCry(u8 a); //0x2D
|
||||
void BtlController_EmitIntroSlide(u8 a, u8 b); //0x2E
|
||||
void BtlController_EmitHidePartyStatusSummary(u8 a); //0x31
|
||||
void BtlController_EmitSpriteInvisibility(u8 a, u8 b); //0x33
|
||||
void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34
|
||||
void BtlController_EmitResetActionMoveSelection(u8 a, u8 b); //0x36
|
||||
void BtlController_EmitCmd55(u8 a, u8 b); //0x37
|
||||
|
||||
#define REQUEST_ALL_BATTLE 0x0
|
||||
#define REQUEST_SPECIES_BATTLE 0x1
|
||||
|
|
@ -745,7 +692,7 @@ void Emitcmd55(u8 a, u8 b); //0x37
|
|||
#define REQUEST_STATUS_BATTLE 0x28
|
||||
#define REQUEST_HP_BATTLE 0x2A
|
||||
|
||||
void MarkBufferBankForExecution(u8 bank);
|
||||
void MarkBattlerForControllerExec(u8 bank);
|
||||
|
||||
extern u8 gBattleTextBuff1[];
|
||||
|
||||
|
|
@ -776,12 +723,12 @@ void ApplyPlayerChosenFrameToBattleMenu();
|
|||
void DrawMainBattleBackground(void);
|
||||
void LoadBattleTextboxAndBackground();
|
||||
void sub_800DE30(u8);
|
||||
void LoadBattleEntryBackground();
|
||||
void DrawBattleEntryBackground();
|
||||
|
||||
// src/battle_2.o
|
||||
void sub_800E7C4(void);
|
||||
void InitBattle(void);
|
||||
void sub_800EC9C(void);
|
||||
void CB2_InitBattle(void);
|
||||
void CB2_InitBattleInternal(void);
|
||||
void CB2_HandleStartBattle(void);
|
||||
void sub_800F104(void);
|
||||
void sub_800F298(void);
|
||||
void BattleMainCB2(void);
|
||||
|
|
@ -803,7 +750,7 @@ void nullsub_86(struct Sprite *);
|
|||
void objc_dp11b_pingpong(struct Sprite *);
|
||||
void nullsub_41(void);
|
||||
void sub_8010800(void);
|
||||
void sub_8010824(void);
|
||||
void BattleMainCB1(void);
|
||||
void sub_8010874(void);
|
||||
void bc_8012FAC(void);
|
||||
void sub_8011384(void);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef GUARD_BATTLE_MESSAGE_H
|
||||
#define GUARD_BATTLE_MESSAGE_H
|
||||
|
||||
#define TEXT_BUFF_ARRAY_COUNT 16
|
||||
|
||||
struct StringInfoBattle
|
||||
{
|
||||
u16 currentMove;
|
||||
|
|
@ -154,7 +156,7 @@ struct StringInfoBattle
|
|||
}
|
||||
|
||||
void BufferStringBattle(u16 stringID);
|
||||
u32 StrCpyDecodeToDisplayedStringBattle(const u8* src);
|
||||
u32 StrCpyDecodeBattle(const u8* src, u8* dst);
|
||||
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src);
|
||||
u32 BattleStringExpandPlaceholders(const u8* src, u8* dst);
|
||||
|
||||
#endif // GUARD_BATTLE_MESSAGE_H
|
||||
|
|
|
|||
|
|
@ -43,97 +43,6 @@
|
|||
#define BIT_SIDE 1
|
||||
#define BIT_FLANK 2
|
||||
|
||||
#define STATUS_SLEEP 0x7
|
||||
#define STATUS_POISON 0x8
|
||||
#define STATUS_BURN 0x10
|
||||
#define STATUS_FREEZE 0x20
|
||||
#define STATUS_PARALYSIS 0x40
|
||||
#define STATUS_TOXIC_POISON 0x80
|
||||
#define STATUS_TOXIC_COUNTER 0xF00
|
||||
|
||||
#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON))
|
||||
#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
|
||||
|
||||
#define STATUS2_CONFUSION 0x00000007
|
||||
#define STATUS2_FLINCHED 0x00000008
|
||||
#define STATUS2_UPROAR 0x00000070
|
||||
#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200
|
||||
#define STATUS2_LOCK_CONFUSE 0x00000C00
|
||||
#define STATUS2_MULTIPLETURNS 0x00001000
|
||||
#define STATUS2_WRAPPED 0x0000E000
|
||||
#define STATUS2_INFATUATION 0x000F0000
|
||||
#define STATUS2_FOCUS_ENERGY 0x00100000
|
||||
#define STATUS2_TRANSFORMED 0x00200000
|
||||
#define STATUS2_RECHARGE 0x00400000
|
||||
#define STATUS2_RAGE 0x00800000
|
||||
#define STATUS2_SUBSTITUTE 0x01000000
|
||||
#define STATUS2_DESTINY_BOND 0x02000000
|
||||
#define STATUS2_ESCAPE_PREVENTION 0x04000000
|
||||
#define STATUS2_NIGHTMARE 0x08000000
|
||||
#define STATUS2_CURSED 0x10000000
|
||||
#define STATUS2_FORESIGHT 0x20000000
|
||||
#define STATUS2_DEFENSE_CURL 0x40000000
|
||||
#define STATUS2_TORMENT 0x80000000
|
||||
|
||||
#define STATUS3_LEECHSEED_BANK 0x3
|
||||
#define STATUS3_LEECHSEED 0x4
|
||||
#define STATUS3_ALWAYS_HITS 0x18 //two bits
|
||||
#define STATUS3_PERISH_SONG 0x20
|
||||
#define STATUS3_ON_AIR 0x40
|
||||
#define STATUS3_UNDERGROUND 0x80
|
||||
#define STATUS3_MINIMIZED 0x100
|
||||
#define STATUS3_ROOTED 0x400
|
||||
#define STATUS3_CHARGED_UP 0x200
|
||||
#define STATUS3_YAWN 0x1800 //two bits
|
||||
#define STATUS3_IMPRISIONED 0x2000
|
||||
#define STATUS3_GRUDGE 0x4000
|
||||
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
|
||||
#define STATUS3_MUDSPORT 0x10000
|
||||
#define STATUS3_WATERSPORT 0x20000
|
||||
#define STATUS3_UNDERWATER 0x40000
|
||||
#define STATUS3_INTIMIDATE_POKES 0x80000
|
||||
#define STATUS3_TRACE 0x100000
|
||||
|
||||
#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
|
||||
|
||||
#define HITMARKER_x10 0x00000010
|
||||
#define HITMARKER_x20 0x00000020
|
||||
#define HITMARKER_DESTINYBOND 0x00000040
|
||||
#define HITMARKER_NO_ANIMATIONS 0x00000080
|
||||
#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
|
||||
#define HITMARKER_NO_ATTACKSTRING 0x00000200
|
||||
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
|
||||
#define HITMARKER_NO_PPDEDUCT 0x00000800
|
||||
#define HITMARKER_PURSUIT_TRAP 0x00001000
|
||||
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
|
||||
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
|
||||
#define HITMARKER_RUN 0x00008000
|
||||
#define HITMARKER_IGNORE_ON_AIR 0x00010000
|
||||
#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
|
||||
#define HITMARKER_IGNORE_UNDERWATER 0x00040000
|
||||
#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
|
||||
#define HITMARKER_x100000 0x00100000
|
||||
#define HITMARKER_x200000 0x00200000
|
||||
#define HITMARKER_x400000 0x00400000
|
||||
#define HITMARKER_x800000 0x00800000
|
||||
#define HITMARKER_GRUDGE 0x01000000
|
||||
#define HITMARKER_OBEYS 0x02000000
|
||||
#define HITMARKER_x4000000 0x04000000
|
||||
#define HITMARKER_x8000000 0x08000000
|
||||
#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
|
||||
#define HITMARKER_UNK(bank) ((0x10000000 << bank))
|
||||
|
||||
// Flags describing move's result
|
||||
#define MOVE_RESULT_MISSED (1 << 0)
|
||||
#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
|
||||
#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
|
||||
#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
|
||||
#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
|
||||
#define MOVE_RESULT_FAILED (1 << 5)
|
||||
#define MOVE_RESULT_FOE_ENDURED (1 << 6)
|
||||
#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
|
||||
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
|
||||
|
||||
#define BATTLE_TYPE_DOUBLE 0x0001
|
||||
#define BATTLE_TYPE_LINK 0x0002
|
||||
#define BATTLE_TYPE_WILD 0x0004
|
||||
|
|
@ -166,6 +75,93 @@
|
|||
|
||||
#define OUTCOME_LINK_BATTLE_RUN 0x80
|
||||
|
||||
// Non-volatile status conditions
|
||||
// These persist remain outside of battle and after switching out
|
||||
#define STATUS1_NONE 0x0
|
||||
#define STATUS_SLEEP 0x7
|
||||
#define STATUS_POISON 0x8
|
||||
#define STATUS_BURN 0x10
|
||||
#define STATUS_FREEZE 0x20
|
||||
#define STATUS_PARALYSIS 0x40
|
||||
#define STATUS_TOXIC_POISON 0x80
|
||||
#define STATUS_TOXIC_COUNTER 0xF00
|
||||
#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON))
|
||||
#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
|
||||
|
||||
// Volatile status ailments
|
||||
// These are removed after exiting the battle or switching out
|
||||
#define STATUS2_CONFUSION 0x00000007
|
||||
#define STATUS2_FLINCHED 0x00000008
|
||||
#define STATUS2_UPROAR 0x00000070
|
||||
#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200
|
||||
#define STATUS2_LOCK_CONFUSE 0x00000C00
|
||||
#define STATUS2_MULTIPLETURNS 0x00001000
|
||||
#define STATUS2_WRAPPED 0x0000E000
|
||||
#define STATUS2_INFATUATION 0x000F0000
|
||||
#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
|
||||
#define STATUS2_FOCUS_ENERGY 0x00100000
|
||||
#define STATUS2_TRANSFORMED 0x00200000
|
||||
#define STATUS2_RECHARGE 0x00400000
|
||||
#define STATUS2_RAGE 0x00800000
|
||||
#define STATUS2_SUBSTITUTE 0x01000000
|
||||
#define STATUS2_DESTINY_BOND 0x02000000
|
||||
#define STATUS2_ESCAPE_PREVENTION 0x04000000
|
||||
#define STATUS2_NIGHTMARE 0x08000000
|
||||
#define STATUS2_CURSED 0x10000000
|
||||
#define STATUS2_FORESIGHT 0x20000000
|
||||
#define STATUS2_DEFENSE_CURL 0x40000000
|
||||
#define STATUS2_TORMENT 0x80000000
|
||||
|
||||
// Seems like per-battler statuses. Not quite sure how to categorize these
|
||||
#define STATUS3_LEECHSEED_BANK 0x3
|
||||
#define STATUS3_LEECHSEED 0x4
|
||||
#define STATUS3_ALWAYS_HITS 0x18 //two bits
|
||||
#define STATUS3_PERISH_SONG 0x20
|
||||
#define STATUS3_ON_AIR 0x40
|
||||
#define STATUS3_UNDERGROUND 0x80
|
||||
#define STATUS3_MINIMIZED 0x100
|
||||
#define STATUS3_ROOTED 0x400
|
||||
#define STATUS3_CHARGED_UP 0x200
|
||||
#define STATUS3_YAWN 0x1800 //two bits
|
||||
#define STATUS3_IMPRISIONED 0x2000
|
||||
#define STATUS3_GRUDGE 0x4000
|
||||
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
|
||||
#define STATUS3_MUDSPORT 0x10000
|
||||
#define STATUS3_WATERSPORT 0x20000
|
||||
#define STATUS3_UNDERWATER 0x40000
|
||||
#define STATUS3_INTIMIDATE_POKES 0x80000
|
||||
#define STATUS3_TRACE 0x100000
|
||||
#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
|
||||
|
||||
// Not really sure what a "hitmarker" is.
|
||||
#define HITMARKER_x10 0x00000010
|
||||
#define HITMARKER_x20 0x00000020
|
||||
#define HITMARKER_DESTINYBOND 0x00000040
|
||||
#define HITMARKER_NO_ANIMATIONS 0x00000080
|
||||
#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
|
||||
#define HITMARKER_NO_ATTACKSTRING 0x00000200
|
||||
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
|
||||
#define HITMARKER_NO_PPDEDUCT 0x00000800
|
||||
#define HITMARKER_PURSUIT_TRAP 0x00001000
|
||||
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
|
||||
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
|
||||
#define HITMARKER_RUN 0x00008000
|
||||
#define HITMARKER_IGNORE_ON_AIR 0x00010000
|
||||
#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
|
||||
#define HITMARKER_IGNORE_UNDERWATER 0x00040000
|
||||
#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
|
||||
#define HITMARKER_x100000 0x00100000
|
||||
#define HITMARKER_x200000 0x00200000
|
||||
#define HITMARKER_x400000 0x00400000
|
||||
#define HITMARKER_x800000 0x00800000
|
||||
#define HITMARKER_GRUDGE 0x01000000
|
||||
#define HITMARKER_OBEYS 0x02000000
|
||||
#define HITMARKER_x4000000 0x04000000
|
||||
#define HITMARKER_x8000000 0x08000000
|
||||
#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
|
||||
#define HITMARKER_UNK(bank) ((0x10000000 << bank))
|
||||
|
||||
// Per-side statuses that affect an entire party
|
||||
#define SIDE_STATUS_REFLECT (1 << 0)
|
||||
#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
|
||||
#define SIDE_STATUS_X4 (1 << 2)
|
||||
|
|
@ -175,21 +171,112 @@
|
|||
#define SIDE_STATUS_MIST (1 << 8)
|
||||
#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
|
||||
|
||||
#define ACTION_USE_MOVE 0
|
||||
#define ACTION_USE_ITEM 1
|
||||
#define ACTION_SWITCH 2
|
||||
#define ACTION_RUN 3
|
||||
#define ACTION_WATCHES_CAREFULLY 4
|
||||
#define ACTION_SAFARI_ZONE_BALL 5
|
||||
#define ACTION_POKEBLOCK_CASE 6
|
||||
#define ACTION_GO_NEAR 7
|
||||
#define ACTION_SAFARI_ZONE_RUN 8
|
||||
#define ACTION_9 9
|
||||
#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action
|
||||
#define ACTION_CANCEL_PARTNER 12 // when choosing an action
|
||||
#define ACTION_FINISHED 12 // when executing an action
|
||||
#define ACTION_NOTHING_FAINTED 13 // when choosing an action
|
||||
#define ACTION_INIT_VALUE 0xFF
|
||||
// Flags describing move's result
|
||||
#define MOVE_RESULT_MISSED (1 << 0)
|
||||
#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
|
||||
#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
|
||||
#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
|
||||
#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
|
||||
#define MOVE_RESULT_FAILED (1 << 5)
|
||||
#define MOVE_RESULT_FOE_ENDURED (1 << 6)
|
||||
#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
|
||||
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
|
||||
|
||||
// Battle Weather flags
|
||||
#define WEATHER_RAIN_TEMPORARY (1 << 0)
|
||||
#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
|
||||
#define WEATHER_RAIN_PERMANENT (1 << 2)
|
||||
#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)
|
||||
#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
|
||||
#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
|
||||
#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)
|
||||
#define WEATHER_SUN_TEMPORARY (1 << 5)
|
||||
#define WEATHER_SUN_PERMANENT (1 << 6)
|
||||
#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)
|
||||
#define WEATHER_HAIL (1 << 7)
|
||||
#define WEATHER_HAIL_ANY (WEATHER_HAIL)
|
||||
#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)
|
||||
|
||||
// Move Effects
|
||||
#define MOVE_EFFECT_SLEEP 0x1
|
||||
#define MOVE_EFFECT_POISON 0x2
|
||||
#define MOVE_EFFECT_BURN 0x3
|
||||
#define MOVE_EFFECT_FREEZE 0x4
|
||||
#define MOVE_EFFECT_PARALYSIS 0x5
|
||||
#define MOVE_EFFECT_TOXIC 0x6
|
||||
#define MOVE_EFFECT_CONFUSION 0x7
|
||||
#define MOVE_EFFECT_FLINCH 0x8
|
||||
#define MOVE_EFFECT_TRI_ATTACK 0x9
|
||||
#define MOVE_EFFECT_UPROAR 0xA
|
||||
#define MOVE_EFFECT_PAYDAY 0xB
|
||||
#define MOVE_EFFECT_CHARGING 0xC
|
||||
#define MOVE_EFFECT_WRAP 0xD
|
||||
#define MOVE_EFFECT_RECOIL_25 0xE
|
||||
#define MOVE_EFFECT_ATK_PLUS_1 0xF
|
||||
#define MOVE_EFFECT_DEF_PLUS_1 0x10
|
||||
#define MOVE_EFFECT_SPD_PLUS_1 0x11
|
||||
#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
|
||||
#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
|
||||
#define MOVE_EFFECT_ACC_PLUS_1 0x14
|
||||
#define MOVE_EFFECT_EVS_PLUS_1 0x15
|
||||
#define MOVE_EFFECT_ATK_MINUS_1 0x16
|
||||
#define MOVE_EFFECT_DEF_MINUS_1 0x17
|
||||
#define MOVE_EFFECT_SPD_MINUS_1 0x18
|
||||
#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
|
||||
#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
|
||||
#define MOVE_EFFECT_ACC_MINUS_1 0x1B
|
||||
#define MOVE_EFFECT_EVS_MINUS_1 0x1C
|
||||
#define MOVE_EFFECT_RECHARGE 0x1D
|
||||
#define MOVE_EFFECT_RAGE 0x1E
|
||||
#define MOVE_EFFECT_STEAL_ITEM 0x1F
|
||||
#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
|
||||
#define MOVE_EFFECT_NIGHTMARE 0x21
|
||||
#define MOVE_EFFECT_ALL_STATS_UP 0x22
|
||||
#define MOVE_EFFECT_RAPIDSPIN 0x23
|
||||
#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
|
||||
#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
|
||||
#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
|
||||
#define MOVE_EFFECT_ATK_PLUS_2 0x27
|
||||
#define MOVE_EFFECT_DEF_PLUS_2 0x28
|
||||
#define MOVE_EFFECT_SPD_PLUS_2 0x29
|
||||
#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
|
||||
#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
|
||||
#define MOVE_EFFECT_ACC_PLUS_2 0x2C
|
||||
#define MOVE_EFFECT_EVS_PLUS_2 0x2D
|
||||
#define MOVE_EFFECT_ATK_MINUS_2 0x2E
|
||||
#define MOVE_EFFECT_DEF_MINUS_2 0x2F
|
||||
#define MOVE_EFFECT_SPD_MINUS_2 0x30
|
||||
#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
|
||||
#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
|
||||
#define MOVE_EFFECT_ACC_MINUS_2 0x33
|
||||
#define MOVE_EFFECT_EVS_MINUS_2 0x34
|
||||
#define MOVE_EFFECT_THRASH 0x35
|
||||
#define MOVE_EFFECT_KNOCK_OFF 0x36
|
||||
#define MOVE_EFFECT_NOTHING_37 0x37
|
||||
#define MOVE_EFFECT_NOTHING_38 0x38
|
||||
#define MOVE_EFFECT_NOTHING_39 0x39
|
||||
#define MOVE_EFFECT_NOTHING_3A 0x3A
|
||||
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
|
||||
#define MOVE_EFFECT_NOTHING_3C 0x3C
|
||||
#define MOVE_EFFECT_NOTHING_3D 0x3D
|
||||
#define MOVE_EFFECT_NOTHING_3E 0x3E
|
||||
#define MOVE_EFFECT_NOTHING_3F 0x3F
|
||||
#define MOVE_EFFECT_AFFECTS_USER 0x40
|
||||
#define MOVE_EFFECT_CERTAIN 0x80
|
||||
|
||||
enum
|
||||
{
|
||||
BATTLE_TERRAIN_GRASS,
|
||||
BATTLE_TERRAIN_LONG_GRASS,
|
||||
BATTLE_TERRAIN_SAND,
|
||||
BATTLE_TERRAIN_UNDERWATER,
|
||||
BATTLE_TERRAIN_WATER,
|
||||
BATTLE_TERRAIN_POND,
|
||||
BATTLE_TERRAIN_MOUNTAIN,
|
||||
BATTLE_TERRAIN_CAVE,
|
||||
BATTLE_TERRAIN_BUILDING,
|
||||
BATTLE_TERRAIN_PLAIN,
|
||||
};
|
||||
|
||||
#define TARGET_SELECTED_POKEMON 0
|
||||
#define TARGET_SPECIAL (1 << 0)
|
||||
|
|
@ -239,45 +326,6 @@
|
|||
|
||||
#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
|
||||
|
||||
#define MAX_TRAINER_ITEMS 4
|
||||
#define MAX_MON_MOVES 4
|
||||
|
||||
// Battle Weather flags
|
||||
#define WEATHER_RAIN_TEMPORARY (1 << 0)
|
||||
#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
|
||||
#define WEATHER_RAIN_PERMANENT (1 << 2)
|
||||
#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)
|
||||
#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
|
||||
#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
|
||||
#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)
|
||||
#define WEATHER_SUN_TEMPORARY (1 << 5)
|
||||
#define WEATHER_SUN_PERMANENT (1 << 6)
|
||||
#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)
|
||||
#define WEATHER_HAIL (1 << 7)
|
||||
#define WEATHER_HAIL_ANY (WEATHER_HAIL)
|
||||
#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)
|
||||
|
||||
#define MOVE_TARGET_SELECTED 0x0
|
||||
#define MOVE_TARGET_DEPENDS 0x1
|
||||
#define MOVE_TARGET_USER 0x2
|
||||
#define MOVE_TARGET_RANDOM 0x4
|
||||
#define MOVE_TARGET_x10 0x10
|
||||
#define MOVE_TARGET_BOTH 0x8
|
||||
#define MOVE_TARGET_FOES_AND_ALLY 0x20
|
||||
#define MOVE_TARGET_OPPONENTS_FIELD 0x40
|
||||
|
||||
// array entries for battle communication
|
||||
#define MULTIUSE_STATE 0x0
|
||||
#define CURSOR_POSITION 0x1
|
||||
#define TASK_ID 0x1 // task Id and cursor position share the same field
|
||||
#define SPRITES_INIT_STATE1 0x1 // shares the Id as well
|
||||
#define SPRITES_INIT_STATE2 0x2
|
||||
#define MOVE_EFFECT_BYTE 0x3
|
||||
#define ACTIONS_CONFIRMED_COUNT 0x4
|
||||
#define MULTISTRING_CHOOSER 0x5
|
||||
#define MSG_DISPLAY 0x7
|
||||
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8
|
||||
|
||||
#define BS_GET_TARGET 0
|
||||
#define BS_GET_ATTACKER 1
|
||||
#define BS_GET_EFFECT_BANK 2
|
||||
|
|
|
|||
|
|
@ -195,9 +195,9 @@ extern u8 gSharedMem[];
|
|||
#define eCableCar1 ((struct CableCarEwramStruct1 *)(gSharedMem + 0x17000))
|
||||
#define ewram17002 (&gSharedMem[0x17002])
|
||||
#define eFlashFireArr (*(struct Struct2017100 *)(gSharedMem + 0x17100))
|
||||
#define B_BATTLESCRIPTS_STACK ((struct scriptsStack *) (gSharedMem + 0x17110))
|
||||
#define B_BATTLESCRIPTS_STACK ((struct BattleScriptsStack *) (gSharedMem + 0x17110))
|
||||
#define ewram17130 (gSharedMem[0x17130])
|
||||
#define B_FUNCTION_STACK ((struct funcStack *) (gSharedMem + 0x17140))
|
||||
#define B_FUNCTION_STACK ((struct BattleCallbacksStack *) (gSharedMem + 0x17140))
|
||||
#define ewram17160 (gSharedMem[0x17160])
|
||||
#define ewram17800 ((struct Struct2017800 *) (gSharedMem + 0x17800))
|
||||
#define ewram17800_2 (&gSharedMem[0x17800])
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
struct DoorGraphics
|
||||
{
|
||||
u16 metatileNum;
|
||||
u8 unk2;
|
||||
u8 sound;
|
||||
const void *tiles;
|
||||
const void *palette;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -87,6 +87,29 @@ struct OamData
|
|||
#define ST_OAM_H_RECTANGLE 1
|
||||
#define ST_OAM_V_RECTANGLE 2
|
||||
|
||||
#define ST_OAM_SIZE_0 0
|
||||
#define ST_OAM_SIZE_1 1
|
||||
#define ST_OAM_SIZE_2 2
|
||||
#define ST_OAM_SIZE_3 3
|
||||
|
||||
#define SPRITE_SIZE_8x8 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_SQUARE))
|
||||
#define SPRITE_SIZE_16x16 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_SQUARE))
|
||||
#define SPRITE_SIZE_32x32 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_SQUARE))
|
||||
#define SPRITE_SIZE_64x64 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_SQUARE))
|
||||
|
||||
#define SPRITE_SIZE_16x8 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_H_RECTANGLE))
|
||||
#define SPRITE_SIZE_32x8 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_H_RECTANGLE))
|
||||
#define SPRITE_SIZE_32x16 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_H_RECTANGLE))
|
||||
#define SPRITE_SIZE_64x32 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_H_RECTANGLE))
|
||||
|
||||
#define SPRITE_SIZE_8x16 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_V_RECTANGLE))
|
||||
#define SPRITE_SIZE_8x32 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_V_RECTANGLE))
|
||||
#define SPRITE_SIZE_16x32 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_V_RECTANGLE))
|
||||
#define SPRITE_SIZE_32x64 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_V_RECTANGLE))
|
||||
|
||||
#define SPRITE_SIZE(dim) ((SPRITE_SIZE_##dim >> 2) & 0x03)
|
||||
#define SPRITE_SHAPE(dim) (SPRITE_SIZE_##dim & 0x03)
|
||||
|
||||
struct BgAffineSrcData
|
||||
{
|
||||
s32 texX;
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ struct LinkPlayer
|
|||
/* 0x08 */ u8 name[11];
|
||||
/* 0x13 */ u8 gender;
|
||||
/* 0x14 */ u32 linkType;
|
||||
/* 0x18 */ u16 lp_field_18;
|
||||
/* 0x18 */ u16 id;
|
||||
/* 0x1A */ u16 language;
|
||||
};
|
||||
|
||||
|
|
|
|||
106
include/rom3.h
106
include/rom3.h
|
|
@ -10,64 +10,64 @@ struct HpAndStatus
|
|||
struct DisableStruct;
|
||||
|
||||
void sub_800B858(void);
|
||||
void setup_poochyena_battle();
|
||||
void SetUpBattleVarsAndBirchPoochyena();
|
||||
void sub_800B950(void);
|
||||
void sub_800B9A8(void);
|
||||
void sub_800BA78(void);
|
||||
void sub_800BD54(void);
|
||||
void sub_800BF28(void);
|
||||
void CreateTasksForSendRecvLinkBuffers(void);
|
||||
void PrepareBufferDataTransferLink(u8 a, u16, u8 *c);
|
||||
void sub_800C1A8(u8);
|
||||
void Task_HandleSendLinkBuffersData(u8);
|
||||
void sub_800C35C(void);
|
||||
void sub_800C47C(u8);
|
||||
void EmitGetAttributes(u8 a, u8 b, u8 c);
|
||||
void Emitcmd1(u8 a, u8 b, u8 c);
|
||||
void EmitLoadPokeSprite(u8 a);
|
||||
void EmitSendOutPoke(u8, u8, u8);
|
||||
void EmitReturnPokeToBall(u8 a, u8 b);
|
||||
void EmitTrainerThrow(u8 a);
|
||||
void EmitTrainerSlide(u8 a);
|
||||
void EmitTrainerSlideBack(u8 a);
|
||||
void Emitcmd10(u8 a);
|
||||
void Emitcmd11(u8 a);
|
||||
void Emitcmd12(u8 a);
|
||||
void EmitBallThrow(u8 a, u8 b);
|
||||
void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g);
|
||||
void EmitPrintString(u8 a, u16 b);
|
||||
void EmitPrintStringPlayerOnly(u8 a, u16 stringID);
|
||||
void Emitcmd18(u8 a, u8 b, u16 c);
|
||||
void Emitcmd20(u8 a, u8 b, u8 c, u8 *d);
|
||||
void EmitOpenBag(u8 a, u8 *b);
|
||||
void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
|
||||
void Emitcmd23(u8 a);
|
||||
void EmitHealthBarUpdate(u8 a, u16 b);
|
||||
void EmitExpBarUpdate(u8 a, u8 b, u16 c);
|
||||
void EmitStatusIconUpdate(u8 a, u32 b, u32 c);
|
||||
void EmitStatusAnimation(u8 a, u8 b, u32 c);
|
||||
void EmitStatusXor(u8 a, u8 b);
|
||||
void Emitcmd29(u8, u16, u8 *);
|
||||
void Emitcmd33(u8 a, u8 b, u16 c);
|
||||
void Emitcmd34(u8 a, u8 b, u8 *c);
|
||||
void Emitcmd35(u8 a, u16 b);
|
||||
void Emitcmd36(u8 a, u16 b);
|
||||
void Emitcmd37(u8 a);
|
||||
void Emitcmd38(u8 a, u8 b);
|
||||
void Emitcmd39(u8 a);
|
||||
void Emitcmd40(u8 a);
|
||||
void EmitHitAnimation(u8 a);
|
||||
void Emitcmd42(u8 a);
|
||||
void EmitEffectivenessSound(u8 a, u16 b);
|
||||
void Emitcmd44(u8 a, u16 b);
|
||||
void EmitFaintingCry(u8 a);
|
||||
void EmitIntroSlide(u8 a, u8 b);
|
||||
void EmitTrainerBallThrow(u8 a);
|
||||
void EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c); //0x30
|
||||
void Emitcmd49(u8 a);
|
||||
void Emitcmd50(u8 a);
|
||||
void EmitSpriteInvisibility(u8 a, u8 b);
|
||||
void EmitBattleAnimation(u8 a, u8 b, u16 c);
|
||||
void EmitLinkStandbyMsg(u8 a, u8 b);
|
||||
void EmitResetActionMoveSelection(u8 a, u8 b);
|
||||
void Emitcmd55(u8 a, u8 b);
|
||||
void Task_HandleCopyReceivedLinkBuffersData(u8);
|
||||
void BtlController_EmitGetMonData(u8 a, u8 b, u8 c);
|
||||
void BtlController_EmitGetRawMonData(u8 a, u8 b, u8 c);
|
||||
void BtlController_EmitLoadMonSprite(u8 a);
|
||||
void BtlController_EmitSwitchInAnim(u8, u8, u8);
|
||||
void BtlController_EmitReturnMonToBall(u8 a, u8 b);
|
||||
void BtlController_EmitDrawTrainerPic(u8 a);
|
||||
void BtlController_EmitTrainerSlide(u8 a);
|
||||
void BtlController_EmitTrainerSlideBack(u8 a);
|
||||
void BtlController_EmitFaintAnimation(u8 a);
|
||||
void BtlController_EmitPaletteFade(u8 a);
|
||||
void BtlController_EmitSuccessBallThrowAnim(u8 a);
|
||||
void BtlController_EmitBallThrowAnim(u8 a, u8 b);
|
||||
void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g);
|
||||
void BtlController_EmitPrintString(u8 a, u16 b);
|
||||
void BtlController_EmitPrintSelectionString(u8 a, u16 stringID);
|
||||
void BtlController_EmitChooseAction(u8 a, u8 b, u16 c);
|
||||
void BtlController_EmitChooseMove(u8 a, u8 b, u8 c, u8 *d);
|
||||
void BtlController_EmitChooseItem(u8 a, u8 *b);
|
||||
void BtlController_EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
|
||||
void BtlController_EmitCmd23(u8 a);
|
||||
void BtlController_EmitHealthBarUpdate(u8 a, u16 b);
|
||||
void BtlController_EmitExpUpdate(u8 a, u8 b, u16 c);
|
||||
void BtlController_EmitStatusIconUpdate(u8 a, u32 b, u32 c);
|
||||
void BtlController_EmitStatusAnimation(u8 a, u8 b, u32 c);
|
||||
void BtlController_EmitStatusXor(u8 a, u8 b);
|
||||
void BtlController_EmitDataTransfer(u8, u16, u8 *);
|
||||
void BtlController_EmitTwoReturnValues(u8 a, u8 b, u16 c);
|
||||
void BtlController_EmitChosenMonReturnValue(u8 a, u8 b, u8 *c);
|
||||
void BtlController_EmitOneReturnValue(u8 a, u16 b);
|
||||
void BtlController_EmitOneReturnValue_Duplicate(u8 a, u16 b);
|
||||
void BtlController_EmitCmd37(u8 a);
|
||||
void BtlController_EmitCmd38(u8 a, u8 b);
|
||||
void BtlController_EmitCmd39(u8 a);
|
||||
void BtlController_EmitCmd40(u8 a);
|
||||
void BtlController_EmitHitAnimation(u8 a);
|
||||
void BtlController_EmitCmd42(u8 a);
|
||||
void BtlController_EmitPlaySE(u8 a, u16 b);
|
||||
void BtlController_EmitPlayFanfareOrBGM(u8 a, u16 b);
|
||||
void BtlController_EmitFaintingCry(u8 a);
|
||||
void BtlController_EmitIntroSlide(u8 a, u8 b);
|
||||
void BtlController_EmitIntroTrainerBallThrow(u8 a);
|
||||
void BtlController_EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c); //0x30
|
||||
void BtlController_EmitHidePartyStatusSummary(u8 a);
|
||||
void BtlController_EmitEndBounceEffect(u8 a);
|
||||
void BtlController_EmitSpriteInvisibility(u8 a, u8 b);
|
||||
void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c);
|
||||
void BtlController_EmitLinkStandbyMsg(u8 a, u8 b);
|
||||
void BtlController_EmitResetActionMoveSelection(u8 a, u8 b);
|
||||
void BtlController_EmitCmd55(u8 a, u8 b);
|
||||
|
||||
#endif // GUARD_ROM3_H
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ SECTIONS {
|
|||
{
|
||||
/* .bss starts at 0x3000000 */
|
||||
INCLUDE "sym_bss.ld"
|
||||
*(.bss);
|
||||
|
||||
/* .bss.code starts at 0x3000F60 */
|
||||
src/libs/m4a.o(.bss.code);
|
||||
|
|
@ -28,6 +29,7 @@ SECTIONS {
|
|||
/* COMMON starts at 0x3001760 */
|
||||
INCLUDE "sym_common.ld"
|
||||
*libc.a:sbrkr.o(COMMON);
|
||||
*(COMMON);
|
||||
end = .;
|
||||
. = 0x8000;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u16 gBattle_BG1_X;
|
||||
extern u16 gBattle_BG1_Y;
|
||||
extern u16 gBattle_BG2_X;
|
||||
|
|
@ -233,7 +233,7 @@ static void sub_80DFC9C(u8 taskId)
|
|||
gTasks[taskId].data[2] = 0;
|
||||
if (r2 == 16)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker]].invisible = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = 1;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
|
@ -957,12 +957,12 @@ void sub_80E0918(u8 taskId)
|
|||
{
|
||||
u8 toBG2 = GetBattlerPosition_permutated(gBattleAnimAttacker) ^ 1 ? 1 : 0;
|
||||
MoveBattlerSpriteToBG(gBattleAnimAttacker, toBG2);
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker]].invisible = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = 0;
|
||||
|
||||
if (IsAnimBankSpriteVisible(gBattleAnimAttacker ^ 2))
|
||||
{
|
||||
MoveBattlerSpriteToBG(gBattleAnimAttacker ^ 2, toBG2 ^ 1);
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker ^ 2]].invisible = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].invisible = 0;
|
||||
}
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
|
|
@ -1015,7 +1015,7 @@ void sub_80E0A4C(u8 taskId)
|
|||
{
|
||||
if (IsAnimBankSpriteVisible(gBattleAnimAttacker ^ 2) == TRUE)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker ^ 2]].oam.priority--;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].oam.priority--;
|
||||
REG_BG1CNT_BITFIELD.priority = 1;
|
||||
var0 = 1;
|
||||
}
|
||||
|
|
@ -1101,7 +1101,7 @@ static void sub_80E0CD0(u8 taskId)
|
|||
|
||||
if (gTasks[taskIdCopy].data[6] == 1)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker ^ 2]].oam.priority++;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].oam.priority++;
|
||||
}
|
||||
|
||||
DestroyAnimVisualTask(taskIdCopy);
|
||||
|
|
@ -1149,7 +1149,7 @@ void sub_80E0E24(u8 taskId)
|
|||
{
|
||||
bank = GetBattlerAtPosition(identity);
|
||||
if (IsAnimBankSpriteVisible(bank))
|
||||
spriteId = gBankSpriteIds[bank];
|
||||
spriteId = gBattlerSpriteIds[bank];
|
||||
else
|
||||
spriteId = 0xFF;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u16 gBattle_BG1_X;
|
||||
extern u16 gBattle_BG2_X;
|
||||
extern u16 gUnknown_03000730[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
void sub_80DF5A0(struct Sprite *sprite);
|
||||
void sub_80DF760(struct Sprite *sprite);
|
||||
|
|
@ -286,8 +286,8 @@ void sub_80DF78C(struct Sprite *sprite)
|
|||
sprite->data[4] = 0;
|
||||
sprite->data[5] = 1;
|
||||
sprite->data[6] = gBattleAnimArgs[0];
|
||||
r5 = GetBattlerSpriteCoordAttr(gBankAttacker, 0);
|
||||
r0 = GetBattlerSpriteCoordAttr(gBankAttacker, 1);
|
||||
r5 = GetBattlerSpriteCoordAttr(gBattlerAttacker, 0);
|
||||
r0 = GetBattlerSpriteCoordAttr(gBattlerAttacker, 1);
|
||||
if (r5 > r0)
|
||||
sprite->data[7] = r5 / 2;
|
||||
else
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@
|
|||
#include "constants/battle.h"
|
||||
|
||||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u8 gBanksBySide[];
|
||||
extern u16 gBattle_BG1_X;
|
||||
extern u16 gBattle_BG1_Y;
|
||||
|
|
@ -817,8 +817,8 @@ void sub_80D97CC(struct Sprite *sprite)
|
|||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBankAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBankAttacker, 3);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
sprite->data[7] = gBattleAnimTarget;
|
||||
}
|
||||
|
|
@ -919,8 +919,8 @@ void sub_80D9A38(struct Sprite *sprite)
|
|||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBankAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBankAttacker, 3);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
bank = gBattleAnimTarget;
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
#include "constants/songs.h"
|
||||
|
||||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gUnknown_0202F7D2;
|
||||
|
|
@ -1301,7 +1301,7 @@ static void sub_80DF3D8(struct Sprite *sprite)
|
|||
static void sub_80DF49C(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = 1;
|
||||
sprite->data[5] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[0] = 128;
|
||||
sprite->data[1] = 10;
|
||||
sprite->data[2] = gBattleAnimArgs[0];
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ extern u16 gBattle_BG2_Y;
|
|||
extern u16 gBattle_BG3_X;
|
||||
extern u16 gBattle_BG3_Y;
|
||||
extern u16 gAnimMovePower;
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
static void AnimBonemerangProjectile(struct Sprite *sprite);
|
||||
static void AnimBonemerangProjectileStep(struct Sprite *sprite);
|
||||
|
|
@ -593,7 +593,7 @@ void sub_80E1864(u8 taskId)
|
|||
{
|
||||
if (IsAnimBankSpriteVisible(i))
|
||||
{
|
||||
task->data[task->data[13] + 9] = gBankSpriteIds[i];
|
||||
task->data[task->data[13] + 9] = gBattlerSpriteIds[i];
|
||||
task->data[13]++;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ extern u8 gBattleAnimAttacker;
|
|||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gAnimVisualTaskCount;
|
||||
extern u8 gBanksBySide[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
extern u16 gBattle_BG1_X;
|
||||
extern u16 gBattle_BG1_Y;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[];
|
|||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
void sub_80CD774(struct Sprite* sprite);
|
||||
void sub_80CD9C4(struct Sprite* sprite);
|
||||
|
|
@ -73,7 +73,7 @@ static void sub_80CD7CC(struct Sprite* sprite)
|
|||
sprite->data[0] = 6;
|
||||
sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? 2 : -2;
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[3] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
StoreSpriteCallbackInData(sprite, sub_80CD81C);
|
||||
sprite->callback = TranslateMonBGUntil;
|
||||
}
|
||||
|
|
@ -82,7 +82,7 @@ static void sub_80CD81C(struct Sprite* sprite)
|
|||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
sprite->data[3] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
PrepareBattlerSpriteForRotScale(sprite->data[3], 0);
|
||||
sprite->data[4] = (sprite->data[6] = GetBattlerSide(gBattleAnimAttacker)) ? 0x300 : 0xFFFFFD00;
|
||||
sprite->data[5] = 0;
|
||||
|
|
@ -103,7 +103,7 @@ static void sub_80CD8A8(struct Sprite* sprite)
|
|||
sprite->data[0] = 4;
|
||||
sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? -3 : 3;
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[3] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
StoreSpriteCallbackInData(sprite, sub_80CD9B8);
|
||||
sprite->callback = TranslateMonBGUntil;
|
||||
}
|
||||
|
|
@ -121,7 +121,7 @@ static void sub_80CD91C(struct Sprite* sprite)
|
|||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
sprite->data[3] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[6] = GetBattlerSide(gBattleAnimAttacker);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
{
|
||||
|
|
@ -162,7 +162,7 @@ static void sub_80CD9D4(struct Sprite* sprite)
|
|||
{
|
||||
case 0:
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[2] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[2] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[3] = GetBattlerSide(gBattleAnimAttacker);
|
||||
sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200;
|
||||
sprite->data[5] = 0;
|
||||
|
|
@ -196,7 +196,7 @@ void sub_80CDAC8(u8 taskId)
|
|||
{
|
||||
u8 a;
|
||||
|
||||
gTasks[taskId].data[0] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
gTasks[taskId].data[0] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
a = GetBattlerSide(gBattleAnimAttacker);
|
||||
gTasks[taskId].data[1] = a;
|
||||
gTasks[taskId].data[2] = 0;
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@
|
|||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
extern u8 gBattlersCount;
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u8 gBattleTerrain;
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gEffectBank;
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gEffectBattler;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gAnimVisualTaskCount;
|
||||
|
||||
extern const u8 gUnknown_08D20A14[];
|
||||
|
|
@ -702,7 +702,7 @@ void unref_sub_80E23A8(u8 taskId)
|
|||
|
||||
if (gTasks[taskId].data[2] & 0x1)
|
||||
{
|
||||
paletteIndex = IndexOfSpritePaletteTag(gSprites[gHealthboxIDs[attackerBattler]].template->paletteTag);
|
||||
paletteIndex = IndexOfSpritePaletteTag(gSprites[gHealthboxSpriteIds[attackerBattler]].template->paletteTag);
|
||||
selectedPalettes |= ((1 << paletteIndex) << 16);
|
||||
}
|
||||
|
||||
|
|
@ -781,7 +781,7 @@ static void sub_80E255C(struct Sprite *sprite)
|
|||
if (var0 < 2)
|
||||
{
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
gSprites[gBankSpriteIds[i]].coordOffsetEnabled = 0;
|
||||
gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0;
|
||||
}
|
||||
|
||||
DestroyAnimSprite(sprite);
|
||||
|
|
@ -790,20 +790,20 @@ static void sub_80E255C(struct Sprite *sprite)
|
|||
|
||||
static void sub_80E260C(void)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0;
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0;
|
||||
|
||||
if (gBattleAnimArgs[4] == 2)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleAnimArgs[4] == 0)
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
|
||||
else
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1206,7 +1206,7 @@ void sub_80E2F2C(u8 taskId)
|
|||
{
|
||||
if (IsAnimBankSpriteVisible(gBattleAnimAttacker ^ 2) == TRUE)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker ^ 2]].oam.priority -= 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].oam.priority -= 1;
|
||||
REG_BG1CNT_BITFIELD.priority = 1;
|
||||
var0 = 1;
|
||||
}
|
||||
|
|
@ -1275,7 +1275,7 @@ static void sub_80E3194(u8 taskId)
|
|||
sub_8078914(&subStruct);
|
||||
DmaFill32Defvars(3, 0, subStruct.field_4, 0x800);
|
||||
if (gTasks[taskId].data[6] == 1)
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker ^ 2]].oam.priority++;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].oam.priority++;
|
||||
|
||||
REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
|
||||
do {} while(0); // needed to match. perhaps part of a debug macro
|
||||
|
|
@ -1343,7 +1343,7 @@ static void sub_80E3338(u8 taskId)
|
|||
{
|
||||
if (IsAnimBankSpriteVisible(battler2) == TRUE)
|
||||
{
|
||||
gSprites[gBankSpriteIds[battler2]].oam.priority -= 1;
|
||||
gSprites[gBattlerSpriteIds[battler2]].oam.priority -= 1;
|
||||
REG_BG1CNT_BITFIELD.priority = 1;
|
||||
var0 = 1;
|
||||
}
|
||||
|
|
@ -1362,9 +1362,9 @@ static void sub_80E3338(u8 taskId)
|
|||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
|
||||
}
|
||||
|
||||
spriteId = sub_807A4A0(battler1, gBankSpriteIds[battler1], species);
|
||||
spriteId = sub_807A4A0(battler1, gBattlerSpriteIds[battler1], species);
|
||||
if (taskData[3])
|
||||
spriteId2 = sub_807A4A0(battler2, gBankSpriteIds[battler2], species);
|
||||
spriteId2 = sub_807A4A0(battler2, gBattlerSpriteIds[battler2], species);
|
||||
|
||||
sub_8078914(&subStruct);
|
||||
if (taskData[0] == 0)
|
||||
|
|
@ -1422,7 +1422,7 @@ static void sub_80E3338(u8 taskId)
|
|||
gTasks[taskId].data[2] = taskData[3];
|
||||
gTasks[taskId].data[3] = spriteId2;
|
||||
gTasks[taskId].data[6] = var0;
|
||||
gTasks[taskId].data[7] = gBankSpriteIds[battler2];
|
||||
gTasks[taskId].data[7] = gBattlerSpriteIds[battler2];
|
||||
gTasks[taskId].func = sub_80E3704;
|
||||
|
||||
if (taskData[0] == 0)
|
||||
|
|
@ -1648,7 +1648,7 @@ void sub_80E3BDC(u8 taskId)
|
|||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (i != gBattleAnimAttacker && IsAnimBankSpriteVisible(i))
|
||||
gSprites[gBankSpriteIds[i]].invisible = gBattleAnimArgs[0];
|
||||
gSprites[gBattlerSpriteIds[i]].invisible = gBattleAnimArgs[0];
|
||||
}
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
|
|
@ -1692,9 +1692,9 @@ void sub_80E3C4C(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5,
|
|||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
|
||||
}
|
||||
|
||||
spriteId = sub_807A4A0(battler1, gBankSpriteIds[battler1], species);
|
||||
spriteId = sub_807A4A0(battler1, gBattlerSpriteIds[battler1], species);
|
||||
if (arg4)
|
||||
spriteId2 = sub_807A4A0(battler2, gBankSpriteIds[battler2], species);
|
||||
spriteId2 = sub_807A4A0(battler2, gBattlerSpriteIds[battler2], species);
|
||||
|
||||
sub_8078914(&subStruct);
|
||||
LZDecompressVram(arg9, subStruct.field_4);
|
||||
|
|
@ -1884,8 +1884,8 @@ void sub_80E4200(u8 taskId)
|
|||
|
||||
void sub_80E4234(u8 taskId)
|
||||
{
|
||||
gBattleAnimAttacker = gBankTarget;
|
||||
gBattleAnimTarget = gEffectBank;
|
||||
gBattleAnimAttacker = gBattlerTarget;
|
||||
gBattleAnimTarget = gEffectBattler;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
|
|
@ -1901,14 +1901,14 @@ void sub_80E4264(u8 taskId)
|
|||
|
||||
void sub_80E42B0(u8 taskId)
|
||||
{
|
||||
gBattleAnimTarget = gBankTarget;
|
||||
gBattleAnimTarget = gBattlerTarget;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80E42D0(u8 taskId)
|
||||
{
|
||||
gBattleAnimAttacker = gBankAttacker;
|
||||
gBattleAnimTarget = gEffectBank;
|
||||
gBattleAnimAttacker = gBattlerAttacker;
|
||||
gBattleAnimTarget = gEffectBattler;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ extern u8 gBattleAnimAttacker;
|
|||
extern u8 gBattleAnimTarget;
|
||||
extern u16 gBattle_BG1_X;
|
||||
extern u16 gBattle_BG2_X;
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
void sub_80DB74C(struct Sprite *sprite);
|
||||
void sub_80DBA4C(struct Sprite *sprite);
|
||||
|
|
@ -524,11 +524,11 @@ static void sub_80DB92C(struct Sprite *sprite)
|
|||
u8 bank = bankCopy = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
|
||||
if (IsAnimBankSpriteVisible(bank))
|
||||
gSprites[gBankSpriteIds[bank]].invisible = 0;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = 0;
|
||||
|
||||
bank = bankCopy ^ 2;
|
||||
if (IsAnimBankSpriteVisible(bank))
|
||||
gSprites[gBankSpriteIds[bank]].invisible = 0;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = 0;
|
||||
}
|
||||
|
||||
sprite->invisible = 1;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ extern s16 gBattleAnimArgs[];
|
|||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
void sub_80D0FD8(struct Sprite* sprite);
|
||||
void sub_80D10B8(struct Sprite* sprite);
|
||||
|
|
@ -284,23 +284,23 @@ void sub_80D10B8(struct Sprite* sprite)
|
|||
{
|
||||
r9 = GetBattlerSpriteCoord(bankr7, r10) + gBattleAnimArgs[0];
|
||||
if (IsAnimBankSpriteVisible(bankr8 ^ 2))
|
||||
sprite->subpriority = gSprites[gBankSpriteIds[bankr8 ^ 2]].subpriority - 1;
|
||||
sprite->subpriority = gSprites[gBattlerSpriteIds[bankr8 ^ 2]].subpriority - 1;
|
||||
else
|
||||
sprite->subpriority = gSprites[gBankSpriteIds[bankr8]].subpriority - 1;
|
||||
sprite->subpriority = gSprites[gBattlerSpriteIds[bankr8]].subpriority - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
r9 = GetBattlerSpriteCoord(bankr7, r10) - gBattleAnimArgs[0];
|
||||
if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2))
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[bankr7]].pos1.x < gSprites[gBankSpriteIds[bankr7 ^ 2]].pos1.x)
|
||||
sprite->subpriority = gSprites[gBankSpriteIds[bankr7 ^ 2]].subpriority + 1;
|
||||
if (gSprites[gBattlerSpriteIds[bankr7]].pos1.x < gSprites[gBattlerSpriteIds[bankr7 ^ 2]].pos1.x)
|
||||
sprite->subpriority = gSprites[gBattlerSpriteIds[bankr7 ^ 2]].subpriority + 1;
|
||||
else
|
||||
sprite->subpriority = gSprites[gBankSpriteIds[bankr7]].subpriority - 1;
|
||||
sprite->subpriority = gSprites[gBattlerSpriteIds[bankr7]].subpriority - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->subpriority = gSprites[gBankSpriteIds[bankr7]].subpriority - 1;
|
||||
sprite->subpriority = gSprites[gBattlerSpriteIds[bankr7]].subpriority - 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ extern s16 gBattleAnimArgs[];
|
|||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gBattlersCount;
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
|
||||
void sub_80CE09C(struct Sprite* sprite);
|
||||
void sub_80CE17C(struct Sprite* sprite);
|
||||
|
|
@ -198,10 +198,10 @@ void unref_sub_80CE260(u8 taskId)
|
|||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == 0)
|
||||
sub_8043DB0(gHealthboxIDs[i]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[i]);
|
||||
|
||||
if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == 1)
|
||||
sub_8043DB0(gHealthboxIDs[i]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[i]);
|
||||
}
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
|
|
@ -212,7 +212,7 @@ void unref_sub_80CE2D4(u8 taskId)
|
|||
u8 i;
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
sub_8043DFC(gHealthboxIDs[i]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[i]);
|
||||
}
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[];
|
|||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
void sub_80CF3C4(struct Sprite* sprite);
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ void sub_80CF3C4(struct Sprite* sprite)
|
|||
u8 a;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
a = gBankSpriteIds[gBattleAnimTarget];
|
||||
a = gBattlerSpriteIds[gBattleAnimTarget];
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != 0)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
void sub_80D5CC0(struct Sprite *sprite);
|
||||
static void sub_80D5E4C(u8 taskId);
|
||||
|
|
@ -211,7 +211,7 @@ void sub_80D60B4(u8 taskId)
|
|||
}
|
||||
gTasks[taskId].data[0]++;
|
||||
|
||||
spriteId = gBankSpriteIds[gBattleAnimTarget];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimTarget];
|
||||
|
||||
if (!gTasks[taskId].data[4])
|
||||
unk = gUnknown_083D9794[gTasks[taskId].data[0] % 10];
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[];
|
|||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
|
||||
static void sub_80CF514(u8 taskId);
|
||||
|
||||
|
|
@ -17,13 +17,13 @@ static void sub_80CF514(u8 taskId);
|
|||
|
||||
void sub_80CF4D8(u8 taskId)
|
||||
{
|
||||
PrepareBattlerSpriteForRotScale(gBankSpriteIds[gBattleAnimAttacker], 0);
|
||||
PrepareBattlerSpriteForRotScale(gBattlerSpriteIds[gBattleAnimAttacker], 0);
|
||||
gTasks[taskId].func = sub_80CF514;
|
||||
}
|
||||
|
||||
void sub_80CF514(u8 taskId)
|
||||
{
|
||||
u8 a = gBankSpriteIds[gBattleAnimAttacker];
|
||||
u8 a = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
s16 b;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ extern u8 gActiveBattler;
|
|||
extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
|
||||
extern u16 gCurrentMove;
|
||||
extern int gBattleMoveDamage;
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gAbsentBattlerFlags;
|
||||
extern u8 gMoveResultFlags;
|
||||
extern u16 gDynamicBasePower;
|
||||
|
|
@ -318,17 +318,17 @@ void BattleAI_SetupAIData(void)
|
|||
|
||||
// clear AI stack.
|
||||
AI_STACK->size = 0;
|
||||
gBankAttacker = gActiveBattler;
|
||||
gBattlerAttacker = gActiveBattler;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
gBankTarget = Random() & 2; // just pick somebody to target.
|
||||
gBattlerTarget = Random() & 2; // just pick somebody to target.
|
||||
|
||||
if (gAbsentBattlerFlags & gBitTable[gBankTarget])
|
||||
gBankTarget ^= 2;
|
||||
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
|
||||
gBattlerTarget ^= 2;
|
||||
}
|
||||
else
|
||||
gBankTarget = gActiveBattler ^ 1;
|
||||
gBattlerTarget = gActiveBattler ^ 1;
|
||||
|
||||
// special AI flag cases.
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||
|
|
@ -407,13 +407,13 @@ void BattleAI_DoAIProcessing(void)
|
|||
break;
|
||||
case BATTLEAI_SETTING_UP:
|
||||
gAIScriptPtr = BattleAIs[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr.
|
||||
if (gBattleMons[gBankAttacker].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
|
||||
if (gBattleMons[gBattlerAttacker].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
|
||||
{
|
||||
AI_THINKING_STRUCT->moveConsidered = MOVE_NONE; // don't consider a move you have 0 PP for, idiot.
|
||||
}
|
||||
else
|
||||
{
|
||||
AI_THINKING_STRUCT->moveConsidered = gBattleMons[gBankAttacker].moves[AI_THINKING_STRUCT->movesetIndex];
|
||||
AI_THINKING_STRUCT->moveConsidered = gBattleMons[gBattlerAttacker].moves[AI_THINKING_STRUCT->movesetIndex];
|
||||
}
|
||||
AI_THINKING_STRUCT->aiState++;
|
||||
break;
|
||||
|
|
@ -446,9 +446,9 @@ void sub_810745C(void)
|
|||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == 0)
|
||||
if (AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == 0)
|
||||
{
|
||||
AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] = gLastUsedMove[gBankTarget];
|
||||
AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] = gLastUsedMove[gBattlerTarget];
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -521,9 +521,9 @@ static void BattleAICmd_if_hp_less_than(void)
|
|||
u16 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) < gAIScriptPtr[2])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
|
||||
|
|
@ -536,9 +536,9 @@ static void BattleAICmd_if_hp_more_than(void)
|
|||
u16 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) > gAIScriptPtr[2])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
|
||||
|
|
@ -551,9 +551,9 @@ static void BattleAICmd_if_hp_equal(void)
|
|||
u16 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) == gAIScriptPtr[2])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
|
||||
|
|
@ -566,9 +566,9 @@ static void BattleAICmd_if_hp_not_equal(void)
|
|||
u16 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) != gAIScriptPtr[2])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
|
||||
|
|
@ -582,9 +582,9 @@ static void BattleAICmd_if_status(void)
|
|||
u32 arg;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
arg = T1_READ_32(gAIScriptPtr + 2);
|
||||
|
||||
|
|
@ -600,9 +600,9 @@ static void BattleAICmd_if_not_status(void)
|
|||
u32 arg;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
arg = T1_READ_32(gAIScriptPtr + 2);
|
||||
|
||||
|
|
@ -618,9 +618,9 @@ static void BattleAICmd_if_status2(void)
|
|||
u32 arg;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
arg = T1_READ_32(gAIScriptPtr + 2);
|
||||
|
||||
|
|
@ -636,9 +636,9 @@ static void BattleAICmd_if_not_status2(void)
|
|||
u32 arg;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
arg = T1_READ_32(gAIScriptPtr + 2);
|
||||
|
||||
|
|
@ -654,9 +654,9 @@ static void BattleAICmd_if_status3(void)
|
|||
u32 arg;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
arg = T1_READ_32(gAIScriptPtr + 2);
|
||||
|
||||
|
|
@ -672,9 +672,9 @@ static void BattleAICmd_if_not_status3(void)
|
|||
u32 arg;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
arg = T1_READ_32(gAIScriptPtr + 2);
|
||||
|
||||
|
|
@ -690,9 +690,9 @@ static void BattleAICmd_if_status4(void)
|
|||
u32 arg1, arg2;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
arg1 = GetBattlerPosition(index) & 1;
|
||||
arg2 = T1_READ_32(gAIScriptPtr + 2);
|
||||
|
|
@ -709,9 +709,9 @@ static void BattleAICmd_if_not_status4(void)
|
|||
u32 arg1, arg2;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
arg1 = GetBattlerPosition(index) & 1;
|
||||
arg2 = T1_READ_32(gAIScriptPtr + 2);
|
||||
|
|
@ -884,8 +884,8 @@ static void BattleAICmd_if_user_can_damage(void)
|
|||
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (gBattleMons[gBankAttacker].moves[i] != 0
|
||||
&& gBattleMoves[gBattleMons[gBankAttacker].moves[i]].power != 0)
|
||||
if (gBattleMons[gBattlerAttacker].moves[i] != 0
|
||||
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
|
||||
break;
|
||||
}
|
||||
if (i == MAX_MON_MOVES)
|
||||
|
|
@ -900,8 +900,8 @@ static void BattleAICmd_if_user_cant_damage(void)
|
|||
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (gBattleMons[gBankAttacker].moves[i] != 0
|
||||
&& gBattleMoves[gBattleMons[gBankAttacker].moves[i]].power != 0)
|
||||
if (gBattleMons[gBattlerAttacker].moves[i] != 0
|
||||
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
|
||||
break;
|
||||
}
|
||||
if (i != MAX_MON_MOVES)
|
||||
|
|
@ -921,16 +921,16 @@ static void BattleAICmd_get_type(void)
|
|||
switch (gAIScriptPtr[1])
|
||||
{
|
||||
case 1: // player primary type
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBankAttacker].type1;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerAttacker].type1;
|
||||
break;
|
||||
case 0: // enemy primary type
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBankTarget].type1;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type1;
|
||||
break;
|
||||
case 3: // player secondary type
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBankAttacker].type2;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerAttacker].type2;
|
||||
break;
|
||||
case 2: // enemy secondary type
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBankTarget].type2;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type2;
|
||||
break;
|
||||
case 4: // type of move being pointed to
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].type;
|
||||
|
|
@ -968,18 +968,18 @@ static void BattleAICmd_is_most_powerful_move(void)
|
|||
{
|
||||
for (j = 0; sDiscouragedPowerfulMoveEffects[j] != 0xFFFF; j++)
|
||||
{ // _08108276
|
||||
if (gBattleMoves[gBattleMons[gBankAttacker].moves[i]].effect == sDiscouragedPowerfulMoveEffects[j])
|
||||
if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == sDiscouragedPowerfulMoveEffects[j])
|
||||
break;
|
||||
}
|
||||
|
||||
// _081082BA
|
||||
if (gBattleMons[gBankAttacker].moves[i]
|
||||
if (gBattleMons[gBattlerAttacker].moves[i]
|
||||
&& sDiscouragedPowerfulMoveEffects[j] == 0xFFFF
|
||||
&& gBattleMoves[gBattleMons[gBankAttacker].moves[i]].power > 1)
|
||||
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power > 1)
|
||||
{
|
||||
gCurrentMove = gBattleMons[gBankAttacker].moves[i];
|
||||
AI_CalcDmg(gBankAttacker, gBankTarget);
|
||||
TypeCalc(gCurrentMove, gBankAttacker, gBankTarget);
|
||||
gCurrentMove = gBattleMons[gBattlerAttacker].moves[i];
|
||||
AI_CalcDmg(gBattlerAttacker, gBattlerTarget);
|
||||
TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget);
|
||||
damages[i] = (gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[i]) / 100;
|
||||
|
||||
if (damages[i] == 0) // moves always do at least 1 damage.
|
||||
|
|
@ -1085,7 +1085,7 @@ _08108276:\n\
|
|||
movs r3, 0\n\
|
||||
ldr r5, _08108348 @ =gBattleMons\n\
|
||||
lsls r4, r6, 1\n\
|
||||
ldr r7, _0810834C @ =gBankAttacker\n\
|
||||
ldr r7, _0810834C @ =gBattlerAttacker\n\
|
||||
lsls r1, r6, 2\n\
|
||||
mov r8, r1\n\
|
||||
adds r2, r6, 0x1\n\
|
||||
|
|
@ -1146,7 +1146,7 @@ _081082BA:\n\
|
|||
ldr r5, _08108350 @ =gCurrentMove\n\
|
||||
strh r2, [r5]\n\
|
||||
ldrb r0, [r7]\n\
|
||||
ldr r4, _08108354 @ =gBankTarget\n\
|
||||
ldr r4, _08108354 @ =gBattlerTarget\n\
|
||||
ldrb r1, [r4]\n\
|
||||
bl AI_CalcDmg\n\
|
||||
ldrh r0, [r5]\n\
|
||||
|
|
@ -1180,9 +1180,9 @@ _0810833C: .4byte 0xfffff81c\n\
|
|||
_08108340: .4byte gMoveResultFlags\n\
|
||||
_08108344: .4byte gCritMultiplier\n\
|
||||
_08108348: .4byte gBattleMons\n\
|
||||
_0810834C: .4byte gBankAttacker\n\
|
||||
_0810834C: .4byte gBattlerAttacker\n\
|
||||
_08108350: .4byte gCurrentMove\n\
|
||||
_08108354: .4byte gBankTarget\n\
|
||||
_08108354: .4byte gBattlerTarget\n\
|
||||
_08108358: .4byte gBattleMoveDamage\n\
|
||||
_0810835C:\n\
|
||||
mov r1, sp\n\
|
||||
|
|
@ -1256,9 +1256,9 @@ _081083D0: .4byte gAIScriptPtr\n\
|
|||
static void BattleAICmd_get_move(void)
|
||||
{
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBankAttacker];
|
||||
AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerAttacker];
|
||||
else
|
||||
AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBankTarget];
|
||||
AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerTarget];
|
||||
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
|
|
@ -1281,7 +1281,7 @@ static void BattleAICmd_if_arg_not_equal(void)
|
|||
|
||||
static void BattleAICmd_if_would_go_first(void)
|
||||
{
|
||||
if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, TRUE) == gAIScriptPtr[1])
|
||||
if (GetWhoStrikesFirst(gBattlerAttacker, gBattlerTarget, TRUE) == gAIScriptPtr[1])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
|
||||
else
|
||||
gAIScriptPtr += 6;
|
||||
|
|
@ -1289,7 +1289,7 @@ static void BattleAICmd_if_would_go_first(void)
|
|||
|
||||
static void BattleAICmd_if_would_not_go_first(void)
|
||||
{
|
||||
if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, TRUE) != gAIScriptPtr[1])
|
||||
if (GetWhoStrikesFirst(gBattlerAttacker, gBattlerTarget, TRUE) != gAIScriptPtr[1])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
|
||||
else
|
||||
gAIScriptPtr += 6;
|
||||
|
|
@ -1313,9 +1313,9 @@ static void BattleAICmd_count_alive_pokemon(void)
|
|||
AI_THINKING_STRUCT->funcResult = 0;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
if (GetBattlerSide(index) == 0)
|
||||
party = gPlayerParty;
|
||||
|
|
@ -1366,9 +1366,9 @@ static void BattleAICmd_get_ability(void)
|
|||
u8 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
if (GetBattlerSide(index) == TARGET)
|
||||
{
|
||||
|
|
@ -1437,11 +1437,11 @@ static void BattleAICmd_get_highest_possible_damage(void)
|
|||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
gBattleMoveDamage = 40;
|
||||
gCurrentMove = gBattleMons[gBankAttacker].moves[i];
|
||||
gCurrentMove = gBattleMons[gBattlerAttacker].moves[i];
|
||||
|
||||
if (gCurrentMove)
|
||||
{
|
||||
TypeCalc(gCurrentMove, gBankAttacker, gBankTarget);
|
||||
TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget);
|
||||
|
||||
// reduce by 1/3.
|
||||
if (gBattleMoveDamage == 120)
|
||||
|
|
@ -1476,7 +1476,7 @@ static void BattleAICmd_if_damage_bonus(void)
|
|||
gBattleMoveDamage = 40;
|
||||
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
|
||||
|
||||
TypeCalc(gCurrentMove, gBankAttacker, gBankTarget);
|
||||
TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget);
|
||||
|
||||
if (gBattleMoveDamage == 120)
|
||||
gBattleMoveDamage = 80;
|
||||
|
|
@ -1611,9 +1611,9 @@ static void BattleAICmd_if_stat_level_less_than(void)
|
|||
u32 party;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
party = gBankAttacker;
|
||||
party = gBattlerAttacker;
|
||||
else
|
||||
party = gBankTarget;
|
||||
party = gBattlerTarget;
|
||||
|
||||
if (gBattleMons[party].statStages[gAIScriptPtr[2]] < gAIScriptPtr[3])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
|
||||
|
|
@ -1626,9 +1626,9 @@ static void BattleAICmd_if_stat_level_more_than(void)
|
|||
u32 party;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
party = gBankAttacker;
|
||||
party = gBattlerAttacker;
|
||||
else
|
||||
party = gBankTarget;
|
||||
party = gBattlerTarget;
|
||||
|
||||
if (gBattleMons[party].statStages[gAIScriptPtr[2]] > gAIScriptPtr[3])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
|
||||
|
|
@ -1641,9 +1641,9 @@ static void BattleAICmd_if_stat_level_equal(void)
|
|||
u32 party;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
party = gBankAttacker;
|
||||
party = gBattlerAttacker;
|
||||
else
|
||||
party = gBankTarget;
|
||||
party = gBattlerTarget;
|
||||
|
||||
if (gBattleMons[party].statStages[gAIScriptPtr[2]] == gAIScriptPtr[3])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
|
||||
|
|
@ -1656,9 +1656,9 @@ static void BattleAICmd_if_stat_level_not_equal(void)
|
|||
u32 party;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
party = gBankAttacker;
|
||||
party = gBattlerAttacker;
|
||||
else
|
||||
party = gBankTarget;
|
||||
party = gBattlerTarget;
|
||||
|
||||
if (gBattleMons[party].statStages[gAIScriptPtr[2]] != gAIScriptPtr[3])
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
|
||||
|
|
@ -1680,8 +1680,8 @@ static void BattleAICmd_if_can_faint(void)
|
|||
gMoveResultFlags = 0;
|
||||
gCritMultiplier = 1;
|
||||
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
|
||||
AI_CalcDmg(gBankAttacker, gBankTarget);
|
||||
TypeCalc(gCurrentMove, gBankAttacker, gBankTarget);
|
||||
AI_CalcDmg(gBattlerAttacker, gBattlerTarget);
|
||||
TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget);
|
||||
|
||||
gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
|
||||
|
||||
|
|
@ -1689,7 +1689,7 @@ static void BattleAICmd_if_can_faint(void)
|
|||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
|
||||
if (gBattleMons[gBankTarget].hp <= gBattleMoveDamage)
|
||||
if (gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
|
||||
else
|
||||
gAIScriptPtr += 5;
|
||||
|
|
@ -1709,14 +1709,14 @@ static void BattleAICmd_if_cant_faint(void)
|
|||
gMoveResultFlags = 0;
|
||||
gCritMultiplier = 1;
|
||||
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
|
||||
AI_CalcDmg(gBankAttacker, gBankTarget);
|
||||
TypeCalc(gCurrentMove, gBankAttacker, gBankTarget);
|
||||
AI_CalcDmg(gBattlerAttacker, gBattlerTarget);
|
||||
TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget);
|
||||
|
||||
gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
|
||||
|
||||
// this macro is missing the damage 0 = 1 assumption.
|
||||
|
||||
if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
|
||||
if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
|
||||
else
|
||||
gAIScriptPtr += 5;
|
||||
|
|
@ -1733,7 +1733,7 @@ static void BattleAICmd_if_has_move(void)
|
|||
case 3:
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (gBattleMons[gBankAttacker].moves[i] == *temp_ptr)
|
||||
if (gBattleMons[gBattlerAttacker].moves[i] == *temp_ptr)
|
||||
break;
|
||||
}
|
||||
if (i == MAX_MON_MOVES)
|
||||
|
|
@ -1745,7 +1745,7 @@ static void BattleAICmd_if_has_move(void)
|
|||
case 2:
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == *temp_ptr)
|
||||
if (AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == *temp_ptr)
|
||||
break;
|
||||
}
|
||||
if (i == 8)
|
||||
|
|
@ -1767,7 +1767,7 @@ static void BattleAICmd_if_dont_have_move(void)
|
|||
case 3:
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (gBattleMons[gBankAttacker].moves[i] == *temp_ptr)
|
||||
if (gBattleMons[gBattlerAttacker].moves[i] == *temp_ptr)
|
||||
break;
|
||||
}
|
||||
if (i != MAX_MON_MOVES)
|
||||
|
|
@ -1779,7 +1779,7 @@ static void BattleAICmd_if_dont_have_move(void)
|
|||
case 2:
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == *temp_ptr)
|
||||
if (AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == *temp_ptr)
|
||||
break;
|
||||
}
|
||||
if (i != 8)
|
||||
|
|
@ -1800,7 +1800,7 @@ static void BattleAICmd_if_move_effect(void)
|
|||
case 3:
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (gBattleMons[gBankAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBankAttacker].moves[i]].effect == gAIScriptPtr[2])
|
||||
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == gAIScriptPtr[2])
|
||||
break;
|
||||
}
|
||||
if (i != MAX_MON_MOVES)
|
||||
|
|
@ -1812,7 +1812,7 @@ static void BattleAICmd_if_move_effect(void)
|
|||
case 2:
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (gBattleMons[gBankAttacker].moves[i] != 0 && gBattleMoves[AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
|
||||
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == gAIScriptPtr[2])
|
||||
break;
|
||||
}
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
|
||||
|
|
@ -1829,7 +1829,7 @@ static void BattleAICmd_if_not_move_effect(void)
|
|||
case 3:
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (gBattleMons[gBankAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBankAttacker].moves[i]].effect == gAIScriptPtr[2])
|
||||
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == gAIScriptPtr[2])
|
||||
break;
|
||||
}
|
||||
if (i != MAX_MON_MOVES)
|
||||
|
|
@ -1841,7 +1841,7 @@ static void BattleAICmd_if_not_move_effect(void)
|
|||
case 2:
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] != 0 && gBattleMoves[AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
|
||||
if (AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] != 0 && gBattleMoves[AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == gAIScriptPtr[2])
|
||||
break;
|
||||
}
|
||||
gAIScriptPtr += 7;
|
||||
|
|
@ -1853,9 +1853,9 @@ static void BattleAICmd_if_last_move_did_damage(void)
|
|||
u8 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
if (gAIScriptPtr[2] == 0)
|
||||
{
|
||||
|
|
@ -1932,9 +1932,9 @@ static void BattleAICmd_get_hold_effect(void)
|
|||
u16 side;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
if (GetBattlerSide(index) == 0)
|
||||
{
|
||||
|
|
@ -1952,9 +1952,9 @@ static void BattleAICmd_get_gender(void)
|
|||
u8 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
AI_THINKING_STRUCT->funcResult = GetGenderFromSpeciesAndPersonality(gBattleMons[index].species, gBattleMons[index].personality);
|
||||
|
||||
|
|
@ -1966,9 +1966,9 @@ static void BattleAICmd_is_first_turn(void)
|
|||
u8 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].isFirstTurn;
|
||||
|
||||
|
|
@ -1980,9 +1980,9 @@ static void BattleAICmd_get_stockpile_count(void)
|
|||
u8 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].stockpileCounter;
|
||||
|
||||
|
|
@ -2001,9 +2001,9 @@ static void BattleAICmd_get_used_item(void)
|
|||
u8 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
AI_THINKING_STRUCT->funcResult = AI_ARRAY_160CC(index);
|
||||
|
||||
|
|
@ -2036,9 +2036,9 @@ static void BattleAICmd_get_protect_count(void)
|
|||
u8 index;
|
||||
|
||||
if (gAIScriptPtr[1] == USER)
|
||||
index = gBankAttacker;
|
||||
index = gBattlerAttacker;
|
||||
else
|
||||
index = gBankTarget;
|
||||
index = gBattlerTarget;
|
||||
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].protectUses;
|
||||
|
||||
|
|
@ -2091,7 +2091,7 @@ static void BattleAICmd_if_level_compare(void)
|
|||
switch (gAIScriptPtr[1])
|
||||
{
|
||||
case 0: // greater than
|
||||
if (gBattleMons[gBankAttacker].level > gBattleMons[gBankTarget].level)
|
||||
if (gBattleMons[gBattlerAttacker].level > gBattleMons[gBattlerTarget].level)
|
||||
{
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
|
||||
return;
|
||||
|
|
@ -2099,7 +2099,7 @@ static void BattleAICmd_if_level_compare(void)
|
|||
gAIScriptPtr += 6;
|
||||
return;
|
||||
case 1: // less than
|
||||
if (gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
|
||||
if (gBattleMons[gBattlerAttacker].level < gBattleMons[gBattlerTarget].level)
|
||||
{
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
|
||||
return;
|
||||
|
|
@ -2107,7 +2107,7 @@ static void BattleAICmd_if_level_compare(void)
|
|||
gAIScriptPtr += 6;
|
||||
return;
|
||||
case 2: // equal
|
||||
if (gBattleMons[gBankAttacker].level == gBattleMons[gBankTarget].level)
|
||||
if (gBattleMons[gBattlerAttacker].level == gBattleMons[gBattlerTarget].level)
|
||||
{
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
|
||||
return;
|
||||
|
|
@ -2119,7 +2119,7 @@ static void BattleAICmd_if_level_compare(void)
|
|||
|
||||
static void BattleAICmd_if_taunted(void)
|
||||
{
|
||||
if (gDisableStructs[gBankTarget].tauntTimer1 != 0)
|
||||
if (gDisableStructs[gBattlerTarget].tauntTimer1 != 0)
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
|
||||
else
|
||||
gAIScriptPtr += 5;
|
||||
|
|
@ -2127,7 +2127,7 @@ static void BattleAICmd_if_taunted(void)
|
|||
|
||||
static void BattleAICmd_if_not_taunted(void)
|
||||
{
|
||||
if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
|
||||
if (gDisableStructs[gBattlerTarget].tauntTimer1 == 0)
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
|
||||
else
|
||||
gAIScriptPtr += 5;
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ static bool8 ShouldSwitchIfPerishSong(void)
|
|||
&& gDisableStructs[gActiveBattler].perishSongTimer1 == 0)
|
||||
{
|
||||
ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6; // gBattleStruct->AI_monToSwitchIntoId[GetBattlerPosition(gActiveBattler)] = 6;
|
||||
Emitcmd33(1, 2, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 2, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -97,7 +97,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
|||
{
|
||||
// we found a mon
|
||||
ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i; // gBattleStruct->AI_monToSwitchIntoId[GetBattlerPosition(gActiveBattler)] = i;
|
||||
Emitcmd33(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -137,7 +137,7 @@ _08036070:\n\
|
|||
movs r0, 0x1\n\
|
||||
movs r1, 0x2\n\
|
||||
movs r2, 0\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
movs r0, 0x1\n\
|
||||
b _080361CA\n\
|
||||
.align 2, 0\n\
|
||||
|
|
@ -376,7 +376,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
|||
{
|
||||
// we found a mon
|
||||
ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i;
|
||||
Emitcmd33(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -396,13 +396,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
|
|||
if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1)
|
||||
{
|
||||
ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
|
||||
Emitcmd33(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
|
||||
{
|
||||
ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
|
||||
Emitcmd33(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -413,7 +413,7 @@ static bool8 ShouldSwitchIfNaturalCure(void)
|
|||
if (Random() & 1)
|
||||
{
|
||||
ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
|
||||
Emitcmd33(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -557,7 +557,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
|||
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0)
|
||||
{
|
||||
ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i;
|
||||
Emitcmd33(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -704,7 +704,7 @@ void AI_TrySwitchOrUseItem(void)
|
|||
}
|
||||
}
|
||||
|
||||
Emitcmd33(1, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8);
|
||||
}
|
||||
|
||||
static void ModulateByTypeEffectiveness(u8 attackType, u8 defenseType1, u8 defenseType2, u8 *var)
|
||||
|
|
@ -996,7 +996,7 @@ static bool8 ShouldUseItem(void)
|
|||
|
||||
if (shouldUse)
|
||||
{
|
||||
Emitcmd33(1, B_ACTION_USE_ITEM, 0);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
|
||||
ewram160D4(gActiveBattler) = item;
|
||||
AI_BATTLE_HISTORY->trainerItems[i] = 0;
|
||||
return shouldUse;
|
||||
|
|
|
|||
|
|
@ -1283,9 +1283,9 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
|
|||
};
|
||||
|
||||
extern u16 gBattlerPartyIndexes[4];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gBattlerTarget;
|
||||
|
||||
// sBattleAnimScriptPtr is a pointer to the next set of battle script commands.
|
||||
EWRAM_DATA const u8 *sBattleAnimScriptPtr = NULL;
|
||||
|
|
@ -1464,8 +1464,8 @@ void ClearBattleAnimationVars(void)
|
|||
|
||||
void DoMoveAnim(u16 move)
|
||||
{
|
||||
gBattleAnimAttacker = gBankAttacker;
|
||||
gBattleAnimTarget = gBankTarget;
|
||||
gBattleAnimAttacker = gBattlerAttacker;
|
||||
gBattleAnimTarget = gBattlerTarget;
|
||||
LaunchBattleAnimation(gBattleAnims_Moves, move, TRUE);
|
||||
}
|
||||
|
||||
|
|
@ -1844,7 +1844,7 @@ static void ScriptCmd_monbg(void)
|
|||
toBG_2 = 1;
|
||||
|
||||
MoveBattlerSpriteToBG(bank, toBG_2);
|
||||
spriteId = gBankSpriteIds[bank];
|
||||
spriteId = gBattlerSpriteIds[bank];
|
||||
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
|
||||
|
|
@ -1875,7 +1875,7 @@ static void ScriptCmd_monbg(void)
|
|||
else
|
||||
toBG_2 = 1;
|
||||
MoveBattlerSpriteToBG(bank, toBG_2);
|
||||
spriteId = gBankSpriteIds[bank];
|
||||
spriteId = gBattlerSpriteIds[bank];
|
||||
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
|
||||
|
|
@ -1912,7 +1912,7 @@ bool8 IsAnimBankSpriteVisible(u8 bank)
|
|||
return FALSE;
|
||||
if (IsContest())
|
||||
return TRUE; // this line wont ever be reached.
|
||||
if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gBankSpriteIds[bank]].invisible)
|
||||
if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gBattlerSpriteIds[bank]].invisible)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
|
|
@ -1938,12 +1938,12 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
|
|||
REG_BG1CNT_BITFIELD.screenSize = 1;
|
||||
REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
|
||||
|
||||
spriteId = gBankSpriteIds[bank];
|
||||
spriteId = gBattlerSpriteIds[bank];
|
||||
gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
|
||||
if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348[0]) != 0)
|
||||
gBattle_BG1_X--;
|
||||
gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
|
||||
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
|
||||
|
||||
REG_BG1HOFS = gBattle_BG1_X;
|
||||
REG_BG1VOFS = gBattle_BG1_Y;
|
||||
|
|
@ -1972,10 +1972,10 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
|
|||
REG_BG2CNT_BITFIELD.screenSize = 1;
|
||||
REG_BG2CNT_BITFIELD.areaOverflowMode = 0;
|
||||
|
||||
spriteId = gBankSpriteIds[bank];
|
||||
spriteId = gBattlerSpriteIds[bank];
|
||||
gBattle_BG2_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
|
||||
gBattle_BG2_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
|
||||
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
|
||||
|
||||
REG_BG2HOFS = gBattle_BG2_X;
|
||||
REG_BG2VOFS = gBattle_BG2_Y;
|
||||
|
|
@ -2106,9 +2106,9 @@ static void ScriptCmd_clearmonbg(void)
|
|||
bank = gBattleAnimTarget;
|
||||
|
||||
if (gMonAnimTaskIdArray[0] != 0xFF)
|
||||
gSprites[gBankSpriteIds[bank]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = FALSE;
|
||||
if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF)
|
||||
gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[bank ^ 2]].invisible = FALSE;
|
||||
else
|
||||
animBankId = 0;
|
||||
|
||||
|
|
@ -2177,7 +2177,7 @@ static void ScriptCmd_monbg_22(void)
|
|||
else
|
||||
r1 = 1;
|
||||
MoveBattlerSpriteToBG(bank, r1);
|
||||
gSprites[gBankSpriteIds[bank]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = FALSE;
|
||||
}
|
||||
|
||||
bank ^= 2;
|
||||
|
|
@ -2190,7 +2190,7 @@ static void ScriptCmd_monbg_22(void)
|
|||
else
|
||||
r1 = 1;
|
||||
MoveBattlerSpriteToBG(bank, r1);
|
||||
gSprites[gBankSpriteIds[bank]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = FALSE;
|
||||
}
|
||||
sBattleAnimScriptPtr++;
|
||||
}
|
||||
|
|
@ -2215,9 +2215,9 @@ static void ScriptCmd_clearmonbg_23(void)
|
|||
bank = gBattleAnimTarget;
|
||||
|
||||
if (IsAnimBankSpriteVisible(bank))
|
||||
gSprites[gBankSpriteIds[bank]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = FALSE;
|
||||
if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ 2))
|
||||
gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[bank ^ 2]].invisible = FALSE;
|
||||
else
|
||||
animBankId = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ extern const u8 gUnknown_08D2E014[];
|
|||
extern const u8 gUnknown_08D2E170[];
|
||||
extern const u16 gUnknown_08D2E150[];
|
||||
extern u8 gBattleMonForms[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
|
||||
extern u8 sub_8046234(s16 x, s16 y, u8 a3);
|
||||
|
|
@ -2327,11 +2327,11 @@ void sub_812D7E8(u8 taskId)
|
|||
|
||||
ptr = EWRAM_19348;
|
||||
if (IsSpeciesNotUnown(ptr[1]))
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
|
||||
else
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7BEC;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7BEC;
|
||||
|
||||
StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gBattleAnimAttacker]], 0);
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
|
|
@ -2371,7 +2371,7 @@ void sub_812D7E8(u8 taskId)
|
|||
|
||||
void c3_80DFBE4(u8 taskId)
|
||||
{
|
||||
gBattleAnimArgs[7] = gSprites[gBankSpriteIds[gBattleAnimAttacker]].invisible;
|
||||
gBattleAnimArgs[7] = gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
|
|
@ -3673,7 +3673,7 @@ static void sub_812FAF8(u8 taskId)
|
|||
|
||||
void sub_812FC68(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[15] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
gTasks[taskId].data[15] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
gTasks[taskId].data[14] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[13] = gBattleAnimArgs[6];
|
||||
|
|
@ -4675,8 +4675,8 @@ void sub_81312E4(u8 taskId)
|
|||
refresh_graphics_maybe(gBattleAnimAttacker, 0, spriteId);
|
||||
if (IsContest())
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
|
||||
StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gBattleAnimAttacker]], 0);
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
|
||||
}
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
|
|
@ -5801,7 +5801,7 @@ void AnimTask_SnatchPartnerMove(u8 taskId)
|
|||
gTasks[taskId].data[15]++;
|
||||
break;
|
||||
case 1:
|
||||
spriteId = gBankSpriteIds[gBattleAnimAttacker];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
gSprites[spriteId].pos2.x += gTasks[taskId].data[0];
|
||||
if (gTasks[taskId].data[0] > 0)
|
||||
{
|
||||
|
|
@ -5819,7 +5819,7 @@ void AnimTask_SnatchPartnerMove(u8 taskId)
|
|||
gTasks[taskId].data[15]++;
|
||||
break;
|
||||
case 3:
|
||||
spriteId = gBankSpriteIds[gBattleAnimAttacker];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
gSprites[spriteId].pos2.x += gTasks[taskId].data[0];
|
||||
if (gTasks[taskId].data[0] < 0)
|
||||
{
|
||||
|
|
@ -5834,7 +5834,7 @@ void AnimTask_SnatchPartnerMove(u8 taskId)
|
|||
break;
|
||||
case 4:
|
||||
default:
|
||||
spriteId = gBankSpriteIds[gBattleAnimAttacker];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
extern s16 gBattleAnimArgs[8];
|
||||
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern s32 gAnimMoveDmg;
|
||||
extern u16 gAnimMovePower;
|
||||
extern u8 gBattleAnimAttacker;
|
||||
|
|
@ -199,11 +199,11 @@ void AnimTask_ShakeMon2(u8 taskId)
|
|||
if (IsAnimBankSpriteVisible(side) == FALSE)
|
||||
destroy = TRUE;
|
||||
|
||||
sprite = gBankSpriteIds[side];
|
||||
sprite = gBattlerSpriteIds[side];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite = gBankSpriteIds[gBattleAnimAttacker];
|
||||
sprite = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
}
|
||||
|
||||
if (destroy)
|
||||
|
|
@ -447,7 +447,7 @@ static void DoHorizontalLunge(struct Sprite *sprite)
|
|||
|
||||
sprite->data[0] = gBattleAnimArgs[0];
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[3] = gBankSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[4] = gBattleAnimArgs[0];
|
||||
StoreSpriteCallbackInData(sprite, ReverseHorizontalLungeDirection);
|
||||
sprite->callback = TranslateMonBGUntil;
|
||||
|
|
@ -498,9 +498,9 @@ static void SlideMonToOriginalPos(struct Sprite *sprite)
|
|||
int something;
|
||||
int monSpriteId;
|
||||
if (!gBattleAnimArgs[0])
|
||||
monSpriteId = gBankSpriteIds[gBattleAnimAttacker];
|
||||
monSpriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
else
|
||||
monSpriteId = gBankSpriteIds[gBattleAnimTarget];
|
||||
monSpriteId = gBattlerSpriteIds[gBattleAnimTarget];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gSprites[monSpriteId].pos1.x + gSprites[monSpriteId].pos2.x;
|
||||
|
|
@ -571,7 +571,7 @@ static void SlideMonToOffset(struct Sprite *sprite)
|
|||
else
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
monSpriteId = gBankSpriteIds[battler];
|
||||
monSpriteId = gBattlerSpriteIds[battler];
|
||||
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
|
|
@ -608,7 +608,7 @@ static void sub_80A8818(struct Sprite *sprite)
|
|||
{
|
||||
v1 = gBattleAnimTarget;
|
||||
}
|
||||
spriteId = gBankSpriteIds[v1];
|
||||
spriteId = gBattlerSpriteIds[v1];
|
||||
if (GetBattlerSide(v1))
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
|
|
@ -726,7 +726,7 @@ void sub_80A8A80(u8 taskId)
|
|||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
spriteId = gBankSpriteIds[gBattleAnimAttacker ^ 2];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker ^ 2];
|
||||
break;
|
||||
case 3:
|
||||
if (!IsAnimBankSpriteVisible(gBattleAnimTarget ^ 2))
|
||||
|
|
@ -734,7 +734,7 @@ void sub_80A8A80(u8 taskId)
|
|||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
spriteId = gBankSpriteIds[gBattleAnimTarget ^ 2];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimTarget ^ 2];
|
||||
break;
|
||||
default:
|
||||
DestroyAnimVisualTask(taskId);
|
||||
|
|
|
|||
|
|
@ -26,12 +26,12 @@ extern u16 gUnknown_03005F14;
|
|||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gBattleAnimAttacker;
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u16 gLastUsedItem;
|
||||
extern u8 gDoingBattleAnim;
|
||||
extern u8 gEffectBank;
|
||||
extern u8 gEffectBattler;
|
||||
|
||||
extern const u8 gUnknown_08D2EE48[];
|
||||
extern const u8 gUnknown_08D2EDFC[];
|
||||
|
|
@ -380,7 +380,7 @@ void unref_sub_813F0F4(u8 taskId)
|
|||
REG_BG1CNT_BITFIELD.areaOverflowMode = 1;
|
||||
REG_BG1CNT_BITFIELD.charBaseBlock = 1;
|
||||
|
||||
healthBoxSpriteId = gHealthboxIDs[battler];
|
||||
healthBoxSpriteId = gHealthboxSpriteIds[battler];
|
||||
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
|
||||
spriteId2 = gSprites[healthBoxSpriteId].data[5];
|
||||
spriteId3 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
|
||||
|
|
@ -460,9 +460,9 @@ static void sub_813F300(u8 taskId)
|
|||
sub_8078914(&subStruct);
|
||||
DmaFill32Defvars(3, 0, subStruct.field_4, 0x800);
|
||||
REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
|
||||
spriteId1 = gSprites[gHealthboxIDs[battler]].oam.affineParam;
|
||||
spriteId2 = gSprites[gHealthboxIDs[battler]].data[5];
|
||||
gSprites[gHealthboxIDs[battler]].oam.priority = 1;
|
||||
spriteId1 = gSprites[gHealthboxSpriteIds[battler]].oam.affineParam;
|
||||
spriteId2 = gSprites[gHealthboxSpriteIds[battler]].data[5];
|
||||
gSprites[gHealthboxSpriteIds[battler]].oam.priority = 1;
|
||||
gSprites[spriteId1].oam.priority = 1;
|
||||
gSprites[spriteId2].oam.priority = 1;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
|
|
@ -479,7 +479,7 @@ void sub_813F4EC(u8 taskId)
|
|||
u8 paletteNum1, paletteNum2;
|
||||
u16 offset1, offset2;
|
||||
|
||||
healthBoxSpriteId = gHealthboxIDs[gBattleAnimAttacker];
|
||||
healthBoxSpriteId = gHealthboxSpriteIds[gBattleAnimAttacker];
|
||||
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
|
||||
spriteId2 = gSprites[healthBoxSpriteId].data[5];
|
||||
paletteNum1 = AllocSpritePalette(0xD709);
|
||||
|
|
@ -502,7 +502,7 @@ void sub_813F5E8(u8 taskId)
|
|||
u8 spriteId1, spriteId2;
|
||||
u8 paletteIndex1, paletteIndex2;
|
||||
|
||||
healthBoxSpriteId = gHealthboxIDs[gBattleAnimAttacker];
|
||||
healthBoxSpriteId = gHealthboxSpriteIds[gBattleAnimAttacker];
|
||||
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
|
||||
spriteId2 = gSprites[healthBoxSpriteId].data[5];
|
||||
|
||||
|
|
@ -565,7 +565,7 @@ void sub_813F798(u8 taskId)
|
|||
{
|
||||
u8 spriteId;
|
||||
|
||||
spriteId = gBankSpriteIds[gBattleAnimAttacker];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
|
|
@ -597,7 +597,7 @@ void sub_813F844(u8 taskId)
|
|||
u8 priority, subpriority;
|
||||
u32 selectedPalettes;
|
||||
|
||||
spriteId = gBankSpriteIds[gBattleAnimAttacker];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL);
|
||||
else
|
||||
|
|
@ -690,7 +690,7 @@ void sub_813FA94(u8 taskId)
|
|||
gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16;
|
||||
gSprites[spriteId].callback = sub_813FD90;
|
||||
ewram17840.unk9_1 = gSprites[gBankSpriteIds[gBattleAnimTarget]].invisible;
|
||||
ewram17840.unk9_1 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible;
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].func = sub_813FB7C;
|
||||
}
|
||||
|
|
@ -727,14 +727,14 @@ void sub_813FBB8(u8 taskId)
|
|||
gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16;
|
||||
gSprites[spriteId].callback = SpriteCallbackDummy;
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 1);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 1);
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].func = sub_813FCBC;
|
||||
}
|
||||
|
||||
static void sub_813FCBC(u8 taskId)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1)
|
||||
if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1)
|
||||
{
|
||||
PlaySE12WithPanning(SE_NAGERU, 0);
|
||||
gSprites[gTasks[taskId].data[0]].callback = sub_813FD90;
|
||||
|
|
@ -745,9 +745,9 @@ static void sub_813FCBC(u8 taskId)
|
|||
|
||||
static void sub_813FD34(u8 taskId)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded)
|
||||
if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded)
|
||||
{
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 0);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 0);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
|
@ -811,7 +811,7 @@ static void sub_813FE70(struct Sprite *sprite)
|
|||
{
|
||||
sprite->data[5] = CreateTask(TaskDummy, 50);
|
||||
sprite->callback = sub_813FEC8;
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].data[1] = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -820,7 +820,7 @@ static void sub_813FEC8(struct Sprite *sprite)
|
|||
u8 spriteId;
|
||||
u8 taskId;
|
||||
|
||||
spriteId = gBankSpriteIds[gBattleAnimTarget];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimTarget];
|
||||
taskId = sprite->data[5];
|
||||
|
||||
if (++gTasks[taskId].data[1] == 11)
|
||||
|
|
@ -1139,8 +1139,8 @@ static void sub_8140454(struct Sprite *sprite)
|
|||
}
|
||||
else if (sprite->data[4] == 315)
|
||||
{
|
||||
FreeOamMatrix(gSprites[gBankSpriteIds[*battler]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[*battler]]);
|
||||
FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]);
|
||||
sprite->data[0] = 0;
|
||||
sprite->callback = sub_81404E4;
|
||||
}
|
||||
|
|
@ -1223,10 +1223,10 @@ static void sub_81405F4(struct Sprite *sprite)
|
|||
sub_8141314(1, gBattleAnimTarget, 14, ballIndex);
|
||||
|
||||
LABEL:
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].invisible = 0;
|
||||
StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gBattleAnimTarget]], 1);
|
||||
AnimateSprite(&gSprites[gBankSpriteIds[gBattleAnimTarget]]);
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].data[1] = 0x1000;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = 0;
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1);
|
||||
AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]);
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000;
|
||||
}
|
||||
|
||||
static void sub_81406BC(struct Sprite *sprite)
|
||||
|
|
@ -1236,21 +1236,21 @@ static void sub_81406BC(struct Sprite *sprite)
|
|||
if (sprite->animEnded)
|
||||
sprite->invisible = 1;
|
||||
|
||||
if (gSprites[gBankSpriteIds[gBattleAnimTarget]].affineAnimEnded)
|
||||
if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gBattleAnimTarget]], 0);
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0);
|
||||
next = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].data[1] -= 288;
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBankSpriteIds[gBattleAnimTarget]].data[1] >> 8;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8;
|
||||
}
|
||||
|
||||
if (sprite->animEnded && next)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].pos2.y = 0;
|
||||
gSprites[gBankSpriteIds[gBattleAnimTarget]].invisible = ewram17840.unk9_1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = ewram17840.unk9_1;
|
||||
sprite->data[0] = 0;
|
||||
sprite->callback = sub_81405C8;
|
||||
gDoingBattleAnim = 0;
|
||||
|
|
@ -1824,7 +1824,7 @@ void sub_814151C(u8 taskId)
|
|||
u32 done;
|
||||
|
||||
done = FALSE;
|
||||
spriteId = gBankSpriteIds[gBattleAnimAttacker];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
switch (gTasks[taskId].data[10])
|
||||
{
|
||||
case 0:
|
||||
|
|
@ -1905,7 +1905,7 @@ void sub_81416C4(u8 taskId)
|
|||
}
|
||||
break;
|
||||
case 2:
|
||||
spriteId = gBankSpriteIds[gBattleAnimAttacker];
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
DmaClear32(3, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800);
|
||||
sub_80324E0(gBattleAnimAttacker);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
|
|
@ -1921,7 +1921,7 @@ void sub_81417D8(u8 taskId)
|
|||
|
||||
void sub_8141808(u8 taskId)
|
||||
{
|
||||
gBattleAnimTarget = gEffectBank;
|
||||
gBattleAnimTarget = gEffectBattler;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
|
|
@ -2107,13 +2107,13 @@ static void sub_8141C30(struct Sprite *sprite)
|
|||
sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 1) + gBattleAnimArgs[3];
|
||||
sprite->data[5] = -32;
|
||||
InitAnimArcTranslation(sprite);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gBattleAnimAttacker]], 1);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 1);
|
||||
sprite->callback = sub_8141CBC;
|
||||
}
|
||||
|
||||
static void sub_8141CBC(struct Sprite *sprite)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1)
|
||||
if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1)
|
||||
sprite->callback = sub_8141CF4;
|
||||
}
|
||||
|
||||
|
|
@ -2129,11 +2129,11 @@ static void sub_8141CF4(struct Sprite *sprite)
|
|||
|
||||
static void sub_8141D20(struct Sprite *sprite)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gBattleAnimAttacker]].animEnded)
|
||||
if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded)
|
||||
{
|
||||
if (++sprite->data[0] > 0)
|
||||
{
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gBattleAnimAttacker]], 0);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ extern bool8 gAnimScriptActive;
|
|||
extern void (*gAnimScriptCallback)(void);
|
||||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gBattleAnimTarget;
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
|
||||
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
|
||||
extern const u8 *const gBattleAnims_StatusConditions[];
|
||||
|
|
@ -72,7 +72,7 @@ static void sub_807BDAC(u8);
|
|||
|
||||
u8 unref_sub_807B69C(u8 a, u8 b)
|
||||
{
|
||||
u8 spriteId1 = gBankSpriteIds[a];
|
||||
u8 spriteId1 = gBattlerSpriteIds[a];
|
||||
u8 taskId = CreateTask(sub_807B7E0, 10);
|
||||
u8 spriteId2;
|
||||
u8 i;
|
||||
|
|
|
|||
309
src/battle_bg.c
309
src/battle_bg.c
|
|
@ -262,22 +262,22 @@ void DrawMainBattleBackground(void)
|
|||
{
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER /*| BATTLE_TYPE_x2000000*/))
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
|
||||
{
|
||||
if (gGameVersion == VERSION_RUBY)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
|
||||
}
|
||||
else
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Water, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Water, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
|
||||
}
|
||||
}
|
||||
|
|
@ -288,15 +288,15 @@ void DrawMainBattleBackground(void)
|
|||
u8 trainerClass = gTrainers[gTrainerBattleOpponent].trainerClass;
|
||||
if (trainerClass == TRAINER_CLASS_LEADER)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
|
||||
return;
|
||||
}
|
||||
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_StadiumSteven, 0x20, 0x60);
|
||||
return;
|
||||
}
|
||||
|
|
@ -305,48 +305,48 @@ void DrawMainBattleBackground(void)
|
|||
switch (GetCurrentMapBattleScene())
|
||||
{
|
||||
case MAP_BATTLE_SCENE_NORMAL:
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GYM:
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_MAGMA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_AQUA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_SIDNEY:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_PHOEBE:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GLACIA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_DRAKE:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_BATTLE_TOWER:
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
|
||||
break;
|
||||
}
|
||||
|
|
@ -359,6 +359,7 @@ void LoadBattleTextboxAndBackground(void)
|
|||
CpuSet(gBattleTextboxTilemap, (void *)(VRAM + 0xC000), 0x800);
|
||||
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
|
||||
ApplyPlayerChosenFrameToBattleMenu();
|
||||
|
||||
DrawMainBattleBackground();
|
||||
|
||||
#if DEBUG
|
||||
|
|
@ -466,8 +467,8 @@ static void PrintLinkBattleWinLossTie(void)
|
|||
if (gBattleOutcome == 1)
|
||||
{
|
||||
|
||||
// lp_field_18 = player position?
|
||||
switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18)
|
||||
// id = player position?
|
||||
switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].id)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
|
|
@ -485,7 +486,7 @@ static void PrintLinkBattleWinLossTie(void)
|
|||
else
|
||||
{
|
||||
|
||||
switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18)
|
||||
switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].id)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
|
|
@ -507,7 +508,7 @@ static void PrintLinkBattleWinLossTie(void)
|
|||
|
||||
if (gBattleOutcome == 1)
|
||||
{
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0)
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id != 0)
|
||||
{
|
||||
PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
|
||||
PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
|
||||
|
|
@ -520,7 +521,7 @@ static void PrintLinkBattleWinLossTie(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0)
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id != 0)
|
||||
{
|
||||
PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
|
||||
PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
|
||||
|
|
@ -544,7 +545,7 @@ void sub_800DE30(u8 taskId)
|
|||
case 0:
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI) {
|
||||
for (i = 0; i < 4; i++) {
|
||||
u8 windowId = (gLinkPlayers[i].lp_field_18 & 3);
|
||||
u8 windowId = (gLinkPlayers[i].id & 3);
|
||||
Text_InitWindow8002E4C(
|
||||
gLinkResultWindows[windowId].window,
|
||||
gLinkPlayers[i].name,
|
||||
|
|
@ -560,7 +561,7 @@ void sub_800DE30(u8 taskId)
|
|||
|
||||
u8 playerId = gBattleStruct->linkPlayerIndex;
|
||||
u8 opponentId = gBattleStruct->linkPlayerIndex ^ 1;
|
||||
if (gLinkPlayers[playerId].lp_field_18) {
|
||||
if (gLinkPlayers[playerId].id) {
|
||||
opponentId = gBattleStruct->linkPlayerIndex;
|
||||
playerId = gBattleStruct->linkPlayerIndex ^ 1;
|
||||
}
|
||||
|
|
@ -633,8 +634,10 @@ void sub_800DE30(u8 taskId)
|
|||
}
|
||||
}
|
||||
|
||||
void LoadBattleEntryBackground(void) {
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK) {
|
||||
void DrawBattleEntryBackground(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
LZDecompressVram(gVersusFrameGfx, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gVersusFrameTilemap, (void *)(VRAM + 0xE000));
|
||||
LZDecompressVram(gVersusFrameTilemap, (void *)(VRAM + 0xF000));
|
||||
|
|
@ -646,44 +649,61 @@ void LoadBattleEntryBackground(void) {
|
|||
gBattle_BG1_Y = 0xff5c;
|
||||
gBattle_BG2_Y = 0xff5c;
|
||||
LoadCompressedObjectPic(gUnknown_081F95A4);
|
||||
return;
|
||||
} else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) {
|
||||
}
|
||||
else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
|
||||
return;
|
||||
} else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
|
||||
if (gGameVersion == VERSION_RUBY) {
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
|
||||
{
|
||||
if (gGameVersion == VERSION_RUBY)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)(VRAM + 0xE000));
|
||||
return;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)(VRAM + 0xE000));
|
||||
return;
|
||||
}
|
||||
} else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
|
||||
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
|
||||
return;
|
||||
} else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (sav1_map_get_battletype() == 0) {
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)(VRAM + 0xE000));
|
||||
return;
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
{
|
||||
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
|
||||
return;
|
||||
}
|
||||
else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (sav1_map_get_battletype() == 0)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)(VRAM + 0xE000));
|
||||
}
|
||||
else
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
|
||||
}
|
||||
}
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
|
||||
}
|
||||
|
||||
int LoadChosenBattleElement(u8 type) {
|
||||
int ret = 0;
|
||||
switch (type) {
|
||||
int LoadChosenBattleElement(u8 caseId)
|
||||
{
|
||||
int ret = FALSE;
|
||||
|
||||
switch (caseId)
|
||||
{
|
||||
case 0:
|
||||
LZDecompressVram(&gBattleTextboxTiles, (void *)VRAM);
|
||||
break;
|
||||
|
|
@ -694,132 +714,172 @@ int LoadChosenBattleElement(u8 type) {
|
|||
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
|
||||
break;
|
||||
case 3: // tiles
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
|
||||
if (gGameVersion == VERSION_RUBY) {
|
||||
LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(VRAM + 0x8000));
|
||||
break;
|
||||
} else {
|
||||
LZDecompressVram(gBattleTerrainTiles_Water, (void *)(VRAM + 0x8000));
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
|
||||
{
|
||||
if (gGameVersion == VERSION_RUBY)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
|
||||
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(VRAM + 0x8000));
|
||||
else
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Water, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
{
|
||||
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
} else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
|
||||
}
|
||||
else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (sav1_map_get_battletype()) {
|
||||
switch (sav1_map_get_battletype())
|
||||
{
|
||||
case 0:
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void *)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case 2:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case 3:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case 4:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case 5:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case 6:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case 7:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case 1:
|
||||
case 8:
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(VRAM + 0x8000));
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(VRAM + 0x8000));
|
||||
}
|
||||
else
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
case 4: // tilemap
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
|
||||
if (gGameVersion == 2) {
|
||||
LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(VRAM + 0xD000));
|
||||
break;
|
||||
} else {
|
||||
LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(VRAM + 0xD000));
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
|
||||
{
|
||||
if (gGameVersion == 2)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
|
||||
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(VRAM + 0xD000));
|
||||
else
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
{
|
||||
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
} else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
|
||||
}
|
||||
else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (sav1_map_get_battletype()) {
|
||||
switch (sav1_map_get_battletype())
|
||||
{
|
||||
case 0:
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void *)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case 2:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case 3:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case 4:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case 5:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case 6:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case 7:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case 1:
|
||||
case 8:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(VRAM + 0xD000));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(VRAM + 0xD000));
|
||||
}
|
||||
else
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
}
|
||||
case 5: // palette
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
|
||||
if (gGameVersion == 2) {
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
|
||||
{
|
||||
if (gGameVersion == 2)
|
||||
{
|
||||
LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
|
||||
break;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
|
||||
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
{
|
||||
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19)
|
||||
{
|
||||
LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
|
||||
break;
|
||||
} else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
|
||||
}
|
||||
else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20)
|
||||
{
|
||||
LoadCompressedPalette(gBattleTerrainPalette_StadiumSteven, 0x20, 0x60);
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (sav1_map_get_battletype()) {
|
||||
switch (sav1_map_get_battletype())
|
||||
{
|
||||
case 0:
|
||||
LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
|
||||
break;
|
||||
|
|
@ -850,7 +910,9 @@ int LoadChosenBattleElement(u8 type) {
|
|||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
|
||||
break;
|
||||
}
|
||||
|
|
@ -858,7 +920,8 @@ int LoadChosenBattleElement(u8 type) {
|
|||
ApplyPlayerChosenFrameToBattleMenu();
|
||||
break;
|
||||
default:
|
||||
ret = 1;
|
||||
ret = TRUE;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@ struct MovePpInfo
|
|||
|
||||
extern u8 gActiveBattler;
|
||||
extern u8 gBattleBufferA[][0x200];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u8 gBattleMonForms[];
|
||||
extern void (*gBattleBankFunc[])(void);
|
||||
extern void (*gBattlerControllerFuncs[])(void);
|
||||
extern s32 gAnimMoveDmg;
|
||||
extern u16 gAnimMovePower;
|
||||
extern u8 gAnimFriendship;
|
||||
|
|
@ -50,7 +50,7 @@ extern struct SpriteTemplate gUnknown_02024E8C;
|
|||
extern u8 gAnimMoveTurn;
|
||||
extern struct Window gUnknown_03004210;
|
||||
extern u8 gUnknown_0300434C[];
|
||||
extern u32 gBattleExecBuffer;
|
||||
extern u32 gBattleControllerExecFlags;
|
||||
extern MainCallback gPreBattleCallback1;
|
||||
extern struct MusicPlayerInfo gMPlay_BGM;
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ extern void StartAnimLinearTranslation(struct Sprite *);
|
|||
extern void sub_80375B4(void);
|
||||
extern void sub_8010384(struct Sprite *);
|
||||
extern void sub_8037B78(void);
|
||||
extern u8 sub_8031720();
|
||||
extern u8 IsMoveWithoutAnimation();
|
||||
extern bool8 mplay_80342A4(u8);
|
||||
extern void DoMoveAnim();
|
||||
extern void sub_80326EC();
|
||||
|
|
@ -248,12 +248,12 @@ void nullsub_47(void)
|
|||
|
||||
void SetBankFuncToLinkOpponentBufferRunCommand(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = sub_803752C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_803752C;
|
||||
}
|
||||
|
||||
void sub_803752C(void)
|
||||
{
|
||||
if (gBattleExecBuffer & gBitTable[gActiveBattler])
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] <= 0x38)
|
||||
gLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
|
|
@ -264,18 +264,18 @@ void sub_803752C(void)
|
|||
|
||||
void sub_803757C(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
void sub_80375B4(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
sub_8031B74(gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBattler]].data[5];
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
sub_8031B74(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBattlerSpriteIds[gActiveBattler]].data[5];
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -295,13 +295,13 @@ void sub_8037680(void)
|
|||
|
||||
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
r6 = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxIDs[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
|
||||
r6 = TRUE;
|
||||
}
|
||||
if (IsCryPlayingOrClearCrySongs())
|
||||
|
|
@ -330,7 +330,7 @@ void sub_8037680(void)
|
|||
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
|
||||
}
|
||||
ewram17810[gActiveBattler].unk9 = 3;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037644;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037644;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -352,35 +352,35 @@ void sub_8037840(void)
|
|||
{
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
|
||||
sub_8045A5C(
|
||||
gHealthboxIDs[gActiveBattler ^ 2],
|
||||
gHealthboxSpriteIds[gActiveBattler ^ 2],
|
||||
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]],
|
||||
0);
|
||||
sub_804777C(gActiveBattler ^ 2);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler ^ 2]);
|
||||
sub_8032984(
|
||||
gActiveBattler ^ 2,
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], MON_DATA_SPECIES));
|
||||
}
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
|
||||
sub_8045A5C(
|
||||
gHealthboxIDs[gActiveBattler],
|
||||
gHealthboxSpriteIds[gActiveBattler],
|
||||
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
|
||||
0);
|
||||
sub_804777C(gActiveBattler);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
sub_8032984(
|
||||
gActiveBattler,
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
|
||||
ewram17840.unk9_0 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037680;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037680;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8037A74(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].animEnded == TRUE
|
||||
&& gSprites[gBankSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
|
||||
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
{
|
||||
if (!ewram17810[gActiveBattler].unk0_7)
|
||||
{
|
||||
|
|
@ -401,20 +401,20 @@ void sub_8037A74(void)
|
|||
|
||||
void sub_8037B24(void)
|
||||
{
|
||||
s16 r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
|
||||
s16 r4 = sub_8045C78(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], 0, 0);
|
||||
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
if (r4 != -1)
|
||||
sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
|
||||
sub_80440EC(gHealthboxSpriteIds[gActiveBattler], r4, 0);
|
||||
else
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
void sub_8037B78(void)
|
||||
{
|
||||
if (!gSprites[gBankSpriteIds[gActiveBattler]].inUse)
|
||||
if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
|
||||
{
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -423,10 +423,10 @@ void sub_8037BBC(void)
|
|||
{
|
||||
if (!ewram17810[gActiveBattler].unk0_6)
|
||||
{
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8032A08(gActiveBattler);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -439,7 +439,7 @@ void sub_8037C2C(void)
|
|||
|
||||
void dp01t_0F_4_move_anim(void)
|
||||
{
|
||||
u8 spriteId = gBankSpriteIds[gActiveBattler];
|
||||
u8 spriteId = gBattlerSpriteIds[gActiveBattler];
|
||||
|
||||
if (gSprites[spriteId].data[1] == 32)
|
||||
{
|
||||
|
|
@ -458,11 +458,11 @@ void dp01t_0F_4_move_anim(void)
|
|||
|
||||
void sub_8037CC0(void)
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
if (ewram17800[gActiveBattler].substituteSprite)
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037D2C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037D2C;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -483,15 +483,15 @@ void sub_8037D64(void)
|
|||
ewram17810[gActiveBattler].unk1_0 = 0;
|
||||
FreeSpriteTilesByTag(0x27F9);
|
||||
FreeSpritePaletteByTag(0x27F9);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 0);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||
sub_8045A5C(
|
||||
gHealthboxIDs[gActiveBattler],
|
||||
gHealthboxSpriteIds[gActiveBattler],
|
||||
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
|
||||
0);
|
||||
sub_804777C(gActiveBattler);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
sub_8031F88(gActiveBattler);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037CC0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037CC0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -504,7 +504,7 @@ void sub_8037E30(void)
|
|||
{
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
|
||||
sub_8032984(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037D64;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037D64;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -526,7 +526,7 @@ void sub_8037F34(void)
|
|||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
sub_800832C();
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037EF0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037EF0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -552,7 +552,7 @@ void sub_8037FD8(void)
|
|||
|
||||
void LinkOpponentBufferExecCompleted(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = sub_803752C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_803752C;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
u8 playerId = GetMultiplayerId();
|
||||
|
|
@ -562,7 +562,7 @@ void LinkOpponentBufferExecCompleted(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
gBattleExecBuffer &= ~gBitTable[gActiveBattler];
|
||||
gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -587,7 +587,7 @@ void LinkOpponentHandleGetAttributes(void)
|
|||
r4 >>= 1;
|
||||
}
|
||||
}
|
||||
Emitcmd29(1, r6, buffer);
|
||||
BtlController_EmitDataTransfer(1, r6, buffer);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -1153,24 +1153,24 @@ void LinkOpponentHandleLoadPokeSprite(void)
|
|||
|
||||
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
sub_8077F68(gActiveBattler),
|
||||
GetBattlerSubpriority(gActiveBattler));
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
sub_8032984(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037A74;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037A74;
|
||||
}
|
||||
|
||||
void LinkOpponentHandleSendOutPoke(void)
|
||||
{
|
||||
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
|
||||
sub_8039430(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037E30;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037E30;
|
||||
}
|
||||
|
||||
void sub_8039430(u8 a, u8 b)
|
||||
|
|
@ -1183,18 +1183,18 @@ void sub_8039430(u8 a, u8 b)
|
|||
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
|
||||
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[a]], a);
|
||||
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
|
||||
gBankSpriteIds[a] = CreateSprite(
|
||||
gBattlerSpriteIds[a] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
GetBattlerSpriteCoord(a, 2),
|
||||
sub_8077F68(a),
|
||||
GetBattlerSubpriority(a));
|
||||
gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
|
||||
gSprites[gBankSpriteIds[a]].data[0] = a;
|
||||
gSprites[gBankSpriteIds[a]].data[2] = species;
|
||||
gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
|
||||
gSprites[gBankSpriteIds[a]].invisible = TRUE;
|
||||
gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
|
||||
gSprites[gUnknown_0300434C[a]].data[1] = gBattlerSpriteIds[a];
|
||||
gSprites[gBattlerSpriteIds[a]].data[0] = a;
|
||||
gSprites[gBattlerSpriteIds[a]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[a]].oam.paletteNum = a;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[a]], gBattleMonForms[a]);
|
||||
gSprites[gBattlerSpriteIds[a]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[a]].callback = SpriteCallbackDummy;
|
||||
gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFE);
|
||||
}
|
||||
|
||||
|
|
@ -1203,14 +1203,14 @@ void LinkOpponentHandleReturnPokeToBall(void)
|
|||
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8039648;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8039648;
|
||||
}
|
||||
else
|
||||
{
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8032A08(gActiveBattler);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -1229,7 +1229,7 @@ void sub_8039648(void)
|
|||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 2);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037BBC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037BBC;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -1255,18 +1255,18 @@ void LinkOpponentHandleTrainerThrow(void)
|
|||
}
|
||||
sub_8031A6C(gender, gActiveBattler);
|
||||
GetMonSpriteTemplate_803C5A0(gender, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
176 + xOffset, 40 + 4 * (8 - gTrainerFrontPicCoords[gender].coords),
|
||||
GetBattlerSubpriority(gActiveBattler));
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam = gender;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_803757C;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = gender;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_803757C;
|
||||
}
|
||||
|
||||
void LinkOpponentHandleTrainerSlide(void)
|
||||
|
|
@ -1276,13 +1276,13 @@ void LinkOpponentHandleTrainerSlide(void)
|
|||
|
||||
void LinkOpponentHandleTrainerSlideBack(void)
|
||||
{
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattleBankFunc[gActiveBattler] = sub_80375B4;
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_80375B4;
|
||||
}
|
||||
|
||||
void LinkOpponentHandlecmd10(void)
|
||||
|
|
@ -1297,8 +1297,8 @@ void LinkOpponentHandlecmd10(void)
|
|||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
PlaySE12WithPanning(SE_POKE_DEAD, 63);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_8010384;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037B78;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8010384;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037B78;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1342,15 +1342,15 @@ void LinkOpponentHandleMoveAnimation(void)
|
|||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
|
||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||
|
||||
// Dead code. sub_8031720 always returns 0.
|
||||
if (sub_8031720(r0, gAnimMoveTurn) != 0)
|
||||
// Dead code. IsMoveWithoutAnimation always returns 0.
|
||||
if (IsMoveWithoutAnimation(r0, gAnimMoveTurn) != 0)
|
||||
{
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8039B64;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8039B64;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1412,7 +1412,7 @@ void LinkOpponentHandlePrintString(void)
|
|||
gBattle_BG0_Y = 0;
|
||||
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037C2C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037C2C;
|
||||
}
|
||||
|
||||
void LinkOpponentHandlePrintStringPlayerOnly(void)
|
||||
|
|
@ -1461,15 +1461,15 @@ void LinkOpponentHandleHealthBarUpdate(void)
|
|||
u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
u32 hp = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
|
||||
|
||||
sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, hp, r7);
|
||||
sub_8043D84(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, hp, r7);
|
||||
}
|
||||
else
|
||||
{
|
||||
u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
|
||||
sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
|
||||
sub_8043D84(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, r7);
|
||||
}
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037B24;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037B24;
|
||||
}
|
||||
|
||||
void LinkOpponentHandleExpBarUpdate(void)
|
||||
|
|
@ -1481,9 +1481,9 @@ void LinkOpponentHandleStatusIconUpdate(void)
|
|||
{
|
||||
if (mplay_80342A4(gActiveBattler) == 0)
|
||||
{
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], 9);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], 9);
|
||||
ewram17810[gActiveBattler].unk0_4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037FAC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037FAC;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1497,7 +1497,7 @@ void LinkOpponentHandleStatusAnimation(void)
|
|||
| (gBattleBufferA[gActiveBattler][3] << 8)
|
||||
| (gBattleBufferA[gActiveBattler][4] << 16)
|
||||
| (gBattleBufferA[gActiveBattler][5] << 24));
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037FAC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037FAC;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1572,16 +1572,16 @@ void LinkOpponentHandlecmd40(void)
|
|||
|
||||
void LinkOpponentHandleHitAnimation(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
|
||||
{
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
{
|
||||
gDoingBattleAnim = TRUE;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
sub_8047858(gActiveBattler);
|
||||
gBattleBankFunc[gActiveBattler] = dp01t_0F_4_move_anim;
|
||||
gBattlerControllerFuncs[gActiveBattler] = dp01t_0F_4_move_anim;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1627,18 +1627,18 @@ void LinkOpponentHandleTrainerBallThrow(void)
|
|||
{
|
||||
u8 taskId;
|
||||
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_803A3A8);
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_803A3A8);
|
||||
taskId = CreateTask(sub_803A2C4, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
if (ewram17810[gActiveBattler].unk0_0)
|
||||
gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
|
||||
ewram17840.unk9_0 = 1;
|
||||
gBattleBankFunc[gActiveBattler] = nullsub_47;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_47;
|
||||
}
|
||||
|
||||
void sub_803A2C4(u8 taskId)
|
||||
|
|
@ -1661,7 +1661,7 @@ void sub_803A2C4(u8 taskId)
|
|||
sub_8039430(gActiveBattler, 0);
|
||||
gActiveBattler ^= 2;
|
||||
}
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037840;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037840;
|
||||
gActiveBattler = r9;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
|
@ -1703,7 +1703,7 @@ void LinkOpponentHandlecmd48(void)
|
|||
ewram17810[gActiveBattler].unk5 = 0;
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
ewram17810[gActiveBattler].unk5 = 0x5D;
|
||||
gBattleBankFunc[gActiveBattler] = sub_803A4E0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_803A4E0;
|
||||
}
|
||||
|
||||
void sub_803A4E0(void)
|
||||
|
|
@ -1731,7 +1731,7 @@ void LinkOpponentHandleSpriteInvisibility(void)
|
|||
{
|
||||
if (IsBankSpritePresent(gActiveBattler) != 0)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
|
||||
sub_8031F88(gActiveBattler);
|
||||
}
|
||||
LinkOpponentBufferExecCompleted();
|
||||
|
|
@ -1747,7 +1747,7 @@ void LinkOpponentHandleBattleAnimation(void)
|
|||
if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, r3, r4) != 0)
|
||||
LinkOpponentBufferExecCompleted();
|
||||
else
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037FD8;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037FD8;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1770,7 +1770,7 @@ void LinkOpponentHandlecmd55(void)
|
|||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
gBattleBankFunc[gActiveBattler] = sub_8037F34;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8037F34;
|
||||
}
|
||||
|
||||
void LinkOpponentHandlecmd56(void)
|
||||
|
|
|
|||
|
|
@ -34,9 +34,9 @@ extern u16 gBattleTypeFlags;
|
|||
extern u8 gDisplayedStringBattle[];
|
||||
extern u8 gBattleBufferA[][0x200];
|
||||
extern u8 gActiveBattler;
|
||||
extern u32 gBattleExecBuffer;
|
||||
extern u32 gBattleControllerExecFlags;
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u8 gBattleOutcome;
|
||||
extern u16 gUnknown_02024DE8;
|
||||
extern u8 gUnknown_02024E68[];
|
||||
|
|
@ -50,8 +50,8 @@ extern u16 gWeatherMoveAnim;
|
|||
extern u8 gAnimMoveTurn;
|
||||
extern struct Window gUnknown_03004210;
|
||||
extern MainCallback gPreBattleCallback1;
|
||||
extern void (*gBattleBankFunc[])(void);
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern void (*gBattlerControllerFuncs[])(void);
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
extern u8 gUnknown_0300434C[];
|
||||
extern u8 gBattleMonForms[];
|
||||
extern u8 gAnimScriptActive;
|
||||
|
|
@ -70,7 +70,7 @@ extern void sub_8031F24(void);
|
|||
extern void sub_80326EC();
|
||||
extern void DoMoveAnim();
|
||||
extern void sub_80324BC();
|
||||
extern u8 sub_8031720();
|
||||
extern u8 IsMoveWithoutAnimation();
|
||||
extern u8 mplay_80342A4();
|
||||
extern void oamt_add_pos2_onto_pos1();
|
||||
extern void StoreSpriteCallbackInData();
|
||||
|
|
@ -241,12 +241,12 @@ void nullsub_74(void)
|
|||
|
||||
void SetBankFuncToLinkPartnerBufferRunCommand(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = LinkPartnerBufferRunCommand;
|
||||
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerBufferRunCommand;
|
||||
}
|
||||
|
||||
void LinkPartnerBufferRunCommand(void)
|
||||
{
|
||||
if (gBattleExecBuffer & gBitTable[gActiveBattler])
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] <= 0x38)
|
||||
gLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
|
|
@ -257,17 +257,17 @@ void LinkPartnerBufferRunCommand(void)
|
|||
|
||||
void sub_811DAE4(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
void sub_811DB1C(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
nullsub_10(0);
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -287,13 +287,13 @@ void sub_811DBC0(void)
|
|||
|
||||
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & 0x40)))
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
r6 = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxIDs[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
|
||||
r6 = TRUE;
|
||||
}
|
||||
if (IsCryPlayingOrClearCrySongs())
|
||||
|
|
@ -301,7 +301,7 @@ void sub_811DBC0(void)
|
|||
if (r6)
|
||||
{
|
||||
ewram17810[gActiveBattler].unk9 = 3;
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DB84;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DB84;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -319,24 +319,24 @@ void sub_811DCA0(void)
|
|||
if (IsDoubleBattle() && !(gBattleTypeFlags & 0x40))
|
||||
{
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler ^ 2], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler ^ 2], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], 0);
|
||||
sub_804777C(gActiveBattler ^ 2);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler ^ 2]);
|
||||
}
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
|
||||
sub_804777C(gActiveBattler);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
(s8)ewram17810[4].unk9 &= ~1;
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DBC0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DBC0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811DDE8(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].animEnded
|
||||
&& gSprites[gBankSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded
|
||||
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -344,11 +344,11 @@ void bx_t3_healthbar_update(void)
|
|||
{
|
||||
s16 r4;
|
||||
|
||||
r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
r4 = sub_8045C78(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], 0, 0);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
if (r4 != -1)
|
||||
{
|
||||
sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
|
||||
sub_80440EC(gHealthboxSpriteIds[gActiveBattler], r4, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -359,12 +359,12 @@ void bx_t3_healthbar_update(void)
|
|||
|
||||
void sub_811DE98(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].pos1.y + gSprites[gBankSpriteIds[gActiveBattler]].pos2.y > 160)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > 160)
|
||||
{
|
||||
nullsub_9(GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBattler]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -373,9 +373,9 @@ void sub_811DF34(void)
|
|||
{
|
||||
if (!ewram17810[gActiveBattler].unk0_6)
|
||||
{
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -388,7 +388,7 @@ void sub_811DFA0(void)
|
|||
|
||||
void bx_blink_t3(void)
|
||||
{
|
||||
u8 spriteId = gBankSpriteIds[gActiveBattler];
|
||||
u8 spriteId = gBattlerSpriteIds[gActiveBattler];
|
||||
if (gSprites[spriteId].data[1] == 32)
|
||||
{
|
||||
gSprites[spriteId].data[1] = 0;
|
||||
|
|
@ -408,11 +408,11 @@ void bx_blink_t3(void)
|
|||
|
||||
void sub_811E034(void)
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
if (ewram17800[gActiveBattler].substituteSprite)
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E0A0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E0A0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -432,12 +432,12 @@ void sub_811E0CC(void)
|
|||
FreeSpritePaletteByTag(0x27F9);
|
||||
CreateTask(c3_0802FDF4, 10);
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 0);
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
|
||||
sub_804777C(gActiveBattler);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
sub_8031F88(gActiveBattler);
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E034;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E034;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -449,7 +449,7 @@ void sub_811E1BC(void)
|
|||
&& !ewram17810[gActiveBattler].unk0_3)
|
||||
{
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E0CC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E0CC;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -471,7 +471,7 @@ void sub_811E29C(void)
|
|||
if (gBattleTypeFlags & 2)
|
||||
{
|
||||
sub_800832C();
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E258;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E258;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -487,7 +487,7 @@ void LinkPartnerBufferExecCompleted(void)
|
|||
{
|
||||
u8 multiplayerId;
|
||||
|
||||
gBattleBankFunc[gActiveBattler] = LinkPartnerBufferRunCommand;
|
||||
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerBufferRunCommand;
|
||||
if (gBattleTypeFlags & 2)
|
||||
{
|
||||
multiplayerId = GetMultiplayerId();
|
||||
|
|
@ -496,7 +496,7 @@ void LinkPartnerBufferExecCompleted(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
gBattleExecBuffer &= ~gBitTable[gActiveBattler];
|
||||
gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -533,7 +533,7 @@ void LinkPartnerHandleGetAttributes(void)
|
|||
r4 >>= 1;
|
||||
}
|
||||
}
|
||||
Emitcmd29(1, r6, unk);
|
||||
BtlController_EmitDataTransfer(1, r6, unk);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -1101,16 +1101,16 @@ void LinkPartnerHandleLoadPokeSprite(void)
|
|||
GetMonSpriteTemplate_803C56C(
|
||||
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES),
|
||||
GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
sub_8077F68(gActiveBattler),
|
||||
GetBattlerSubpriority(gActiveBattler));
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DDE8;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DDE8;
|
||||
}
|
||||
|
||||
void LinkPartnerHandleSendOutPoke(void)
|
||||
|
|
@ -1119,7 +1119,7 @@ void LinkPartnerHandleSendOutPoke(void)
|
|||
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
|
||||
BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
sub_811F864(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E1BC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E1BC;
|
||||
}
|
||||
|
||||
void sub_811F864(u8 a, u8 b)
|
||||
|
|
@ -1131,18 +1131,18 @@ void sub_811F864(u8 a, u8 b)
|
|||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_SPECIES);
|
||||
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
|
||||
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
|
||||
gBankSpriteIds[a] = CreateSprite(
|
||||
gBattlerSpriteIds[a] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
GetBattlerSpriteCoord(a, 2),
|
||||
sub_8077F68(a),
|
||||
GetBattlerSubpriority(a));
|
||||
gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
|
||||
gSprites[gBankSpriteIds[a]].data[0] = a;
|
||||
gSprites[gBankSpriteIds[a]].data[2] = species;
|
||||
gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
|
||||
gSprites[gBankSpriteIds[a]].invisible = TRUE;
|
||||
gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
|
||||
gSprites[gUnknown_0300434C[a]].data[1] = gBattlerSpriteIds[a];
|
||||
gSprites[gBattlerSpriteIds[a]].data[0] = a;
|
||||
gSprites[gBattlerSpriteIds[a]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[a]].oam.paletteNum = a;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[a]], gBattleMonForms[a]);
|
||||
gSprites[gBattlerSpriteIds[a]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[a]].callback = SpriteCallbackDummy;
|
||||
gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFF);
|
||||
}
|
||||
|
||||
|
|
@ -1151,13 +1151,13 @@ void LinkPartnerHandleReturnPokeToBall(void)
|
|||
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_811FA5C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811FA5C;
|
||||
}
|
||||
else
|
||||
{
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -1176,7 +1176,7 @@ void sub_811FA5C(void)
|
|||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 1);
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DF34;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DF34;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -1202,15 +1202,15 @@ void LinkPartnerHandleTrainerThrow(void)
|
|||
}
|
||||
LoadPlayerTrainerBankSprite(gender, gActiveBattler);
|
||||
GetMonSpriteTemplate_803C5A0(gender, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
80 + xOffset, 80 + 4 * (8 - gTrainerBackPicCoords[gender].coords),
|
||||
GetBattlerSubpriority(gActiveBattler));
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DAE4;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DAE4;
|
||||
}
|
||||
|
||||
void LinkPartnerHandleTrainerSlide(void)
|
||||
|
|
@ -1220,13 +1220,13 @@ void LinkPartnerHandleTrainerSlide(void)
|
|||
|
||||
void LinkPartnerHandleTrainerSlideBack(void)
|
||||
{
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DB1C;
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DB1C;
|
||||
}
|
||||
|
||||
void LinkPartnerHandlecmd10(void)
|
||||
|
|
@ -1242,10 +1242,10 @@ void LinkPartnerHandlecmd10(void)
|
|||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
PlaySE12WithPanning(SE_POKE_DEAD, -64);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 5;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80105EC;
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DE98;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80105EC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DE98;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1289,12 +1289,12 @@ void LinkPartnerHandleMoveAnimation(void)
|
|||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
|
||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||
|
||||
if (sub_8031720(r0, gAnimMoveTurn) != 0)
|
||||
if (IsMoveWithoutAnimation(r0, gAnimMoveTurn) != 0)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
else
|
||||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_811FF30;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811FF30;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1356,7 +1356,7 @@ void LinkPartnerHandlePrintString(void)
|
|||
gBattle_BG0_Y = 0;
|
||||
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DFA0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DFA0;
|
||||
}
|
||||
|
||||
void LinkPartnerHandlePrintStringPlayerOnly(void)
|
||||
|
|
@ -1405,15 +1405,15 @@ void LinkPartnerHandleHealthBarUpdate(void)
|
|||
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
u32 hp = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
|
||||
|
||||
sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, hp, r7);
|
||||
sub_8043D84(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, hp, r7);
|
||||
}
|
||||
else
|
||||
{
|
||||
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
|
||||
sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
|
||||
sub_8043D84(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, r7);
|
||||
}
|
||||
gBattleBankFunc[gActiveBattler] = bx_t3_healthbar_update;
|
||||
gBattlerControllerFuncs[gActiveBattler] = bx_t3_healthbar_update;
|
||||
}
|
||||
|
||||
void LinkPartnerHandleExpBarUpdate(void)
|
||||
|
|
@ -1425,9 +1425,9 @@ void LinkPartnerHandleStatusIconUpdate(void)
|
|||
{
|
||||
if (mplay_80342A4(gActiveBattler) == 0)
|
||||
{
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 9);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 9);
|
||||
ewram17810[gActiveBattler].unk0_4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E38C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E38C;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1441,7 +1441,7 @@ void LinkPartnerHandleStatusAnimation(void)
|
|||
| (gBattleBufferA[gActiveBattler][3] << 8)
|
||||
| (gBattleBufferA[gActiveBattler][4] << 16)
|
||||
| (gBattleBufferA[gActiveBattler][5] << 24));
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E38C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E38C;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1516,16 +1516,16 @@ void LinkPartnerHandlecmd40(void)
|
|||
|
||||
void LinkPartnerHandleHitAnimation(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
{
|
||||
gDoingBattleAnim = TRUE;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
sub_8047858(gActiveBattler);
|
||||
gBattleBankFunc[gActiveBattler] = bx_blink_t3;
|
||||
gBattlerControllerFuncs[gActiveBattler] = bx_blink_t3;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1572,25 +1572,25 @@ void LinkPartnerHandleTrainerBallThrow(void)
|
|||
u8 r4;
|
||||
u8 taskId;
|
||||
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8030E38);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
r4 = AllocSpritePalette(0xD6F9);
|
||||
LoadCompressedPalette(
|
||||
gTrainerBackPicPaletteTable[gLinkPlayers[sub_803FC34(gActiveBattler)].gender].data,
|
||||
0x100 + r4 * 16, 0x20);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = r4;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = r4;
|
||||
taskId = CreateTask(sub_812071C, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
if (ewram17810[gActiveBattler].unk0_0)
|
||||
gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
|
||||
ewram17840.unk9_0 = 1;
|
||||
gBattleBankFunc[gActiveBattler] = nullsub_74;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_74;
|
||||
}
|
||||
|
||||
void sub_812071C(u8 taskId)
|
||||
|
|
@ -1620,7 +1620,7 @@ void sub_812071C(u8 taskId)
|
|||
sub_811F864(gActiveBattler, 0);
|
||||
gActiveBattler ^= 2;
|
||||
}
|
||||
gBattleBankFunc[gActiveBattler] = sub_811DCA0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811DCA0;
|
||||
gActiveBattler = r9;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
|
@ -1642,7 +1642,7 @@ void LinkPartnerHandlecmd48(void)
|
|||
ewram17810[gActiveBattler].unk5 = 0;
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
ewram17810[gActiveBattler].unk5 = 0x5D;
|
||||
gBattleBankFunc[gActiveBattler] = sub_81208E0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81208E0;
|
||||
}
|
||||
|
||||
void sub_81208E0(void)
|
||||
|
|
@ -1670,7 +1670,7 @@ void LinkPartnerHandleSpriteInvisibility(void)
|
|||
{
|
||||
if (IsBankSpritePresent(gActiveBattler) != 0)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
|
||||
sub_8031F88(gActiveBattler);
|
||||
}
|
||||
LinkPartnerBufferExecCompleted();
|
||||
|
|
@ -1686,7 +1686,7 @@ void LinkPartnerHandleBattleAnimation(void)
|
|||
if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, r3, r4) != 0)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
else
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E3B8;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E3B8;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1706,7 +1706,7 @@ void LinkPartnerHandlecmd55(void)
|
|||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
gBattleBankFunc[gActiveBattler] = sub_811E29C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_811E29C;
|
||||
}
|
||||
|
||||
void LinkPartnerHandlecmd56(void)
|
||||
|
|
|
|||
|
|
@ -35,12 +35,12 @@ extern u8 gUnknown_02023A14_50;
|
|||
extern u8 gActiveBattler;
|
||||
extern u8 gBattleBufferA[][0x200];
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u8 gBattleMonForms[];
|
||||
extern struct SpriteTemplate gUnknown_02024E8C;
|
||||
extern void (*gBattleBankFunc[])(void);
|
||||
extern void (*gBattlerControllerFuncs[])(void);
|
||||
extern u8 gUnknown_0300434C[];
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u16 gTrainerBattleOpponent;
|
||||
extern s32 gAnimMoveDmg;
|
||||
|
|
@ -53,7 +53,7 @@ extern u8 gAnimScriptActive;
|
|||
extern void (*gAnimScriptCallback)(void);
|
||||
extern struct Window gUnknown_03004210;
|
||||
extern u8 gDisplayedStringBattle[];
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gAbsentBattlerFlags;
|
||||
extern bool8 gDoingBattleAnim;
|
||||
extern u16 gUnknown_02024DE8;
|
||||
|
|
@ -63,7 +63,7 @@ extern void (*const gOpponentBufferCommands[])(void);
|
|||
extern struct MusicPlayerInfo gMPlay_SE1;
|
||||
extern struct MusicPlayerInfo gMPlay_SE2;
|
||||
extern struct MusicPlayerInfo gMPlay_BGM;
|
||||
extern u32 gBattleExecBuffer;
|
||||
extern u32 gBattleControllerExecFlags;
|
||||
|
||||
extern u8 GetBattlerSpriteCoord();
|
||||
extern u8 sub_8077F68();
|
||||
|
|
@ -90,7 +90,7 @@ extern void StoreSpriteCallbackInData();
|
|||
extern void sub_803311C(void);
|
||||
extern void sub_8010384(struct Sprite *);
|
||||
extern bool8 mplay_80342A4(u8);
|
||||
extern u8 sub_8031720();
|
||||
extern u8 IsMoveWithoutAnimation();
|
||||
extern void DoMoveAnim();
|
||||
extern void sub_80326EC();
|
||||
extern void sub_8031F24(void);
|
||||
|
|
@ -262,12 +262,12 @@ void nullsub_45(void)
|
|||
|
||||
void SetBankFuncToOpponentBufferRunCommand(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = OpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[gActiveBattler] = OpponentBufferRunCommand;
|
||||
}
|
||||
|
||||
void OpponentBufferRunCommand(void)
|
||||
{
|
||||
if (gBattleExecBuffer & gBitTable[gActiveBattler])
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] <= 0x38)
|
||||
gOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
|
|
@ -278,25 +278,25 @@ void OpponentBufferRunCommand(void)
|
|||
|
||||
void sub_8032B4C(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
// Duplicate of sub_8032B4C
|
||||
void sub_8032B84(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
void sub_8032BBC(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
sub_8031B74(gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBattler]].data[5];
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
sub_8031B74(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBattlerSpriteIds[gActiveBattler]].data[5];
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -316,13 +316,13 @@ void sub_8032C88(void)
|
|||
|
||||
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
r6 = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxIDs[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
|
||||
r6 = TRUE;
|
||||
}
|
||||
if (IsCryPlayingOrClearCrySongs())
|
||||
|
|
@ -341,7 +341,7 @@ void sub_8032C88(void)
|
|||
else
|
||||
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
|
||||
ewram17810[gActiveBattler].unk9 = 3;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8032C4C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8032C4C;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -357,35 +357,35 @@ void sub_8032E2C(void)
|
|||
{
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
|
||||
sub_8045A5C(
|
||||
gHealthboxIDs[gActiveBattler ^ 2],
|
||||
gHealthboxSpriteIds[gActiveBattler ^ 2],
|
||||
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]],
|
||||
0);
|
||||
sub_804777C(gActiveBattler ^ 2);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler ^ 2]);
|
||||
sub_8032984(
|
||||
gActiveBattler ^ 2,
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], MON_DATA_SPECIES));
|
||||
}
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
|
||||
sub_8045A5C(
|
||||
gHealthboxIDs[gActiveBattler],
|
||||
gHealthboxSpriteIds[gActiveBattler],
|
||||
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
|
||||
0);
|
||||
sub_804777C(gActiveBattler);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
sub_8032984(
|
||||
gActiveBattler,
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
|
||||
ewram17840.unk9_0 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8032C88;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8032C88;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8033018(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].animEnded == TRUE
|
||||
&& gSprites[gBankSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
|
||||
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
{
|
||||
if (!ewram17810[gActiveBattler].unk0_7)
|
||||
{
|
||||
|
|
@ -406,20 +406,20 @@ void sub_8033018(void)
|
|||
|
||||
void sub_80330C8(void)
|
||||
{
|
||||
s16 r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
|
||||
s16 r4 = sub_8045C78(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], 0, 0);
|
||||
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
if (r4 != -1)
|
||||
sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
|
||||
sub_80440EC(gHealthboxSpriteIds[gActiveBattler], r4, 0);
|
||||
else
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
void sub_803311C(void)
|
||||
{
|
||||
if (!gSprites[gBankSpriteIds[gActiveBattler]].inUse)
|
||||
if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
|
||||
{
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -428,10 +428,10 @@ void sub_8033160(void)
|
|||
{
|
||||
if (!ewram17810[gActiveBattler].unk0_6)
|
||||
{
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8032A08(gActiveBattler);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -444,7 +444,7 @@ void sub_80331D0(void)
|
|||
|
||||
void bx_blink_t7(void)
|
||||
{
|
||||
u8 spriteId = gBankSpriteIds[gActiveBattler];
|
||||
u8 spriteId = gBattlerSpriteIds[gActiveBattler];
|
||||
|
||||
if (gSprites[spriteId].data[1] == 32)
|
||||
{
|
||||
|
|
@ -463,11 +463,11 @@ void bx_blink_t7(void)
|
|||
|
||||
void sub_8033264(void)
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
if (ewram17800[gActiveBattler].substituteSprite)
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
|
||||
gBattleBankFunc[gActiveBattler] = sub_80332D0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_80332D0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -488,15 +488,15 @@ void sub_8033308(void)
|
|||
ewram17810[gActiveBattler].unk1_0 = 0;
|
||||
FreeSpriteTilesByTag(0x27F9);
|
||||
FreeSpritePaletteByTag(0x27F9);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 0);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||
sub_8045A5C(
|
||||
gHealthboxIDs[gActiveBattler],
|
||||
gHealthboxSpriteIds[gActiveBattler],
|
||||
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
|
||||
0);
|
||||
sub_804777C(gActiveBattler);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
sub_8031F88(gActiveBattler);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8033264;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8033264;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -509,7 +509,7 @@ void sub_80333D4(void)
|
|||
{
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
|
||||
sub_8032984(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
gBattleBankFunc[gActiveBattler] = sub_8033308;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8033308;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -527,8 +527,8 @@ void sub_80334C0(void)
|
|||
|
||||
void OpponentBufferExecCompleted(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = OpponentBufferRunCommand;
|
||||
gBattleExecBuffer &= ~gBitTable[gActiveBattler];
|
||||
gBattlerControllerFuncs[gActiveBattler] = OpponentBufferRunCommand;
|
||||
gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
|
||||
}
|
||||
|
||||
void OpponentHandleGetAttributes(void)
|
||||
|
|
@ -552,7 +552,7 @@ void OpponentHandleGetAttributes(void)
|
|||
r4 >>= 1;
|
||||
}
|
||||
}
|
||||
Emitcmd29(1, r6, buffer);
|
||||
BtlController_EmitDataTransfer(1, r6, buffer);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -866,7 +866,7 @@ void OpponentHandlecmd1(void)
|
|||
u8 *dst;
|
||||
|
||||
MEMSET_ALT(&buffer + gBattleBufferA[gActiveBattler][1], src[i], gBattleBufferA[gActiveBattler][2], i, dst);
|
||||
Emitcmd29(1, gBattleBufferA[gActiveBattler][2], dst);
|
||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -1124,18 +1124,18 @@ void OpponentHandleLoadPokeSprite(void)
|
|||
|
||||
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
sub_8077F68(gActiveBattler),
|
||||
GetBattlerSubpriority(gActiveBattler));
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = species;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
sub_8032984(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
gBattleBankFunc[gActiveBattler] = sub_8033018;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8033018;
|
||||
}
|
||||
|
||||
void OpponentHandleSendOutPoke(void)
|
||||
|
|
@ -1143,7 +1143,7 @@ void OpponentHandleSendOutPoke(void)
|
|||
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
|
||||
|
||||
sub_803495C(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleBankFunc[gActiveBattler] = sub_80333D4;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_80333D4;
|
||||
}
|
||||
|
||||
void sub_803495C(u8 a, u8 b)
|
||||
|
|
@ -1156,18 +1156,18 @@ void sub_803495C(u8 a, u8 b)
|
|||
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
|
||||
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[a]], a);
|
||||
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
|
||||
gBankSpriteIds[a] = CreateSprite(
|
||||
gBattlerSpriteIds[a] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
GetBattlerSpriteCoord(a, 2),
|
||||
sub_8077F68(a),
|
||||
GetBattlerSubpriority(a));
|
||||
gSprites[gBankSpriteIds[a]].data[0] = a;
|
||||
gSprites[gBankSpriteIds[a]].data[2] = species;
|
||||
gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
|
||||
gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
|
||||
gSprites[gBankSpriteIds[a]].invisible = TRUE;
|
||||
gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBattlerSpriteIds[a]].data[0] = a;
|
||||
gSprites[gBattlerSpriteIds[a]].data[2] = species;
|
||||
gSprites[gUnknown_0300434C[a]].data[1] = gBattlerSpriteIds[a];
|
||||
gSprites[gBattlerSpriteIds[a]].oam.paletteNum = a;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[a]], gBattleMonForms[a]);
|
||||
gSprites[gBattlerSpriteIds[a]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[a]].callback = SpriteCallbackDummy;
|
||||
gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFE);
|
||||
}
|
||||
|
||||
|
|
@ -1176,14 +1176,14 @@ void OpponentHandleReturnPokeToBall(void)
|
|||
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8034B74;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8034B74;
|
||||
}
|
||||
else
|
||||
{
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8032A08(gActiveBattler);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -1202,7 +1202,7 @@ void sub_8034B74(void)
|
|||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 2);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8033160;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8033160;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -1232,19 +1232,19 @@ void OpponentHandleTrainerThrow(void)
|
|||
|
||||
sub_8031A6C(trainerPicIndex, gActiveBattler);
|
||||
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
0xB0,
|
||||
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
|
||||
GetBattlerSubpriority(gActiveBattler));
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam = trainerPicIndex;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8032B4C;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicIndex;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8032B4C;
|
||||
}
|
||||
|
||||
void OpponentHandleTrainerSlide(void)
|
||||
|
|
@ -1262,31 +1262,31 @@ void OpponentHandleTrainerSlide(void)
|
|||
|
||||
sub_8031A6C(trainerPicIndex, gActiveBattler);
|
||||
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
0xB0,
|
||||
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
|
||||
0x1E);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 96;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos1.x += 32;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam = trainerPicIndex;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8032B84;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicIndex;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8032B84;
|
||||
}
|
||||
|
||||
void OpponentHandleTrainerSlideBack(void)
|
||||
{
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8032BBC;
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8032BBC;
|
||||
}
|
||||
|
||||
void OpponentHandlecmd10(void)
|
||||
|
|
@ -1301,8 +1301,8 @@ void OpponentHandlecmd10(void)
|
|||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
PlaySE12WithPanning(SE_POKE_DEAD, 63);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_8010384;
|
||||
gBattleBankFunc[gActiveBattler] = sub_803311C;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8010384;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_803311C;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1346,15 +1346,15 @@ void OpponentHandleMoveAnimation(void)
|
|||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
|
||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||
|
||||
// Dead code. sub_8031720 always returns 0.
|
||||
if (sub_8031720(r0, gAnimMoveTurn) != 0)
|
||||
// Dead code. IsMoveWithoutAnimation always returns 0.
|
||||
if (IsMoveWithoutAnimation(r0, gAnimMoveTurn) != 0)
|
||||
{
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8035238;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8035238;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1416,7 +1416,7 @@ void OpponentHandlePrintString(void)
|
|||
gBattle_BG0_Y = 0;
|
||||
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gBattleBankFunc[gActiveBattler] = sub_80331D0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_80331D0;
|
||||
}
|
||||
|
||||
void OpponentHandlePrintStringPlayerOnly(void)
|
||||
|
|
@ -1571,7 +1571,7 @@ void OpponentHandlecmd20(void)
|
|||
mov r0, #0x1\n\
|
||||
mov r1, #0xa\n\
|
||||
._569:\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
._573:\n\
|
||||
bl OpponentBufferExecCompleted\n\
|
||||
b ._562\n\
|
||||
|
|
@ -1618,7 +1618,7 @@ void OpponentHandlecmd20(void)
|
|||
and r0, r0, r1\n\
|
||||
cmp r0, #0\n\
|
||||
beq ._570 @cond_branch\n\
|
||||
ldr r1, ._574 + 4 @ gBankTarget\n\
|
||||
ldr r1, ._574 + 4 @ gBattlerTarget\n\
|
||||
ldrb r0, [r6]\n\
|
||||
strb r0, [r1]\n\
|
||||
._570:\n\
|
||||
|
|
@ -1634,7 +1634,7 @@ void OpponentHandlecmd20(void)
|
|||
beq ._572 @cond_branch\n\
|
||||
mov r0, #0x0\n\
|
||||
bl GetBattlerAtPosition\n\
|
||||
ldr r5, ._574 + 4 @ gBankTarget\n\
|
||||
ldr r5, ._574 + 4 @ gBattlerTarget\n\
|
||||
strb r0, [r5]\n\
|
||||
ldr r0, ._574 + 8 @ gAbsentBattlerFlags\n\
|
||||
ldrb r1, [r0]\n\
|
||||
|
|
@ -1650,19 +1650,19 @@ void OpponentHandlecmd20(void)
|
|||
bl GetBattlerAtPosition\n\
|
||||
strb r0, [r5]\n\
|
||||
._572:\n\
|
||||
ldr r0, ._574 + 4 @ gBankTarget\n\
|
||||
ldr r0, ._574 + 4 @ gBattlerTarget\n\
|
||||
ldrb r2, [r0]\n\
|
||||
lsl r2, r2, #0x8\n\
|
||||
orr r2, r2, r4\n\
|
||||
mov r0, #0x1\n\
|
||||
mov r1, #0xa\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
b ._573\n\
|
||||
._575:\n\
|
||||
.align 2, 0\n\
|
||||
._574:\n\
|
||||
.word gBattleMoves\n\
|
||||
.word gBankTarget\n\
|
||||
.word gBattlerTarget\n\
|
||||
.word gAbsentBattlerFlags\n\
|
||||
.word gBitTable\n\
|
||||
._563:\n\
|
||||
|
|
@ -1716,7 +1716,7 @@ void OpponentHandlecmd20(void)
|
|||
orr r2, r2, r4\n\
|
||||
mov r0, #0x1\n\
|
||||
mov r1, #0xa\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
b ._582\n\
|
||||
._584:\n\
|
||||
.align 2, 0\n\
|
||||
|
|
@ -1731,7 +1731,7 @@ void OpponentHandlecmd20(void)
|
|||
orr r2, r2, r4\n\
|
||||
mov r0, #0x1\n\
|
||||
mov r1, #0xa\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
._582:\n\
|
||||
bl OpponentBufferExecCompleted\n\
|
||||
._562:\n\
|
||||
|
|
@ -1758,22 +1758,22 @@ void OpponentHandlecmd20(void)
|
|||
switch (r4)
|
||||
{
|
||||
case 5:
|
||||
Emitcmd33(1, 4, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 4, 0);
|
||||
break;
|
||||
case 4:
|
||||
Emitcmd33(1, 3, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 3, 0);
|
||||
break;
|
||||
default:
|
||||
if (gBattleMoves[r5->moves[r4]].target & 0x12)
|
||||
gBankTarget = gActiveBattler;
|
||||
gBattlerTarget = gActiveBattler;
|
||||
if (gBattleMoves[r5->moves[r4]].target & 8)
|
||||
{
|
||||
gBankTarget = GetBattlerAtPosition(0);
|
||||
if (gAbsentBattlerFlags & gBitTable[gBankTarget])
|
||||
gBankTarget = GetBattlerAtPosition(2);
|
||||
gBattlerTarget = GetBattlerAtPosition(0);
|
||||
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
|
||||
gBattlerTarget = GetBattlerAtPosition(2);
|
||||
}
|
||||
r4 |= gBankTarget << 8;
|
||||
Emitcmd33(1, 10, r4);
|
||||
r4 |= gBattlerTarget << 8;
|
||||
BtlController_EmitTwoReturnValues(1, 10, r4);
|
||||
break;
|
||||
}
|
||||
OpponentBufferExecCompleted();
|
||||
|
|
@ -1792,19 +1792,19 @@ void OpponentHandlecmd20(void)
|
|||
if (gBattleMoves[r2].target & 0x12)
|
||||
{
|
||||
r4 |= gActiveBattler << 8;
|
||||
Emitcmd33(1, 10, r4);
|
||||
BtlController_EmitTwoReturnValues(1, 10, r4);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
u16 r2 = GetBattlerAtPosition(Random() & 2) << 8;
|
||||
|
||||
Emitcmd33(1, 10, r4 | r2);
|
||||
BtlController_EmitTwoReturnValues(1, 10, r4 | r2);
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 r2 = GetBattlerAtPosition(0) << 8;
|
||||
|
||||
Emitcmd33(1, 10, r4 | r2);
|
||||
BtlController_EmitTwoReturnValues(1, 10, r4 | r2);
|
||||
}
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
|
@ -1847,7 +1847,7 @@ _08035468:\n\
|
|||
movs r1, 0x3\n\
|
||||
_0803546C:\n\
|
||||
movs r2, 0\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
b _080354E0\n\
|
||||
_08035474:\n\
|
||||
ldr r3, _080354E8 @ =gBattleMoves\n\
|
||||
|
|
@ -1863,7 +1863,7 @@ _08035474:\n\
|
|||
ands r0, r1\n\
|
||||
cmp r0, 0\n\
|
||||
beq _08035494\n\
|
||||
ldr r1, _080354EC @ =gBankTarget\n\
|
||||
ldr r1, _080354EC @ =gBattlerTarget\n\
|
||||
ldrb r0, [r6]\n\
|
||||
strb r0, [r1]\n\
|
||||
_08035494:\n\
|
||||
|
|
@ -1879,7 +1879,7 @@ _08035494:\n\
|
|||
beq _080354CE\n\
|
||||
movs r0, 0\n\
|
||||
bl GetBattlerAtPosition\n\
|
||||
ldr r5, _080354EC @ =gBankTarget\n\
|
||||
ldr r5, _080354EC @ =gBattlerTarget\n\
|
||||
strb r0, [r5]\n\
|
||||
ldr r0, _080354F0 @ =gAbsentBattlerFlags\n\
|
||||
ldrb r1, [r0]\n\
|
||||
|
|
@ -1895,20 +1895,20 @@ _08035494:\n\
|
|||
bl GetBattlerAtPosition\n\
|
||||
strb r0, [r5]\n\
|
||||
_080354CE:\n\
|
||||
ldr r0, _080354EC @ =gBankTarget\n\
|
||||
ldr r0, _080354EC @ =gBattlerTarget\n\
|
||||
ldrb r0, [r0]\n\
|
||||
lsls r0, 8\n\
|
||||
orrs r4, r0\n\
|
||||
movs r0, 0x1\n\
|
||||
movs r1, 0xA\n\
|
||||
adds r2, r4, 0\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
_080354E0:\n\
|
||||
bl OpponentBufferExecCompleted\n\
|
||||
b _0803558A\n\
|
||||
.align 2, 0\n\
|
||||
_080354E8: .4byte gBattleMoves\n\
|
||||
_080354EC: .4byte gBankTarget\n\
|
||||
_080354EC: .4byte gBattlerTarget\n\
|
||||
_080354F0: .4byte gAbsentBattlerFlags\n\
|
||||
_080354F4: .4byte gBitTable\n\
|
||||
_080354F8:\n\
|
||||
|
|
@ -1939,7 +1939,7 @@ _080354FA:\n\
|
|||
movs r0, 0x1\n\
|
||||
movs r1, 0xA\n\
|
||||
adds r2, r4, 0\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
b _08035586\n\
|
||||
.align 2, 0\n\
|
||||
_08035534: .4byte gBattleMoves\n\
|
||||
|
|
@ -1964,7 +1964,7 @@ _0803553C:\n\
|
|||
orrs r2, r4\n\
|
||||
movs r0, 0x1\n\
|
||||
movs r1, 0xA\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
b _08035586\n\
|
||||
.align 2, 0\n\
|
||||
_0803556C: .4byte gBattleTypeFlags\n\
|
||||
|
|
@ -1977,7 +1977,7 @@ _08035570:\n\
|
|||
orrs r2, r4\n\
|
||||
movs r0, 0x1\n\
|
||||
movs r1, 0xA\n\
|
||||
bl Emitcmd33\n\
|
||||
bl BtlController_EmitTwoReturnValues\n\
|
||||
_08035586:\n\
|
||||
bl OpponentBufferExecCompleted\n\
|
||||
_0803558A:\n\
|
||||
|
|
@ -1992,7 +1992,7 @@ _0803558A:\n\
|
|||
void OpponentHandleOpenBag(void)
|
||||
{
|
||||
// What is this?
|
||||
Emitcmd35(1, ewram160D4(gActiveBattler));
|
||||
BtlController_EmitOneReturnValue(1, ewram160D4(gActiveBattler));
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -2033,7 +2033,7 @@ void OpponentHandlecmd22(void)
|
|||
ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
|
||||
}
|
||||
ewram16068arr(gActiveBattler) = r4;
|
||||
Emitcmd34(1, r4, 0);
|
||||
BtlController_EmitChosenMonReturnValue(1, r4, 0);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -2053,15 +2053,15 @@ void OpponentHandleHealthBarUpdate(void)
|
|||
u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
u32 hp = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
|
||||
|
||||
sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, hp, r7);
|
||||
sub_8043D84(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, hp, r7);
|
||||
}
|
||||
else
|
||||
{
|
||||
u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
|
||||
sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
|
||||
sub_8043D84(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, r7);
|
||||
}
|
||||
gBattleBankFunc[gActiveBattler] = sub_80330C8;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_80330C8;
|
||||
}
|
||||
|
||||
void OpponentHandleExpBarUpdate(void)
|
||||
|
|
@ -2073,9 +2073,9 @@ void OpponentHandleStatusIconUpdate(void)
|
|||
{
|
||||
if (mplay_80342A4(gActiveBattler) == 0)
|
||||
{
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], 9);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], 9);
|
||||
ewram17810[gActiveBattler].unk0_4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8033494;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8033494;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2089,7 +2089,7 @@ void OpponentHandleStatusAnimation(void)
|
|||
| (gBattleBufferA[gActiveBattler][3] << 8)
|
||||
| (gBattleBufferA[gActiveBattler][4] << 16)
|
||||
| (gBattleBufferA[gActiveBattler][5] << 24));
|
||||
gBattleBankFunc[gActiveBattler] = sub_8033494;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8033494;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2164,16 +2164,16 @@ void OpponentHandlecmd40(void)
|
|||
|
||||
void OpponentHandleHitAnimation(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
|
||||
{
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
{
|
||||
gDoingBattleAnim = TRUE;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
sub_8047858(gActiveBattler);
|
||||
gBattleBankFunc[gActiveBattler] = bx_blink_t7;
|
||||
gBattlerControllerFuncs[gActiveBattler] = bx_blink_t7;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2219,18 +2219,18 @@ void OpponentHandleTrainerBallThrow(void)
|
|||
{
|
||||
u8 taskId;
|
||||
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8035C10);
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8035C10);
|
||||
taskId = CreateTask(sub_8035C44, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
if (ewram17810[gActiveBattler].unk0_0)
|
||||
gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
|
||||
ewram17840.unk9_0 = 1;
|
||||
gBattleBankFunc[gActiveBattler] = nullsub_45;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_45;
|
||||
}
|
||||
|
||||
void sub_8035C10(struct Sprite *sprite)
|
||||
|
|
@ -2261,7 +2261,7 @@ void sub_8035C44(u8 taskId)
|
|||
sub_803495C(gActiveBattler, 0);
|
||||
gActiveBattler ^= 2;
|
||||
}
|
||||
gBattleBankFunc[gActiveBattler] = sub_8032E2C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8032E2C;
|
||||
gActiveBattler = r9;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
|
@ -2295,7 +2295,7 @@ void OpponentHandlecmd48(void)
|
|||
ewram17810[gActiveBattler].unk5 = 0;
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
ewram17810[gActiveBattler].unk5 = 0x5D;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8035E2C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8035E2C;
|
||||
}
|
||||
|
||||
void sub_8035E2C(void)
|
||||
|
|
@ -2323,7 +2323,7 @@ void OpponentHandleSpriteInvisibility(void)
|
|||
{
|
||||
if (IsBankSpritePresent(gActiveBattler) != 0)
|
||||
{
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
|
||||
sub_8031F88(gActiveBattler);
|
||||
}
|
||||
OpponentBufferExecCompleted();
|
||||
|
|
@ -2339,7 +2339,7 @@ void OpponentHandleBattleAnimation(void)
|
|||
if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, r3, r4) != 0)
|
||||
OpponentBufferExecCompleted();
|
||||
else
|
||||
gBattleBankFunc[gActiveBattler] = sub_80334C0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_80334C0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -23,17 +23,17 @@ extern const u8 BattleText_PlayerMenu[];
|
|||
extern u8 gActiveBattler;
|
||||
extern const u8 BattleText_MenuOptionsSafari[];
|
||||
|
||||
extern void *gBattleBankFunc[];
|
||||
extern void *gBattlerControllerFuncs[];
|
||||
extern u8 gBattleBufferA[][0x200];
|
||||
extern bool8 gDoingBattleAnim;
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern struct SpriteTemplate gUnknown_02024E8C;
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u32 gBattleExecBuffer;
|
||||
extern u32 gBattleControllerExecFlags;
|
||||
extern u16 gSpecialVar_ItemId;
|
||||
extern MainCallback gPreBattleCallback1;
|
||||
extern u8 gBankInMenu;
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u16 gUnknown_02024DE8;
|
||||
extern u8 gBattleOutcome;
|
||||
|
|
@ -192,12 +192,12 @@ void unref_sub_812B464(void)
|
|||
|
||||
void SetBankFuncToSafariBufferRunCommand(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = SafariBufferRunCommand;
|
||||
gBattlerControllerFuncs[gActiveBattler] = SafariBufferRunCommand;
|
||||
}
|
||||
|
||||
void SafariBufferRunCommand(void)
|
||||
{
|
||||
if (gBattleExecBuffer & gBitTable[gActiveBattler])
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] < 0x39)
|
||||
gSafariBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
|
|
@ -217,16 +217,16 @@ void bx_battle_menu_t6_2(void)
|
|||
switch (gActionSelectionCursor[gActiveBattler])
|
||||
{
|
||||
case 0:
|
||||
Emitcmd33(1, 5, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 5, 0);
|
||||
break;
|
||||
case 1:
|
||||
Emitcmd33(1, 6, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 6, 0);
|
||||
break;
|
||||
case 2:
|
||||
Emitcmd33(1, 7, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 7, 0);
|
||||
break;
|
||||
case 3:
|
||||
Emitcmd33(1, 8, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 8, 0);
|
||||
break;
|
||||
}
|
||||
SafariBufferExecCompleted();
|
||||
|
|
@ -286,7 +286,7 @@ void bx_battle_menu_t6_2(void)
|
|||
|
||||
void sub_812B65C(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -316,7 +316,7 @@ void sub_812B724(void)
|
|||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = sub_812B758;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_812B758;
|
||||
sub_810BADC();
|
||||
}
|
||||
}
|
||||
|
|
@ -325,7 +325,7 @@ void sub_812B758(void)
|
|||
{
|
||||
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
|
||||
{
|
||||
Emitcmd35(1, gSpecialVar_ItemId);
|
||||
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -338,7 +338,7 @@ void sub_812B794(void)
|
|||
|
||||
void SafariBufferExecCompleted(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = SafariBufferRunCommand;
|
||||
gBattlerControllerFuncs[gActiveBattler] = SafariBufferRunCommand;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
u8 playerId = GetMultiplayerId();
|
||||
|
|
@ -348,7 +348,7 @@ void SafariBufferExecCompleted(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
gBattleExecBuffer &= ~gBitTable[gActiveBattler];
|
||||
gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -397,16 +397,16 @@ void SafariHandleTrainerThrow(void)
|
|||
{
|
||||
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBattler);
|
||||
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
|
||||
30);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_812B65C;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_812B65C;
|
||||
}
|
||||
|
||||
void SafariHandleTrainerSlide(void)
|
||||
|
|
@ -434,7 +434,7 @@ void SafariHandlecmd12(void)
|
|||
ewram17840.unk8 = 4;
|
||||
gDoingBattleAnim = 1;
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
|
||||
gBattleBankFunc[gActiveBattler] = bx_wait_t6;
|
||||
gBattlerControllerFuncs[gActiveBattler] = bx_wait_t6;
|
||||
}
|
||||
|
||||
void SafariHandleBallThrow(void)
|
||||
|
|
@ -444,7 +444,7 @@ void SafariHandleBallThrow(void)
|
|||
ewram17840.unk8 = var;
|
||||
gDoingBattleAnim = 1;
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
|
||||
gBattleBankFunc[gActiveBattler] = bx_wait_t6;
|
||||
gBattlerControllerFuncs[gActiveBattler] = bx_wait_t6;
|
||||
}
|
||||
|
||||
// TODO: spell Pause correctly
|
||||
|
|
@ -464,7 +464,7 @@ void SafariHandlePrintString(void)
|
|||
gBattle_BG0_Y = 0;
|
||||
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gBattleBankFunc[gActiveBattler] = sub_812B694;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_812B694;
|
||||
}
|
||||
|
||||
void SafariHandlePrintStringPlayerOnly(void)
|
||||
|
|
@ -484,7 +484,7 @@ void SafariHandlecmd18(void)
|
|||
gUnknown_03004210.paletteNum = 0;
|
||||
Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
|
||||
Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
|
||||
gBattleBankFunc[gActiveBattler] = bx_battle_menu_t6_2;
|
||||
gBattlerControllerFuncs[gActiveBattler] = bx_battle_menu_t6_2;
|
||||
|
||||
Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35);
|
||||
Text_PrintWindow8002F44(&gUnknown_03004210);
|
||||
|
|
@ -494,7 +494,7 @@ void SafariHandlecmd18(void)
|
|||
nullsub_8(i);
|
||||
|
||||
sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
|
||||
StrCpyDecodeToDisplayedStringBattle(BattleText_PlayerMenu);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(BattleText_PlayerMenu);
|
||||
|
||||
Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
|
||||
Text_PrintWindow8002F44(&gUnknown_03004210);
|
||||
|
|
@ -513,7 +513,7 @@ void SafariHandlecmd20(void)
|
|||
void SafariHandleOpenBag(void)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
|
||||
gBattleBankFunc[gActiveBattler] = sub_812B724;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_812B724;
|
||||
gBankInMenu = gActiveBattler;
|
||||
}
|
||||
|
||||
|
|
@ -539,7 +539,7 @@ void SafariHandleExpBarUpdate(void)
|
|||
|
||||
void SafariHandleStatusIconUpdate(void)
|
||||
{
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 11);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 11);
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -658,9 +658,9 @@ void SafariHandleIntroSlide(void)
|
|||
|
||||
void SafariHandleTrainerBallThrow(void)
|
||||
{
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 10);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 10);
|
||||
sub_804777C(gActiveBattler);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -692,7 +692,7 @@ void SafariHandleBattleAnimation(void)
|
|||
if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, r3, r4) != 0)
|
||||
SafariBufferExecCompleted();
|
||||
else
|
||||
gBattleBankFunc[gActiveBattler] = sub_812B794;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_812B794;
|
||||
}
|
||||
|
||||
void SafariHandleLinkStandbyMsg(void)
|
||||
|
|
@ -712,7 +712,7 @@ void SafariHandlecmd55(void)
|
|||
BeginFastPaletteFade(3);
|
||||
SafariBufferExecCompleted();
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
|
||||
gBattleBankFunc[gActiveBattler] = sub_812B6AC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_812B6AC;
|
||||
}
|
||||
|
||||
void SafariHandlecmd56(void)
|
||||
|
|
|
|||
|
|
@ -29,14 +29,14 @@ struct MovePpInfo
|
|||
};
|
||||
|
||||
extern u8 gActiveBattler;
|
||||
extern void (*gBattleBankFunc[])(void);
|
||||
extern u32 gBattleExecBuffer;
|
||||
extern void (*gBattlerControllerFuncs[])(void);
|
||||
extern u32 gBattleControllerExecFlags;
|
||||
extern u8 gBattleBufferA[][0x200];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern MainCallback gPreBattleCallback1;
|
||||
extern bool8 gDoingBattleAnim;
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u16 gAnimMovePower;
|
||||
extern s32 gAnimMoveDmg;
|
||||
|
|
@ -59,8 +59,8 @@ extern const u8 BattleText_WallyMenu[];
|
|||
extern const u8 BattleText_MenuOptions[];
|
||||
|
||||
// TODO: include rom3.h when my other PR gets merged
|
||||
extern void Emitcmd33(u8, u8, u16);
|
||||
extern void Emitcmd35(u8, u16);
|
||||
extern void BtlController_EmitTwoReturnValues(u8, u8, u16);
|
||||
extern void BtlController_EmitOneReturnValue(u8, u16);
|
||||
|
||||
extern void nullsub_14(void);
|
||||
extern void PrepareBagForWallyTutorial(void);
|
||||
|
|
@ -74,7 +74,7 @@ extern void LoadPlayerTrainerBankSprite();
|
|||
extern u8 GetBattlerPosition(u8);
|
||||
extern void sub_80313A0(struct Sprite *);
|
||||
extern u8 GetBattlerAtPosition(u8);
|
||||
extern u8 sub_8031720();
|
||||
extern u8 IsMoveWithoutAnimation();
|
||||
extern void DoMoveAnim();
|
||||
extern void sub_80326EC();
|
||||
extern void sub_8031F24(void);
|
||||
|
|
@ -116,10 +116,10 @@ void WallyHandleReturnPokeToBall(void);
|
|||
void WallyHandleTrainerThrow(void);
|
||||
void WallyHandleTrainerSlide(void);
|
||||
void WallyHandleTrainerSlideBack(void);
|
||||
void WallyHandlecmd10(void);
|
||||
void WallyHandlecmd11(void);
|
||||
void WallyHandlecmd12(void);
|
||||
void WallyHandleBallThrow(void);
|
||||
void WallyHandleFaintAnimation(void);
|
||||
void WallyHandlePaletteFade(void);
|
||||
void WallyHandleSuccessBallThrowAnim(void);
|
||||
void WallyHandleBallThrowAnim(void);
|
||||
void WallyHandlePuase(void);
|
||||
void WallyHandleMoveAnimation(void);
|
||||
void WallyHandlePrintString(void);
|
||||
|
|
@ -179,10 +179,10 @@ static const BattleBufferCmd gWallyBufferCommands[] =
|
|||
WallyHandleTrainerThrow,
|
||||
WallyHandleTrainerSlide,
|
||||
WallyHandleTrainerSlideBack,
|
||||
WallyHandlecmd10,
|
||||
WallyHandlecmd11,
|
||||
WallyHandlecmd12,
|
||||
WallyHandleBallThrow,
|
||||
WallyHandleFaintAnimation,
|
||||
WallyHandlePaletteFade,
|
||||
WallyHandleSuccessBallThrowAnim,
|
||||
WallyHandleBallThrowAnim,
|
||||
WallyHandlePuase,
|
||||
WallyHandleMoveAnimation,
|
||||
WallyHandlePrintString,
|
||||
|
|
@ -236,7 +236,7 @@ void unref_sub_8137220(void)
|
|||
|
||||
void SetBankFuncToWallyBufferRunCommand(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = WallyBufferRunCommand;
|
||||
gBattlerControllerFuncs[gActiveBattler] = WallyBufferRunCommand;
|
||||
ewram160A8 = 0;
|
||||
ewram160A9 = 0;
|
||||
ewram160AA = 0;
|
||||
|
|
@ -245,7 +245,7 @@ void SetBankFuncToWallyBufferRunCommand(void)
|
|||
|
||||
void WallyBufferRunCommand(void)
|
||||
{
|
||||
if (gBattleExecBuffer & gBitTable[gActiveBattler])
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] < 0x39)
|
||||
gWallyBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
|
|
@ -269,7 +269,7 @@ void sub_81372BC(void)
|
|||
if (r4 == 0)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
Emitcmd33(1, 0, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 0, 0);
|
||||
WallyBufferExecCompleted();
|
||||
ewram160A8++;
|
||||
ewram160A9 = r4;
|
||||
|
|
@ -281,7 +281,7 @@ void sub_81372BC(void)
|
|||
if (r4 == 0)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
Emitcmd33(1, 0, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 0, 0);
|
||||
WallyBufferExecCompleted();
|
||||
ewram160A8++;
|
||||
ewram160A9 = r4;
|
||||
|
|
@ -292,7 +292,7 @@ void sub_81372BC(void)
|
|||
r4 = --ewram160AA;
|
||||
if (r4 == 0)
|
||||
{
|
||||
Emitcmd33(1, 9, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 9, 0);
|
||||
WallyBufferExecCompleted();
|
||||
ewram160A8++;
|
||||
ewram160A9 = r4;
|
||||
|
|
@ -314,7 +314,7 @@ void sub_81372BC(void)
|
|||
{
|
||||
PlaySE(SE_SELECT);
|
||||
DestroyMenuCursor();
|
||||
Emitcmd33(1, 1, 0);
|
||||
BtlController_EmitTwoReturnValues(1, 1, 0);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
break;
|
||||
|
|
@ -323,7 +323,7 @@ void sub_81372BC(void)
|
|||
|
||||
void sub_813741C(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -343,7 +343,7 @@ void sub_813746C(void)
|
|||
}
|
||||
}
|
||||
|
||||
void bx_wait_t5(void)
|
||||
void CompleteOnFinishedAnimation(void)
|
||||
{
|
||||
if (!gDoingBattleAnim)
|
||||
WallyBufferExecCompleted();
|
||||
|
|
@ -353,7 +353,7 @@ void sub_81374C4(void)
|
|||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = sub_81374FC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81374FC;
|
||||
nullsub_14();
|
||||
PrepareBagForWallyTutorial();
|
||||
}
|
||||
|
|
@ -364,7 +364,7 @@ void sub_81374FC(void)
|
|||
if (gMain.callback2 == BattleMainCB2
|
||||
&& !gPaletteFade.active)
|
||||
{
|
||||
Emitcmd35(1, gSpecialVar_ItemId);
|
||||
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -382,16 +382,16 @@ void sub_8137538(void)
|
|||
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
{
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler ^ 2], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler ^ 2], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], 0);
|
||||
sub_804777C(gActiveBattler ^ 2);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler ^ 2]);
|
||||
}
|
||||
DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
|
||||
sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
|
||||
sub_804777C(gActiveBattler);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
ewram17840.unk9_0 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_81376B8;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81376B8;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -399,7 +399,7 @@ void sub_81376B8(void)
|
|||
{
|
||||
bool8 r4 = FALSE;
|
||||
|
||||
if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
r4 = TRUE;
|
||||
if (r4 && ewram17810[gActiveBattler].unk1_0 && ewram17810[gActiveBattler ^ 2].unk1_0)
|
||||
{
|
||||
|
|
@ -419,11 +419,11 @@ void sub_81377B0(void)
|
|||
{
|
||||
s16 r4;
|
||||
|
||||
r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
|
||||
sub_8043DFC(gHealthboxIDs[gActiveBattler]);
|
||||
r4 = sub_8045C78(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], 0, 0);
|
||||
sub_8043DFC(gHealthboxSpriteIds[gActiveBattler]);
|
||||
if (r4 != -1)
|
||||
{
|
||||
sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
|
||||
sub_80440EC(gHealthboxSpriteIds[gActiveBattler], r4, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -434,7 +434,7 @@ void sub_81377B0(void)
|
|||
|
||||
void bx_blink_t5(void)
|
||||
{
|
||||
u8 spriteId = gBankSpriteIds[gActiveBattler];
|
||||
u8 spriteId = gBattlerSpriteIds[gActiveBattler];
|
||||
|
||||
if (gSprites[spriteId].data[1] == 32)
|
||||
{
|
||||
|
|
@ -455,17 +455,17 @@ void sub_813789C(void)
|
|||
{
|
||||
if (!ewram17810[gActiveBattler].unk0_6)
|
||||
{
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
||||
// Duplicate of sub_813741C
|
||||
void sub_8137908(void)
|
||||
void CompleteOnBankSpriteCallbackDummy2(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -477,7 +477,7 @@ void sub_8137940(void)
|
|||
|
||||
void WallyBufferExecCompleted(void)
|
||||
{
|
||||
gBattleBankFunc[gActiveBattler] = WallyBufferRunCommand;
|
||||
gBattlerControllerFuncs[gActiveBattler] = WallyBufferRunCommand;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
u8 multiplayerId = GetMultiplayerId();
|
||||
|
|
@ -487,7 +487,7 @@ void WallyBufferExecCompleted(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
gBattleExecBuffer &= ~gBitTable[gActiveBattler];
|
||||
gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -518,7 +518,7 @@ void WallyHandleGetAttributes(void)
|
|||
r4 >>= 1;
|
||||
}
|
||||
}
|
||||
Emitcmd29(1, r6, arr);
|
||||
BtlController_EmitDataTransfer(1, r6, arr);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
|
@ -1087,13 +1087,13 @@ void WallyHandleReturnPokeToBall(void)
|
|||
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||
{
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 1);
|
||||
gBattleBankFunc[gActiveBattler] = sub_813789C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_813789C;
|
||||
}
|
||||
else
|
||||
{
|
||||
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxIDs[gActiveBattler]);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[gActiveBattler]);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
|
@ -1102,30 +1102,30 @@ void WallyHandleTrainerThrow(void)
|
|||
{
|
||||
LoadPlayerTrainerBankSprite(2, gActiveBattler);
|
||||
GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
|
||||
30);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_813741C;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_813741C;
|
||||
}
|
||||
|
||||
void WallyHandleTrainerSlide(void)
|
||||
{
|
||||
LoadPlayerTrainerBankSprite(2, gActiveBattler);
|
||||
GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(gActiveBattler));
|
||||
gBankSpriteIds[gActiveBattler] = CreateSprite(
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
|
||||
30);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -96;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_8137908;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2;
|
||||
}
|
||||
|
||||
void WallyHandleTrainerSlideBack(void)
|
||||
|
|
@ -1133,32 +1133,32 @@ void WallyHandleTrainerSlideBack(void)
|
|||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
void WallyHandlecmd10(void)
|
||||
void WallyHandleFaintAnimation(void)
|
||||
{
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
void WallyHandlecmd11(void)
|
||||
void WallyHandlePaletteFade(void)
|
||||
{
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
void WallyHandlecmd12(void)
|
||||
void WallyHandleSuccessBallThrowAnim(void)
|
||||
{
|
||||
ewram17840.unk8 = 4;
|
||||
gDoingBattleAnim = TRUE;
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
|
||||
gBattleBankFunc[gActiveBattler] = bx_wait_t5;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedAnimation;
|
||||
}
|
||||
|
||||
void WallyHandleBallThrow(void)
|
||||
void WallyHandleBallThrowAnim(void)
|
||||
{
|
||||
u8 val = gBattleBufferA[gActiveBattler][1];
|
||||
u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1];
|
||||
|
||||
ewram17840.unk8 = val;
|
||||
ewram17840.unk8 = ballThrowCaseId;
|
||||
gDoingBattleAnim = TRUE;
|
||||
move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
|
||||
gBattleBankFunc[gActiveBattler] = bx_wait_t5;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedAnimation;
|
||||
}
|
||||
|
||||
void WallyHandlePuase(void)
|
||||
|
|
@ -1177,15 +1177,15 @@ void WallyHandleMoveAnimation(void)
|
|||
gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
|
||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
|
||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||
if (sub_8031720(move, gAnimMoveTurn) != 0)
|
||||
if (IsMoveWithoutAnimation(move, gAnimMoveTurn) != 0)
|
||||
{
|
||||
// Dead code. sub_8031720 always returns 0.
|
||||
// Dead code. IsMoveWithoutAnimation always returns 0.
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
{
|
||||
ewram17810[gActiveBattler].unk4 = 0;
|
||||
gBattleBankFunc[gActiveBattler] = sub_81390D0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81390D0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1245,7 +1245,7 @@ void WallyHandlePrintString(void)
|
|||
DestroyMenuCursor();
|
||||
BufferStringBattle(*ptr);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8137454;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8137454;
|
||||
}
|
||||
|
||||
void WallyHandlePrintStringPlayerOnly(void)
|
||||
|
|
@ -1265,14 +1265,14 @@ void WallyHandlecmd18(void)
|
|||
gUnknown_03004210.paletteNum = 0;
|
||||
Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
|
||||
Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
|
||||
gBattleBankFunc[gActiveBattler] = sub_81372BC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81372BC;
|
||||
Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
|
||||
Text_PrintWindow8002F44(&gUnknown_03004210);
|
||||
MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
|
||||
for (i = 0; i < 4; i++)
|
||||
nullsub_8(i);
|
||||
sub_802E3E4(0, 0);
|
||||
StrCpyDecodeToDisplayedStringBattle(BattleText_WallyMenu);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(BattleText_WallyMenu);
|
||||
#ifdef ENGLISH
|
||||
Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35);
|
||||
#else
|
||||
|
|
@ -1301,7 +1301,7 @@ void WallyHandlecmd20(void)
|
|||
{
|
||||
DestroyMenuCursor();
|
||||
PlaySE(SE_SELECT);
|
||||
Emitcmd33(1, 10, 256);
|
||||
BtlController_EmitTwoReturnValues(1, 10, 256);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
break;
|
||||
|
|
@ -1311,7 +1311,7 @@ void WallyHandlecmd20(void)
|
|||
void WallyHandleOpenBag(void)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
|
||||
gBattleBankFunc[gActiveBattler] = sub_81374C4;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81374C4;
|
||||
gBankInMenu = gActiveBattler;
|
||||
}
|
||||
|
||||
|
|
@ -1336,16 +1336,16 @@ void WallyHandleHealthBarUpdate(void)
|
|||
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
|
||||
|
||||
sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, curHP, r7);
|
||||
sub_8043D84(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, r7);
|
||||
}
|
||||
else
|
||||
{
|
||||
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
|
||||
sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
|
||||
sub_80440EC(gHealthboxIDs[gActiveBattler], 0, 0);
|
||||
sub_8043D84(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, r7);
|
||||
sub_80440EC(gHealthboxSpriteIds[gActiveBattler], 0, 0);
|
||||
}
|
||||
gBattleBankFunc[gActiveBattler] = sub_81377B0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81377B0;
|
||||
}
|
||||
|
||||
void WallyHandleExpBarUpdate(void)
|
||||
|
|
@ -1430,16 +1430,16 @@ void WallyHandlecmd40(void)
|
|||
|
||||
void WallyHandleHitAnimation(void)
|
||||
{
|
||||
if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
|
||||
{
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
{
|
||||
gDoingBattleAnim = 1;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
sub_8047858(gActiveBattler);
|
||||
gBattleBankFunc[gActiveBattler] = bx_blink_t5;
|
||||
gBattlerControllerFuncs[gActiveBattler] = bx_blink_t5;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1478,23 +1478,23 @@ void WallyHandleTrainerBallThrow(void)
|
|||
u8 paletteNum;
|
||||
u8 taskId;
|
||||
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
|
||||
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8030E38);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
paletteNum = AllocSpritePalette(0xD6F8);
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32);
|
||||
gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||
taskId = CreateTask(sub_8139A2C, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
if (ewram17810[gActiveBattler].unk0_0)
|
||||
gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
|
||||
ewram17810[4].unk9 |= 1;
|
||||
gBattleBankFunc[gActiveBattler] = nullsub_91;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_91;
|
||||
}
|
||||
|
||||
void sub_81398BC(u8 bank)
|
||||
|
|
@ -1506,18 +1506,18 @@ void sub_81398BC(u8 bank)
|
|||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
|
||||
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
|
||||
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(bank));
|
||||
gBankSpriteIds[bank] = CreateSprite(
|
||||
gBattlerSpriteIds[bank] = CreateSprite(
|
||||
&gUnknown_02024E8C,
|
||||
GetBattlerSpriteCoord(bank, 2),
|
||||
sub_8077F68(bank),
|
||||
GetBattlerSubpriority(bank));
|
||||
gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank];
|
||||
gSprites[gBankSpriteIds[bank]].data[0] = bank;
|
||||
gSprites[gBankSpriteIds[bank]].data[2] = species;
|
||||
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
|
||||
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
|
||||
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gUnknown_0300434C[bank]].data[1] = gBattlerSpriteIds[bank];
|
||||
gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gUnknown_0300434C[bank]].data[0] = StartSendOutMonAnimation(0, 0xFF);
|
||||
}
|
||||
|
||||
|
|
@ -1534,7 +1534,7 @@ void sub_8139A2C(u8 taskId)
|
|||
gActiveBattler = gTasks[taskId].data[0];
|
||||
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
|
||||
sub_81398BC(gActiveBattler);
|
||||
gBattleBankFunc[gActiveBattler] = sub_8137538;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8137538;
|
||||
gActiveBattler = savedActiveBank;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
|
@ -1577,7 +1577,7 @@ void WallyHandleBattleAnimation(void)
|
|||
if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, val2, val))
|
||||
WallyBufferExecCompleted();
|
||||
else
|
||||
gBattleBankFunc[gActiveBattler] = sub_8137940;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8137940;
|
||||
}
|
||||
|
||||
void WallyHandleLinkStandbyMsg(void)
|
||||
|
|
@ -1597,7 +1597,7 @@ void WallyHandlecmd55(void)
|
|||
BeginFastPaletteFade(3);
|
||||
WallyBufferExecCompleted();
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
|
||||
gBattleBankFunc[gActiveBattler] = sub_813746C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_813746C;
|
||||
}
|
||||
|
||||
void WallyHandlecmd56(void)
|
||||
|
|
|
|||
|
|
@ -28,13 +28,13 @@ extern u8 gActiveBattler;
|
|||
extern u8 gBattlersCount;
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gBanksBySide[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u16 gUnknown_02024DE8;
|
||||
extern u8 gDoingBattleAnim;
|
||||
extern u32 gTransformedPersonalities[];
|
||||
extern struct Window gUnknown_03004210;
|
||||
extern void (*gBattleBankFunc[])(void);
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern void (*gBattlerControllerFuncs[])(void);
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
extern u8 gUnknown_0300434C[];
|
||||
extern struct MusicPlayerInfo gMPlay_SE1;
|
||||
extern struct MusicPlayerInfo gMPlay_SE2;
|
||||
|
|
@ -198,9 +198,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
|
|||
}
|
||||
if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
|
||||
return TRUE;
|
||||
if (ewram17800[a].substituteSprite && d == 2 && gSprites[gBankSpriteIds[a]].invisible)
|
||||
if (ewram17800[a].substituteSprite && d == 2 && gSprites[gBattlerSpriteIds[a]].invisible)
|
||||
{
|
||||
refresh_graphics_maybe(a, 1, gBankSpriteIds[a]);
|
||||
refresh_graphics_maybe(a, 1, gBattlerSpriteIds[a]);
|
||||
sub_80324E0(a);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -262,7 +262,7 @@ void sub_80316CC(u8 taskId)
|
|||
}
|
||||
}
|
||||
|
||||
u8 sub_8031720(int unused1, int unused2)
|
||||
u8 IsMoveWithoutAnimation(int unused1, int unused2)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -554,9 +554,9 @@ u8 battle_load_something(u8 *pState, u8 *b)
|
|||
break;
|
||||
case 3:
|
||||
if ((gBattleTypeFlags & 0x80) && *b == 0)
|
||||
gHealthboxIDs[*b] = battle_make_oam_safari_battle();
|
||||
gHealthboxSpriteIds[*b] = battle_make_oam_safari_battle();
|
||||
else
|
||||
gHealthboxIDs[*b] = battle_make_oam_normal_battle(*b);
|
||||
gHealthboxSpriteIds[*b] = battle_make_oam_normal_battle(*b);
|
||||
(*b)++;
|
||||
if (*b == gBattlersCount)
|
||||
{
|
||||
|
|
@ -567,9 +567,9 @@ u8 battle_load_something(u8 *pState, u8 *b)
|
|||
case 4:
|
||||
sub_8043F44(*b);
|
||||
if (gBanksBySide[*b] <= 1)
|
||||
nullsub_11(gHealthboxIDs[*b], 0);
|
||||
nullsub_11(gHealthboxSpriteIds[*b], 0);
|
||||
else
|
||||
nullsub_11(gHealthboxIDs[*b], 1);
|
||||
nullsub_11(gHealthboxSpriteIds[*b], 1);
|
||||
(*b)++;
|
||||
if (*b == gBattlersCount)
|
||||
{
|
||||
|
|
@ -581,13 +581,13 @@ u8 battle_load_something(u8 *pState, u8 *b)
|
|||
if (GetBattlerSide(*b) == 0)
|
||||
{
|
||||
if (!(gBattleTypeFlags & 0x80))
|
||||
sub_8045A5C(gHealthboxIDs[*b], &gPlayerParty[gBattlerPartyIndexes[*b]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[*b], &gPlayerParty[gBattlerPartyIndexes[*b]], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8045A5C(gHealthboxIDs[*b], &gEnemyParty[gBattlerPartyIndexes[*b]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[*b], &gEnemyParty[gBattlerPartyIndexes[*b]], 0);
|
||||
}
|
||||
sub_8043DB0(gHealthboxIDs[*b]);
|
||||
sub_8043DB0(gHealthboxSpriteIds[*b]);
|
||||
(*b)++;
|
||||
if (*b == gBattlersCount)
|
||||
{
|
||||
|
|
@ -621,12 +621,12 @@ void sub_8031F24(void)
|
|||
s32 i;
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
ewram17800[i].invisible = gSprites[gBankSpriteIds[i]].invisible;
|
||||
ewram17800[i].invisible = gSprites[gBattlerSpriteIds[i]].invisible;
|
||||
}
|
||||
|
||||
void sub_8031F88(u8 a)
|
||||
{
|
||||
ewram17800[a].invisible = gSprites[gBankSpriteIds[a]].invisible;
|
||||
ewram17800[a].invisible = gSprites[gBattlerSpriteIds[a]].invisible;
|
||||
}
|
||||
|
||||
void sub_8031FC4(u8 a, u8 b, bool8 c)
|
||||
|
|
@ -640,7 +640,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
|
|||
|
||||
if (c)
|
||||
{
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[a]], ewram17840.unk0);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[a]], ewram17840.unk0);
|
||||
paletteOffset = 0x100 + a * 16;
|
||||
LoadPalette(ewram16400 + ewram17840.unk0 * 32, paletteOffset, 32);
|
||||
gBattleMonForms[a] = ewram17840.unk0;
|
||||
|
|
@ -649,7 +649,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
|
|||
BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
|
||||
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
|
||||
}
|
||||
gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
|
||||
gSprites[gBattlerSpriteIds[a]].pos1.y = sub_8077F68(a);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -702,7 +702,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
|
|||
gTransformedPersonalities[a]);
|
||||
}
|
||||
}
|
||||
DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gBankSpriteIds[a]].oam.tileNum * 32), 0x800);
|
||||
DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[a]].oam.tileNum * 32), 0x800);
|
||||
paletteOffset = 0x100 + a * 16;
|
||||
lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
|
||||
LZDecompressWram(lzPaletteData, gSharedMem);
|
||||
|
|
@ -721,8 +721,8 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
|
|||
ewram17800[a].transformedSpecies = species;
|
||||
gBattleMonForms[a] = gBattleMonForms[b];
|
||||
}
|
||||
gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
|
||||
gSprites[gBattlerSpriteIds[a]].pos1.y = sub_8077F68(a);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[a]], gBattleMonForms[a]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -862,15 +862,15 @@ void sub_80326EC(u8 a)
|
|||
{
|
||||
if (IsBankSpritePresent(i) != 0)
|
||||
{
|
||||
gSprites[gBankSpriteIds[i]].oam.affineMode = a;
|
||||
gSprites[gBattlerSpriteIds[i]].oam.affineMode = a;
|
||||
if (a == 0)
|
||||
{
|
||||
ewram17810[i].unk6 = gSprites[gBankSpriteIds[i]].oam.matrixNum;
|
||||
gSprites[gBankSpriteIds[i]].oam.matrixNum = 0;
|
||||
ewram17810[i].unk6 = gSprites[gBattlerSpriteIds[i]].oam.matrixNum;
|
||||
gSprites[gBattlerSpriteIds[i]].oam.matrixNum = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gBankSpriteIds[i]].oam.matrixNum = ewram17810[i].unk6;
|
||||
gSprites[gBattlerSpriteIds[i]].oam.matrixNum = ewram17810[i].unk6;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -896,7 +896,7 @@ void sub_80328A4(struct Sprite *sprite)
|
|||
{
|
||||
bool8 invisible = FALSE;
|
||||
u8 r4 = sprite->data[0];
|
||||
struct Sprite *r7 = &gSprites[gBankSpriteIds[r4]];
|
||||
struct Sprite *r7 = &gSprites[gBattlerSpriteIds[r4]];
|
||||
|
||||
if (!r7->inUse || IsBankSpritePresent(r4) == 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -426,7 +426,7 @@ extern u8 gDisplayedStringBattle[];
|
|||
extern u8 gBattlersCount;
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gBanksBySide[];
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
|
||||
extern u16 gBattleTypeFlags;
|
||||
|
||||
|
|
@ -957,7 +957,7 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority)
|
|||
u8 spriteId2;
|
||||
u8 spriteId3;
|
||||
|
||||
spriteId1 = gHealthboxIDs[i];
|
||||
spriteId1 = gHealthboxSpriteIds[i];
|
||||
spriteId2 = gSprites[spriteId1].oam.affineParam;
|
||||
spriteId3 = gSprites[spriteId1].data[5];
|
||||
gSprites[spriteId1].oam.priority = priority;
|
||||
|
|
@ -1006,7 +1006,7 @@ void sub_8043F44(u8 a)
|
|||
break;
|
||||
}
|
||||
}
|
||||
sub_8043E50(gHealthboxIDs[a], x, y);
|
||||
sub_8043E50(gHealthboxSpriteIds[a], x, y);
|
||||
}
|
||||
|
||||
#if ENGLISH
|
||||
|
|
@ -1650,7 +1650,7 @@ void sub_804454C(void)
|
|||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gSprites[gHealthboxIDs[i]].callback == SpriteCallbackDummy
|
||||
if (gSprites[gHealthboxSpriteIds[i]].callback == SpriteCallbackDummy
|
||||
#if DEBUG
|
||||
&& (gUnknown_020297ED != 0 || GetBattlerSide(i) != 1)
|
||||
#else
|
||||
|
|
@ -1672,17 +1672,17 @@ void sub_804454C(void)
|
|||
|
||||
if (r6 == 1)
|
||||
{
|
||||
spriteId = gSprites[gHealthboxIDs[i]].data[5];
|
||||
spriteId = gSprites[gHealthboxSpriteIds[i]].data[5];
|
||||
|
||||
CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100);
|
||||
sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), 0);
|
||||
sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), 1);
|
||||
sub_8044210(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), 0);
|
||||
sub_8044210(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
draw_status_ailment_maybe(gHealthboxIDs[i]);
|
||||
sub_8045A5C(gHealthboxIDs[i], &gPlayerParty[gBattlerPartyIndexes[i]], 5);
|
||||
CpuCopy32(sub_8043CDC(0x75), OBJ_VRAM0 + 0x680 + gSprites[gHealthboxIDs[i]].oam.tileNum * 32, 32);
|
||||
draw_status_ailment_maybe(gHealthboxSpriteIds[i]);
|
||||
sub_8045A5C(gHealthboxSpriteIds[i], &gPlayerParty[gBattlerPartyIndexes[i]], 5);
|
||||
CpuCopy32(sub_8043CDC(0x75), OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * 32, 32);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1691,26 +1691,26 @@ void sub_804454C(void)
|
|||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||
{
|
||||
sub_8044338(gHealthboxIDs[i], &gEnemyParty[gBattlerPartyIndexes[i]]);
|
||||
sub_8044338(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]]);
|
||||
}
|
||||
else
|
||||
{
|
||||
spriteId = gSprites[gHealthboxIDs[i]].data[5];
|
||||
spriteId = gSprites[gHealthboxSpriteIds[i]].data[5];
|
||||
|
||||
CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100);
|
||||
sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_HP), 0);
|
||||
sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), 1);
|
||||
sub_8044210(gHealthboxSpriteIds[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_HP), 0);
|
||||
sub_8044210(gHealthboxSpriteIds[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
draw_status_ailment_maybe(gHealthboxIDs[i]);
|
||||
sub_8045A5C(gHealthboxIDs[i], &gEnemyParty[gBattlerPartyIndexes[i]], 5);
|
||||
draw_status_ailment_maybe(gHealthboxSpriteIds[i]);
|
||||
sub_8045A5C(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], 5);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||
sub_8045A5C(gHealthboxIDs[i], &gEnemyParty[gBattlerPartyIndexes[i]], 4);
|
||||
sub_8045A5C(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], 4);
|
||||
}
|
||||
}
|
||||
gSprites[gHealthboxIDs[i]].data[7] ^= 1;
|
||||
gSprites[gHealthboxSpriteIds[i]].data[7] ^= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -26,7 +26,7 @@
|
|||
#endif
|
||||
|
||||
// This is four lists of moves which use a different attack string in Japanese
|
||||
// to the default. See the documentation for sub_8121D74 for more detail.
|
||||
// to the default. See the documentation for ChooseTypeOfMoveUsedString for more detail.
|
||||
const u16 gUnknown_084016BC[] =
|
||||
{
|
||||
MOVE_SWORDS_DANCE,
|
||||
|
|
@ -156,10 +156,10 @@ extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO];
|
|||
extern u16 gLastUsedItem;
|
||||
extern u8 gLastUsedAbility;
|
||||
extern u8 gActiveBattler;
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gStringBank;
|
||||
extern u8 gEffectBank;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gPotentialItemEffectBattler;
|
||||
extern u8 gEffectBattler;
|
||||
extern u8 gBattleTextBuff1[];
|
||||
extern u8 gBattleTextBuff2[];
|
||||
extern u8 gBattleTextBuff3[];
|
||||
|
|
@ -193,9 +193,9 @@ extern const struct StatusFlagString gUnknown_081FA6D4[7]; // status flag/text
|
|||
extern struct StringInfoBattle* gSelectedOrderFromParty;
|
||||
#define gStringInfo gSelectedOrderFromParty
|
||||
|
||||
void sub_8121D1C(u8* textBuff);
|
||||
void sub_8121D74(u8* textBuff);
|
||||
void StrCpyDecodeBattleTextBuff(u8* src, u8* dst);
|
||||
void ChooseMoveUsedParticle(u8* textBuff);
|
||||
void ChooseTypeOfMoveUsedString(u8* textBuff);
|
||||
void ExpandBattleTextBuffPlaceholders(u8* src, u8* dst);
|
||||
|
||||
u8 GetBattlerSide(u8 bank);
|
||||
s32 sub_803FC34(u16);
|
||||
|
|
@ -220,7 +220,7 @@ void BufferStringBattle(u16 stringID)
|
|||
gBattleStruct->scriptingActive = gStringInfo->scrActive;
|
||||
gBattleStruct->unk1605E = gStringInfo->unk1605E;
|
||||
gBattleStruct->hpScale = gStringInfo->hpScale;
|
||||
gStringBank = gStringInfo->StringBank;
|
||||
gPotentialItemEffectBattler = gStringInfo->StringBank;
|
||||
gBattleStruct->stringMoveType = gStringInfo->moveType;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
|
|
@ -365,12 +365,12 @@ void BufferStringBattle(u16 stringID)
|
|||
}
|
||||
break;
|
||||
case 4: // pokemon used a move msg
|
||||
sub_8121D1C(gBattleTextBuff1);
|
||||
ChooseMoveUsedParticle(gBattleTextBuff1);
|
||||
if (gStringInfo->currentMove > 0x162)
|
||||
StringCopy(gBattleTextBuff2, gUnknown_08401674[gBattleStruct->stringMoveType]);
|
||||
else
|
||||
StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]);
|
||||
sub_8121D74(gBattleTextBuff2);
|
||||
ChooseTypeOfMoveUsedString(gBattleTextBuff2);
|
||||
stringPtr = BattleText_OpponentUsedMove;
|
||||
break;
|
||||
case 5: // battle end
|
||||
|
|
@ -440,15 +440,15 @@ void BufferStringBattle(u16 stringID)
|
|||
}
|
||||
break;
|
||||
}
|
||||
StrCpyDecodeToDisplayedStringBattle(stringPtr);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(stringPtr);
|
||||
}
|
||||
|
||||
u32 StrCpyDecodeToDisplayedStringBattle(const u8* src)
|
||||
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src)
|
||||
{
|
||||
StrCpyDecodeBattle(src, gDisplayedStringBattle);
|
||||
BattleStringExpandPlaceholders(src, gDisplayedStringBattle);
|
||||
}
|
||||
|
||||
const u8* AppendStatusString(u8* src)
|
||||
const u8* TryGetStatusString(u8* src)
|
||||
{
|
||||
u32 i;
|
||||
u8 status[8];
|
||||
|
|
@ -529,7 +529,7 @@ extern u8 *de_sub_8041024(s32, u32);
|
|||
}
|
||||
#endif
|
||||
|
||||
u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
||||
u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
|
||||
{
|
||||
u32 dstID = 0; // if they used dstID, why not use srcID as well?
|
||||
const u8* toCpy = NULL;
|
||||
|
|
@ -546,12 +546,12 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
case 0:
|
||||
if (gBattleTextBuff1[0] == 0xFD)
|
||||
{
|
||||
StrCpyDecodeBattleTextBuff(gBattleTextBuff1, gStringVar1);
|
||||
ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gStringVar1);
|
||||
toCpy = gStringVar1;
|
||||
}
|
||||
else
|
||||
{
|
||||
toCpy = AppendStatusString(gBattleTextBuff1);
|
||||
toCpy = TryGetStatusString(gBattleTextBuff1);
|
||||
if (toCpy == 0)
|
||||
toCpy = gBattleTextBuff1;
|
||||
}
|
||||
|
|
@ -559,7 +559,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
case 1:
|
||||
if (gBattleTextBuff2[0] == 0xFD)
|
||||
{
|
||||
StrCpyDecodeBattleTextBuff(gBattleTextBuff2, gStringVar2);
|
||||
ExpandBattleTextBuffPlaceholders(gBattleTextBuff2, gStringVar2);
|
||||
toCpy = gStringVar2;
|
||||
}
|
||||
else
|
||||
|
|
@ -568,7 +568,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
case 42:
|
||||
if (gBattleTextBuff3[0] == 0xFD)
|
||||
{
|
||||
StrCpyDecodeBattleTextBuff(gBattleTextBuff3, gStringVar3);
|
||||
ExpandBattleTextBuffPlaceholders(gBattleTextBuff3, gStringVar3);
|
||||
toCpy = gStringVar3;
|
||||
}
|
||||
else
|
||||
|
|
@ -595,45 +595,45 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
toCpy = text;
|
||||
break;
|
||||
case 6: // link first player poke name
|
||||
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text);
|
||||
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 7: // link first opponent poke name
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text);
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 1]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 8: // link second player poke name
|
||||
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text);
|
||||
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 2]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 9: // link second opponent poke name
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text);
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 3]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 10: // attacker name with prefix, only bank 0/1
|
||||
HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) & 1)])
|
||||
HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker, gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) & 1)])
|
||||
break;
|
||||
case 11: // attacker partner name, only bank 0/1
|
||||
if (GetBattlerSide(gBankAttacker) == 0)
|
||||
GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
|
||||
if (GetBattlerSide(gBattlerAttacker) == 0)
|
||||
GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
|
||||
else
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
|
||||
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
|
||||
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 12: // attacker name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlerPartyIndexes[gBankAttacker])
|
||||
HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
|
||||
break;
|
||||
case 13: // target name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlerPartyIndexes[gBankTarget])
|
||||
HANDLE_NICKNAME_STRING_CASE(gBattlerTarget, gBattlerPartyIndexes[gBattlerTarget])
|
||||
break;
|
||||
case 14: // effect bank name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlerPartyIndexes[gEffectBank])
|
||||
HANDLE_NICKNAME_STRING_CASE(gEffectBattler, gBattlerPartyIndexes[gEffectBattler])
|
||||
break;
|
||||
case 15: // active bank name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
|
||||
|
|
@ -658,9 +658,9 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
{
|
||||
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 == gStringBank)
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id == gPotentialItemEffectBattler)
|
||||
{
|
||||
StringCopy(text, gEnigmaBerries[gStringBank].name);
|
||||
StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
|
||||
#ifdef ENGLISH
|
||||
StringAppend(text, BattleText_Berry);
|
||||
#else
|
||||
|
|
@ -687,16 +687,16 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
toCpy = gAbilityNames[gLastUsedAbility];
|
||||
break;
|
||||
case 21: // attacker ability
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]];
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gBattlerAttacker]];
|
||||
break;
|
||||
case 22: // target ability
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]];
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gBattlerTarget]];
|
||||
break;
|
||||
case 23: // scripting active ability
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gBattleStruct->scriptingActive]];
|
||||
break;
|
||||
case 24: // effect bank ability
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]];
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBattler]];
|
||||
break;
|
||||
case 25: // trainer class name
|
||||
#ifdef ENGLISH
|
||||
|
|
@ -744,13 +744,13 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
toCpy = gLinkPlayers[multiplayerID].name;
|
||||
break;
|
||||
case 28: // link partner name?
|
||||
toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
|
||||
toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].id)].name;
|
||||
break;
|
||||
case 29: // link opponent 1 name?
|
||||
toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
|
||||
toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].id)].name;
|
||||
break;
|
||||
case 30: // link opponent 2 name?
|
||||
toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
|
||||
toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].id)].name;
|
||||
break;
|
||||
case 31: // link scripting active name
|
||||
toCpy = gLinkPlayers[sub_803FC34(gBattleStruct->scriptingActive)].name;
|
||||
|
|
@ -771,37 +771,37 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
toCpy = BattleText_Someone;
|
||||
break;
|
||||
case 38:
|
||||
if (GetBattlerSide(gBankAttacker) == 0)
|
||||
if (GetBattlerSide(gBattlerAttacker) == 0)
|
||||
toCpy = BattleText_Ally2;
|
||||
else
|
||||
toCpy = BattleText_Foe3;
|
||||
break;
|
||||
case 39:
|
||||
if (GetBattlerSide(gBankTarget) == 0)
|
||||
if (GetBattlerSide(gBattlerTarget) == 0)
|
||||
toCpy = BattleText_Ally2;
|
||||
else
|
||||
toCpy = BattleText_Foe3;
|
||||
break;
|
||||
case 36:
|
||||
if (GetBattlerSide(gBankAttacker) == 0)
|
||||
if (GetBattlerSide(gBattlerAttacker) == 0)
|
||||
toCpy = BattleText_Ally;
|
||||
else
|
||||
toCpy = BattleText_Foe2;
|
||||
break;
|
||||
case 37:
|
||||
if (GetBattlerSide(gBankTarget) == 0)
|
||||
if (GetBattlerSide(gBattlerTarget) == 0)
|
||||
toCpy = BattleText_Ally;
|
||||
else
|
||||
toCpy = BattleText_Foe2;
|
||||
break;
|
||||
case 40:
|
||||
if (GetBattlerSide(gBankAttacker) == 0)
|
||||
if (GetBattlerSide(gBattlerAttacker) == 0)
|
||||
toCpy = BattleText_Ally3;
|
||||
else
|
||||
toCpy = BattleText_Foe4;
|
||||
break;
|
||||
case 41:
|
||||
if (GetBattlerSide(gBankTarget) == 0)
|
||||
if (GetBattlerSide(gBattlerTarget) == 0)
|
||||
toCpy = BattleText_Ally3;
|
||||
else
|
||||
toCpy = BattleText_Foe4;
|
||||
|
|
@ -837,7 +837,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
|||
#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
|
||||
#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
|
||||
|
||||
void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
|
||||
void ExpandBattleTextBuffPlaceholders(u8* src, u8* dst)
|
||||
{
|
||||
u32 srcID = 1;
|
||||
u32 value = 0;
|
||||
|
|
@ -949,9 +949,9 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
|
|||
{
|
||||
if (hword == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 == gStringBank)
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id == gPotentialItemEffectBattler)
|
||||
{
|
||||
StringCopy(dst, gEnigmaBerries[gStringBank].name);
|
||||
StringCopy(dst, gEnigmaBerries[gPotentialItemEffectBattler].name);
|
||||
#ifdef ENGLISH
|
||||
StringAppend(dst, BattleText_Berry);
|
||||
#else
|
||||
|
|
@ -975,9 +975,9 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
|
|||
|
||||
// Loads one of two text strings into the provided buffer. This is functionally
|
||||
// unused, since the value loaded into the buffer is not read; it loaded one of
|
||||
// two particles (either "は" or "の") which works in tandem with sub_8121D74
|
||||
// two particles (either "は" or "の") which works in tandem with ChooseTypeOfMoveUsedString
|
||||
// below to effect changes in the meaning of the line.
|
||||
void sub_8121D1C(u8* textBuff)
|
||||
void ChooseMoveUsedParticle(u8* textBuff)
|
||||
{
|
||||
s32 counter = 0;
|
||||
u32 i = 0;
|
||||
|
|
@ -1017,7 +1017,7 @@ void sub_8121D1C(u8* textBuff)
|
|||
//
|
||||
// BattleText_Exclamation5 was " こうげき!" This resulted in a translation of
|
||||
// "<NAME>'s <ATTACK> attack!".
|
||||
void sub_8121D74(u8* dst)
|
||||
void ChooseTypeOfMoveUsedString(u8* dst)
|
||||
{
|
||||
s32 counter = 0;
|
||||
s32 i = 0;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -484,7 +484,7 @@ static void Task_BattleStart(u8 taskId)
|
|||
case 1:
|
||||
if (IsBattleTransitionDone() == TRUE)
|
||||
{
|
||||
SetMainCallback2(sub_800E7C4);
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
RestartWildEncounterImmunitySteps();
|
||||
ClearPoisonStepCounter();
|
||||
DestroyTask(taskId);
|
||||
|
|
@ -887,7 +887,7 @@ static void CB2_StartFirstBattle(void)
|
|||
{
|
||||
gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE;
|
||||
gMain.savedCallback = CB2_EndFirstBattle;
|
||||
SetMainCallback2(sub_800E7C4);
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
RestartWildEncounterImmunitySteps();
|
||||
ClearPoisonStepCounter();
|
||||
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
|
||||
|
|
|
|||
|
|
@ -1290,7 +1290,7 @@ void sub_8135534(u8 taskId)
|
|||
if (IsBattleTransitionDone() == TRUE)
|
||||
{
|
||||
gMain.savedCallback = sub_81354CC;
|
||||
SetMainCallback2(sub_800E7C4);
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -784,7 +784,7 @@ static void sub_808382C(u8 taskId)
|
|||
break;
|
||||
}
|
||||
|
||||
SetMainCallback2(sub_800E7C4);
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
gMain.savedCallback = sub_8083958;
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -44,10 +44,10 @@ extern struct MusicPlayerInfo gMPlay_SE1;
|
|||
extern u8 gBattleMonForms[];
|
||||
extern u8 gDisplayedStringBattle[];
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gBanksBySide[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern struct Window gUnknown_03004210;
|
||||
extern u32 gContestRngValue;
|
||||
|
||||
|
|
@ -533,9 +533,9 @@ u8 sub_80AB70C(u8 *a)
|
|||
gBanksBySide[2] = 3;
|
||||
gBanksBySide[3] = 2;
|
||||
gBattleTypeFlags = 0;
|
||||
gBankAttacker = 2;
|
||||
gBankTarget = 3;
|
||||
gBankSpriteIds[gBankAttacker] = CreateJudgeSprite();
|
||||
gBattlerAttacker = 2;
|
||||
gBattlerTarget = 3;
|
||||
gBattlerSpriteIds[gBattlerAttacker] = CreateJudgeSprite();
|
||||
sub_80B292C();
|
||||
break;
|
||||
default:
|
||||
|
|
@ -912,7 +912,7 @@ void debug_sub_80BA054(u8 taskId)
|
|||
gSprites[r6].pos2.x = 120;
|
||||
gSprites[r6].callback = sub_80AD8FC;
|
||||
gTasks[taskId].data[2] = r6;
|
||||
gBankSpriteIds[gBankAttacker] = r6;
|
||||
gBattlerSpriteIds[gBattlerAttacker] = r6;
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].data[0]++;
|
||||
sContest.unk1925E = 0;
|
||||
|
|
@ -1124,7 +1124,7 @@ void sub_80AC2CC(u8 taskId)
|
|||
gSprites[spriteId].pos2.x = 120;
|
||||
gSprites[spriteId].callback = sub_80AD8FC;
|
||||
gTasks[taskId].data[2] = spriteId;
|
||||
gBankSpriteIds[gBankAttacker] = spriteId;
|
||||
gBattlerSpriteIds[gBattlerAttacker] = spriteId;
|
||||
sub_80B0BC4(sub_80B09E4(sContest.unk19215), FALSE);
|
||||
gTasks[taskId].data[0] = 4;
|
||||
return;
|
||||
|
|
@ -5393,14 +5393,14 @@ void sub_80B28F0(u8 a)
|
|||
|
||||
void sub_80B292C(void)
|
||||
{
|
||||
gBankSpriteIds[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
|
||||
InitSpriteAffineAnim(&gSprites[gBankSpriteIds[gBankTarget]]);
|
||||
gBattlerSpriteIds[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
|
||||
InitSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattlerTarget]]);
|
||||
sub_80B2968();
|
||||
}
|
||||
|
||||
void sub_80B2968(void)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[gBankSpriteIds[3]];
|
||||
struct Sprite *sprite = &gSprites[gBattlerSpriteIds[3]];
|
||||
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
|
|
@ -5415,14 +5415,14 @@ void SelectContestMoveBankTarget(u16 move)
|
|||
{
|
||||
case TARGET_UNK2:
|
||||
case TARGET_USER:
|
||||
gBankTarget = 2;
|
||||
gBattlerTarget = 2;
|
||||
break;
|
||||
case TARGET_SELECTED_POKEMON:
|
||||
case TARGET_RANDOM:
|
||||
case TARGET_BOTH_ENEMIES:
|
||||
case TARGET_ALL_EXCEPT_USER:
|
||||
default:
|
||||
gBankTarget = 3;
|
||||
gBattlerTarget = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -712,7 +712,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
{
|
||||
sub_8024CEC();
|
||||
PlayFanfare(MUS_FANFA1);
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[3]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
|
||||
gTasks[taskID].tState++;
|
||||
|
|
@ -729,7 +729,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
if (gUnknown_03004210.state == 0 && !IsSEPlaying())
|
||||
{
|
||||
sub_8024CEC();
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[4]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
|
|
@ -737,7 +737,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
case 1:
|
||||
if (gUnknown_03004210.state == 0 && !IsSEPlaying())
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[5]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
|
|
@ -747,7 +747,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
break;
|
||||
if (!IsSEPlaying())
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[6]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tData9 = 5;
|
||||
gTasks[taskID].tdata10 = 9;
|
||||
|
|
@ -780,7 +780,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
sub_8023AD8();
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
PlaySE(SE_SELECT);
|
||||
if (sEvoCursorPos != 0)
|
||||
|
|
@ -795,7 +795,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
sub_8023AD8();
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
PlaySE(SE_SELECT);
|
||||
gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10;
|
||||
|
|
@ -821,7 +821,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
|
||||
if (IsHMMove2(move))
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[307]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState = 11;
|
||||
}
|
||||
|
|
@ -834,7 +834,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
gBattleTextBuff2[4] = EOS;
|
||||
RemoveMonPPBonus(mon, var);
|
||||
SetMonMoveSlot(mon, gMoveToLearn, var);
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[207]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
|
|
@ -844,7 +844,7 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
case 7:
|
||||
if (gUnknown_03004210.state == 0 && !IsSEPlaying())
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[7]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
|
|
@ -852,20 +852,20 @@ static void Task_EvolutionScene(u8 taskID)
|
|||
case 8:
|
||||
if (gUnknown_03004210.state == 0 && !IsSEPlaying())
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[208]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tState = 19;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[8]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tData9 = 10;
|
||||
gTasks[taskID].tdata10 = 0;
|
||||
gTasks[taskID].tLearnMoveState = 3;
|
||||
break;
|
||||
case 10:
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[9]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
|
||||
gTasks[taskID].tState = 14;
|
||||
break;
|
||||
|
|
@ -1026,7 +1026,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
{
|
||||
sub_8024CEC();
|
||||
PlayFanfare(MUS_FANFA1);
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[3]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
|
||||
gTasks[taskID].tState++;
|
||||
|
|
@ -1043,7 +1043,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
|
||||
{
|
||||
sub_8024CEC();
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[4]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
|
|
@ -1051,7 +1051,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
case 1:
|
||||
if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[5]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
|
|
@ -1061,7 +1061,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
break;
|
||||
if (!IsSEPlaying())
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[6]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tData9 = 5;
|
||||
gTasks[taskID].tdata10 = 9;
|
||||
|
|
@ -1099,7 +1099,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
{
|
||||
Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD);
|
||||
DestroyMenuCursor();
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
PlaySE(SE_SELECT);
|
||||
if (sEvoCursorPos != 0)
|
||||
|
|
@ -1115,7 +1115,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
{
|
||||
Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD);
|
||||
DestroyMenuCursor();
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
PlaySE(SE_SELECT);
|
||||
gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10;
|
||||
|
|
@ -1141,7 +1141,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
|
||||
if (IsHMMove2(move))
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[307]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState = 11;
|
||||
}
|
||||
|
|
@ -1154,7 +1154,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
gBattleTextBuff2[4] = EOS;
|
||||
RemoveMonPPBonus(mon, var);
|
||||
SetMonMoveSlot(mon, gMoveToLearn, var);
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[207]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
|
|
@ -1164,7 +1164,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
case 7:
|
||||
if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[7]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
|
|
@ -1172,20 +1172,20 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
|||
case 8:
|
||||
if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
|
||||
{
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[208]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tState = 15;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[8]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tData9 = 10;
|
||||
gTasks[taskID].tdata10 = 0;
|
||||
gTasks[taskID].tLearnMoveState = 3;
|
||||
break;
|
||||
case 10:
|
||||
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[9]);
|
||||
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
|
||||
gTasks[taskID].tState = 13;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
#include "field_camera.h"
|
||||
#include "fieldmap.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "constants/songs.h"
|
||||
#include "task.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
const u8 DoorAnimTiles_04[][0x100] =
|
||||
{
|
||||
|
|
@ -517,7 +517,7 @@ static s8 StartDoorAnimationTask(const struct DoorGraphics *gfx, const struct Do
|
|||
}
|
||||
}
|
||||
|
||||
static void DrawClosedDoor(const struct DoorGraphics *unused, u32 x, u32 y)
|
||||
static void DrawClosedDoor(const struct DoorGraphics *gfx, u32 x, u32 y)
|
||||
{
|
||||
DrawClosedDoorTiles(x, y);
|
||||
}
|
||||
|
|
@ -553,7 +553,7 @@ static s8 cur_mapdata_get_door_x2_at(const struct DoorGraphics *gfx, u32 x, u32
|
|||
if (gfx == NULL)
|
||||
return -1;
|
||||
else
|
||||
return gfx->unk2;
|
||||
return gfx->sound;
|
||||
}
|
||||
|
||||
void unref_sub_805869C(u32 x, u32 y)
|
||||
|
|
|
|||
|
|
@ -274,7 +274,7 @@ void LinkTestScreen(void)
|
|||
|
||||
void sub_8007270(u8 a1)
|
||||
{
|
||||
localLinkPlayer.lp_field_18 = a1;
|
||||
localLinkPlayer.id = a1;
|
||||
}
|
||||
|
||||
static void InitLocalLinkPlayer(void)
|
||||
|
|
|
|||
|
|
@ -85,6 +85,11 @@ extern struct MapLayout * const gMapLayouts[];
|
|||
extern struct MapHeader * const * const gMapGroups[];
|
||||
extern s32 gMaxFlashLevel;
|
||||
|
||||
u16 word_3004858;
|
||||
void (*gFieldCallback)(void);
|
||||
u8 gUnknown_03004860;
|
||||
u8 gFieldLinkPlayerCount;
|
||||
|
||||
EWRAM_DATA struct WarpData gLastUsedWarp = {0};
|
||||
EWRAM_DATA struct WarpData gWarpDestination = {0};
|
||||
EWRAM_DATA struct WarpData gFixedDiveWarp = {0};
|
||||
|
|
@ -98,11 +103,6 @@ static u8 gUnknown_03000580[4];
|
|||
static u16 (*gUnknown_03000584)(u32);
|
||||
static u8 gUnknown_03000588;
|
||||
|
||||
u16 word_3004858;
|
||||
extern void (*gFieldCallback)(void);
|
||||
u8 gUnknown_03004860;
|
||||
u8 gFieldLinkPlayerCount;
|
||||
|
||||
static void CB2_Overworld(void);
|
||||
static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState*, u16, u8);
|
||||
static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState*, u8, u16, u8);
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
|
||||
extern struct MusicPlayerInfo gMPlay_BGM;
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gActiveBattler;
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gBankSpriteIds[];
|
||||
extern u8 gBattlerSpriteIds[];
|
||||
extern u8 gDoingBattleAnim;
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u8 gHealthboxSpriteIds[];
|
||||
|
||||
#define GFX_TAG_POKEBALL 55000
|
||||
#define GFX_TAG_GREATBALL 55001
|
||||
|
|
@ -371,7 +371,7 @@ static void SendOutMonAnimation(u8 taskId)
|
|||
switch (side)
|
||||
{
|
||||
case 0xFF: // Player's side
|
||||
gBankTarget = battler;
|
||||
gBattlerTarget = battler;
|
||||
gSprites[spriteId].pos1.x = 24;
|
||||
gSprites[spriteId].pos1.y = 68;
|
||||
gSprites[spriteId].callback = SendOutPlayerMonAnimation_Step0;
|
||||
|
|
@ -379,17 +379,17 @@ static void SendOutMonAnimation(u8 taskId)
|
|||
case 0xFE: // Opponent's side
|
||||
gSprites[spriteId].pos1.x = GetBattlerSpriteCoord(battler, 0);
|
||||
gSprites[spriteId].pos1.y = GetBattlerSpriteCoord(battler, 1) + 24;
|
||||
gBankTarget = battler;
|
||||
gBattlerTarget = battler;
|
||||
gSprites[spriteId].data[0] = 0;
|
||||
gSprites[spriteId].callback = SendOutOpponentMonAnimation_Step0;
|
||||
break;
|
||||
default:
|
||||
gBankTarget = GetBattlerAtPosition(1);
|
||||
gBattlerTarget = GetBattlerAtPosition(1);
|
||||
debug = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
gSprites[spriteId].data[6] = gBankTarget;
|
||||
gSprites[spriteId].data[6] = gBattlerTarget;
|
||||
if (!debug)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
|
|
@ -397,12 +397,12 @@ static void SendOutMonAnimation(u8 taskId)
|
|||
}
|
||||
|
||||
gSprites[spriteId].data[0] = 0x22;
|
||||
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBankTarget, 0);
|
||||
gSprites[spriteId].data[4] = GetBattlerSpriteCoord(gBankTarget, 1) - 16;
|
||||
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, 0);
|
||||
gSprites[spriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, 1) - 16;
|
||||
gSprites[spriteId].data[5] = -40;
|
||||
InitAnimArcTranslation(&gSprites[spriteId]);
|
||||
gSprites[spriteId].oam.affineParam = taskId;
|
||||
gTasks[taskId].data[4] = gBankTarget;
|
||||
gTasks[taskId].data[4] = gBattlerTarget;
|
||||
gTasks[taskId].func = TaskDummy;
|
||||
PlaySE(SE_NAGERU);
|
||||
}
|
||||
|
|
@ -445,9 +445,9 @@ static void sub_80466F4(struct Sprite *sprite)
|
|||
{
|
||||
sprite->data[5] = 0;
|
||||
sprite->callback = sub_8046760;
|
||||
StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 2);
|
||||
AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
|
||||
gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0;
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->data[6]]], 2);
|
||||
AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->data[6]]]);
|
||||
gSprites[gBattlerSpriteIds[sprite->data[6]]].data[1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -456,17 +456,17 @@ static void sub_8046760(struct Sprite *sprite)
|
|||
sprite->data[5]++;
|
||||
if (sprite->data[5] == 11)
|
||||
PlaySE(SE_SUIKOMU);
|
||||
if (gSprites[gBankSpriteIds[sprite->data[6]]].affineAnimEnded)
|
||||
if (gSprites[gBattlerSpriteIds[sprite->data[6]]].affineAnimEnded)
|
||||
{
|
||||
StartSpriteAnim(sprite, 2);
|
||||
gSprites[gBankSpriteIds[sprite->data[6]]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[sprite->data[6]]].invisible = TRUE;
|
||||
sprite->data[5] = 0;
|
||||
sprite->callback = sub_80467F8;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gBankSpriteIds[sprite->data[6]]].data[1] += 0x60;
|
||||
gSprites[gBankSpriteIds[sprite->data[6]]].pos2.y = -gSprites[gBankSpriteIds[sprite->data[6]]].data[1] >> 8;
|
||||
gSprites[gBattlerSpriteIds[sprite->data[6]]].data[1] += 0x60;
|
||||
gSprites[gBattlerSpriteIds[sprite->data[6]]].pos2.y = -gSprites[gBattlerSpriteIds[sprite->data[6]]].data[1] >> 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -754,9 +754,9 @@ static void sub_8046C78(struct Sprite *sprite)
|
|||
gTasks[taskId].data[15] = 0;
|
||||
}
|
||||
|
||||
StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 1);
|
||||
AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
|
||||
gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0x1000;
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->data[6]]], 1);
|
||||
AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->data[6]]]);
|
||||
gSprites[gBattlerSpriteIds[sprite->data[6]]].data[1] = 0x1000;
|
||||
}
|
||||
|
||||
static void sub_8046E7C(struct Sprite *sprite)
|
||||
|
|
@ -773,25 +773,25 @@ static void sub_8046E9C(struct Sprite *sprite)
|
|||
bool8 r7 = FALSE;
|
||||
u8 r4 = sprite->data[6];
|
||||
|
||||
gSprites[gBankSpriteIds[r4]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[r4]].invisible = FALSE;
|
||||
if (sprite->animEnded)
|
||||
sprite->invisible = TRUE;
|
||||
if (gSprites[gBankSpriteIds[r4]].affineAnimEnded)
|
||||
if (gSprites[gBattlerSpriteIds[r4]].affineAnimEnded)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[gBankSpriteIds[r4]], 0);
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[r4]], 0);
|
||||
r7 = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gBankSpriteIds[r4]].data[1] -= 288;
|
||||
gSprites[gBankSpriteIds[r4]].pos2.y = gSprites[gBankSpriteIds[r4]].data[1] >> 8;
|
||||
gSprites[gBattlerSpriteIds[r4]].data[1] -= 288;
|
||||
gSprites[gBattlerSpriteIds[r4]].pos2.y = gSprites[gBattlerSpriteIds[r4]].data[1] >> 8;
|
||||
}
|
||||
if (sprite->animEnded && r7)
|
||||
{
|
||||
s32 i;
|
||||
u32 r3;
|
||||
|
||||
gSprites[gBankSpriteIds[r4]].pos2.y = 0;
|
||||
gSprites[gBattlerSpriteIds[r4]].pos2.y = 0;
|
||||
gDoingBattleAnim = 0;
|
||||
ewram17810[r4].unk0_3 = 0;
|
||||
FreeSpriteOamMatrix(sprite);
|
||||
|
|
@ -826,8 +826,8 @@ static void sub_8046FBC(struct Sprite *sprite)
|
|||
}
|
||||
else if (sprite->data[4] == 315)
|
||||
{
|
||||
FreeOamMatrix(gSprites[gBankSpriteIds[sprite->data[6]]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
|
||||
FreeOamMatrix(gSprites[gBattlerSpriteIds[sprite->data[6]]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[sprite->data[6]]]);
|
||||
DestroySpriteAndFreeResources(sprite);
|
||||
if (gMain.inBattle)
|
||||
ewram17810[r7].unk0_3 = 0;
|
||||
|
|
@ -1103,7 +1103,7 @@ void obj_delete_and_free_associated_resources_(struct Sprite *sprite)
|
|||
|
||||
void sub_804777C(u8 a)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[gHealthboxIDs[a]];
|
||||
struct Sprite *sprite = &gSprites[gHealthboxSpriteIds[a]];
|
||||
|
||||
sprite->data[0] = 5;
|
||||
sprite->data[1] = 0;
|
||||
|
|
@ -1146,7 +1146,7 @@ void sub_8047858(u8 a)
|
|||
|
||||
spriteId = CreateInvisibleSpriteWithCallback(oamc_804BEB4);
|
||||
gSprites[spriteId].data[0] = 1;
|
||||
gSprites[spriteId].data[1] = gHealthboxIDs[a];
|
||||
gSprites[spriteId].data[1] = gHealthboxSpriteIds[a];
|
||||
gSprites[spriteId].callback = oamc_804BEB4;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@ extern u8 gActiveBattler;
|
|||
extern struct BattlePokemon gBattleMons[4];
|
||||
extern u16 gCurrentMove;
|
||||
extern u8 gLastUsedAbility;
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gAbsentBattlerFlags;
|
||||
extern u8 gXXX_CritRelated;
|
||||
extern u16 gBattleWeather;
|
||||
|
|
@ -67,14 +67,14 @@ u8 CountAliveMons(u8 a1)
|
|||
case 1:
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (GetBattlerSide(i) == GetBattlerSide(gBankAttacker) && !(gAbsentBattlerFlags & gBitTable[i]))
|
||||
if (GetBattlerSide(i) == GetBattlerSide(gBattlerAttacker) && !(gAbsentBattlerFlags & gBitTable[i]))
|
||||
retVal++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (GetBattlerSide(i) == GetBattlerSide(gBankTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
|
||||
if (GetBattlerSide(i) == GetBattlerSide(gBattlerTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
|
||||
retVal++;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -40,9 +40,9 @@ extern u16 gSpeciesIdToCryId[];
|
|||
extern u8 gBattleTextBuff1[];
|
||||
extern u8 gBattleTextBuff2[];
|
||||
extern u8 gDisplayedStringBattle[];
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gStringBank;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gPotentialItemEffectBattler;
|
||||
extern u8 gBankInMenu;
|
||||
extern struct SpindaSpot gSpindaSpotGraphics[];
|
||||
extern s8 gNatureStatTable[][5];
|
||||
|
|
@ -197,10 +197,10 @@ const u8 gUnknown_082082F8[] = {1, 1, 3, 2, 4, 6};
|
|||
|
||||
void sub_803F324(int stat)
|
||||
{
|
||||
gBankTarget = gBankInMenu;
|
||||
gBattlerTarget = gBankInMenu;
|
||||
StringCopy(gBattleTextBuff1, gUnknown_08400F58[gUnknown_082082F8[stat]]);
|
||||
StringCopy(gBattleTextBuff2, BattleText_Rose);
|
||||
StrCpyDecodeToDisplayedStringBattle(BattleText_UnknownString3);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(BattleText_UnknownString3);
|
||||
}
|
||||
|
||||
u8 *sub_803F378(u16 itemId)
|
||||
|
|
@ -224,7 +224,7 @@ u8 *sub_803F378(u16 itemId)
|
|||
itemEffect = gItemEffectTable[itemId - 13];
|
||||
}
|
||||
|
||||
gStringBank = gBankInMenu;
|
||||
gPotentialItemEffectBattler = gBankInMenu;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
|
|
@ -238,16 +238,16 @@ u8 *sub_803F378(u16 itemId)
|
|||
}
|
||||
else
|
||||
{
|
||||
gBankAttacker = gBankInMenu;
|
||||
StrCpyDecodeToDisplayedStringBattle(BattleText_GetPumped);
|
||||
gBattlerAttacker = gBankInMenu;
|
||||
BattleStringExpandPlaceholdersToDisplayedString(BattleText_GetPumped);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (itemEffect[3] & 0x80)
|
||||
{
|
||||
gBankAttacker = gBankInMenu;
|
||||
StrCpyDecodeToDisplayedStringBattle(BattleText_MistShroud);
|
||||
gBattlerAttacker = gBankInMenu;
|
||||
BattleStringExpandPlaceholdersToDisplayedString(BattleText_MistShroud);
|
||||
}
|
||||
|
||||
return gDisplayedStringBattle;
|
||||
|
|
@ -579,7 +579,7 @@ void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies)
|
|||
bool8 sub_803FBBC(void)
|
||||
{
|
||||
bool8 retVal = FALSE;
|
||||
switch (gLinkPlayers[GetMultiplayerId()].lp_field_18)
|
||||
switch (gLinkPlayers[GetMultiplayerId()].id)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
|
|
@ -596,7 +596,7 @@ bool8 sub_803FBBC(void)
|
|||
bool8 sub_803FBFC(u8 id)
|
||||
{
|
||||
bool8 retVal = FALSE;
|
||||
switch (gLinkPlayers[id].lp_field_18)
|
||||
switch (gLinkPlayers[id].id)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
|
|
@ -614,7 +614,7 @@ s32 sub_803FC34(u16 a1)
|
|||
{
|
||||
s32 id;
|
||||
for (id = 0; id < MAX_LINK_PLAYERS; id++)
|
||||
if (gLinkPlayers[id].lp_field_18 == a1)
|
||||
if (gLinkPlayers[id].id == a1)
|
||||
break;
|
||||
return id;
|
||||
}
|
||||
|
|
@ -1314,7 +1314,7 @@ void sub_8040B8C(void)
|
|||
gBattleTextBuff2[2] = gBankInMenu;
|
||||
gBattleTextBuff2[3] = pokemon_order_func(gBattlerPartyIndexes[gBankInMenu]);
|
||||
gBattleTextBuff2[4] = EOS;
|
||||
StrCpyDecodeBattle(BattleText_PreventedSwitch, gStringVar4);
|
||||
BattleStringExpandPlaceholders(BattleText_PreventedSwitch, gStringVar4);
|
||||
}
|
||||
|
||||
void SetWildMonHeldItem(void)
|
||||
|
|
@ -1360,7 +1360,7 @@ bool8 IsShinyOtIdPersonality(u32 otId, u32 personality)
|
|||
u8 *sub_8040D08(void)
|
||||
{
|
||||
u8 id = GetMultiplayerId();
|
||||
return gLinkPlayers[sub_803FC34(gLinkPlayers[id].lp_field_18 ^ 2)].name;
|
||||
return gLinkPlayers[sub_803FC34(gLinkPlayers[id].id ^ 2)].name;
|
||||
}
|
||||
|
||||
const u8 gJapaneseNidoranNames[][11] = {_("ニドラン♂"), _("ニドラン♀")};
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ extern u8 gBankInMenu;
|
|||
extern u8 gBattlersCount;
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gActiveBattler;
|
||||
extern u8 gStringBank;
|
||||
extern u8 gPotentialItemEffectBattler;
|
||||
extern struct BattlePokemon gBattleMons[];
|
||||
extern struct BattleEnigmaBerry gEnigmaBerries[];
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
|
|||
holdEffect = ItemId_GetHoldEffect(heldItem);
|
||||
}
|
||||
|
||||
gStringBank = gBankInMenu;
|
||||
gPotentialItemEffectBattler = gBankInMenu;
|
||||
if (gMain.inBattle)
|
||||
{
|
||||
gActiveBattler = gBankInMenu;
|
||||
|
|
@ -332,8 +332,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
|
|||
// I have to re-use this variable to match.
|
||||
r5 = gActiveBattler;
|
||||
gActiveBattler = sp34;
|
||||
EmitGetAttributes(0, 0, 0);
|
||||
MarkBufferBankForExecution(gActiveBattler);
|
||||
BtlController_EmitGetMonData(0, 0, 0);
|
||||
MarkBattlerForControllerExec(gActiveBattler);
|
||||
gActiveBattler = r5;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ extern u8 gBankInMenu;
|
|||
extern u16 gBattlerPartyIndexes[4];
|
||||
extern u8 gBattlersCount;
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u8 gBankSpriteIds[4];
|
||||
extern u8 gBattlerSpriteIds[4];
|
||||
extern u8 gBattleMonForms[4];
|
||||
extern u8 gHealthboxIDs[4];
|
||||
extern u8 gHealthboxSpriteIds[4];
|
||||
|
||||
bool8 LoadChosenBattleElement(u8 a0);
|
||||
bool8 sub_8031C30(u8 a0);
|
||||
|
|
@ -235,46 +235,46 @@ static void sub_807B184(u8 bank)
|
|||
if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
|
||||
return;
|
||||
GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES), GetBattlerPosition(bank));
|
||||
gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), posY, GetBattlerSubpriority(bank));
|
||||
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
|
||||
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBankSpriteIds[bank]].data[0] = bank;
|
||||
gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
|
||||
gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), posY, GetBattlerSubpriority(bank));
|
||||
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
|
||||
{
|
||||
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(0));
|
||||
gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
|
||||
gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
|
||||
GetBattlerSubpriority(0));
|
||||
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
|
||||
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBankSpriteIds[bank]].data[0] = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
|
||||
{
|
||||
GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(0));
|
||||
gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
|
||||
gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
|
||||
(8 - gTrainerBackPicCoords[2].coords) * 4 + 80,
|
||||
GetBattlerSubpriority(0));
|
||||
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
|
||||
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBankSpriteIds[bank]].data[0] = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
|
||||
return;
|
||||
GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES), GetBattlerPosition(bank));
|
||||
gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), posY, GetBattlerSubpriority(bank));
|
||||
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
|
||||
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBankSpriteIds[bank]].data[0] = bank;
|
||||
gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
|
||||
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
|
||||
gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), posY, GetBattlerSubpriority(bank));
|
||||
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
|
||||
gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
|
||||
gSprites[gBattlerSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
|
||||
}
|
||||
gSprites[gBankSpriteIds[bank]].invisible = ewram17800[bank].invisible;
|
||||
gSprites[gBattlerSpriteIds[bank]].invisible = ewram17800[bank].invisible;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -289,19 +289,19 @@ static void sub_807B508(u8 bank)
|
|||
return;
|
||||
else
|
||||
healthboxID = battle_make_oam_normal_battle(bank);
|
||||
gHealthboxIDs[bank] = healthboxID;
|
||||
gHealthboxSpriteIds[bank] = healthboxID;
|
||||
sub_8043F44(bank);
|
||||
sub_8043DFC(healthboxID);
|
||||
if (GetBattlerSide(bank))
|
||||
sub_8045A5C(gHealthboxIDs[bank], &gEnemyParty[gBattlerPartyIndexes[bank]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[bank], &gEnemyParty[gBattlerPartyIndexes[bank]], 0);
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||
sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlerPartyIndexes[bank]], 10);
|
||||
sub_8045A5C(gHealthboxSpriteIds[bank], &gPlayerParty[gBattlerPartyIndexes[bank]], 10);
|
||||
else
|
||||
sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlerPartyIndexes[bank]], 0);
|
||||
sub_8045A5C(gHealthboxSpriteIds[bank], &gPlayerParty[gBattlerPartyIndexes[bank]], 0);
|
||||
if (GetBattlerPosition(bank) == 3 || GetBattlerPosition(bank) == 2)
|
||||
nullsub_11(gHealthboxIDs[bank], 1);
|
||||
nullsub_11(gHealthboxSpriteIds[bank], 1);
|
||||
else
|
||||
nullsub_11(gHealthboxIDs[bank], 0);
|
||||
nullsub_11(gHealthboxSpriteIds[bank], 0);
|
||||
if (GetBattlerSide(bank))
|
||||
{
|
||||
if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
|
||||
|
|
|
|||
315
src/rom3.c
315
src/rom3.c
|
|
@ -23,15 +23,15 @@ extern u16 gBattleTypeFlags;
|
|||
extern u16 gBattleWeather;
|
||||
extern struct BattlePokemon gBattleMons[];
|
||||
|
||||
static EWRAM_DATA u8 gUnknown_020238C4 = 0;
|
||||
static EWRAM_DATA u8 gUnknown_020238C5 = 0;
|
||||
static EWRAM_DATA u8 sLinkSendTaskId = 0;
|
||||
static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
|
||||
static EWRAM_DATA u8 gUnknown_020238C6 = 0;
|
||||
|
||||
extern u32 gUnknown_020239FC;
|
||||
extern u8 gBattleBufferA[][0x200];
|
||||
extern u8 gBattleBufferB[][0x200];
|
||||
extern u8 gActiveBattler;
|
||||
extern u32 gBattleExecBuffer;
|
||||
extern u32 gBattleControllerExecFlags;
|
||||
extern u8 gBattlersCount;
|
||||
extern u16 gBattlerPartyIndexes[];
|
||||
extern u8 gBanksBySide[];
|
||||
|
|
@ -39,10 +39,10 @@ extern u16 gCurrentMove;
|
|||
extern u16 gChosenMove;
|
||||
extern u16 gLastUsedItem;
|
||||
extern u8 gLastUsedAbility;
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gEffectBank;
|
||||
extern u8 gStringBank;
|
||||
extern u8 gBattlerAttacker;
|
||||
extern u8 gBattlerTarget;
|
||||
extern u8 gEffectBattler;
|
||||
extern u8 gPotentialItemEffectBattler;
|
||||
extern u8 gAbsentBattlerFlags;
|
||||
extern u8 gMultiHitCounter;
|
||||
extern u8 gUnknown_02024C78;
|
||||
|
|
@ -53,7 +53,7 @@ extern u8 gBattleTextBuff1[];
|
|||
extern u8 gBattleTextBuff2[];
|
||||
extern u8 gBattleTextBuff3[];
|
||||
extern void (*gBattleMainFunc)(void);
|
||||
extern void (*gBattleBankFunc[])(void);
|
||||
extern void (*gBattlerControllerFuncs[])(void);
|
||||
|
||||
u8 gBattleBuffersTransferData[0x170];
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ void sub_800B858(void)
|
|||
{
|
||||
OpenLink();
|
||||
CreateTask(sub_8083C50, 0);
|
||||
sub_800BF28();
|
||||
CreateTasksForSendRecvLinkBuffers();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -71,20 +71,20 @@ void sub_800B858(void)
|
|||
extern u8 gUnknown_02023A14_50;
|
||||
#endif
|
||||
|
||||
void setup_poochyena_battle(void)
|
||||
void SetUpBattleVarsAndBirchPoochyena(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
gBattleMainFunc = nullsub_41;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
gBattleBankFunc[i] = nullsub_91;
|
||||
gBattlerControllerFuncs[i] = nullsub_91;
|
||||
gBanksBySide[i] = 0xFF;
|
||||
gActionSelectionCursor[i] = 0;
|
||||
gMoveSelectionCursor[i] = 0;
|
||||
}
|
||||
sub_800B858();
|
||||
gBattleExecBuffer = 0;
|
||||
gBattleControllerExecFlags = 0;
|
||||
ClearBattleAnimationVars();
|
||||
ClearBattleMonForms();
|
||||
BattleAI_HandleItemUseBeforeAISetup();
|
||||
|
|
@ -131,26 +131,26 @@ void sub_800B9A8(void)
|
|||
{
|
||||
gBattleMainFunc = sub_8010800;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||
gBattleBankFunc[0] = SetBankFuncToSafariBufferRunCommand;
|
||||
gBattlerControllerFuncs[0] = SetBankFuncToSafariBufferRunCommand;
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
|
||||
gBattleBankFunc[0] = SetBankFuncToWallyBufferRunCommand;
|
||||
gBattlerControllerFuncs[0] = SetBankFuncToWallyBufferRunCommand;
|
||||
else
|
||||
gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[0] = 0;
|
||||
gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand;
|
||||
gBanksBySide[1] = 1;
|
||||
gBattlersCount = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleMainFunc = sub_8010800;
|
||||
gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[0] = 0;
|
||||
gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand;
|
||||
gBanksBySide[1] = 1;
|
||||
gBattleBankFunc[2] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[2] = 2;
|
||||
gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[3] = SetBankFuncToOpponentBufferRunCommand;
|
||||
gBanksBySide[3] = 3;
|
||||
gBattlersCount = 4;
|
||||
}
|
||||
|
|
@ -166,17 +166,17 @@ void sub_800BA78(void)
|
|||
if (gBattleTypeFlags & BATTLE_TYPE_WILD)
|
||||
{
|
||||
gBattleMainFunc = sub_8010800;
|
||||
gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[0] = 0;
|
||||
gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBanksBySide[1] = 1;
|
||||
gBattlersCount = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleBankFunc[1] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[1] = 0;
|
||||
gBattleBankFunc[0] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBanksBySide[0] = 1;
|
||||
gBattlersCount = 2;
|
||||
}
|
||||
|
|
@ -187,25 +187,25 @@ void sub_800BA78(void)
|
|||
if (gBattleTypeFlags & BATTLE_TYPE_WILD)
|
||||
{
|
||||
gBattleMainFunc = sub_8010800;
|
||||
gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[0] = 0;
|
||||
gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBanksBySide[1] = 1;
|
||||
gBattleBankFunc[2] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[2] = 2;
|
||||
gBattleBankFunc[3] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[3] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBanksBySide[3] = 3;
|
||||
gBattlersCount = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleBankFunc[1] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[1] = 0;
|
||||
gBattleBankFunc[0] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBanksBySide[0] = 1;
|
||||
gBattleBankFunc[3] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBattlerControllerFuncs[3] = SetBankFuncToPlayerBufferRunCommand;
|
||||
gBanksBySide[3] = 2;
|
||||
gBattleBankFunc[2] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBattlerControllerFuncs[2] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
gBanksBySide[2] = 3;
|
||||
gBattlersCount = 4;
|
||||
|
||||
|
|
@ -217,69 +217,69 @@ void sub_800BA78(void)
|
|||
gBattleMainFunc = sub_8010800;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
switch (gLinkPlayers[i].lp_field_18)
|
||||
switch (gLinkPlayers[i].id)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
sub_8094978(gLinkPlayers[i].lp_field_18, 0);
|
||||
sub_8094978(gLinkPlayers[i].id, 0);
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
sub_8094978(gLinkPlayers[i].lp_field_18, 1);
|
||||
sub_8094978(gLinkPlayers[i].id, 1);
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == multiplayerId)
|
||||
{
|
||||
gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToPlayerBufferRunCommand;
|
||||
switch (gLinkPlayers[i].lp_field_18)
|
||||
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToPlayerBufferRunCommand;
|
||||
switch (gLinkPlayers[i].id)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
gBanksBySide[gLinkPlayers[i].lp_field_18] = 0;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
|
||||
gBanksBySide[gLinkPlayers[i].id] = 0;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
gBanksBySide[gLinkPlayers[i].lp_field_18] = 2;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
|
||||
gBanksBySide[gLinkPlayers[i].id] = 2;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[multiplayerId].lp_field_18 & 1))
|
||||
|| ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[multiplayerId].lp_field_18 & 1)))
|
||||
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1))
|
||||
|| ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1)))
|
||||
{
|
||||
gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToLinkPartnerBufferRunCommand;
|
||||
switch (gLinkPlayers[i].lp_field_18)
|
||||
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToLinkPartnerBufferRunCommand;
|
||||
switch (gLinkPlayers[i].id)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
gBanksBySide[gLinkPlayers[i].lp_field_18] = 0;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
|
||||
gBanksBySide[gLinkPlayers[i].id] = 0;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
gBanksBySide[gLinkPlayers[i].lp_field_18] = 2;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
|
||||
gBanksBySide[gLinkPlayers[i].id] = 2;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
switch (gLinkPlayers[i].lp_field_18)
|
||||
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToLinkOpponentBufferRunCommand;
|
||||
switch (gLinkPlayers[i].id)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
gBanksBySide[gLinkPlayers[i].lp_field_18] = 1;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
|
||||
gBanksBySide[gLinkPlayers[i].id] = 1;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
gBanksBySide[gLinkPlayers[i].lp_field_18] = 3;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
|
||||
gBanksBySide[gLinkPlayers[i].id] = 3;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -386,19 +386,21 @@ void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_800BF28(void)
|
||||
void CreateTasksForSendRecvLinkBuffers(void)
|
||||
{
|
||||
gUnknown_020238C4 = CreateTask(sub_800C1A8, 0);
|
||||
gTasks[gUnknown_020238C4].data[11] = 0;
|
||||
gTasks[gUnknown_020238C4].data[12] = 0;
|
||||
gTasks[gUnknown_020238C4].data[13] = 0;
|
||||
gTasks[gUnknown_020238C4].data[14] = 0;
|
||||
gTasks[gUnknown_020238C4].data[15] = 0;
|
||||
gUnknown_020238C5 = CreateTask(sub_800C47C, 0);
|
||||
gTasks[gUnknown_020238C5].data[12] = 0;
|
||||
gTasks[gUnknown_020238C5].data[13] = 0;
|
||||
gTasks[gUnknown_020238C5].data[14] = 0;
|
||||
gTasks[gUnknown_020238C5].data[15] = 0;
|
||||
sLinkSendTaskId = CreateTask(Task_HandleSendLinkBuffersData, 0);
|
||||
gTasks[sLinkSendTaskId].data[11] = 0;
|
||||
gTasks[sLinkSendTaskId].data[12] = 0;
|
||||
gTasks[sLinkSendTaskId].data[13] = 0;
|
||||
gTasks[sLinkSendTaskId].data[14] = 0;
|
||||
gTasks[sLinkSendTaskId].data[15] = 0;
|
||||
|
||||
sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0);
|
||||
gTasks[sLinkReceiveTaskId].data[12] = 0;
|
||||
gTasks[sLinkReceiveTaskId].data[13] = 0;
|
||||
gTasks[sLinkReceiveTaskId].data[14] = 0;
|
||||
gTasks[sLinkReceiveTaskId].data[15] = 0;
|
||||
|
||||
gUnknown_020238C6 = 0;
|
||||
CpuFill16(0, EWRAM_14000, 0x2000);
|
||||
}
|
||||
|
|
@ -409,27 +411,27 @@ void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data)
|
|||
int i;
|
||||
|
||||
r9 = size - size % 4 + 4;
|
||||
if (gTasks[gUnknown_020238C4].data[14] + r9 + 9 > 0x1000)
|
||||
if (gTasks[sLinkSendTaskId].data[14] + r9 + 9 > 0x1000)
|
||||
{
|
||||
gTasks[gUnknown_020238C4].data[12] = gTasks[gUnknown_020238C4].data[14];
|
||||
gTasks[gUnknown_020238C4].data[14] = 0;
|
||||
gTasks[sLinkSendTaskId].data[12] = gTasks[sLinkSendTaskId].data[14];
|
||||
gTasks[sLinkSendTaskId].data[14] = 0;
|
||||
}
|
||||
|
||||
ewram14000arr(0, gTasks[gUnknown_020238C4].data[14]) = a;
|
||||
ewram14000arr(1, gTasks[gUnknown_020238C4].data[14]) = gActiveBattler;
|
||||
ewram14000arr(2, gTasks[gUnknown_020238C4].data[14]) = gBankAttacker;
|
||||
ewram14000arr(3, gTasks[gUnknown_020238C4].data[14]) = gBankTarget;
|
||||
ewram14000arr(4, gTasks[gUnknown_020238C4].data[14]) = r9;
|
||||
ewram14000arr(5, gTasks[gUnknown_020238C4].data[14]) = (r9 & 0x0000FF00) >> 8;
|
||||
ewram14000arr(6, gTasks[gUnknown_020238C4].data[14]) = gAbsentBattlerFlags;
|
||||
ewram14000arr(7, gTasks[gUnknown_020238C4].data[14]) = gEffectBank;
|
||||
ewram14000arr(0, gTasks[sLinkSendTaskId].data[14]) = a;
|
||||
ewram14000arr(1, gTasks[sLinkSendTaskId].data[14]) = gActiveBattler;
|
||||
ewram14000arr(2, gTasks[sLinkSendTaskId].data[14]) = gBattlerAttacker;
|
||||
ewram14000arr(3, gTasks[sLinkSendTaskId].data[14]) = gBattlerTarget;
|
||||
ewram14000arr(4, gTasks[sLinkSendTaskId].data[14]) = r9;
|
||||
ewram14000arr(5, gTasks[sLinkSendTaskId].data[14]) = (r9 & 0x0000FF00) >> 8;
|
||||
ewram14000arr(6, gTasks[sLinkSendTaskId].data[14]) = gAbsentBattlerFlags;
|
||||
ewram14000arr(7, gTasks[sLinkSendTaskId].data[14]) = gEffectBattler;
|
||||
|
||||
for (i = 0; i < size; i++)
|
||||
ewram14008arr(i, gTasks[gUnknown_020238C4].data[14]) = data[i];
|
||||
gTasks[gUnknown_020238C4].data[14] = gTasks[gUnknown_020238C4].data[14] + r9 + 8;
|
||||
ewram14008arr(i, gTasks[sLinkSendTaskId].data[14]) = data[i];
|
||||
gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + r9 + 8;
|
||||
}
|
||||
|
||||
void sub_800C1A8(u8 taskId)
|
||||
void Task_HandleSendLinkBuffersData(u8 taskId)
|
||||
{
|
||||
u16 var;
|
||||
|
||||
|
|
@ -519,24 +521,24 @@ void sub_800C35C(void)
|
|||
recvBuffer = gBlockRecvBuffer[i];
|
||||
#endif
|
||||
r6 = gBlockRecvBuffer[i][2];
|
||||
if (gTasks[gUnknown_020238C5].data[14] + 9 + r6 > 0x1000)
|
||||
if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000)
|
||||
{
|
||||
gTasks[gUnknown_020238C5].data[12] = gTasks[gUnknown_020238C5].data[14];
|
||||
gTasks[gUnknown_020238C5].data[14] = 0;
|
||||
gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
|
||||
gTasks[sLinkReceiveTaskId].data[14] = 0;
|
||||
}
|
||||
//_0800C402
|
||||
dest = EWRAM_15000 + gTasks[gUnknown_020238C5].data[14];
|
||||
dest = EWRAM_15000 + gTasks[sLinkReceiveTaskId].data[14];
|
||||
src = (u8 *)recvBuffer;
|
||||
for (j = 0; j < r6 + 8; j++)
|
||||
dest[j] = src[j];
|
||||
gTasks[gUnknown_020238C5].data[14] = gTasks[gUnknown_020238C5].data[14] + r6 + 8;
|
||||
gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8;
|
||||
}
|
||||
//_0800C446
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800C47C(u8 taskId)
|
||||
void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
|
||||
{
|
||||
u16 r7;
|
||||
u8 r4;
|
||||
|
|
@ -555,16 +557,16 @@ void sub_800C47C(u8 taskId)
|
|||
switch (ewram15000arr(0, gTasks[taskId].data[15]))
|
||||
{
|
||||
case 0:
|
||||
if (gBattleExecBuffer & gBitTable[r4])
|
||||
if (gBattleControllerExecFlags & gBitTable[r4])
|
||||
return;
|
||||
memcpy(gBattleBufferA[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7);
|
||||
sub_80155A4(r4);
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
|
||||
{
|
||||
gBankAttacker = ewram15000arr(2, gTasks[taskId].data[15]);
|
||||
gBankTarget = ewram15000arr(3, gTasks[taskId].data[15]);
|
||||
gBattlerAttacker = ewram15000arr(2, gTasks[taskId].data[15]);
|
||||
gBattlerTarget = ewram15000arr(3, gTasks[taskId].data[15]);
|
||||
gAbsentBattlerFlags = ewram15000arr(6, gTasks[taskId].data[15]);
|
||||
gEffectBank = ewram15000arr(7, gTasks[taskId].data[15]);
|
||||
gEffectBattler = ewram15000arr(7, gTasks[taskId].data[15]);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -572,32 +574,33 @@ void sub_800C47C(u8 taskId)
|
|||
break;
|
||||
case 2:
|
||||
r2 = ewram15000arr(8, gTasks[taskId].data[15]);
|
||||
gBattleExecBuffer &= ~(gBitTable[r4] << (r2 * 4));
|
||||
gBattleControllerExecFlags &= ~(gBitTable[r4] << (r2 * 4));
|
||||
break;
|
||||
}
|
||||
|
||||
gTasks[taskId].data[15] = gTasks[taskId].data[15] + r7 + 8;
|
||||
}
|
||||
}
|
||||
|
||||
void EmitGetAttributes(u8 a, u8 b, u8 c)
|
||||
void BtlController_EmitGetMonData(u8 bufferId, u8 b, u8 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 0;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
gBattleBuffersTransferData[2] = c;
|
||||
gBattleBuffersTransferData[3] = 0;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd1(u8 a, u8 b, u8 c)
|
||||
void BtlController_EmitGetRawMonData(u8 bufferId, u8 b, u8 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 1;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
gBattleBuffersTransferData[2] = c;
|
||||
gBattleBuffersTransferData[3] = 0;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitSetMonData(u8 a, u8 b, u8 c, u8 d, void *e)
|
||||
void BtlController_EmitSetMonData(u8 bufferId, u8 b, u8 c, u8 d, void *e)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -606,10 +609,10 @@ void EmitSetMonData(u8 a, u8 b, u8 c, u8 d, void *e)
|
|||
gBattleBuffersTransferData[2] = c;
|
||||
for (i = 0; i < d; i++)
|
||||
gBattleBuffersTransferData[3 + i] = *(u8*)(e++);
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, d + 3);
|
||||
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, d + 3);
|
||||
}
|
||||
|
||||
void Emitcmd3(u8 a, u8 b, u8 c, u8 *d)
|
||||
void BtlController_EmitSetRawMonData(u8 bufferId, u8 b, u8 c, u8 *d)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -618,35 +621,35 @@ void Emitcmd3(u8 a, u8 b, u8 c, u8 *d)
|
|||
gBattleBuffersTransferData[2] = c;
|
||||
for (i = 0; i < c; i++)
|
||||
gBattleBuffersTransferData[3 + i] = *(d++);
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 3);
|
||||
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, c + 3);
|
||||
}
|
||||
|
||||
void EmitLoadPokeSprite(u8 a)
|
||||
void BtlController_EmitLoadMonSprite(u8 bufferId)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 4;
|
||||
gBattleBuffersTransferData[1] = 4;
|
||||
gBattleBuffersTransferData[2] = 4;
|
||||
gBattleBuffersTransferData[3] = 4;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitSendOutPoke(u8 a, u8 b, u8 c)
|
||||
void BtlController_EmitSwitchInAnim(u8 bufferId, u8 b, u8 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 5;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
gBattleBuffersTransferData[2] = c;
|
||||
gBattleBuffersTransferData[3] = 5;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitReturnPokeToBall(u8 a, u8 b)
|
||||
void BtlController_EmitReturnMonToBall(u8 bufferId, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 6;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
|
||||
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void EmitTrainerThrow(u8 a)
|
||||
void BtlController_EmitDrawTrainerPic(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 7;
|
||||
gBattleBuffersTransferData[1] = 7;
|
||||
|
|
@ -655,7 +658,7 @@ void EmitTrainerThrow(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitTrainerSlide(u8 a)
|
||||
void BtlController_EmitTrainerSlide(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 8;
|
||||
gBattleBuffersTransferData[1] = 8;
|
||||
|
|
@ -664,7 +667,7 @@ void EmitTrainerSlide(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitTrainerSlideBack(u8 a)
|
||||
void BtlController_EmitTrainerSlideBack(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 9;
|
||||
gBattleBuffersTransferData[1] = 9;
|
||||
|
|
@ -673,7 +676,7 @@ void EmitTrainerSlideBack(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd10(u8 a)
|
||||
void BtlController_EmitFaintAnimation(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 10;
|
||||
gBattleBuffersTransferData[1] = 10;
|
||||
|
|
@ -682,7 +685,7 @@ void Emitcmd10(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd11(u8 a)
|
||||
void BtlController_EmitPaletteFade(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 11;
|
||||
gBattleBuffersTransferData[1] = 11;
|
||||
|
|
@ -691,7 +694,7 @@ void Emitcmd11(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd12(u8 a)
|
||||
void BtlController_EmitSuccessBallThrowAnim(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 12;
|
||||
gBattleBuffersTransferData[1] = 12;
|
||||
|
|
@ -700,14 +703,14 @@ void Emitcmd12(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitBallThrow(u8 a, u8 b)
|
||||
void BtlController_EmitBallThrowAnim(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 13;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void EmitPuase(u8 a, u8 b, u8 *c)
|
||||
void BtlController_EmitPause(u8 a, u8 b, u8 *c)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -718,7 +721,7 @@ void EmitPuase(u8 a, u8 b, u8 *c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2);
|
||||
}
|
||||
|
||||
void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g)
|
||||
void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 15;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -748,7 +751,7 @@ void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStru
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C);
|
||||
}
|
||||
|
||||
void EmitPrintString(u8 a, u16 stringID)
|
||||
void BtlController_EmitPrintString(u8 a, u16 stringID)
|
||||
{
|
||||
s32 i;
|
||||
struct StringInfoBattle* stringInfo;
|
||||
|
|
@ -766,7 +769,7 @@ void EmitPrintString(u8 a, u16 stringID)
|
|||
stringInfo->scrActive = gBattleStruct->scriptingActive;
|
||||
stringInfo->unk1605E = gBattleStruct->unk1605E;
|
||||
stringInfo->hpScale = gBattleStruct->hpScale;
|
||||
stringInfo->StringBank = gStringBank;
|
||||
stringInfo->StringBank = gPotentialItemEffectBattler;
|
||||
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
|
|
@ -780,7 +783,7 @@ void EmitPrintString(u8 a, u16 stringID)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
|
||||
}
|
||||
|
||||
void EmitPrintStringPlayerOnly(u8 a, u16 stringID)
|
||||
void BtlController_EmitPrintSelectionString(u8 a, u16 stringID)
|
||||
{
|
||||
s32 i;
|
||||
struct StringInfoBattle* stringInfo;
|
||||
|
|
@ -809,7 +812,7 @@ void EmitPrintStringPlayerOnly(u8 a, u16 stringID)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
|
||||
}
|
||||
|
||||
void Emitcmd18(u8 a, u8 b, u16 c)
|
||||
void BtlController_EmitChooseAction(u8 a, u8 b, u16 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 18;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -818,14 +821,14 @@ void Emitcmd18(u8 a, u8 b, u16 c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd19(u8 a, u8 b)
|
||||
void BtlController_EmitUnknownYesNoBox(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 19;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void Emitcmd20(u8 a, u8 b, u8 c, u8 *d)
|
||||
void BtlController_EmitChooseMove(u8 a, u8 b, u8 c, u8 *d)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
|
|
@ -838,7 +841,7 @@ void Emitcmd20(u8 a, u8 b, u8 c, u8 *d)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 24);
|
||||
}
|
||||
|
||||
void EmitOpenBag(u8 a, u8 *b)
|
||||
void BtlController_EmitChooseItem(u8 a, u8 *b)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -848,7 +851,7 @@ void EmitOpenBag(u8 a, u8 *b)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
|
||||
void BtlController_EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -861,7 +864,7 @@ void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written
|
||||
}
|
||||
|
||||
void Emitcmd23(u8 a)
|
||||
void BtlController_EmitCmd23(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 23;
|
||||
gBattleBuffersTransferData[1] = 23;
|
||||
|
|
@ -872,7 +875,7 @@ void Emitcmd23(u8 a)
|
|||
|
||||
// FIXME: I think this function is supposed to take s16 as its second argument,
|
||||
// but battle_4.c expects u16
|
||||
void EmitHealthBarUpdate(u8 a, u16 b)
|
||||
void BtlController_EmitHealthBarUpdate(u8 a, u16 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 24;
|
||||
gBattleBuffersTransferData[1] = 0;
|
||||
|
|
@ -883,7 +886,7 @@ void EmitHealthBarUpdate(u8 a, u16 b)
|
|||
|
||||
// FIXME: I think this function is supposed to take s16 as its third argument,
|
||||
// but battle_4.c expects u16
|
||||
void EmitExpBarUpdate(u8 a, u8 b, u16 c)
|
||||
void BtlController_EmitExpUpdate(u8 a, u8 b, u16 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 25;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -892,7 +895,7 @@ void EmitExpBarUpdate(u8 a, u8 b, u16 c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitStatusIconUpdate(u8 a, u32 b, u32 c)
|
||||
void BtlController_EmitStatusIconUpdate(u8 a, u32 b, u32 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 26;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -906,7 +909,7 @@ void EmitStatusIconUpdate(u8 a, u32 b, u32 c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 9);
|
||||
}
|
||||
|
||||
void EmitStatusAnimation(u8 a, u8 b, u32 c)
|
||||
void BtlController_EmitStatusAnimation(u8 a, u8 b, u32 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 27;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -917,14 +920,14 @@ void EmitStatusAnimation(u8 a, u8 b, u32 c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 6);
|
||||
}
|
||||
|
||||
void EmitStatusXor(u8 a, u8 b)
|
||||
void BtlController_EmitStatusXor(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 28;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void Emitcmd29(u8 a, u16 b, u8 *c)
|
||||
void BtlController_EmitDataTransfer(u8 a, u16 b, u8 *c)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -937,7 +940,7 @@ void Emitcmd29(u8 a, u16 b, u8 *c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 4);
|
||||
}
|
||||
|
||||
void EmitDMATransfer(u8 a, u32 b, u16 c, u8 *d)
|
||||
void BtlController_EmitDMA3Transfer(u8 a, u32 b, u16 c, u8 *d)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -953,7 +956,7 @@ void EmitDMATransfer(u8 a, u32 b, u16 c, u8 *d)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 7);
|
||||
}
|
||||
|
||||
void Emitcmd31(u8 a, u16 b, u8 *c)
|
||||
void BtlController_EmitPlayBGM(u8 a, u16 b, u8 *c)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -965,7 +968,7 @@ void Emitcmd31(u8 a, u16 b, u8 *c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3);
|
||||
}
|
||||
|
||||
void Emitcmd32(u8 a, u16 b, u8 *c)
|
||||
void BtlController_EmitCmd32(u8 a, u16 b, u8 *c)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -977,7 +980,7 @@ void Emitcmd32(u8 a, u16 b, u8 *c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3);
|
||||
}
|
||||
|
||||
void Emitcmd33(u8 a, u8 b, u16 c)
|
||||
void BtlController_EmitTwoReturnValues(u8 a, u8 b, u16 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 33;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -986,7 +989,7 @@ void Emitcmd33(u8 a, u8 b, u16 c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd34(u8 a, u8 b, u8 *c)
|
||||
void BtlController_EmitChosenMonReturnValue(u8 a, u8 b, u8 *c)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -997,7 +1000,7 @@ void Emitcmd34(u8 a, u8 b, u8 *c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 5);
|
||||
}
|
||||
|
||||
void Emitcmd35(u8 a, u16 b)
|
||||
void BtlController_EmitOneReturnValue(u8 a, u16 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 35;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -1006,7 +1009,7 @@ void Emitcmd35(u8 a, u16 b)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd36(u8 a, u16 b)
|
||||
void BtlController_EmitOneReturnValue_Duplicate(u8 a, u16 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 36;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -1015,7 +1018,7 @@ void Emitcmd36(u8 a, u16 b)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd37(u8 a)
|
||||
void BtlController_EmitCmd37(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 37;
|
||||
gBattleBuffersTransferData[1] = 37;
|
||||
|
|
@ -1024,14 +1027,14 @@ void Emitcmd37(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd38(u8 a, u8 b)
|
||||
void BtlController_EmitCmd38(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 38;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void Emitcmd39(u8 a)
|
||||
void BtlController_EmitCmd39(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 39;
|
||||
gBattleBuffersTransferData[1] = 39;
|
||||
|
|
@ -1040,7 +1043,7 @@ void Emitcmd39(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd40(u8 a)
|
||||
void BtlController_EmitCmd40(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 40;
|
||||
gBattleBuffersTransferData[1] = 40;
|
||||
|
|
@ -1049,7 +1052,7 @@ void Emitcmd40(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitHitAnimation(u8 a)
|
||||
void BtlController_EmitHitAnimation(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 41;
|
||||
gBattleBuffersTransferData[1] = 41;
|
||||
|
|
@ -1058,7 +1061,7 @@ void EmitHitAnimation(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd42(u8 a)
|
||||
void BtlController_EmitCmd42(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 42;
|
||||
gBattleBuffersTransferData[1] = 42;
|
||||
|
|
@ -1067,7 +1070,7 @@ void Emitcmd42(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitEffectivenessSound(u8 a, u16 b)
|
||||
void BtlController_EmitPlaySE(u8 a, u16 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 43;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -1076,7 +1079,7 @@ void EmitEffectivenessSound(u8 a, u16 b)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd44(u8 a, u16 b)
|
||||
void BtlController_EmitPlayFanfareOrBGM(u8 a, u16 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 44;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -1085,7 +1088,7 @@ void Emitcmd44(u8 a, u16 b)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitFaintingCry(u8 a)
|
||||
void BtlController_EmitFaintingCry(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 45;
|
||||
gBattleBuffersTransferData[1] = 45;
|
||||
|
|
@ -1094,14 +1097,14 @@ void EmitFaintingCry(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitIntroSlide(u8 a, u8 battleTerrain)
|
||||
void BtlController_EmitIntroSlide(u8 a, u8 battleTerrain)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 46;
|
||||
gBattleBuffersTransferData[1] = battleTerrain;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void EmitTrainerBallThrow(u8 a)
|
||||
void BtlController_EmitIntroTrainerBallThrow(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 47;
|
||||
gBattleBuffersTransferData[1] = 47;
|
||||
|
|
@ -1110,7 +1113,7 @@ void EmitTrainerBallThrow(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c)
|
||||
void BtlController_EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -1123,7 +1126,7 @@ void EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 52);
|
||||
}
|
||||
|
||||
void Emitcmd49(u8 a)
|
||||
void BtlController_EmitHidePartyStatusSummary(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 49;
|
||||
gBattleBuffersTransferData[1] = 49;
|
||||
|
|
@ -1132,7 +1135,7 @@ void Emitcmd49(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void Emitcmd50(u8 a)
|
||||
void BtlController_EmitEndBounceEffect(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 50;
|
||||
gBattleBuffersTransferData[1] = 50;
|
||||
|
|
@ -1141,7 +1144,7 @@ void Emitcmd50(u8 a)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitSpriteInvisibility(u8 a, u8 b)
|
||||
void BtlController_EmitSpriteInvisibility(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 51;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -1150,7 +1153,7 @@ void EmitSpriteInvisibility(u8 a, u8 b)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitBattleAnimation(u8 a, u8 b, u16 c)
|
||||
void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 52;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
@ -1159,21 +1162,21 @@ void EmitBattleAnimation(u8 a, u8 b, u16 c)
|
|||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitLinkStandbyMsg(u8 a, u8 b)
|
||||
void BtlController_EmitLinkStandbyMsg(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 53;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void EmitResetActionMoveSelection(u8 a, u8 b)
|
||||
void BtlController_EmitResetActionMoveSelection(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 54;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void Emitcmd55(u8 a, u8 b)
|
||||
void BtlController_EmitCmd55(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 55;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
#define gCastformElevations gUnknownCastformData_0837F5A8
|
||||
#define gCastformBackSpriteYCoords gUnknown_0837F5AC
|
||||
#define gTransformPersonalities gTransformedPersonalities
|
||||
#define gBattleMonSprites gBankSpriteIds
|
||||
#define gBattleMonSprites gBattlerSpriteIds
|
||||
|
||||
struct Struct_gUnknown_0837F578
|
||||
{
|
||||
|
|
|
|||
128
src/sprite.c
128
src/sprite.c
|
|
@ -18,15 +18,15 @@
|
|||
|
||||
#define ALLOC_SPRITE_TILE(n) \
|
||||
{ \
|
||||
gSpriteTileAllocBitmap[(n) / 8] |= (1 << ((n) % 8)); \
|
||||
sSpriteTileAllocBitmap[(n) / 8] |= (1 << ((n) % 8)); \
|
||||
}
|
||||
|
||||
#define FREE_SPRITE_TILE(n) \
|
||||
{ \
|
||||
gSpriteTileAllocBitmap[(n) / 8] &= ~(1 << ((n) % 8)); \
|
||||
sSpriteTileAllocBitmap[(n) / 8] &= ~(1 << ((n) % 8)); \
|
||||
}
|
||||
|
||||
#define SPRITE_TILE_IS_ALLOCATED(n) ((gSpriteTileAllocBitmap[(n) / 8] >> ((n) % 8)) & 1)
|
||||
#define SPRITE_TILE_IS_ALLOCATED(n) ((sSpriteTileAllocBitmap[(n) / 8] >> ((n) % 8)) & 1)
|
||||
|
||||
struct SpriteCopyRequest
|
||||
{
|
||||
|
|
@ -93,21 +93,21 @@ typedef void (*AnimFunc)(struct Sprite *);
|
|||
typedef void (*AnimCmdFunc)(struct Sprite *);
|
||||
typedef void (*AffineAnimCmdFunc)(u8 matrixNum, struct Sprite *);
|
||||
|
||||
#define DUMMY_OAM_DATA \
|
||||
{ \
|
||||
160, /* Y (off-screen) */ \
|
||||
0, \
|
||||
0, \
|
||||
0, \
|
||||
0, \
|
||||
0, \
|
||||
304, /* X */ \
|
||||
0, \
|
||||
0, \
|
||||
0, \
|
||||
3, /* lowest priority */ \
|
||||
0, \
|
||||
0 \
|
||||
#define DUMMY_OAM_DATA \
|
||||
{ \
|
||||
.y = 160, \
|
||||
.affineMode = 0, \
|
||||
.objMode = 0, \
|
||||
.mosaic = 0, \
|
||||
.bpp = 0, \
|
||||
.shape = SPRITE_SHAPE(8x8), \
|
||||
.x = 304, \
|
||||
.matrixNum = 0, \
|
||||
.size = SPRITE_SIZE(8x8), \
|
||||
.tileNum = 0, \
|
||||
.priority = 3, /* lowest priority */ \
|
||||
.paletteNum = 0, \
|
||||
.affineParam = 0 \
|
||||
}
|
||||
|
||||
#define ANIM_END 0xFFFF
|
||||
|
|
@ -180,10 +180,10 @@ static const struct Sprite sDummySprite =
|
|||
.animPaused = 0,
|
||||
.affineAnimPaused = 0,
|
||||
.animLoopCounter = 0,
|
||||
.data = {0},
|
||||
.data = {0, 0, 0, 0, 0, 0, 0},
|
||||
.inUse = 0,
|
||||
.coordOffsetEnabled = 0,
|
||||
.invisible = 0,
|
||||
.invisible = FALSE,
|
||||
.flags_3 = 0,
|
||||
.flags_4 = 0,
|
||||
.flags_5 = 0,
|
||||
|
|
@ -287,22 +287,22 @@ static u16 sSpriteTileRanges[MAX_SPRITES * 2];
|
|||
static struct AffineAnimState sAffineAnimStates[OAM_MATRIX_COUNT];
|
||||
static u16 sSpritePaletteTags[16];
|
||||
|
||||
u8 gSpriteOrder[MAX_SPRITES];
|
||||
bool8 gShouldProcessSpriteCopyRequests;
|
||||
u8 gSpriteCopyRequestCount;
|
||||
struct SpriteCopyRequest gSpriteCopyRequests[MAX_SPRITE_COPY_REQUESTS];
|
||||
u8 gOamLimit;
|
||||
u16 gReservedSpriteTileCount;
|
||||
u8 gSpriteTileAllocBitmap[128];
|
||||
s16 gSpriteCoordOffsetX;
|
||||
s16 gSpriteCoordOffsetY;
|
||||
u32 gOamMatrixAllocBitmap;
|
||||
struct OamMatrix gOamMatrices[OAM_MATRIX_COUNT];
|
||||
u8 gReservedSpritePaletteCount;
|
||||
|
||||
EWRAM_DATA struct Sprite gSprites[MAX_SPRITES + 1] = {0};
|
||||
EWRAM_DATA u16 gSpritePriorities[MAX_SPRITES] = {0};
|
||||
EWRAM_DATA u8 gAffineAnimsDisabled = {0};
|
||||
EWRAM_DATA u16 sSpritePriorities[MAX_SPRITES] = {0};
|
||||
u8 sSpriteOrder[MAX_SPRITES];
|
||||
bool8 sShouldProcessSpriteCopyRequests;
|
||||
u8 gSpriteCopyRequestCount;
|
||||
struct SpriteCopyRequest sSpriteCopyRequests[MAX_SPRITE_COPY_REQUESTS];
|
||||
u8 gOamLimit;
|
||||
u16 gReservedSpriteTileCount;
|
||||
u8 sSpriteTileAllocBitmap[128];
|
||||
s16 gSpriteCoordOffsetX;
|
||||
s16 gSpriteCoordOffsetY;
|
||||
struct OamMatrix gOamMatrices[OAM_MATRIX_COUNT];
|
||||
EWRAM_DATA bool8 gAffineAnimsDisabled = 0;
|
||||
|
||||
void ResetSpriteData(void)
|
||||
{
|
||||
|
|
@ -346,7 +346,7 @@ void BuildOamBuffer(void)
|
|||
AddSpritesToOamBuffer();
|
||||
CopyMatricesToOamBuffer();
|
||||
gMain.oamLoadDisabled = temp;
|
||||
gShouldProcessSpriteCopyRequests = TRUE;
|
||||
sShouldProcessSpriteCopyRequests = TRUE;
|
||||
}
|
||||
|
||||
static void UpdateOamCoords(void)
|
||||
|
|
@ -378,7 +378,7 @@ static void BuildSpritePriorities(void)
|
|||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
u16 priority = sprite->subpriority | (sprite->oam.priority << 8);
|
||||
gSpritePriorities[i] = priority;
|
||||
sSpritePriorities[i] = priority;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -388,10 +388,10 @@ static void SortSprites(void)
|
|||
for (i = 1; i < MAX_SPRITES; i++)
|
||||
{
|
||||
u8 j = i;
|
||||
struct Sprite *sprite1 = &gSprites[gSpriteOrder[i - 1]];
|
||||
struct Sprite *sprite2 = &gSprites[gSpriteOrder[i]];
|
||||
u16 sprite1Priority = gSpritePriorities[gSpriteOrder[i - 1]];
|
||||
u16 sprite2Priority = gSpritePriorities[gSpriteOrder[i]];
|
||||
struct Sprite *sprite1 = &gSprites[sSpriteOrder[i - 1]];
|
||||
struct Sprite *sprite2 = &gSprites[sSpriteOrder[i]];
|
||||
u16 sprite1Priority = sSpritePriorities[sSpriteOrder[i - 1]];
|
||||
u16 sprite2Priority = sSpritePriorities[sSpriteOrder[i]];
|
||||
s16 sprite1Y = sprite1->oam.y;
|
||||
s16 sprite2Y = sprite2->oam.y;
|
||||
|
||||
|
|
@ -427,20 +427,20 @@ static void SortSprites(void)
|
|||
&& ((sprite1Priority > sprite2Priority)
|
||||
|| (sprite1Priority == sprite2Priority && sprite1Y < sprite2Y)))
|
||||
{
|
||||
u8 temp = gSpriteOrder[j];
|
||||
gSpriteOrder[j] = gSpriteOrder[j - 1];
|
||||
gSpriteOrder[j - 1] = temp;
|
||||
u8 temp = sSpriteOrder[j];
|
||||
sSpriteOrder[j] = sSpriteOrder[j - 1];
|
||||
sSpriteOrder[j - 1] = temp;
|
||||
|
||||
// UB: If j equals 1, then j-- makes j equal 0.
|
||||
// Then, gSpriteOrder[-1] gets accessed below.
|
||||
// Then, sSpriteOrder[-1] gets accessed below.
|
||||
// Although this doesn't result in a bug in the ROM,
|
||||
// the behavior is undefined.
|
||||
j--;
|
||||
|
||||
sprite1 = &gSprites[gSpriteOrder[j - 1]];
|
||||
sprite2 = &gSprites[gSpriteOrder[j]];
|
||||
sprite1Priority = gSpritePriorities[gSpriteOrder[j - 1]];
|
||||
sprite2Priority = gSpritePriorities[gSpriteOrder[j]];
|
||||
sprite1 = &gSprites[sSpriteOrder[j - 1]];
|
||||
sprite2 = &gSprites[sSpriteOrder[j]];
|
||||
sprite1Priority = sSpritePriorities[sSpriteOrder[j - 1]];
|
||||
sprite2Priority = sSpritePriorities[sSpriteOrder[j]];
|
||||
sprite1Y = sprite1->oam.y;
|
||||
sprite2Y = sprite2->oam.y;
|
||||
|
||||
|
|
@ -495,7 +495,7 @@ static void AddSpritesToOamBuffer(void)
|
|||
|
||||
while (i < MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[gSpriteOrder[i]];
|
||||
struct Sprite *sprite = &gSprites[sSpriteOrder[i]];
|
||||
if (sprite->inUse && !sprite->invisible && AddSpriteToOamBuffer(sprite, &oamIndex))
|
||||
break;
|
||||
i++;
|
||||
|
|
@ -662,14 +662,14 @@ static void ClearSpriteCopyRequests(void)
|
|||
{
|
||||
u8 i;
|
||||
|
||||
gShouldProcessSpriteCopyRequests = FALSE;
|
||||
sShouldProcessSpriteCopyRequests = FALSE;
|
||||
gSpriteCopyRequestCount = 0;
|
||||
|
||||
for (i = 0; i < MAX_SPRITE_COPY_REQUESTS; i++)
|
||||
{
|
||||
gSpriteCopyRequests[i].src = 0;
|
||||
gSpriteCopyRequests[i].dest = 0;
|
||||
gSpriteCopyRequests[i].size = 0;
|
||||
sSpriteCopyRequests[i].src = 0;
|
||||
sSpriteCopyRequests[i].dest = 0;
|
||||
sSpriteCopyRequests[i].size = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -777,17 +777,17 @@ u8 SpriteTileAllocBitmapOp(u16 bit, u8 op)
|
|||
if (op == 0)
|
||||
{
|
||||
val = ~(1 << val);
|
||||
gSpriteTileAllocBitmap[index] &= val;
|
||||
sSpriteTileAllocBitmap[index] &= val;
|
||||
}
|
||||
else if (op == 1)
|
||||
{
|
||||
val = (1 << val);
|
||||
gSpriteTileAllocBitmap[index] |= val;
|
||||
sSpriteTileAllocBitmap[index] |= val;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = 1 << shift;
|
||||
retVal &= gSpriteTileAllocBitmap[index];
|
||||
retVal &= sSpriteTileAllocBitmap[index];
|
||||
}
|
||||
|
||||
return retVal;
|
||||
|
|
@ -799,18 +799,18 @@ void SpriteCallbackDummy(struct Sprite *sprite)
|
|||
|
||||
void ProcessSpriteCopyRequests(void)
|
||||
{
|
||||
if (gShouldProcessSpriteCopyRequests)
|
||||
if (sShouldProcessSpriteCopyRequests)
|
||||
{
|
||||
u8 i = 0;
|
||||
|
||||
while (gSpriteCopyRequestCount > 0)
|
||||
{
|
||||
CpuCopy16(gSpriteCopyRequests[i].src, gSpriteCopyRequests[i].dest, gSpriteCopyRequests[i].size);
|
||||
CpuCopy16(sSpriteCopyRequests[i].src, sSpriteCopyRequests[i].dest, sSpriteCopyRequests[i].size);
|
||||
gSpriteCopyRequestCount--;
|
||||
i++;
|
||||
}
|
||||
|
||||
gShouldProcessSpriteCopyRequests = FALSE;
|
||||
sShouldProcessSpriteCopyRequests = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -818,9 +818,9 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct Spr
|
|||
{
|
||||
if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
|
||||
{
|
||||
gSpriteCopyRequests[gSpriteCopyRequestCount].src = images[index].data;
|
||||
gSpriteCopyRequests[gSpriteCopyRequestCount].dest = OBJ_VRAM0 + TILE_SIZE_4BPP * tileNum;
|
||||
gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size;
|
||||
sSpriteCopyRequests[gSpriteCopyRequestCount].src = images[index].data;
|
||||
sSpriteCopyRequests[gSpriteCopyRequestCount].dest = OBJ_VRAM0 + TILE_SIZE_4BPP * tileNum;
|
||||
sSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size;
|
||||
gSpriteCopyRequestCount++;
|
||||
}
|
||||
#if DEBUG
|
||||
|
|
@ -835,9 +835,9 @@ void RequestSpriteCopy(const void *src, u8 *dest, u16 size)
|
|||
{
|
||||
if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
|
||||
{
|
||||
gSpriteCopyRequests[gSpriteCopyRequestCount].src = src;
|
||||
gSpriteCopyRequests[gSpriteCopyRequestCount].dest = dest;
|
||||
gSpriteCopyRequests[gSpriteCopyRequestCount].size = size;
|
||||
sSpriteCopyRequests[gSpriteCopyRequestCount].src = src;
|
||||
sSpriteCopyRequests[gSpriteCopyRequestCount].dest = dest;
|
||||
sSpriteCopyRequests[gSpriteCopyRequestCount].size = size;
|
||||
gSpriteCopyRequestCount++;
|
||||
}
|
||||
#if DEBUG
|
||||
|
|
@ -880,7 +880,7 @@ static void ResetAllSprites(void)
|
|||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
ResetSprite(&gSprites[i]);
|
||||
gSpriteOrder[i] = i;
|
||||
sSpriteOrder[i] = i;
|
||||
}
|
||||
|
||||
ResetSprite(&gSprites[i]);
|
||||
|
|
|
|||
56
src/task.c
56
src/task.c
|
|
@ -7,7 +7,7 @@
|
|||
#define TAIL_SENTINEL 0xFF
|
||||
|
||||
// gTasks is a queue of the active 16 tasks
|
||||
struct Task gTasks[ACTIVE_SENTINEL];
|
||||
struct Task gTasks[NUM_TASKS];
|
||||
|
||||
static void InsertTask(u8 newTaskId);
|
||||
static u8 FindFirstActiveTask();
|
||||
|
|
@ -16,38 +16,38 @@ const u8 gError_NoTasksLeft[] = _(
|
|||
"TASK OVER\n"
|
||||
"タスクがオーバーしました");
|
||||
|
||||
void ResetTasks()
|
||||
void ResetTasks(void)
|
||||
{
|
||||
u8 taskId;
|
||||
u8 i;
|
||||
|
||||
for (taskId = 0; taskId < ACTIVE_SENTINEL; taskId++)
|
||||
for (i = 0; i < NUM_TASKS; i++)
|
||||
{
|
||||
gTasks[taskId].isActive = FALSE;
|
||||
gTasks[taskId].func = TaskDummy;
|
||||
gTasks[taskId].prev = taskId;
|
||||
gTasks[taskId].next = taskId + 1;
|
||||
gTasks[taskId].priority = -1;
|
||||
memset(gTasks[taskId].data, 0, sizeof(gTasks[taskId].data));
|
||||
gTasks[i].isActive = FALSE;
|
||||
gTasks[i].func = TaskDummy;
|
||||
gTasks[i].prev = i;
|
||||
gTasks[i].next = i + 1;
|
||||
gTasks[i].priority = -1;
|
||||
memset(gTasks[i].data, 0, sizeof(gTasks[i].data));
|
||||
}
|
||||
|
||||
gTasks[0].prev = HEAD_SENTINEL;
|
||||
gTasks[ACTIVE_SENTINEL - 1].next = TAIL_SENTINEL;
|
||||
gTasks[NUM_TASKS - 1].next = TAIL_SENTINEL;
|
||||
}
|
||||
|
||||
u8 CreateTask(TaskFunc func, u8 priority)
|
||||
{
|
||||
u8 taskId;
|
||||
u8 i;
|
||||
|
||||
for (taskId = 0; taskId < ACTIVE_SENTINEL; taskId++)
|
||||
for (i = 0; i < NUM_TASKS; i++)
|
||||
{
|
||||
if (!gTasks[taskId].isActive)
|
||||
if (!gTasks[i].isActive)
|
||||
{
|
||||
gTasks[taskId].func = func;
|
||||
gTasks[taskId].priority = priority;
|
||||
InsertTask(taskId);
|
||||
memset(gTasks[taskId].data, 0, sizeof(gTasks[taskId].data));
|
||||
gTasks[taskId].isActive = TRUE;
|
||||
return taskId;
|
||||
gTasks[i].func = func;
|
||||
gTasks[i].priority = priority;
|
||||
InsertTask(i);
|
||||
memset(gTasks[i].data, 0, sizeof(gTasks[i].data));
|
||||
gTasks[i].isActive = TRUE;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -62,7 +62,7 @@ static void InsertTask(u8 newTaskId)
|
|||
{
|
||||
u8 taskId = FindFirstActiveTask();
|
||||
|
||||
if (taskId == ACTIVE_SENTINEL)
|
||||
if (taskId == NUM_TASKS)
|
||||
{
|
||||
// The task system inserts from the top downwards starting from the end (0xFF) to 0. If FindFirstActiveTask returned the value equivalent to ACTIVE_SENTINEL, it means it is the only task because it searched the entire queue.
|
||||
gTasks[newTaskId].prev = HEAD_SENTINEL;
|
||||
|
|
@ -78,10 +78,8 @@ static void InsertTask(u8 newTaskId)
|
|||
// so we insert the new task before it.
|
||||
gTasks[newTaskId].prev = gTasks[taskId].prev;
|
||||
gTasks[newTaskId].next = taskId;
|
||||
|
||||
if (gTasks[taskId].prev != HEAD_SENTINEL)
|
||||
gTasks[gTasks[taskId].prev].next = newTaskId; // as long as we are not at the end, insert the newTask appropriately.
|
||||
|
||||
gTasks[taskId].prev = newTaskId;
|
||||
return;
|
||||
}
|
||||
|
|
@ -127,7 +125,7 @@ void RunTasks(void)
|
|||
{
|
||||
u8 taskId = FindFirstActiveTask();
|
||||
|
||||
if (taskId != ACTIVE_SENTINEL)
|
||||
if (taskId != NUM_TASKS)
|
||||
{
|
||||
do
|
||||
{
|
||||
|
|
@ -141,7 +139,7 @@ static u8 FindFirstActiveTask(void)
|
|||
{
|
||||
u8 taskId;
|
||||
|
||||
for (taskId = 0; taskId < ACTIVE_SENTINEL; taskId++)
|
||||
for (taskId = 0; taskId < NUM_TASKS; taskId++)
|
||||
if (gTasks[taskId].isActive == TRUE && gTasks[taskId].prev == HEAD_SENTINEL)
|
||||
break;
|
||||
|
||||
|
|
@ -184,7 +182,7 @@ bool8 FuncIsActiveTask(TaskFunc func)
|
|||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < ACTIVE_SENTINEL; i++)
|
||||
for (i = 0; i < NUM_TASKS; i++)
|
||||
if (gTasks[i].isActive == TRUE && gTasks[i].func == func)
|
||||
return TRUE;
|
||||
|
||||
|
|
@ -195,11 +193,11 @@ u8 FindTaskIdByFunc(TaskFunc func)
|
|||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ACTIVE_SENTINEL; i++)
|
||||
for (i = 0; i < NUM_TASKS; i++)
|
||||
if (gTasks[i].isActive == TRUE && gTasks[i].func == func)
|
||||
return (u8)i;
|
||||
|
||||
return -1;
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
u8 GetTaskCount(void)
|
||||
|
|
@ -207,7 +205,7 @@ u8 GetTaskCount(void)
|
|||
u8 i;
|
||||
u8 count = 0;
|
||||
|
||||
for (i = 0; i < ACTIVE_SENTINEL; i++)
|
||||
for (i = 0; i < NUM_TASKS; i++)
|
||||
if (gTasks[i].isActive == TRUE)
|
||||
count++;
|
||||
|
||||
|
|
|
|||
|
|
@ -126,6 +126,8 @@ struct TradeEwramSubstruct {
|
|||
/*0x08fc*/ u8 filler_08fc[0x704];
|
||||
};
|
||||
|
||||
struct TradeEwramSubstruct2 *gUnknown_03004828;
|
||||
|
||||
IWRAM_DATA u8 gUnknown_03000508[8];
|
||||
|
||||
struct UnkStructF {
|
||||
|
|
@ -209,7 +211,7 @@ EWRAM_DATA u8 *gUnknown_020296CC[13] = {0};
|
|||
EWRAM_DATA struct MailStruct gUnknown_02029700[6] = {0};
|
||||
EWRAM_DATA u8 gUnknown_020297D8[2] = {0};
|
||||
|
||||
extern struct TradeEwramSubstruct *gUnknown_03004824;
|
||||
struct TradeEwramSubstruct *gUnknown_03004824;
|
||||
|
||||
const u32 unref_data_820ABD4[] =
|
||||
{
|
||||
|
|
|
|||
|
|
@ -23,16 +23,16 @@ SYMBOL(IntrMain_Buffer, 2048)
|
|||
SYMBOL(gPcmDmaCounter, 4)
|
||||
|
||||
// sprite.c
|
||||
SYMBOL(gSpriteOrder, 64)
|
||||
SYMBOL(gSpriteTileAllocBitmap, 128)
|
||||
SYMBOL(sSpriteOrder, 64)
|
||||
SYMBOL(sSpriteTileAllocBitmap, 128)
|
||||
SYMBOL(gSpriteCoordOffsetX, 4)
|
||||
SYMBOL(gOamLimit, 4)
|
||||
SYMBOL(gReservedSpriteTileCount, 4)
|
||||
SYMBOL(gSpriteCopyRequestCount, 4)
|
||||
SYMBOL(gSpriteCopyRequests, 768)
|
||||
SYMBOL(sSpriteCopyRequests, 768)
|
||||
SYMBOL(gSpriteCoordOffsetY, 4)
|
||||
SYMBOL(gOamMatrices, 256)
|
||||
SYMBOL(gShouldProcessSpriteCopyRequests, 4)
|
||||
SYMBOL(sShouldProcessSpriteCopyRequests, 4)
|
||||
SYMBOL(gOamMatrixAllocBitmap, 4)
|
||||
SYMBOL(gReservedSpritePaletteCount, 4)
|
||||
|
||||
|
|
@ -130,8 +130,8 @@ SYMBOL(gPreBattleCallback1, 4)
|
|||
SYMBOL(gBattleMainFunc, 4)
|
||||
SYMBOL(gBattleResults, 68)
|
||||
SYMBOL(gLeveledUpInBattle, 4)
|
||||
SYMBOL(gBattleBankFunc, 16)
|
||||
SYMBOL(gHealthboxIDs, 4)
|
||||
SYMBOL(gBattlerControllerFuncs, 16)
|
||||
SYMBOL(gHealthboxSpriteIds, 4)
|
||||
SYMBOL(gUnknown_03004344, 4)
|
||||
SYMBOL(gUnknown_03004348, 4)
|
||||
SYMBOL(gUnknown_0300434C, 4)
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ gBattleBufferB = .; /* 2024260 */
|
|||
gActiveBattler = .; /* 2024A60 */
|
||||
. += 0x4;
|
||||
|
||||
gBattleExecBuffer = .; /* 2024A64 */
|
||||
gBattleControllerExecFlags = .; /* 2024A64 */
|
||||
. += 0x4;
|
||||
|
||||
gBattlersCount = .; /* 2024A68 */
|
||||
|
|
@ -88,7 +88,7 @@ gCurrentActionFuncId = .; /* 2024A7F */
|
|||
gBattleMons = .; /* 2024A80 */
|
||||
. += 0x160;
|
||||
|
||||
gBankSpriteIds = .; /* 2024BE0 */
|
||||
gBattlerSpriteIds = .; /* 2024BE0 */
|
||||
. += 0x4;
|
||||
|
||||
gCurrMovePos = .; /* 2024BE4 */
|
||||
|
|
@ -121,19 +121,19 @@ gLastUsedItem = .; /* 2024C04 */
|
|||
gLastUsedAbility = .; /* 2024C06 */
|
||||
. += 0x1;
|
||||
|
||||
gBankAttacker = .; /* 2024C07 */
|
||||
gBattlerAttacker = .; /* 2024C07 */
|
||||
. += 0x1;
|
||||
|
||||
gBankTarget = .; /* 2024C08 */
|
||||
gBattlerTarget = .; /* 2024C08 */
|
||||
. += 0x1;
|
||||
|
||||
gBank1 = .; /* 2024C09 */
|
||||
. += 0x1;
|
||||
|
||||
gEffectBank = .; /* 2024C0A */
|
||||
gEffectBattler = .; /* 2024C0A */
|
||||
. += 0x1;
|
||||
|
||||
gStringBank = .; /* 2024C0B */
|
||||
gPotentialItemEffectBattler = .; /* 2024C0B */
|
||||
. += 0x1;
|
||||
|
||||
gAbsentBattlerFlags = .; /* 2024C0C */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user