Skip to content

Commit

Permalink
SCRIPTENV_BATTLE_WIN_FLAG
Browse files Browse the repository at this point in the history
  • Loading branch information
red031000 committed May 24, 2023
1 parent 4ae94da commit 64f5dde
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 38 deletions.
2 changes: 1 addition & 1 deletion include/battle_setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
typedef struct BattleSetupStruct {
u32 flags;
PARTY *party[4];
int winFlag;
u32 winFlag;
int trainerId[4];
TRAINER trainer[4];
PLAYERPROFILE *profile[4];
Expand Down
10 changes: 5 additions & 5 deletions include/encounter.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include "task.h"

typedef struct EncounterWork {
int *winFlag;
u32 *winFlag;
int effect;
int bgm;
int unkC;
Expand All @@ -23,14 +23,14 @@ typedef struct WildEncounterWork {

void sub_02050B08(FieldSystem *fsys, BATTLE_SETUP *setup);
void sub_02051428(TaskManager *taskManager, void *a1, int a2);
void SetupAndStartWildBattle(TaskManager *taskManager, u16 species, u8 level, int *winFlag, BOOL canRun, BOOL shiny);
void sub_02051090(TaskManager *taskManager, u16 species, u8 level, int *winFlag, BOOL canRun);
void SetupAndStartWildBattle(TaskManager *taskManager, u16 species, u8 level, u32 *winFlag, BOOL canRun, BOOL shiny);
void sub_02051090(TaskManager *taskManager, u16 species, u8 level, u32 *winFlag, BOOL canRun);
void sub_02051228(TaskManager *taskManager, u16 species, u8 level);
void SetupAndStartTutorialBattle(TaskManager *taskManager);
void SetupAndStartTrainerBattle(TaskManager *taskManager, u32 opponentTrainer1, u32 opponentTrainer2, u32 followerTrainerNum, u32 a4, u32 a5, HeapID heapId, int *winFlag);
void SetupAndStartTrainerBattle(TaskManager *taskManager, u32 opponentTrainer1, u32 opponentTrainer2, u32 followerTrainerNum, u32 a4, u32 a5, HeapID heapId, u32 *winFlag);
void sub_02050B90(FieldSystem *fsys, TaskManager *taskManager, BATTLE_SETUP *setup);
void sub_0205239C(BATTLE_SETUP *setup, FieldSystem *fsys);
BATTLE_SETUP *BattleSetup_New(HeapID heapId, int battleType);
void sub_02050AAC(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, int *winFlag);
void sub_02050AAC(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, u32 *winFlag);

#endif //POKEHEARTGOLD_ENCOUNTER_H
8 changes: 4 additions & 4 deletions include/script.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ typedef struct ScriptEnvironment {
u8 unk_8;
u8 activeScriptContextCount;
u16 activeScriptNumber;
u32 unk_C;
u32 battleWinFlag;
u32 unk_10;
WINDOW unk_14;
struct ListMenu2D *listMenu2D;
Expand All @@ -71,7 +71,7 @@ typedef struct ScriptEnvironment {
void *runningAppData;
void *miscDataPtr;
void *unk_B4;
void *unk_B8;
void *unk_B8; //PlayerMovementState
WINDOW unk_BC;
WINDOW moneyBox;
struct SaveStatsPrinter *unk_DC;
Expand Down Expand Up @@ -101,8 +101,8 @@ typedef enum ScriptEnvField {
SCRIPTENV_RUNNING_APP_DATA,
SCRIPTENV_MISC_DATA_PTR,
SCRIPTENV_FIELD_B4,
SCRIPTENV_B8 = 23,
SCRIPTENV_0C = 24,
SCRIPTENV_FIELD_B8,
SCRIPTENV_BATTLE_WIN_FLAG,
SCRIPTENV_54_0_00 = 25,
SCRIPTENV_54_0_04 = 26,
SCRIPTENV_54_0_08 = 27,
Expand Down
20 changes: 14 additions & 6 deletions src/encounter.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@
#include "unk_02092BE8.h"
#include "unk_0206D494.h"
#include "constants/std_script.h"
#include "game_stats.h"
#include "unk_020552A4.h"
#include "unk_02034354.h"
#include "unk_02066EDC.h"
#include "field_map_object.h"
#include "field_warp_tasks.h"
#include "unk_02058034.h"
#include "pokedex_util.h"

static void sub_02051660(FieldSystem *fsys, BATTLE_SETUP *setup);

Expand Down Expand Up @@ -44,7 +52,7 @@ static void sub_020506AC(TaskManager *man, BATTLE_SETUP *setup) {
TaskManager_Call(man, sub_02050660, setup);
}

static ENCOUNTER *Encounter_New(BATTLE_SETUP *setup, int effect, int bgm, int *flag) {
static ENCOUNTER *Encounter_New(BATTLE_SETUP *setup, int effect, int bgm, u32 *flag) {
ENCOUNTER *work;
work = AllocFromHeapAtEnd(HEAP_ID_FIELDMAP, sizeof(ENCOUNTER));
work->winFlag = flag;
Expand Down Expand Up @@ -135,7 +143,7 @@ static BOOL sub_02050738(TaskManager *man) {
return FALSE;
}

static void sub_0205085C(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, int *winFlag) {
static void sub_0205085C(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, u32 *winFlag) {
ENCOUNTER *encounter = Encounter_New(setup, effect, bgm, winFlag);
TaskManager_Call(man, sub_02050738, encounter);
}
Expand Down Expand Up @@ -256,7 +264,7 @@ static BOOL sub_020509F0(TaskManager *man) {
return FALSE;
}

void sub_02050AAC(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, int *winFlag) {
void sub_02050AAC(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, u32 *winFlag) {
ENCOUNTER *encounter = Encounter_New(setup, effect, bgm, winFlag);
TaskManager_Call(man, sub_020509F0, encounter);
}
Expand Down Expand Up @@ -511,7 +519,7 @@ static BOOL Task_BugContestEncounter(TaskManager *man) {
return FALSE;
}

void SetupAndStartWildBattle(TaskManager *man, u16 mon, u8 level, int *winFlag, BOOL canFlee, BOOL shiny) {
void SetupAndStartWildBattle(TaskManager *man, u16 mon, u8 level, u32 *winFlag, BOOL canFlee, BOOL shiny) {
BATTLE_SETUP *setup;
FieldSystem *fsys = TaskManager_GetSys(man);
setup = BattleSetup_New(HEAP_ID_FIELDMAP, 0);
Expand All @@ -527,7 +535,7 @@ void SetupAndStartWildBattle(TaskManager *man, u16 mon, u8 level, int *winFlag,
sub_0205085C(man, setup, sub_020517E8(setup), sub_020517FC(setup), winFlag);
}

void sub_02051090(TaskManager *man, u16 species, u8 level, int *winFlag, BOOL canRun) {
void sub_02051090(TaskManager *man, u16 species, u8 level, u32 *winFlag, BOOL canRun) {
BATTLE_SETUP *setup;
FieldSystem *fsys;
int var;
Expand Down Expand Up @@ -666,7 +674,7 @@ void SetupAndStartTutorialBattle(TaskManager *man) {
TaskManager_Call(man, Task_TutorialBattle, encounter);
}

void SetupAndStartTrainerBattle(TaskManager *man, u32 opponentTrainer1, u32 opponentTrainer2, u32 followerTrainerNum, u32 a4, u32 a5, HeapID heapId, int *winFlag) {
void SetupAndStartTrainerBattle(TaskManager *man, u32 opponentTrainer1, u32 opponentTrainer2, u32 followerTrainerNum, u32 a4, u32 a5, HeapID heapId, u32 *winFlag) {
u32 battleFlags;
ENCOUNTER *encounter;
BATTLE_SETUP *setup;
Expand Down
6 changes: 3 additions & 3 deletions src/fieldmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -261,10 +261,10 @@ void *FieldSysGetAttrAddrInternal(ScriptEnvironment *environment, enum ScriptEnv
return &environment->miscDataPtr;
case SCRIPTENV_FIELD_B4:
return &environment->unk_B4;
case SCRIPTENV_B8:
case SCRIPTENV_FIELD_B8:
return &environment->unk_B8;
case SCRIPTENV_0C:
return &environment->unk_C;
case SCRIPTENV_BATTLE_WIN_FLAG:
return &environment->battleWinFlag;
case SCRIPTENV_54_0_00:
return &environment->engagedTrainers[0].unk0;
case SCRIPTENV_54_0_04:
Expand Down
6 changes: 3 additions & 3 deletions src/scrcmd_8.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
#include "math_util.h"

BOOL ScrCmd_GetStaticEncounterOutcomeFlag(SCRIPTCONTEXT *ctx) {
u32 *unkC = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C);
u16 *var0 = ScriptGetVarPointer(ctx);
*var0 = *unkC;
u32 *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG);
u16 *variable = ScriptGetVarPointer(ctx);
*variable = *winFlag;
return TRUE;
}

Expand Down
22 changes: 11 additions & 11 deletions src/scrcmd_battle.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ BOOL ScrCmd_GetTrainerNum(SCRIPTCONTEXT *ctx) {
BOOL ScrCmd_TrainerBattle(SCRIPTCONTEXT *ctx) {
FieldSystem *fsys = ctx->fsys;
u16 *script = FieldSysGetAttrAddr(fsys, SCRIPTENV_ACTIVE_SCRIPT_NUMBER);
u32 *scriptUnk0C = FieldSysGetAttrAddr(fsys, SCRIPTENV_0C);
u32 *winFlag = FieldSysGetAttrAddr(fsys, SCRIPTENV_BATTLE_WIN_FLAG);
u16 var0 = ScriptGetVar(ctx);
u16 var1 = ScriptGetVar(ctx);
u8 var2 = ScriptReadByte(ctx);
Expand All @@ -109,18 +109,18 @@ BOOL ScrCmd_TrainerBattle(SCRIPTCONTEXT *ctx) {
followerTrainerNum = ScriptState_GetFollowerTrainerNum(SavArray_Flags_get(fsys->savedata));
}

SetupAndStartTrainerBattle(ctx->taskman, var0, var1, followerTrainerNum, var2, var3, 11, scriptUnk0C);
SetupAndStartTrainerBattle(ctx->taskman, var0, var1, followerTrainerNum, var2, var3, 11, winFlag);
return TRUE;
}

BOOL ScrCmd_MultiBattle(SCRIPTCONTEXT *ctx) {
u32 *scriptUnk0C = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C);
u32 *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG);
u16 var0 = ScriptGetVar(ctx);
u16 var1 = ScriptGetVar(ctx);
u16 var2 = ScriptGetVar(ctx);
u8 var3 = ScriptReadByte(ctx);

SetupAndStartTrainerBattle(ctx->taskman, var1, var2, var0, 0, var3, 11, scriptUnk0C);
SetupAndStartTrainerBattle(ctx->taskman, var1, var2, var0, 0, var3, 11, winFlag);
return TRUE;
}

Expand Down Expand Up @@ -202,9 +202,9 @@ BOOL ScrCmd_WhiteOut(SCRIPTCONTEXT *ctx) {
}

BOOL ScrCmd_CheckBattleWon(SCRIPTCONTEXT *ctx) {
u32 *scriptUnk0C = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C);
u32 *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG);
u16 *retBattleWon = ScriptGetVarPointer(ctx);
*retBattleWon = IsBattleResultWin(*scriptUnk0C);
*retBattleWon = IsBattleResultWin(*winFlag);
return TRUE;
}

Expand All @@ -216,17 +216,17 @@ BOOL ScrCmd_221(SCRIPTCONTEXT *ctx) {
if (var0 == 1) {
val = sub_02052564(VarGet(ctx->fsys, VAR_BATTLE_RESULT));
} else {
val = sub_02052564(*(u32 *)FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C));
val = sub_02052564(*(u32 *)FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG));
}

*retPtr = val;
return TRUE;
}

BOOL ScrCmd_588(SCRIPTCONTEXT *ctx) {
u32 *scriptUnk0C = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C);
u32 *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG);
u16 *retPtr = ScriptGetVarPointer(ctx);
*retPtr = sub_02052574(*scriptUnk0C);
*retPtr = sub_02052574(*winFlag);
return TRUE;
}

Expand All @@ -237,8 +237,8 @@ BOOL ScrCmd_PartyCheckForDouble(SCRIPTCONTEXT *ctx) {
}

BOOL ScrCmd_223(SCRIPTCONTEXT *ctx) {
u32 *scriptUnk0C = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C);
SetupAndStartTrainerBattle(ctx->taskman, 1, 0, 0, 0, 0, 11, scriptUnk0C);
u32 *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG);
SetupAndStartTrainerBattle(ctx->taskman, 1, 0, 0, 0, 0, 11, winFlag);
return TRUE;
}

Expand Down
10 changes: 5 additions & 5 deletions src/scrcmd_c.c
Original file line number Diff line number Diff line change
Expand Up @@ -2553,15 +2553,15 @@ BOOL ScrCmd_GetDexEvalResult(SCRIPTCONTEXT *ctx) {
}

BOOL ScrCmd_RocketTrapBattle(SCRIPTCONTEXT *ctx) {
int *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C);
u32 *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG);
u16 species = ScriptGetVar(ctx);
u16 level = ScriptGetVar(ctx);
SetupAndStartWildBattle(ctx->taskman, species, level, winFlag, FALSE, FALSE);
return TRUE;
}

BOOL ScrCmd_WildBattle(SCRIPTCONTEXT *ctx) {
int *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C);
u32 *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG);
u16 species = ScriptGetVar(ctx);
u16 level = ScriptGetVar(ctx);
u8 shiny = ScriptReadByte(ctx);
Expand All @@ -2570,7 +2570,7 @@ BOOL ScrCmd_WildBattle(SCRIPTCONTEXT *ctx) {
}

BOOL ScrCmd_686(SCRIPTCONTEXT *ctx) {
int *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_0C);
u32 *winFlag = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_BATTLE_WIN_FLAG);
u16 species = ScriptGetVar(ctx);
u16 level = ScriptGetVar(ctx);
sub_02051090(ctx->taskman, species, level, winFlag, TRUE);
Expand Down Expand Up @@ -3653,14 +3653,14 @@ BOOL ScrCmd_CountPCEmptySpace(SCRIPTCONTEXT *ctx) {
}

BOOL ScrCmd_PlayerMovementSavingSet(SCRIPTCONTEXT *ctx) {
int *r4 = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_B8);
s32 *r4 = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_FIELD_B8);
*r4 = PLAYER_STATE_WALKING;
*r4 = Field_PlayerMovementSavingSet(ctx->fsys);
return TRUE;
}

BOOL ScrCmd_PlayerMovementSavingClear(SCRIPTCONTEXT *ctx) {
int *r4 = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_B8);
s32 *r4 = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_FIELD_B8);
Field_PlayerMovementSavingClear(*r4);
return TRUE;
}
Expand Down

0 comments on commit 64f5dde

Please sign in to comment.