diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2018-08-18 19:52:25 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2018-08-18 19:52:25 +0200 |
commit | e4649245bac064d700413e922b067ecb50133175 (patch) | |
tree | d9b91d262c9d76ae671fed680c0b5ee90c99029d /src | |
parent | f7fd5ce75c481ff1f019d661b4e817c6a8d1a34f (diff) |
this file is too much
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_frontier_1.c | 146 |
1 files changed, 133 insertions, 13 deletions
diff --git a/src/battle_frontier_1.c b/src/battle_frontier_1.c index c977f7d76..784ad3656 100644 --- a/src/battle_frontier_1.c +++ b/src/battle_frontier_1.c @@ -18,11 +18,19 @@ #include "palette.h" #include "decompress.h" #include "menu.h" +#include "sound.h" #include "pokemon_icon.h" #include "constants/species.h" #include "constants/moves.h" #include "constants/trainers.h" #include "constants/abilities.h" +#include "constants/songs.h" + +#define DOME_ROUND1 0 +#define DOME_ROUND2 1 +#define DOME_QUARTERFINAL 1 // Different name for the same round. +#define DOME_SEMIFINAL 2 +#define DOME_FINAL 3 struct Unknown_0203BC8C_Struct { @@ -80,6 +88,9 @@ extern const struct SpriteTemplate gUnknown_0860D068; extern const struct SpriteTemplate gUnknown_0860D050; extern const u8 gUnknown_0860D080[]; extern const u8 gUnknown_0860D15C[]; +extern const u8 gUnknown_0860D1A0[]; +extern const u8 gUnknown_0860D19C[]; +extern const u8 gUnknown_0860D1C0[]; extern const u8 gUnknown_0860D3F1[][2]; // gfx @@ -102,7 +113,7 @@ s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1); s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1); s32 sub_818FFC0(s32 move, s32 species, s32 arg2); s32 sub_818FEB4(s32 *arr, bool8 arg1); -u16 sub_81902AC(void); +u16 TrainerIdOfPlayerOpponent(void); void sub_8190400(u8 taskId); void sub_8190CD4(u8 taskId); void sub_8194220(u8 taskId); @@ -269,7 +280,7 @@ void sub_818ED28(void) } } -void SetDomeTrainersAndMons(void) +void InitDomeTrainers(void) { s32 i, j, k; s32 monLevel; @@ -1137,7 +1148,7 @@ u8 GetDomeTrainerMonIvs(u16 trainerId) return fixedIv; } -s32 sub_81901A0(s32 arg0, s32 trainerId) +s32 TournamentIdOfOpponent(s32 roundId, s32 trainerId) { s32 i, j, val; @@ -1147,14 +1158,14 @@ s32 sub_81901A0(s32 arg0, s32 trainerId) break; } - if (arg0 != 0) + if (roundId != DOME_ROUND1) { - if (arg0 == 3) - val = gUnknown_0860D10C[i][arg0] + 8; + if (roundId == DOME_FINAL) + val = gUnknown_0860D10C[i][roundId] + 8; else - val = gUnknown_0860D10C[i][arg0] + 4; + val = gUnknown_0860D10C[i][roundId] + 4; - for (j = gUnknown_0860D10C[i][arg0]; j < val; j++) + for (j = gUnknown_0860D10C[i][roundId]; j < val; j++) { if (gUnknown_0860D14C[j] != i && !gSaveBlock2Ptr->frontier.domeTrainers[gUnknown_0860D14C[j]].unk1) break; @@ -1176,12 +1187,12 @@ s32 sub_81901A0(s32 arg0, s32 trainerId) void sub_8190298(void) { - gTrainerBattleOpponent_A = sub_81902AC(); + gTrainerBattleOpponent_A = TrainerIdOfPlayerOpponent(); } -u16 sub_81902AC(void) +u16 TrainerIdOfPlayerOpponent(void) { - return gSaveBlock2Ptr->frontier.domeTrainers[sub_81901A0(gSaveBlock2Ptr->frontier.field_CB2, TRAINER_PLAYER)].trainerId; + return gSaveBlock2Ptr->frontier.domeTrainers[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.field_CB2, TRAINER_PLAYER)].trainerId; } void sub_81902E4(void) @@ -1211,11 +1222,11 @@ void sub_819033C(void) gSaveBlock2Ptr->frontier.field_D14[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode]; } -void sub_81903B8(void) +void ShowDomeOpponentInfo(void) { u8 taskId = CreateTask(sub_8190400, 0); gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = TrainerIdToTournamentId(sub_81902AC()); + gTasks[taskId].data[1] = TrainerIdToTournamentId(TrainerIdOfPlayerOpponent()); gTasks[taskId].data[2] = 0; gTasks[taskId].data[3] = 0; @@ -2322,3 +2333,112 @@ void sub_8190CD4(u8 taskId) break; } } + +u8 sub_819221C(u8 taskId) +{ + u8 retVal = 0; + s32 taskId2 = gTasks[taskId].data[4]; + s32 r5 = gTasks[taskId2].data[1]; + u8 r10 = gUnknown_0860D080[r5]; + u16 roundId = gSaveBlock2Ptr->frontier.field_CB2; + + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + retVal = 9; + + if (gTasks[taskId].data[3] != 0) + { + if (gTasks[taskId].data[3] == 1) + { + if (gMain.newKeys & DPAD_UP && gUnknown_0203CD78->unk_10 == 0) + { + if (r5 == 0) + r5 = 15; + else + r5--; + retVal = 1; + } + else if (gMain.newKeys & DPAD_DOWN && gUnknown_0203CD78->unk_10 != 0) + { + if (r5 == 15) + r5 = 0; + else + r5++; + retVal = 2; + } + else if (gMain.newKeys & DPAD_LEFT && gUnknown_0203CD78->unk_10 != 0) + { + gUnknown_0203CD78->unk_10--; + retVal = 3; + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[r10].unk1 && gUnknown_0203CD78->unk_10 - 1 < gSaveBlock2Ptr->frontier.domeTrainers[r10].unk2) + { + gUnknown_0203CD78->unk_10++; + retVal = 4; + } + if (!gSaveBlock2Ptr->frontier.domeTrainers[r10].unk1 && gUnknown_0203CD78->unk_10 - 1 < roundId) + { + gUnknown_0203CD78->unk_10++; + retVal = 4; + } + } + + if (retVal == 9) + { + if (gUnknown_0203CD78->unk_10 != 0) + gTasks[taskId2].data[1] = gUnknown_0860D1A0[(r5 / 2) * 4 + (gUnknown_0203CD78->unk_10 - 1)]; + else + gTasks[taskId2].data[1] = r5; + } + } + else + { + if (gMain.newKeys & DPAD_UP && gUnknown_0203CD78->unk_10 == 1) + { + if (r5 == 16) + r5 = gUnknown_0860D19C[roundId]; + else + r5--; + retVal = 5; + } + else if (gMain.newKeys & DPAD_DOWN && gUnknown_0203CD78->unk_10 == 1) + { + if (r5 == gUnknown_0860D19C[roundId]) + r5 = 16; + else + r5++; + retVal = 6; + } + else if (gMain.newKeys & DPAD_LEFT && gUnknown_0203CD78->unk_10 != 0) + { + retVal = 7; + gUnknown_0203CD78->unk_10--; + } + else if (gMain.newKeys & DPAD_RIGHT && (gUnknown_0203CD78->unk_10 == 0 || gUnknown_0203CD78->unk_10 == 1)) + { + retVal = 8; + gUnknown_0203CD78->unk_10++; + } + + if (retVal == 9) + { + if (gUnknown_0203CD78->unk_10 == 0) + gTasks[taskId2].data[1] = gUnknown_0860D1C0[gUnknown_0203CD78->unk_11[0]]; + else if (gUnknown_0203CD78->unk_10 == 2) + gTasks[taskId2].data[1] = gUnknown_0860D1C0[gUnknown_0203CD78->unk_11[1]]; + else + gTasks[taskId2].data[1] = r5; + } + } + + if (retVal != 0 && retVal != 9) + { + PlaySE(SE_SELECT); + gTasks[taskId2].data[1] = r5; + gTasks[taskId].data[2] ^= 1; + } + } + + return retVal; +} |