Skip to content

Commit

Permalink
add remaining random ACs
Browse files Browse the repository at this point in the history
  • Loading branch information
JCog committed Sep 27, 2024
1 parent c6a5af1 commit 04ed814
Show file tree
Hide file tree
Showing 32 changed files with 221 additions and 168 deletions.
53 changes: 43 additions & 10 deletions src/battle/action_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ enum Buttons buttonChoices[] = {
BUTTON_C_DOWN,
BUTTON_C_LEFT,
BUTTON_C_RIGHT,
BUTTON_STICK_LEFT,
};

HudScript *buttonHudsUp[] = {
&HES_AButton,
&HES_BButton,
Expand All @@ -19,7 +21,9 @@ HudScript *buttonHudsUp[] = {
&HES_CDownButton,
&HES_CLeftButton,
&HES_CRightButton,
&HES_StickNeutral,
};

HudScript *buttonHudsDown[] = {
&HES_AButtonDown,
&HES_BButtonHeld,
Expand All @@ -28,7 +32,9 @@ HudScript *buttonHudsDown[] = {
&HES_CDownButtonHeld,
&HES_CLeftButtonHeld,
&HES_CRightButtonHeld,
&HES_StickHoldLeft,
};

HudScript *buttonHudsMash[] = {
&HES_MashAButton,
&HES_MashBButton1,
Expand All @@ -37,7 +43,9 @@ HudScript *buttonHudsMash[] = {
&HES_MashCDownButton1,
&HES_MashCLeftButton,
&HES_MashCRightButton1,
&HES_StickMashLeft,
};

HudScript *buttonHudsPress[] = {
&HES_PressAButton,
&HES_PressBButton,
Expand All @@ -46,6 +54,18 @@ HudScript *buttonHudsPress[] = {
&HES_PressCDownButton,
&HES_PressCLeftButton,
&HES_PressCRightButton,
&HES_StickTapLeft,
};

HudScript *buttonHudsRelease[] = {
&HES_AButton,
&HES_BButton,
&HES_StartButton,
&HES_CUpButton,
&HES_CDownButton,
&HES_CLeftButton,
&HES_CRightButton,
&HES_StickTapNeutral,
};

u8 mashMeter_bgColors[15] = {
Expand Down Expand Up @@ -857,11 +877,22 @@ API_CALLABLE(CheckActionCommandButtonDown) {
Bytecode* args = script->ptrReadPos;
Bytecode outVar = *args++;
s32 buttonsDown = gBattleStatus.curButtonsDown;
osSyncPrintf("CheckActionCommandButtonDown\n");

evt_set_variable(
script, outVar,
(buttonsDown & (buttonChoices[gActionCommandStatus.buttonIdx1])) != 0
(buttonsDown & (buttonChoices[gActionCommandStatus.buttonIdxA])) != 0
);
return ApiStatus_DONE2;
}

API_CALLABLE(CheckStickButtonDown) {
Bytecode* args = script->ptrReadPos;
Bytecode outVar = *args++;
s32 buttonsDown = gBattleStatus.curButtonsDown;

evt_set_variable(
script, outVar,
(buttonsDown & (buttonChoices[gActionCommandStatus.buttonIdxS])) != 0
);
return ApiStatus_DONE2;
}
Expand All @@ -873,18 +904,20 @@ void pickActionCommandButtons() {
}

acStatus->randSelected = TRUE;
acStatus->buttonIdx1 = rand_int(ARRAY_COUNT(buttonChoices) - 1);
acStatus->buttonIdxA = rand_int(ARRAY_COUNT(buttonChoices) - 1);
acStatus->buttonIdxS = acStatus->buttonIdxA;
do {
acStatus->buttonIdx2 = rand_int(ARRAY_COUNT(buttonChoices) - 1);
} while (acStatus->buttonIdx1 == acStatus->buttonIdx2);
acStatus->buttonIdxB = rand_int(ARRAY_COUNT(buttonChoices) - 1);
} while (acStatus->buttonIdxA == acStatus->buttonIdxB);
do {
acStatus->buttonIdx3 = rand_int(ARRAY_COUNT(buttonChoices) - 1);
} while (acStatus->buttonIdx1 == acStatus->buttonIdx3 && acStatus->buttonIdx2 == acStatus->buttonIdx3);
acStatus->buttonIdxC = rand_int(ARRAY_COUNT(buttonChoices) - 1);
} while (acStatus->buttonIdxA == acStatus->buttonIdxC || acStatus->buttonIdxB == acStatus->buttonIdxC);
}

void restoreActionCommandButtons() {
gActionCommandStatus.randSelected = FALSE;
gActionCommandStatus.buttonIdx1 = 0; // A
gActionCommandStatus.buttonIdx2 = 1; // B
gActionCommandStatus.buttonIdx3 = 4; // CDown
gActionCommandStatus.buttonIdxA = 0;
gActionCommandStatus.buttonIdxB = 1;
gActionCommandStatus.buttonIdxC = 4;
gActionCommandStatus.buttonIdxS = 7;
}
11 changes: 8 additions & 3 deletions src/battle/action_cmd.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,10 @@ typedef struct ActionCommandStatus {
/* 0x74 */ s16 mashMeterCutoffs[6]; // upper bounds for each interval
/* 0x80 */ s8 mashMeterIntervals;
b8 randSelected;
u8 buttonIdx1;
u8 buttonIdx2;
u8 buttonIdx3;
u8 buttonIdxA;
u8 buttonIdxB;
u8 buttonIdxC;
u8 buttonIdxS;
} ActionCommandStatus;

extern ActionCommandStatus gActionCommandStatus;
Expand Down Expand Up @@ -121,7 +122,9 @@ extern HudScript HES_BriefStartButton;
extern HudScript HES_StickHoldLeft;
extern HudScript HES_StickMashLeft;
extern HudScript HES_StickNeutral;
extern HudScript HES_StickTapLeft;
extern HudScript HES_StickTapNeutral;
extern HudScript HES_BriefStickHoldLeft;
extern HudScript HES_TimingBar1Chance;
extern HudScript HES_TimingBar3Chances;
extern HudScript HES_TimingCharge1;
Expand All @@ -140,6 +143,7 @@ extern HudScript *buttonHudsUp[];
extern HudScript *buttonHudsDown[];
extern HudScript *buttonHudsMash[];
extern HudScript *buttonHudsPress[];
extern HudScript *buttonHudsRelease[];

void action_command_init_status(void);
void action_command_free(void);
Expand Down Expand Up @@ -180,5 +184,6 @@ API_CALLABLE(SetActionQuality);
API_CALLABLE(func_80269600);
API_CALLABLE(func_8026962C);
API_CALLABLE(CheckActionCommandButtonDown);
API_CALLABLE(CheckStickButtonDown);

#endif
6 changes: 3 additions & 3 deletions src/battle/action_cmd/air_lift.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ API_CALLABLE(N(init)) {
air_lift_bss_0 = 0;
actionCommandStatus->hudPosY = 80;

hudElement = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdx1]);
hudElement = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdxA]);
actionCommandStatus->hudElements[0] = hudElement;
hud_element_set_render_pos(hudElement, actionCommandStatus->hudPosX, actionCommandStatus->hudPosY);
hud_element_set_render_depth(hudElement, 0);
Expand Down Expand Up @@ -132,7 +132,7 @@ void N(update)(void) {
return;
}
hud_element_set_script(
actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdx1]
actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdxA]
);
air_lift_bss_0 = 1;
actionCommandStatus->frameCounter = actionCommandStatus->duration;
Expand All @@ -158,7 +158,7 @@ void N(update)(void) {
}

