diff options
author | Marcus Huderle <huderlem@gmail.com> | 2019-04-07 13:07:23 -0500 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-04-07 13:12:27 -0500 |
commit | 78151b6d88d22bec6b7d0d450e4ecc1f94491192 (patch) | |
tree | 30ff7d5580d1de634f42099b8c16a0b4e8a13dc1 /src | |
parent | c3cfd6065825ec8ddd5e1782998071518efaa322 (diff) |
Start decompiling pokemon_jump.c
Diffstat (limited to 'src')
-rwxr-xr-x | src/pokemon_jump.c | 838 | ||||
-rw-r--r-- | src/union_room.c | 2 |
2 files changed, 839 insertions, 1 deletions
diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c new file mode 100755 index 000000000..d49ee293b --- /dev/null +++ b/src/pokemon_jump.c @@ -0,0 +1,838 @@ +#include "global.h" +#include "alloc.h" +#include "link.h" +#include "main.h" +#include "palette.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "pokemon.h" +#include "pokemon_jump.h" +#include "constants/rgb.h" +#include "constants/songs.h" +#include "constants/species.h" + +struct PokemonJump1_MonInfo +{ + u16 species; + u32 otId; + u32 personality; +}; + +struct PokemonJump1_82E4 +{ + int unk0; + int unk4; + u8 filler8[0x4]; + u16 unkC; + u16 unkE; + u16 unk10; + u16 unk12; + int unk14; + int unk18; + u8 filler1C[0xC]; +}; + +struct PokemonJump1 +{ + MainCallback unk0; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u16 unk8; + u16 unkA; + u16 unkC; + u16 unkE; + u8 filler10[0x4]; + int unk14; + int unk18; + int unk1C; + u8 filler20[0x4]; + int unk24; + u8 filler28[0x4]; + int unk2C; + u32 unk30; + u8 filler34[0x6]; + u16 unk3A; + u8 filler3C[0x6]; + u16 unk42; + u8 unk44; + u8 filler45[0x1]; + u8 unk46; + u8 isLeader; + u8 unk48; + u8 unk49; + u16 unk4A; + u8 unk4C; + u8 unk4D; + u8 filler4E[0x6]; + int unk54; + int unk58; + int unk5C; + int unk60; + int unk64; + int unk68; + int unk6C; + u8 unk70; + u8 unk71; + u16 unk72; + u16 unk74; + int unk78; + u8 unk7C[5]; + u8 filler81[0xA]; + u8 unk8B[5]; + u16 unk90[5]; + u16 unk9A[5]; + void **unkA4; + u8 fillerA8[0x8200]; + struct PokemonJump1_MonInfo unk82A8[5]; + struct PokemonJump1_82E4 unk82E4[5]; + struct PokemonJump1_82E4 *unk83AC; +}; + +struct PokemonJumpMons +{ + u16 species; + u16 unk2; +}; + +struct Unk802B078 +{ + u8 unk0; + u8 unk1; + u16 unk2; + u16 unk4; + u16 unk6; + int unk8; +}; + +static void sub_802AA60(struct PokemonJump1 *); +void sub_802AA94(struct PokemonJump1 *); +void sub_802AB20(void); +static void sub_802AB98(void); +s16 sub_802AC00(u16); +static void sub_802AC2C(struct PokemonJump1_MonInfo *monInfo, struct Pokemon *mon); +static void sub_802AC6C(void); +static void sub_802ACA0(u8 taskId); +static void sub_802AF80(u8 taskId); +static void sub_802B008(void); +static void sub_802B194(u8 taskId); +static void sub_802B1FC(void); +bool32 sub_802B248(void); +bool32 sub_802B2D4(void); +bool32 sub_802B368(void); +bool32 sub_802B3D4(void); +bool32 sub_802B4CC(void); +bool32 sub_802B5C8(void); +bool32 sub_802B664(void); +bool32 sub_802B6B8(void); +bool32 sub_802B720(void); +bool32 sub_802B29C(void); +bool32 sub_802B31C(void); +bool32 sub_802B3B4(void); +bool32 sub_802B470(void); +bool32 sub_802B568(void); +bool32 sub_802B628(void); +bool32 sub_802B664(void); +bool32 sub_802B704(void); +bool32 sub_802B720(void); +bool32 sub_802B7E0(void); +bool32 sub_802B8CC(void); +void sub_802BD84(u8 taskId); +void sub_802BE60(TaskFunc func, u8 taskPriority); +void sub_802BE80(void); +void sub_802C0B8(void); +void sub_802C0E8(void); +void sub_802C1DC(void); +void sub_802C43C(void); +bool32 sub_802C538(void); +bool32 sub_802C70C(void); +void sub_802D074(void *); +void sub_802D0AC(void); +int sub_802D0F0(void); +void sub_802E138(struct PokemonJump1_82E4 *, u8 *); +bool32 sub_802E1BC(struct PokemonJump1_82E4 *, struct Unk802B078 *); +void sub_802E234(struct PokemonJump1_82E4 *, u8 , u16); +bool32 sub_802E264(struct PokemonJump1_82E4 *, int, u8 *, u16 *); +bool32 sub_802E2D0(struct PokemonJump1_82E4 *, int); +void sub_802E3A8(void); + +extern struct PokemonJump1 *gUnknown_02022CFC; + +const struct PokemonJumpMons gPkmnJumpSpecies[] = +{ + { .species = SPECIES_BULBASAUR, .unk2 = 2, }, + { .species = SPECIES_CHARMANDER, .unk2 = 1, }, + { .species = SPECIES_SQUIRTLE, .unk2 = 0, }, + { .species = SPECIES_CATERPIE, .unk2 = 1, }, + { .species = SPECIES_METAPOD, .unk2 = 1, }, + { .species = SPECIES_WEEDLE, .unk2 = 1, }, + { .species = SPECIES_KAKUNA, .unk2 = 1, }, + { .species = SPECIES_RATTATA, .unk2 = 1, }, + { .species = SPECIES_RATICATE, .unk2 = 1, }, + { .species = SPECIES_PIKACHU, .unk2 = 0, }, + { .species = SPECIES_SANDSHREW, .unk2 = 0, }, + { .species = SPECIES_NIDORAN_F, .unk2 = 0, }, + { .species = SPECIES_NIDORAN_M, .unk2 = 0, }, + { .species = SPECIES_CLEFAIRY, .unk2 = 0, }, + { .species = SPECIES_VULPIX, .unk2 = 0, }, + { .species = SPECIES_JIGGLYPUFF, .unk2 = 2, }, + { .species = SPECIES_ODDISH, .unk2 = 2, }, + { .species = SPECIES_PARAS, .unk2 = 1, }, + { .species = SPECIES_MEOWTH, .unk2 = 0, }, + { .species = SPECIES_PSYDUCK, .unk2 = 2, }, + { .species = SPECIES_MANKEY, .unk2 = 1, }, + { .species = SPECIES_GROWLITHE, .unk2 = 1, }, + { .species = SPECIES_POLIWAG, .unk2 = 2, }, + { .species = SPECIES_BELLSPROUT, .unk2 = 2, }, + { .species = SPECIES_SHELLDER, .unk2 = 1, }, + { .species = SPECIES_KRABBY, .unk2 = 1, }, + { .species = SPECIES_EXEGGCUTE, .unk2 = 2, }, + { .species = SPECIES_CUBONE, .unk2 = 0, }, + { .species = SPECIES_DITTO, .unk2 = 2, }, + { .species = SPECIES_EEVEE, .unk2 = 0, }, + { .species = SPECIES_OMANYTE, .unk2 = 1, }, + { .species = SPECIES_KABUTO, .unk2 = 1, }, + { .species = SPECIES_CHIKORITA, .unk2 = 2, }, + { .species = SPECIES_CYNDAQUIL, .unk2 = 1, }, + { .species = SPECIES_TOTODILE, .unk2 = 0, }, + { .species = SPECIES_SPINARAK, .unk2 = 1, }, + { .species = SPECIES_PICHU, .unk2 = 0, }, + { .species = SPECIES_CLEFFA, .unk2 = 0, }, + { .species = SPECIES_IGGLYBUFF, .unk2 = 2, }, + { .species = SPECIES_TOGEPI, .unk2 = 2, }, + { .species = SPECIES_MAREEP, .unk2 = 0, }, + { .species = SPECIES_BELLOSSOM, .unk2 = 2, }, + { .species = SPECIES_MARILL, .unk2 = 2, }, + { .species = SPECIES_SUNKERN, .unk2 = 2, }, + { .species = SPECIES_WOOPER, .unk2 = 2, }, + { .species = SPECIES_PINECO, .unk2 = 2, }, + { .species = SPECIES_SNUBBULL, .unk2 = 0, }, + { .species = SPECIES_SHUCKLE, .unk2 = 2, }, + { .species = SPECIES_TEDDIURSA, .unk2 = 0, }, + { .species = SPECIES_SLUGMA, .unk2 = 2, }, + { .species = SPECIES_SWINUB, .unk2 = 0, }, + { .species = SPECIES_HOUNDOUR, .unk2 = 1, }, + { .species = SPECIES_PHANPY, .unk2 = 0, }, + { .species = SPECIES_PORYGON2, .unk2 = 0, }, + { .species = SPECIES_TYROGUE, .unk2 = 1, }, + { .species = SPECIES_SMOOCHUM, .unk2 = 2, }, + { .species = SPECIES_ELEKID, .unk2 = 1, }, + { .species = SPECIES_MAGBY, .unk2 = 1, }, + { .species = SPECIES_LARVITAR, .unk2 = 1, }, + { .species = SPECIES_TREECKO, .unk2 = 1, }, + { .species = SPECIES_TORCHIC, .unk2 = 2, }, + { .species = SPECIES_MUDKIP, .unk2 = 0, }, + { .species = SPECIES_MARSHTOMP, .unk2 = 0, }, + { .species = SPECIES_POOCHYENA, .unk2 = 1, }, + { .species = SPECIES_ZIGZAGOON, .unk2 = 0, }, + { .species = SPECIES_LINOONE, .unk2 = 0, }, + { .species = SPECIES_WURMPLE, .unk2 = 1, }, + { .species = SPECIES_SILCOON, .unk2 = 2, }, + { .species = SPECIES_CASCOON, .unk2 = 2, }, + { .species = SPECIES_LOTAD, .unk2 = 2, }, + { .species = SPECIES_SEEDOT, .unk2 = 1, }, + { .species = SPECIES_RALTS, .unk2 = 0, }, + { .species = SPECIES_KIRLIA, .unk2 = 0, }, + { .species = SPECIES_SURSKIT, .unk2 = 2, }, + { .species = SPECIES_SHROOMISH, .unk2 = 2, }, + { .species = SPECIES_NINCADA, .unk2 = 1, }, + { .species = SPECIES_WHISMUR, .unk2 = 0, }, + { .species = SPECIES_AZURILL, .unk2 = 2, }, + { .species = SPECIES_SKITTY, .unk2 = 0, }, + { .species = SPECIES_SABLEYE, .unk2 = 0, }, + { .species = SPECIES_MAWILE, .unk2 = 0, }, + { .species = SPECIES_ARON, .unk2 = 1, }, + { .species = SPECIES_MEDITITE, .unk2 = 2, }, + { .species = SPECIES_ELECTRIKE, .unk2 = 1, }, + { .species = SPECIES_PLUSLE, .unk2 = 1, }, + { .species = SPECIES_MINUN, .unk2 = 1, }, + { .species = SPECIES_VOLBEAT, .unk2 = 0, }, + { .species = SPECIES_ILLUMISE, .unk2 = 0, }, + { .species = SPECIES_ROSELIA, .unk2 = 2, }, + { .species = SPECIES_GULPIN, .unk2 = 2, }, + { .species = SPECIES_NUMEL, .unk2 = 2, }, + { .species = SPECIES_TORKOAL, .unk2 = 2, }, + { .species = SPECIES_SPOINK, .unk2 = 0, }, + { .species = SPECIES_TRAPINCH, .unk2 = 2, }, + { .species = SPECIES_CACNEA, .unk2 = 2, }, + { .species = SPECIES_ANORITH, .unk2 = 1, }, + { .species = SPECIES_WYNAUT, .unk2 = 0, }, + { .species = SPECIES_SNORUNT, .unk2 = 0, }, + { .species = SPECIES_CLAMPERL, .unk2 = 1, }, + { .species = SPECIES_BAGON, .unk2 = 1, }, +}; + +bool32 (* const gUnknown_082FB5F4[])(void) = +{ + sub_802B248, + sub_802B2D4, + sub_802B368, + sub_802B3D4, + sub_802B4CC, + sub_802B5C8, + sub_802B664, + sub_802B6B8, + sub_802B720, +}; + +bool32 (* const gUnknown_082FB618[])(void) = +{ + sub_802B29C, + sub_802B31C, + sub_802B3B4, + sub_802B470, + sub_802B568, + sub_802B628, + sub_802B664, + sub_802B704, + sub_802B720, +}; + +void sub_802A9A8(u16 partyIndex, MainCallback callback) +{ + u8 taskId; + + if (gReceivedRemoteLinkPlayers) + { + gUnknown_02022CFC = Alloc(sizeof(*gUnknown_02022CFC)); + if (gUnknown_02022CFC) + { + ResetTasks(); + taskId = CreateTask(sub_802ACA0, 1); + gUnknown_02022CFC->unk8 = 0; + gUnknown_02022CFC->unk0 = callback; + gUnknown_02022CFC->unk4 = taskId; + gUnknown_02022CFC->unk6 = GetMultiplayerId(); + sub_802AC2C(&gUnknown_02022CFC->unk82A8[gUnknown_02022CFC->unk6], &gPlayerParty[partyIndex]); + sub_802AA60(gUnknown_02022CFC); + SetWordTaskArg(taskId, 2, (u32)gUnknown_02022CFC); + SetMainCallback2(sub_802AC6C); + return; + } + } + + SetMainCallback2(callback); +} + +void sub_802AA48(void) +{ + sub_802D0AC(); + Free(gUnknown_02022CFC); +} + +static void sub_802AA60(struct PokemonJump1 *arg0) +{ + arg0->unk5 = GetLinkPlayerCount(); + arg0->unk70 = 5; + arg0->unk72 = 0; + sub_802AB20(); + sub_802AA94(arg0); + if (arg0->unk5 == 5) + sub_802E3A8(); +} + +void sub_802AA94(struct PokemonJump1 *arg0) +{ + int i; + + arg0->unk14 = 6; + arg0->unk18 = 6; + arg0->unk4A = 0; + arg0->unk1C = 0; + arg0->unk5C = 0; + arg0->isLeader = GetMultiplayerId() == 0; + arg0->unk8 = 0; + arg0->unkA = 0; + arg0->unkC = 0; + arg0->unkE = 0; + arg0->unk58 = 0; + arg0->unk3A = 0; + arg0->unk44 = 0; + arg0->unk54 = 0; + arg0->unk46 = 0; + arg0->unk49 = 0; + arg0->unk48 = 1; + arg0->unk78 = 0; + arg0->unk71 = 0; + arg0->unk74 = 0; + arg0->unk60 = 1; + arg0->unk4D = 0; + arg0->unk68 = 0; + arg0->unk64 = 0; + arg0->unk2C = 0; + arg0->unk30 = 0; + sub_802AB98(); + sub_802C0E8(); + + for (i = 0; i < 5; i++) + { + arg0->unk7C[i] = 0; + arg0->unk9A[i] = 0; + } +} + +#ifdef NONMATCHING +void sub_802AB20(void) +{ + int i; + s16 index; + + for (i = 0; i < 5; i++) + { + index = sub_802AC00(gUnknown_02022CFC->unk82A8[i].species); + gUnknown_02022CFC->unk82E4[i].unkC = gPkmnJumpSpecies[index].unk2; + } + + gUnknown_02022CFC->unk83AC = &gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6]; +} +#else +NAKED +void sub_802AB20(void) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + ldr r7, =gUnknown_02022CFC\n\ + movs r6, 0\n\ + movs r5, 0\n\ + ldr r0, =gPkmnJumpSpecies\n\ + mov r8, r0\n\ + movs r4, 0x4\n\ +_0802AB32:\n\ + ldr r0, [r7]\n\ + adds r0, r5\n\ + ldr r1, =0x000082a8\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + bl sub_802AC00\n\ + lsls r0, 16\n\ + ldr r1, [r7]\n\ + adds r1, r6\n\ + asrs r0, 14\n\ + add r0, r8\n\ + ldrh r0, [r0, 0x2]\n\ + ldr r2, =0x000082f0\n\ + adds r1, r2\n\ + strh r0, [r1]\n\ + adds r6, 0x28\n\ + adds r5, 0xC\n\ + subs r4, 0x1\n\ + cmp r4, 0\n\ + bge _0802AB32\n\ + ldr r0, =gUnknown_02022CFC\n\ + ldr r1, [r0]\n\ + ldr r0, =0x000083ac\n\ + adds r3, r1, r0\n\ + ldrb r2, [r1, 0x6]\n\ + lsls r0, r2, 2\n\ + adds r0, r2\n\ + lsls r0, 3\n\ + ldr r2, =0x000082e4\n\ + adds r0, r2\n\ + adds r1, r0\n\ + str r1, [r3]\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool"); +} +#endif // NONMATCHING + +static void sub_802AB98(void) +{ + int i; + + for (i = 0; i < 5; i++) + { + gUnknown_02022CFC->unk82E4[i].unkE = 0; + gUnknown_02022CFC->unk82E4[i].unk10 = 0; + gUnknown_02022CFC->unk82E4[i].unk12 = 0; + gUnknown_02022CFC->unk82E4[i].unk0 = 0; + gUnknown_02022CFC->unk82E4[i].unk4 = 0x7FFFFFFF; + gUnknown_02022CFC->unk82E4[i].unk14 = 0; + gUnknown_02022CFC->unk8B[i] = 9; + } +} + +s16 sub_802AC00(u16 species) +{ + u32 i; + for (i = 0; i < ARRAY_COUNT(gPkmnJumpSpecies); i++) + { + if (gPkmnJumpSpecies[i].species == species) + return i; + } + + return -1; +} + +static void sub_802AC2C(struct PokemonJump1_MonInfo *monInfo, struct Pokemon *mon) +{ + monInfo->species = GetMonData(mon, MON_DATA_SPECIES); + monInfo->otId = GetMonData(mon, MON_DATA_OT_ID); + monInfo->personality = GetMonData(mon, MON_DATA_PERSONALITY); +} + +static void sub_802AC58(void) +{ + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); +} + +static void sub_802AC6C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_802AC84(TaskFunc func) +{ + gUnknown_02022CFC->unk4 = CreateTask(func, 1); + gUnknown_02022CFC->unk8 = 0; +} + +static void sub_802ACA0(u8 taskId) +{ + switch (gUnknown_02022CFC->unk8) + { + case 0: + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + sub_802BE60(sub_802BD84, 5); + FadeOutMapMusic(4); + gUnknown_02022CFC->unk8++; + break; + case 1: + if (!FuncIsActiveTask(sub_802BD84)) + { + sub_802D074(&gUnknown_02022CFC->unkA4); + sub_800E0E8(); + CreateWirelessStatusIndicatorSprite(0, 0); + gUnknown_02022CFC->unk8++; + } + break; + case 2: + if (!sub_802D0F0() && IsNotWaitingForBGMStop() == TRUE) + { + FadeOutAndPlayNewMapMusic(MUS_RG_JUMP, 8); + gUnknown_02022CFC->unk8++; + } + break; + case 3: + if (IsLinkTaskFinished()) + { + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + SetVBlankCallback(sub_802AC58); + gUnknown_02022CFC->unk8++; + } + break; + case 4: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_02022CFC->unk7 = 0; + gUnknown_02022CFC->unk8++; + } + break; + case 5: + gUnknown_02022CFC->unk7++; + if (gUnknown_02022CFC->unk7 >= 20) + { + if (gUnknown_02022CFC->isLeader) + sub_802AC84(sub_802AF80); + else + sub_802AC84(sub_802B194); + + sub_802BE80(); + DestroyTask(taskId); + } + break; + } +} + +void sub_802AE14(int arg0) +{ + if (arg0 == 0) + { + gUnknown_02022CFC->unk30 = 0x1111; + gUnknown_02022CFC->unk2C = 1; + } + else + { + gUnknown_02022CFC->unk30 = (1 << (arg0 - 1)) - 1; + gUnknown_02022CFC->unk2C = 0; + } +} + +static void sub_802AE50(u8 arg0) +{ + int i; + + gUnknown_02022CFC->unk70 = arg0; + gUnknown_02022CFC->unk8 = 0; + gUnknown_02022CFC->unkA = 0; + gUnknown_02022CFC->unk48 = 1; + gUnknown_02022CFC->unk49 = 0; + for (i = 1; i < gUnknown_02022CFC->unk5; i++) + gUnknown_02022CFC->unk82E4[i].unk18 = 0; +} + +static void sub_802AEA4(void) +{ + int i; + int count; + u16 var0; + u8 var1; + u16 var2; + + for (i = 1, count = 0; i < gUnknown_02022CFC->unk5; i++) + { + var0 = gUnknown_02022CFC->unk82E4[i].unk10; + if (sub_802E264(&gUnknown_02022CFC->unk82E4[i], i, &var1, &var2)) + { + gUnknown_02022CFC->unk90[i] = var2; + gUnknown_02022CFC->unk8B[i] = var1; + gUnknown_02022CFC->unk82E4[i].unk12 = var0; + } + + if (gUnknown_02022CFC->unk82E4[i].unk18 && gUnknown_02022CFC->unk8B[i] == gUnknown_02022CFC->unk70) + count++; + } + + if (count == gUnknown_02022CFC->unk5 - 1) + gUnknown_02022CFC->unk49 = 1; +} + +static void sub_802AF80(u8 taskId) +{ + sub_802AEA4(); + sub_802C43C(); + if (!gUnknown_02022CFC->unk48 && gUnknown_02022CFC->unk49) + { + sub_802AE50(gUnknown_02022CFC->unk4C); + sub_802AE14(3); + } + + if (gUnknown_02022CFC->unk48 == 1) + { + if (!gUnknown_082FB5F4[gUnknown_02022CFC->unk70]()) + { + gUnknown_02022CFC->unk48 = 0; + gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 = 1; + } + } + + sub_802C1DC(); + sub_802B008(); +} + +static void sub_802B008(void) +{ + if (!gUnknown_02022CFC->unk2C) + sub_802E138(gUnknown_02022CFC->unk82E4, &gUnknown_02022CFC->unk70); + + if (gUnknown_02022CFC->unk30 != 0x1111) + { + gUnknown_02022CFC->unk2C++; + gUnknown_02022CFC->unk2C &= gUnknown_02022CFC->unk30; + } +} + +static void sub_802B044(u8 arg0) +{ + gUnknown_02022CFC->unk70 = arg0; + gUnknown_02022CFC->unk8 = 0; + gUnknown_02022CFC->unkA = 0; + gUnknown_02022CFC->unk48 = 1; + gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 = 0; +} + +static void sub_802B078(void) +{ + int i; + u16 var0; + struct Unk802B078 sp0; + + var0 = gUnknown_02022CFC->unk82E4[0].unk10; + if (sub_802E1BC(gUnknown_02022CFC->unk82E4, &sp0)) + { + if (gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 == 1 + && sp0.unk0 != gUnknown_02022CFC->unk70) + { + sub_802B044(sp0.unk0); + } + + if (gUnknown_02022CFC->unk78 != sp0.unk8) + { + gUnknown_02022CFC->unk78 = sp0.unk8; + gUnknown_02022CFC->unk5C = 1; + gUnknown_02022CFC->unk71 = sp0.unk1; + if (gUnknown_02022CFC->unk71) + gUnknown_02022CFC->unk4D = 1; + else + gUnknown_02022CFC->unk4D = 0; + } + + gUnknown_02022CFC->unk72 = sp0.unk2; + gUnknown_02022CFC->unk74 = sp0.unk4; + gUnknown_02022CFC->unk82E4[0].unk12 = var0; + } + + for (i = 1; i < gUnknown_02022CFC->unk5; i++) + { + if (i != gUnknown_02022CFC->unk6) + { + var0 = gUnknown_02022CFC->unk82E4[i].unk10; + if (sub_802E2D0(&gUnknown_02022CFC->unk82E4[i], i)) + gUnknown_02022CFC->unk82E4[i].unk12 = var0; + } + } +} + +static void sub_802B194(u8 taskId) +{ + sub_802B078(); + if (gUnknown_02022CFC->unk48) + { + if (!gUnknown_082FB618[gUnknown_02022CFC->unk70]()) + { + gUnknown_02022CFC->unk48 = 0; + gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 = 1; + sub_802AE14(3); + } + } + + sub_802C1DC(); + sub_802B1FC(); +} + +static void sub_802B1FC(void) +{ + if (!gUnknown_02022CFC->unk2C) + sub_802E234(&gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6], gUnknown_02022CFC->unk70, gUnknown_02022CFC->unk42); + + if (gUnknown_02022CFC->unk30 != 0x1111) + { + gUnknown_02022CFC->unk2C++; + gUnknown_02022CFC->unk2C &= gUnknown_02022CFC->unk30; + } +} + +bool32 sub_802B248(void) +{ + switch (gUnknown_02022CFC->unk8) + { + case 0: + sub_802AE14(3); + gUnknown_02022CFC->unk8++; + // fall through + case 1: + if (!sub_802B7E0()) + { + gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unk4A; + gUnknown_02022CFC->unk4C = 1; + return FALSE; + } + break; + } + + return TRUE; +} + +bool32 sub_802B29C(void) +{ + switch (gUnknown_02022CFC->unk8) + { + case 0: + sub_802AE14(0); + gUnknown_02022CFC->unk24 = gUnknown_02022CFC->unk72; + gUnknown_02022CFC->unk8++; + // fall through + case 1: + return sub_802B7E0(); + } + + return TRUE; +} + +bool32 sub_802B2D4(void) +{ + switch (gUnknown_02022CFC->unk8) + { + case 0: + sub_802C0E8(); + sub_802AE14(5); + gUnknown_02022CFC->unk8++; + break; + case 1: + if (gUnknown_02022CFC->unk49) + { + gUnknown_02022CFC->unk4C = 2; + return FALSE; + } + break; + } + + return TRUE; +} + +bool32 sub_802B31C(void) +{ + switch (gUnknown_02022CFC->unk8) + { + case 0: + sub_802C0E8(); + sub_802AE14(0); + gUnknown_02022CFC->unk4A = gUnknown_02022CFC->unk72; + gUnknown_02022CFC->unk8++; + // fall through + case 1: + if (sub_802C70C()) + return FALSE; + break; + } + + return TRUE; +} + +bool32 sub_802B368(void) +{ + if (!sub_802B8CC()) + { + gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unk4A; + gUnknown_02022CFC->unk4C = 1; + } + else if (sub_802C538()) + { + return TRUE; + } + else + { + sub_802C0B8(); + gUnknown_02022CFC->unk4C = 3; + } + + return FALSE; +} + +bool32 sub_802B3B4(void) +{ + if (!sub_802B8CC()) + ; + else if (sub_802C538()) + return TRUE; + else + sub_802C0B8(); + + return FALSE; +} diff --git a/src/union_room.c b/src/union_room.c index 687efbf5e..d9bb3ca7c 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -47,6 +47,7 @@ #include "berry_crush.h" #include "mystery_gift.h" #include "union_room_player_avatar.h" +#include "pokemon_jump.h" EWRAM_DATA u8 gUnknown_02022C20[12] = {}; EWRAM_DATA u8 gUnknown_02022C2C = 0; @@ -97,7 +98,6 @@ bool32 sub_8017678(struct UnkStruct_Shared *arg0, struct UnkStruct_Shared *arg1) u32 sub_8018120(struct TradeUnkStruct *arg0, u8 multiplayerId); void sub_801807C(struct TradeUnkStruct *arg0); void sub_801AC54(void); -void sub_802A9A8(u8 monId, MainCallback callback); void sub_802493C(u8 monId, MainCallback callback); void sub_80149D8(void); void MG_DrawTextBorder(u8 windowId); |