if (battleStatus->actionCommandMode != ACTION_COMMAND_MODE_NOT_LEARNED
&& battleStatus->curButtonsPressed & (buttonChoices[actionCommandStatus->buttonIdx1]))
&& battleStatus->curButtonsPressed & (buttonChoices[actionCommandStatus->buttonIdxA]))
{
if (actionCommandStatus->unk_5A != 0) {
s32 a = battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty];
Expand Down
8 changes: 4 additions & 4 deletions src/battle/action_cmd/air_raid.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ API_CALLABLE(N(init)) {
actionCommandStatus->hudPosX = -48;
actionCommandStatus->hudPosY = 80;

hudElement = hud_element_create(&HES_StickNeutral);
hudElement = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdxS]);
actionCommandStatus->hudElements[0] = hudElement;
hud_element_set_render_pos(hudElement, actionCommandStatus->hudPosX, actionCommandStatus->hudPosY);
hud_element_set_render_depth(hudElement, 0);
Expand Down Expand Up @@ -110,7 +110,7 @@ void N(update)(void) {
return;
}

hud_element_set_script(actionCommandStatus->hudElements[0], &HES_StickMashLeft);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdxS]);
actionCommandStatus->barFillLevel = 0;
battleStatus->unk_85 = 0;
actionCommandStatus->unk_5C = 0;
Expand All @@ -129,11 +129,11 @@ void N(update)(void) {
}

if (!actionCommandStatus->isBarFilled) {
if (battleStatus->curButtonsDown & BUTTON_STICK_LEFT) {
if (battleStatus->curButtonsDown & buttonChoices[actionCommandStatus->buttonIdxS]) {
actionCommandStatus->unk_5C = 1;
}

if (!(battleStatus->curButtonsDown & BUTTON_STICK_LEFT)) {
if (!(battleStatus->curButtonsDown & buttonChoices[actionCommandStatus->buttonIdxS])) {
if (actionCommandStatus->unk_5C != 0) {
actionCommandStatus->barFillLevel += (battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty] * 850) / 100;
actionCommandStatus->unk_5C = 0;
Expand Down
8 changes: 4 additions & 4 deletions src/battle/action_cmd/body_slam.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ API_CALLABLE(N(init)) {
actionCommandStatus->hudPosX = -48;
actionCommandStatus->hudPosY = 80;

id = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdx1]);
id = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdxA]);
actionCommandStatus->hudElements[0] = id;
hud_element_set_render_pos(id, actionCommandStatus->hudPosX, actionCommandStatus->hudPosY);
hud_element_set_render_depth(id, 0);
Expand Down Expand Up @@ -111,7 +111,7 @@ void N(update)(void) {
actionCommandStatus->prepareTime--;
return;
}
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsDown[actionCommandStatus->buttonIdx1]);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsDown[actionCommandStatus->buttonIdxA]);
actionCommandStatus->barFillLevel = 0;
actionCommandStatus->thresholdLevel = 0;
actionCommandStatus->frameCounter = actionCommandStatus->duration;
Expand All @@ -120,7 +120,7 @@ void N(update)(void) {
case 11:
btl_set_popup_duration(99);

if (battleStatus->curButtonsDown & (buttonChoices[actionCommandStatus->buttonIdx1])) {
if (battleStatus->curButtonsDown & (buttonChoices[actionCommandStatus->buttonIdxA])) {
actionCommandStatus->barFillLevel += 154;
actionCommandStatus->thresholdLevel += 154;
} else {
Expand All @@ -130,7 +130,7 @@ void N(update)(void) {
if (actionCommandStatus->barFillLevel >= 10000) {
actionCommandStatus->barFillLevel = 10000;
hud_element_set_script(actionCommandStatus->hudElements[2], &HES_TimingReady);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsDown[actionCommandStatus->buttonIdx1]);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsDown[actionCommandStatus->buttonIdxA]);
if (!actionCommandStatus->isBarFilled) {
sfx_play_sound(SOUND_TIMING_BAR_GO);
actionCommandStatus->isBarFilled = TRUE;
Expand Down
6 changes: 3 additions & 3 deletions src/battle/action_cmd/bomb.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ API_CALLABLE(N(init)) {
actionCommandStatus->hudPosX = -48;
actionCommandStatus->hudPosY = 80;

hudElement = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdx1]);
hudElement = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdxA]);
actionCommandStatus->hudElements[0] = hudElement;
hud_element_set_render_pos(hudElement, actionCommandStatus->hudPosX, actionCommandStatus->hudPosY);
hud_element_set_render_depth(hudElement, 0);
Expand Down Expand Up @@ -99,7 +99,7 @@ void N(update)(void) {
actionCommandStatus->prepareTime--;
break;
}
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdx1]);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdxA]);
actionCommandStatus->barFillLevel = 0;
actionCommandStatus->frameCounter = actionCommandStatus->duration;
sfx_play_sound_with_params(SOUND_LOOP_CHARGE_BAR, 0, 0, 0);
Expand All @@ -117,7 +117,7 @@ void N(update)(void) {
}
}

if (battleStatus->curButtonsPressed & (buttonChoices[actionCommandStatus->buttonIdx1])) {
if (battleStatus->curButtonsPressed & (buttonChoices[actionCommandStatus->buttonIdxA])) {
switch (actionCommandStatus->targetWeakness) {
case 0: {
s32 fillOffset = battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty] * 235 * 4;
Expand Down
6 changes: 3 additions & 3 deletions src/battle/action_cmd/break_free.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ API_CALLABLE(N(init)) {
actionCommandStatus->hudPosX = -48;
actionCommandStatus->hudPosY = 80;

id = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdx1]);
id = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdxA]);
actionCommandStatus->hudElements[0] = id;
hud_element_set_render_pos(id, actionCommandStatus->hudPosX, actionCommandStatus->hudPosY);
hud_element_set_render_depth(id, 0);
Expand Down Expand Up @@ -145,7 +145,7 @@ void N(update)(void) {
actionCommandStatus->prepareTime--;
return;
}
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdx1]);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdxA]);
actionCommandStatus->state = 11;
actionCommandStatus->frameCounter = actionCommandStatus->duration;
// fallthrough
Expand Down Expand Up @@ -181,7 +181,7 @@ void N(update)(void) {
if (inputBufPos >= ARRAY_COUNT(battleStatus->pushInputBuffer)) {
inputBufPos -= ARRAY_COUNT(battleStatus->pushInputBuffer);
}
if (battleStatus->pushInputBuffer[inputBufPos] & (buttonChoices[actionCommandStatus->buttonIdx1])) {
if (battleStatus->pushInputBuffer[inputBufPos] & (buttonChoices[actionCommandStatus->buttonIdxA])) {
actionCommandStatus->barFillLevel += battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty];
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/battle/action_cmd/dizzy_shell.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ API_CALLABLE(N(init)) {
actionCommandStatus->hudPosX = -48;
actionCommandStatus->hudPosY = 80;

id = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdx1]);
id = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdxA]);
actionCommandStatus->hudElements[0] = id;
hud_element_set_render_pos(id, actionCommandStatus->hudPosX, actionCommandStatus->hudPosY);
hud_element_set_render_depth(id, 0);
Expand Down Expand Up @@ -97,7 +97,7 @@ void N(update)(void) {
actionCommandStatus->prepareTime--;
return;
}
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdx1]);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdxA]);
actionCommandStatus->barFillLevel = 0;
actionCommandStatus->frameCounter = actionCommandStatus->duration;
sfx_play_sound_with_params(SOUND_LOOP_CHARGE_BAR, 0, 0, 0);
Expand All @@ -121,7 +121,7 @@ void N(update)(void) {
}
}

if (battleStatus->curButtonsPressed & (buttonChoices[actionCommandStatus->buttonIdx1])) {
if (battleStatus->curButtonsPressed & (buttonChoices[actionCommandStatus->buttonIdxA])) {
s32 a = battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty];
s32 b = actionCommandStatus->targetWeakness * 850;
s32 temp_v1_2 = (a * b) / 10000;
Expand Down
8 changes: 4 additions & 4 deletions src/battle/action_cmd/fire_shell.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ API_CALLABLE(N(init)) {
actionCommandStatus->hudPosX = -48;
actionCommandStatus->hudPosY = 80;

id = hud_element_create(&HES_StickNeutral);
id = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdxS]);
actionCommandStatus->hudElements[0] = id;
hud_element_set_render_pos(id, actionCommandStatus->hudPosX, actionCommandStatus->hudPosY);
hud_element_set_render_depth(id, 0);
Expand Down Expand Up @@ -101,7 +101,7 @@ void N(update)(void) {
actionCommandStatus->prepareTime--;
return;
}
hud_element_set_script(actionCommandStatus->hudElements[0], &HES_StickMashLeft);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdxS]);
actionCommandStatus->barFillLevel = 0;
battleStatus->unk_85 = 0;
actionCommandStatus->unk_5C = 0;
Expand All @@ -118,11 +118,11 @@ void N(update)(void) {
actionCommandStatus->barFillLevel = 0;
}
if (!actionCommandStatus->isBarFilled) {
if (battleStatus->curButtonsDown & BUTTON_STICK_LEFT) {
if (battleStatus->curButtonsDown & buttonChoices[actionCommandStatus->buttonIdxS]) {
actionCommandStatus->unk_5C = 1;
}

if (!(battleStatus->curButtonsDown & BUTTON_STICK_LEFT) && (actionCommandStatus->unk_5C != 0)) {
if (!(battleStatus->curButtonsDown & buttonChoices[actionCommandStatus->buttonIdxS]) && (actionCommandStatus->unk_5C != 0)) {
actionCommandStatus->barFillLevel += (battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty] * 950) / 100;
actionCommandStatus->unk_5C = 0;
}
Expand Down
6 changes: 3 additions & 3 deletions src/battle/action_cmd/flee.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ API_CALLABLE(N(init)) {
D_802A9920 = 0;
actionCommandStatus->hudPosY = 80;

hudElement = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdx1]);
hudElement = hud_element_create(buttonHudsUp[actionCommandStatus->buttonIdxA]);
actionCommandStatus->hudElements[0] = hudElement;
hud_element_set_render_pos(hudElement, actionCommandStatus->hudPosX, actionCommandStatus->hudPosY);
hud_element_set_render_depth(hudElement, 0);
Expand Down Expand Up @@ -136,14 +136,14 @@ void N(update)(void) {
actionCommandStatus->prepareTime--;
break;
}
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdx1]);
hud_element_set_script(actionCommandStatus->hudElements[0], buttonHudsMash[actionCommandStatus->buttonIdxA]);
D_802A9920 = 1;
actionCommandStatus->state = 11;
actionCommandStatus->frameCounter = actionCommandStatus->duration;
// fallthrough
case 11:
if (battleStatus->actionCommandMode != ACTION_COMMAND_MODE_NOT_LEARNED
&& (battleStatus->curButtonsPressed & (buttonChoices[actionCommandStatus->buttonIdx1])))
&& (battleStatus->curButtonsPressed & (buttonChoices[actionCommandStatus->buttonIdxA])))
{
actionCommandStatus->barFillLevel += (battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty] * 180 / 100);
}
Expand Down
Loading

0 comments on commit 04ed814

Please sign in to comment.