From 9140eeaa7347c671df59c323ced655ea94bf62ce Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 02:28:10 -0500 Subject: decompile sub_811EC68 --- src/battle_811DA74.c | 221 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 219 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 328b45f49..44d8f179d 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -455,7 +455,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) case 5: case 6: case 7: - data16 = GetMonData(&gPlayerParty[a], gUnknown_02023A60[gUnknown_02024A60][1] + MON_DATA_CHECKSUM); + data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gUnknown_02023A60[gUnknown_02024A60][1] - 4); buffer[0] = data16; buffer[1] = data16 >> 8; size = 2; @@ -470,7 +470,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) case 10: case 11: case 12: - buffer[0] = GetMonData(&gPlayerParty[a], gUnknown_02023A60[gUnknown_02024A60][1] + MON_DATA_MARKINGS); + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gUnknown_02023A60[gUnknown_02024A60][1] - 9); size = 1; break; case 17: @@ -710,3 +710,220 @@ void sub_811EC10(void) } dp01_tbl3_exec_completed(); } + +void sub_811EC68(u8 a) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gUnknown_02023A60[gUnknown_02024A60][3]; + struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gUnknown_02023A60[gUnknown_02024A60][3]; + s32 i; + + switch (gUnknown_02023A60[gUnknown_02024A60][1]) + { + case 0: + { + u8 iv; + + SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species); + SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item); + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]); + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]); + } + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses); + SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship); + SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv); + iv = battlePokemon->attackIV; + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv); + iv = battlePokemon->defenseIV; + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv); + iv = battlePokemon->speedIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv); + SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality); + SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1); + SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level); + SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp); + SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); + SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); + SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); + SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); + } + break; + case 1: + SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 2: + SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 3: + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]); + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]); + } + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case 4: + case 5: + case 6: + case 7: + SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gUnknown_02023A60[gUnknown_02024A60][1] - 4, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 8: + SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gUnknown_02023A60[gUnknown_02024A60][3]); + SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gUnknown_02023A60[gUnknown_02024A60][4]); + SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gUnknown_02023A60[gUnknown_02024A60][5]); + SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gUnknown_02023A60[gUnknown_02024A60][6]); + SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gUnknown_02023A60[gUnknown_02024A60][7]); + break; + case 9: + case 10: + case 11: + case 12: + SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gUnknown_02023A60[gUnknown_02024A60][1] - 9, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 17: + SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 18: + SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 19: + SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 20: + SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 21: + SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 22: + SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 23: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 24: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 25: + SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 26: + SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 27: + SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 28: + SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 29: + SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 30: + SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 31: + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gUnknown_02023A60[gUnknown_02024A60][3]); + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gUnknown_02023A60[gUnknown_02024A60][4]); + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gUnknown_02023A60[gUnknown_02024A60][5]); + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gUnknown_02023A60[gUnknown_02024A60][6]); + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gUnknown_02023A60[gUnknown_02024A60][7]); + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gUnknown_02023A60[gUnknown_02024A60][8]); + break; + case 32: + SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 33: + SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 34: + SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 35: + SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 36: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 37: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 38: + SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 39: + SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 40: + SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 41: + SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 42: + SetMonData(&gPlayerParty[a], MON_DATA_HP, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 43: + SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 44: + SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 45: + SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 46: + SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 47: + SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 48: + SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 49: + SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 50: + SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 51: + SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 52: + SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 53: + SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 54: + SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 55: + SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 56: + SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 57: + SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 58: + SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + case 59: + SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gUnknown_02023A60[gUnknown_02024A60][3]); + break; + } + sub_80324F8(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60); +} -- cgit v1.2.3 From 30c2d09cf89e5f2d3b581bd44f55f88107267ddc Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 02:42:56 -0500 Subject: decompile sub_811F664 --- src/battle_811DA74.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 44d8f179d..3f1bb9266 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -927,3 +927,14 @@ void sub_811EC68(u8 a) } sub_80324F8(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60); } + +void sub_811F664(void) +{ + u8 *dst; + u8 i; + + dst = (u8 *)&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]] + gUnknown_02023A60[gUnknown_02024A60][1]; + for (i = 0; i < gUnknown_02023A60[gUnknown_02024A60][2]; i++) + dst[i] = gUnknown_02023A60[gUnknown_02024A60][3 + i]; + dp01_tbl3_exec_completed(); +} -- cgit v1.2.3 From dfef744741329de817e5a05ea0f1019a694ef3b2 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 03:00:08 -0500 Subject: decompile sub_811F6D8 --- src/battle_811DA74.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 3f1bb9266..76d9609e7 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -43,11 +43,13 @@ extern u32 gUnknown_02024A64; extern u16 gUnknown_02024A6A[]; extern u8 gUnknown_02024BE0[]; extern u8 gUnknown_02024E6D; +extern struct SpriteTemplate gUnknown_02024E8C; extern struct Window gUnknown_03004210; extern MainCallback gUnknown_030042D0; extern void (*gUnknown_03004330[])(void); extern u8 gUnknown_03004340[]; extern u8 gUnknown_0300434C[]; +extern u8 gBattleMonForms[]; extern void (*const gUnknown_083FE4F4[])(void); extern u8 unk_2000000[]; @@ -55,6 +57,10 @@ extern u8 unk_2000000[]; #define EWRAM_17800 ((u8 *)(unk_2000000 + 0x17800)) #define EWRAM_17810 ((struct UnknownStruct2 *)(unk_2000000 + 0x17810)) +extern void sub_80318FC(); +extern u8 sub_8077ABC(); +extern u8 sub_8077F68(); +extern u8 sub_8079E90(); extern void nullsub_10(); extern void sub_8045A5C(); extern void sub_804777C(); @@ -938,3 +944,21 @@ void sub_811F664(void) dst[i] = gUnknown_02023A60[gUnknown_02024A60][3 + i]; dp01_tbl3_exec_completed(); } + +void sub_811F6D8(void) +{ + sub_80318FC(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60); + GetMonSpriteTemplate_803C56C( + GetMonData(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_SPECIES), + battle_get_per_side_status(gUnknown_02024A60)); + gUnknown_02024BE0[gUnknown_02024A60] = CreateSprite( + &gUnknown_02024E8C, + sub_8077ABC(gUnknown_02024A60, 2), + sub_8077F68(gUnknown_02024A60), + sub_8079E90(gUnknown_02024A60)); + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos2.x = -240; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data0 = gUnknown_02024A60; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.paletteNum = gUnknown_02024A60; + StartSpriteAnim(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]], gBattleMonForms[gUnknown_02024A60]); + gUnknown_03004330[gUnknown_02024A60] = sub_811DDE8; +} -- cgit v1.2.3 From 663851a26d36e354b9b83bc9b76b7c907e39387f Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 03:05:37 -0500 Subject: decompile sub_811F7F4 --- src/battle_811DA74.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 76d9609e7..d1558e440 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -962,3 +962,14 @@ void sub_811F6D8(void) StartSpriteAnim(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]], gBattleMonForms[gUnknown_02024A60]); gUnknown_03004330[gUnknown_02024A60] = sub_811DDE8; } + +void sub_811F864(); + +void sub_811F7F4(void) +{ + sub_8032AA8(gUnknown_02024A60, gUnknown_02023A60[gUnknown_02024A60][2]); + gUnknown_02024A6A[gUnknown_02024A60] = gUnknown_02023A60[gUnknown_02024A60][1]; + sub_80318FC(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60); + sub_811F864(gUnknown_02024A60, gUnknown_02023A60[gUnknown_02024A60][2]); + gUnknown_03004330[gUnknown_02024A60] = sub_811E1BC; +} -- cgit v1.2.3 From 67a95d8e9619b5b239c21043bf003a2252dedd2c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 03:06:50 -0500 Subject: trim whitespace --- src/battle_811DA74.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index d1558e440..0d49c33bd 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -722,13 +722,13 @@ void sub_811EC68(u8 a) struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gUnknown_02023A60[gUnknown_02024A60][3]; struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gUnknown_02023A60[gUnknown_02024A60][3]; s32 i; - + switch (gUnknown_02023A60[gUnknown_02024A60][1]) { case 0: { u8 iv; - + SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species); SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item); for (i = 0; i < 4; i++) @@ -938,7 +938,7 @@ void sub_811F664(void) { u8 *dst; u8 i; - + dst = (u8 *)&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]] + gUnknown_02023A60[gUnknown_02024A60][1]; for (i = 0; i < gUnknown_02023A60[gUnknown_02024A60][2]; i++) dst[i] = gUnknown_02023A60[gUnknown_02024A60][3 + i]; -- cgit v1.2.3 From eb492eb014397ce2b9933e024bea62a32db5fc5d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 11:52:47 -0500 Subject: decompile sub_811F864 --- src/battle_811DA74.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 0d49c33bd..0bef8b3af 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -57,6 +57,9 @@ extern u8 unk_2000000[]; #define EWRAM_17800 ((u8 *)(unk_2000000 + 0x17800)) #define EWRAM_17810 ((struct UnknownStruct2 *)(unk_2000000 + 0x17810)) +extern u8 sub_8046400(); +extern void sub_80312F0(struct Sprite *); +extern u8 CreateInvisibleSpriteWithCallback(); extern void sub_80318FC(); extern u8 sub_8077ABC(); extern u8 sub_8077F68(); @@ -83,6 +86,7 @@ void sub_811E0A0(void); void dp01_tbl3_exec_completed(void); u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *b); void sub_811EC68(u8); +void sub_811F864(u8, u8); void nullsub_74(void) { @@ -963,8 +967,6 @@ void sub_811F6D8(void) gUnknown_03004330[gUnknown_02024A60] = sub_811DDE8; } -void sub_811F864(); - void sub_811F7F4(void) { sub_8032AA8(gUnknown_02024A60, gUnknown_02023A60[gUnknown_02024A60][2]); @@ -973,3 +975,27 @@ void sub_811F7F4(void) sub_811F864(gUnknown_02024A60, gUnknown_02023A60[gUnknown_02024A60][2]); gUnknown_03004330[gUnknown_02024A60] = sub_811E1BC; } + +void sub_811F864(u8 a, u8 b) +{ + u16 species; + + sub_8032AA8(a, b); + gUnknown_02024A6A[a] = gUnknown_02023A60[a][1]; + species = GetMonData(&gPlayerParty[gUnknown_02024A6A[a]], MON_DATA_SPECIES); + gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); + GetMonSpriteTemplate_803C56C(species, battle_get_per_side_status(a)); + gUnknown_02024BE0[a] = CreateSprite( + &gUnknown_02024E8C, + sub_8077ABC(a, 2), + sub_8077F68(a), + sub_8079E90(a)); + gSprites[gUnknown_0300434C[a]].data1 = gUnknown_02024BE0[a]; + gSprites[gUnknown_02024BE0[a]].data0 = a; + gSprites[gUnknown_02024BE0[a]].data2 = species; + gSprites[gUnknown_02024BE0[a]].oam.paletteNum = a; + StartSpriteAnim(&gSprites[gUnknown_02024BE0[a]], gBattleMonForms[a]); + gSprites[gUnknown_02024BE0[a]].invisible = TRUE; + gSprites[gUnknown_02024BE0[a]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFF); +} -- cgit v1.2.3 From 5d4a042fa654930450f73f0af3abf14df2daf2ef Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 12:00:57 -0500 Subject: decompile sub_811F9D0 --- src/battle_811DA74.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 0bef8b3af..1cb2d620e 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -21,7 +21,11 @@ struct UnknownStruct2 { u8 unk0; u8 unk1; - u8 filler2[7]; + //u8 filler2[7]; + u8 filler2[2]; + u8 unk4; + u8 filler5[4]; + u8 unk9; u8 fillerA[2]; }; @@ -87,6 +91,7 @@ void dp01_tbl3_exec_completed(void); u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *b); void sub_811EC68(u8); void sub_811F864(u8, u8); +void sub_811FA5C(void); void nullsub_74(void) { @@ -999,3 +1004,19 @@ void sub_811F864(u8 a, u8 b) gSprites[gUnknown_02024BE0[a]].callback = SpriteCallbackDummy; gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFF); } + +void sub_811F9D0(void) +{ + if (gUnknown_02023A60[gUnknown_02024A60][1] == 0) + { + EWRAM_17810[gUnknown_02024A60].unk4 = 0; + gUnknown_03004330[gUnknown_02024A60] = sub_811FA5C; + } + else + { + FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + sub_8043DB0(gUnknown_03004340[gUnknown_02024A60]); + dp01_tbl3_exec_completed(); + } +} -- cgit v1.2.3 From 6e203fc646494445f28670f14a95067d58d3785d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 12:12:40 -0500 Subject: decompile sub_811FA5C --- src/battle_811DA74.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 1cb2d620e..717562f84 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -21,11 +21,9 @@ struct UnknownStruct2 { u8 unk0; u8 unk1; - //u8 filler2[7]; u8 filler2[2]; u8 unk4; u8 filler5[4]; - u8 unk9; u8 fillerA[2]; }; @@ -1020,3 +1018,23 @@ void sub_811F9D0(void) dp01_tbl3_exec_completed(); } } + +void sub_811FA5C(void) +{ + switch (EWRAM_17810[gUnknown_02024A60].unk4) + { + case 0: + if (EWRAM_17800[gUnknown_02024A60 * 4] & 4) + move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 5); + EWRAM_17810[gUnknown_02024A60].unk4 = 1; + break; + case 1: + if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x40)) + { + EWRAM_17810[gUnknown_02024A60].unk4 = 0; + move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 1); + gUnknown_03004330[gUnknown_02024A60] = sub_811DF34; + } + break; + } +} -- cgit v1.2.3 From 61101812ca750393ba24cae103cb86b40001251a Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 14:09:45 -0500 Subject: decompile sub_811FAE4 - sub_811FCE8 --- src/battle_811DA74.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/battle_ai.c | 2 +- 2 files changed, 78 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 717562f84..9be2cfe21 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -1,11 +1,14 @@ #include "global.h" #include "asm.h" +#include "battle.h" +#include "data2.h" #include "link.h" #include "m4a.h" #include "main.h" #include "palette.h" #include "pokemon.h" #include "sound.h" +#include "songs.h" #include "sprite.h" #include "string_util.h" #include "text.h" @@ -59,6 +62,13 @@ extern u8 unk_2000000[]; #define EWRAM_17800 ((u8 *)(unk_2000000 + 0x17800)) #define EWRAM_17810 ((struct UnknownStruct2 *)(unk_2000000 + 0x17810)) +extern void oamt_add_pos2_onto_pos1(); +extern void oamt_set_x3A_32(); +extern void sub_8078B34(struct Sprite *); +extern void sub_80105EC(struct Sprite *); +extern s32 sub_803FC34(u16); +extern void sub_8031AF4(); +extern void sub_80313A0(struct Sprite *); extern u8 sub_8046400(); extern void sub_80312F0(struct Sprite *); extern u8 CreateInvisibleSpriteWithCallback(); @@ -1038,3 +1048,70 @@ void sub_811FA5C(void) break; } } + +void sub_811FAE4(void) +{ + s16 xOffset; + u32 gender; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (battle_get_per_side_status(gUnknown_02024A60) & 2) + xOffset = 16; + else + xOffset = -16; + gender = gLinkPlayers[sub_803FC34(gUnknown_02024A60)].gender; + } + else + { + xOffset = 0; + gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender; + } + sub_8031AF4(gender, gUnknown_02024A60); + GetMonSpriteTemplate_803C5A0(gender, battle_get_per_side_status(gUnknown_02024A60)); + gUnknown_02024BE0[gUnknown_02024A60] = CreateSprite( + &gUnknown_02024E8C, + 80 + xOffset, 80 + 4 * (8 - gTrainerBackPicCoords[gender].coords), + sub_8079E90(gUnknown_02024A60)); + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.paletteNum = gUnknown_02024A60; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos2.x = 240; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data0 = -2; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback = sub_80313A0; + gUnknown_03004330[gUnknown_02024A60] = sub_811DAE4; +} + +void sub_811FC30(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_811FC3C(void) +{ + oamt_add_pos2_onto_pos1(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data0 = 35; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data2 = -40; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data4 = gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos1.y; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback = sub_8078B34; + oamt_set_x3A_32(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]], SpriteCallbackDummy); + gUnknown_03004330[gUnknown_02024A60] = sub_811DB1C; +} + +void sub_811FCE8(void) +{ + if (EWRAM_17810[gUnknown_02024A60].unk4 == 0) + { + if (EWRAM_17800[gUnknown_02024A60 * 4] & 4) + move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 5); + EWRAM_17810[gUnknown_02024A60].unk4++; + } + else if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x40)) + { + EWRAM_17810[gUnknown_02024A60].unk4 = 0; + sub_80324F8(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60); + PlaySE12WithPanning(SE_POKE_DEAD, -64); + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data1 = 0; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data2 = 5; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback = sub_80105EC; + gUnknown_03004330[gUnknown_02024A60] = sub_811DE98; + } +} diff --git a/src/battle_ai.c b/src/battle_ai.c index f10c6a013..dbd926000 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -269,7 +269,7 @@ void BattleAI_HandleItemUseBeforeAISetup(void) s32 i; u8 *data = (u8 *)UNK_2016A00_STRUCT; - for (i = 0; (u32)i < sizeof(struct UnknownStruct1); i++) + for (i = 0; (u32)i < sizeof(struct UnkBattleStruct1); i++) data[i] = 0; if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) -- cgit v1.2.3 From 7639d3802470825ea4ac1c2ab52173b2ce86c8e6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 14:12:35 -0500 Subject: decompile sub_811FDCC - sub_811FDF0 --- src/battle_811DA74.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 9be2cfe21..12991c60f 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -1115,3 +1115,23 @@ void sub_811FCE8(void) gUnknown_03004330[gUnknown_02024A60] = sub_811DE98; } } + +void sub_811FDCC(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_811FDD8(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_811FDE4(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_811FDF0(void) +{ + dp01_tbl3_exec_completed(); +} -- cgit v1.2.3 From 3c700c6eb77be99f7864e52e8f3747491f050265 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 14:33:21 -0500 Subject: decompile sub_811FDFC --- src/battle_811DA74.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 12991c60f..8152645bc 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -48,7 +48,14 @@ extern u32 gUnknown_02024A64; extern u16 gUnknown_02024A6A[]; extern u8 gUnknown_02024BE0[]; extern u8 gUnknown_02024E6D; +extern u32 gUnknown_02024E70[]; extern struct SpriteTemplate gUnknown_02024E8C; +extern u32 *gUnknown_0202F7B4; +extern u32 gUnknown_0202F7B8; +extern u16 gUnknown_0202F7BC; +extern u8 gUnknown_0202F7BE; +extern u16 gUnknown_0202F7C0; +extern u8 gUnknown_0202F7C4; extern struct Window gUnknown_03004210; extern MainCallback gUnknown_030042D0; extern void (*gUnknown_03004330[])(void); @@ -62,6 +69,8 @@ extern u8 unk_2000000[]; #define EWRAM_17800 ((u8 *)(unk_2000000 + 0x17800)) #define EWRAM_17810 ((struct UnknownStruct2 *)(unk_2000000 + 0x17810)) +extern u8 sub_8031720(); +extern u8 mplay_80342A4(); extern void oamt_add_pos2_onto_pos1(); extern void oamt_set_x3A_32(); extern void sub_8078B34(struct Sprite *); @@ -100,6 +109,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *b); void sub_811EC68(u8); void sub_811F864(u8, u8); void sub_811FA5C(void); +void sub_811FF30(void); void nullsub_74(void) { @@ -1135,3 +1145,33 @@ void sub_811FDF0(void) { dp01_tbl3_exec_completed(); } + +void sub_811FDFC(void) +{ + if (mplay_80342A4(gUnknown_02024A60) == 0) + { + u32 r0 = gUnknown_02023A60[gUnknown_02024A60][1] + | (gUnknown_02023A60[gUnknown_02024A60][2] << 8); + + gUnknown_0202F7C4 = gUnknown_02023A60[gUnknown_02024A60][3]; + gUnknown_0202F7BC = gUnknown_02023A60[gUnknown_02024A60][4] + | (gUnknown_02023A60[gUnknown_02024A60][5] << 8); + gUnknown_0202F7B8 = gUnknown_02023A60[gUnknown_02024A60][6] + | (gUnknown_02023A60[gUnknown_02024A60][7] << 8) + | (gUnknown_02023A60[gUnknown_02024A60][8] << 16) + | (gUnknown_02023A60[gUnknown_02024A60][9] << 24); + gUnknown_0202F7BE = gUnknown_02023A60[gUnknown_02024A60][10]; + gUnknown_0202F7C0 = gUnknown_02023A60[gUnknown_02024A60][12] + | (gUnknown_02023A60[gUnknown_02024A60][13] << 8); + gUnknown_0202F7B4 = (u32 *)&gUnknown_02023A60[gUnknown_02024A60][16]; + gUnknown_02024E70[gUnknown_02024A60] = *gUnknown_0202F7B4; + + if (sub_8031720(r0, gUnknown_0202F7C4) != 0) + dp01_tbl3_exec_completed(); + else + { + EWRAM_17810[gUnknown_02024A60].unk4 = 0; + gUnknown_03004330[gUnknown_02024A60] = sub_811FF30; + } + } +} -- cgit v1.2.3 From a6e1eb7f7522c3fef4a6c93c37c1a138524a1aa2 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 15:23:27 -0500 Subject: decompile sub_811FF30 --- src/battle_2.c | 2 +- src/battle_811DA74.c | 130 ++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 98 insertions(+), 34 deletions(-) (limited to 'src') diff --git a/src/battle_2.c b/src/battle_2.c index e5091bd08..79d62ce69 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -1821,7 +1821,7 @@ void sub_8010874(void) void sub_8010B88(void) { - struct UnknownStruct4 sp0 = gUnknown_02024CA8[gUnknown_02024A60]; + struct UnkBattleStruct4 sp0 = gUnknown_02024CA8[gUnknown_02024A60]; s32 i; u8 *ptr; u32 *ptr2; diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 8152645bc..a1b41d7bb 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -39,6 +39,13 @@ struct UnknownStruct3 u8 ppBonuses; }; +struct UnknownStruct4 +{ + u8 unk0_0:2; + u8 unk0_2:1; + u8 unk0_3:1; +}; + extern u32 gBitTable[]; extern u16 gBattleTypeFlags; @@ -62,13 +69,19 @@ extern void (*gUnknown_03004330[])(void); extern u8 gUnknown_03004340[]; extern u8 gUnknown_0300434C[]; extern u8 gBattleMonForms[]; +extern u8 gAnimScriptActive; +extern void (*gAnimScriptCallback)(void); extern void (*const gUnknown_083FE4F4[])(void); -extern u8 unk_2000000[]; +extern u8 ewram[]; -#define EWRAM_17800 ((u8 *)(unk_2000000 + 0x17800)) -#define EWRAM_17810 ((struct UnknownStruct2 *)(unk_2000000 + 0x17810)) +#define ewram17800 ((struct UnknownStruct4 *)(ewram + 0x17800)) +#define ewram17810 ((struct UnknownStruct2 *)(ewram + 0x17810)) +extern void sub_8031F24(void); +extern void sub_80326EC(); +extern void ExecuteMoveAnim(); +extern void sub_80324BC(); extern u8 sub_8031720(); extern u8 mplay_80342A4(); extern void oamt_add_pos2_onto_pos1(); @@ -150,9 +163,9 @@ void sub_811DB1C(void) void sub_811DB84(void) { - if ((--EWRAM_17810[gUnknown_02024A60].unk9) == 0xFF) + if ((--ewram17810[gUnknown_02024A60].unk9) == 0xFF) { - EWRAM_17810[gUnknown_02024A60].unk9 = 0; + ewram17810[gUnknown_02024A60].unk9 = 0; dp01_tbl3_exec_completed(); } } @@ -176,7 +189,7 @@ void sub_811DBC0(void) r6 = FALSE; if (r6) { - EWRAM_17810[gUnknown_02024A60].unk9 = 3; + ewram17810[gUnknown_02024A60].unk9 = 3; gUnknown_03004330[gUnknown_02024A60] = sub_811DB84; } } @@ -185,12 +198,12 @@ void sub_811DCA0(void) { u8 r2; - if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 8)) + if (!(ewram17810[gUnknown_02024A60].unk0 & 8)) { - r2 = EWRAM_17810[gUnknown_02024A60 ^ 2].unk0 & 8; - if (!r2 && (++EWRAM_17810[gUnknown_02024A60].unk9) != 1) + r2 = ewram17810[gUnknown_02024A60 ^ 2].unk0 & 8; + if (!r2 && (++ewram17810[gUnknown_02024A60].unk9) != 1) { - EWRAM_17810[gUnknown_02024A60].unk9 = r2; + ewram17810[gUnknown_02024A60].unk9 = r2; if (IsDoubleBattle() && !(gBattleTypeFlags & 0x40)) { DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60 ^ 2]]); @@ -202,7 +215,7 @@ void sub_811DCA0(void) sub_8045A5C(gUnknown_03004340[gUnknown_02024A60], &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], 0); sub_804777C(gUnknown_02024A60); sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]); - (s8)EWRAM_17810[4].unk9 &= ~1; + (s8)ewram17810[4].unk9 &= ~1; gUnknown_03004330[gUnknown_02024A60] = sub_811DBC0; } } @@ -246,7 +259,7 @@ void sub_811DE98(void) void sub_811DF34(void) { - if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x40)) + if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) { FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); @@ -285,7 +298,7 @@ void sub_811E034(void) { if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy) { - if (EWRAM_17800[gUnknown_02024A60 * 4] & 4) + if (ewram17800[gUnknown_02024A60].unk0_2) move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 6); gUnknown_03004330[gUnknown_02024A60] = sub_811E0A0; } @@ -293,16 +306,16 @@ void sub_811E034(void) void sub_811E0A0(void) { - if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x40)) + if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) dp01_tbl3_exec_completed(); } void sub_811E0CC(void) { - if (EWRAM_17810[gUnknown_02024A60].unk1 & 1) + if (ewram17810[gUnknown_02024A60].unk1 & 1) { - EWRAM_17810[gUnknown_02024A60].unk0 &= 0x7F; - (s8)EWRAM_17810[gUnknown_02024A60].unk1 &= ~1; + ewram17810[gUnknown_02024A60].unk0 &= 0x7F; + (s8)ewram17810[gUnknown_02024A60].unk1 &= ~1; FreeSpriteTilesByTag(0x27F9); FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); @@ -318,10 +331,10 @@ void sub_811E0CC(void) void sub_811E1BC(void) { - if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x88)) + if (!(ewram17810[gUnknown_02024A60].unk0 & 0x88)) sub_8141828(gUnknown_02024A60, &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]]); if (gSprites[gUnknown_0300434C[gUnknown_02024A60]].callback == SpriteCallbackDummy - && !(EWRAM_17810[gUnknown_02024A60].unk0 & 8)) + && !(ewram17810[gUnknown_02024A60].unk0 & 8)) { DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60]]); gUnknown_03004330[gUnknown_02024A60] = sub_811E0CC; @@ -377,13 +390,13 @@ void dp01_tbl3_exec_completed(void) void sub_811E38C(void) { - if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x10)) + if (!(ewram17810[gUnknown_02024A60].unk0 & 0x10)) dp01_tbl3_exec_completed(); } void sub_811E3B8(void) { - if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x20)) + if (!(ewram17810[gUnknown_02024A60].unk0 & 0x20)) dp01_tbl3_exec_completed(); } @@ -1027,7 +1040,7 @@ void sub_811F9D0(void) { if (gUnknown_02023A60[gUnknown_02024A60][1] == 0) { - EWRAM_17810[gUnknown_02024A60].unk4 = 0; + ewram17810[gUnknown_02024A60].unk4 = 0; gUnknown_03004330[gUnknown_02024A60] = sub_811FA5C; } else @@ -1041,17 +1054,17 @@ void sub_811F9D0(void) void sub_811FA5C(void) { - switch (EWRAM_17810[gUnknown_02024A60].unk4) + switch (ewram17810[gUnknown_02024A60].unk4) { case 0: - if (EWRAM_17800[gUnknown_02024A60 * 4] & 4) + if (ewram17800[gUnknown_02024A60].unk0_2) move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 5); - EWRAM_17810[gUnknown_02024A60].unk4 = 1; + ewram17810[gUnknown_02024A60].unk4 = 1; break; case 1: - if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x40)) + if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) { - EWRAM_17810[gUnknown_02024A60].unk4 = 0; + ewram17810[gUnknown_02024A60].unk4 = 0; move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 1); gUnknown_03004330[gUnknown_02024A60] = sub_811DF34; } @@ -1108,15 +1121,15 @@ void sub_811FC3C(void) void sub_811FCE8(void) { - if (EWRAM_17810[gUnknown_02024A60].unk4 == 0) + if (ewram17810[gUnknown_02024A60].unk4 == 0) { - if (EWRAM_17800[gUnknown_02024A60 * 4] & 4) + if (ewram17800[gUnknown_02024A60].unk0_2) move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 5); - EWRAM_17810[gUnknown_02024A60].unk4++; + ewram17810[gUnknown_02024A60].unk4++; } - else if (!(EWRAM_17810[gUnknown_02024A60].unk0 & 0x40)) + else if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) { - EWRAM_17810[gUnknown_02024A60].unk4 = 0; + ewram17810[gUnknown_02024A60].unk4 = 0; sub_80324F8(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60); PlaySE12WithPanning(SE_POKE_DEAD, -64); gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data1 = 0; @@ -1170,8 +1183,59 @@ void sub_811FDFC(void) dp01_tbl3_exec_completed(); else { - EWRAM_17810[gUnknown_02024A60].unk4 = 0; + ewram17810[gUnknown_02024A60].unk4 = 0; gUnknown_03004330[gUnknown_02024A60] = sub_811FF30; } } } + +void sub_811FF30(void) +{ + u16 r4 = gUnknown_02023A60[gUnknown_02024A60][1] + | (gUnknown_02023A60[gUnknown_02024A60][2] << 8); + u8 r7 = gUnknown_02023A60[gUnknown_02024A60][11]; + + switch (ewram17810[gUnknown_02024A60].unk4) + { + case 0: + if (ewram17800[gUnknown_02024A60].unk0_2 && !ewram17800[gUnknown_02024A60].unk0_3) + { + ewram17800[gUnknown_02024A60].unk0_3 = 1; + move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 5); + } + ewram17810[gUnknown_02024A60].unk4 = 1; + break; + case 1: + if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) + { + sub_80326EC(0); + ExecuteMoveAnim(r4); + ewram17810[gUnknown_02024A60].unk4 = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80326EC(1); + if ((ewram17800[gUnknown_02024A60].unk0_2) && r7 <= 1) + { + move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 6); + ewram17800[gUnknown_02024A60].unk0_3 = 0; + } + ewram17810[gUnknown_02024A60].unk4 = 3; + } + break; + case 3: + if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) + { + sub_8031F24(); + sub_80324BC( + gUnknown_02024A60, + gUnknown_02023A60[gUnknown_02024A60][1] | (gUnknown_02023A60[gUnknown_02024A60][2] << 8)); + ewram17810[gUnknown_02024A60].unk4 = 0; + dp01_tbl3_exec_completed(); + } + break; + } +} -- cgit v1.2.3 From eed525462313d549da185d4caacc46a171a31de1 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 15:35:51 -0500 Subject: decompile sub_8120094 - sub_8120140 --- src/battle_811DA74.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index a1b41d7bb..f4e2cc57d 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -49,6 +49,7 @@ struct UnknownStruct4 extern u32 gBitTable[]; extern u16 gBattleTypeFlags; +extern u8 gUnknown_020238CC[]; extern u8 gUnknown_02023A60[][0x200]; extern u8 gUnknown_02024A60; extern u32 gUnknown_02024A64; @@ -64,6 +65,8 @@ extern u8 gUnknown_0202F7BE; extern u16 gUnknown_0202F7C0; extern u8 gUnknown_0202F7C4; extern struct Window gUnknown_03004210; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; extern MainCallback gUnknown_030042D0; extern void (*gUnknown_03004330[])(void); extern u8 gUnknown_03004340[]; @@ -78,6 +81,7 @@ extern u8 ewram[]; #define ewram17800 ((struct UnknownStruct4 *)(ewram + 0x17800)) #define ewram17810 ((struct UnknownStruct2 *)(ewram + 0x17810)) +extern void sub_8120AA8(); extern void sub_8031F24(void); extern void sub_80326EC(); extern void ExecuteMoveAnim(); @@ -1239,3 +1243,47 @@ void sub_811FF30(void) break; } } + +void sub_8120094(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + sub_8120AA8(*(u16 *)&gUnknown_02023A60[gUnknown_02024A60][2]); + sub_8002EB0(&gUnknown_03004210, gUnknown_020238CC, 144, 2, 15); + gUnknown_03004330[gUnknown_02024A60] = sub_811DFA0; +} + +void sub_81200F8(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120104(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120110(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_812011C(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120128(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120134(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120140(void) +{ + dp01_tbl3_exec_completed(); +} -- cgit v1.2.3 From f4463930f4776198a7d6f5d1aac425dfc05a0dbf Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 15:47:12 -0500 Subject: decompile sub_812014C --- src/battle_811DA74.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index f4e2cc57d..dbd7f77e8 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -81,6 +81,8 @@ extern u8 ewram[]; #define ewram17800 ((struct UnknownStruct4 *)(ewram + 0x17800)) #define ewram17810 ((struct UnknownStruct2 *)(ewram + 0x17810)) +extern void load_gfxc_health_bar(); +extern void sub_8043D84(); extern void sub_8120AA8(); extern void sub_8031F24(void); extern void sub_80326EC(); @@ -1287,3 +1289,25 @@ void sub_8120140(void) { dp01_tbl3_exec_completed(); } + +void sub_812014C(void) +{ + s16 r7; + + load_gfxc_health_bar(0); + r7 = gUnknown_02023A60[gUnknown_02024A60][2] | (gUnknown_02023A60[gUnknown_02024A60][3] << 8); + if (r7 != 0x7FFF) + { + u32 maxHP = GetMonData(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_MAX_HP); + u32 hp = GetMonData(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_HP); + + sub_8043D84(gUnknown_02024A60, gUnknown_03004340[gUnknown_02024A60], maxHP, hp, r7); + } + else + { + u32 maxHP = GetMonData(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_MAX_HP); + + sub_8043D84(gUnknown_02024A60, gUnknown_03004340[gUnknown_02024A60], maxHP, 0, r7); + } + gUnknown_03004330[gUnknown_02024A60] = bx_t3_healthbar_update; +} -- cgit v1.2.3 From 4e9e61ecb17fd11b126c34980eaa88e90e091368 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 18:05:18 -0500 Subject: finish decompiling battle_811DA74 --- src/battle_811DA74.c | 353 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 351 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index dbd7f77e8..24e509d94 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "battle.h" +#include "battle_interface.h" #include "data2.h" #include "link.h" #include "m4a.h" @@ -26,6 +27,20 @@ struct UnknownStruct2 u8 unk1; u8 filler2[2]; u8 unk4; + u8 unk5; + u8 filler6[3]; + u8 unk9; + u8 fillerA[2]; +}; + +struct UnknownStruct2_ +{ + u8 unk0_0:3; + u8 unk0_3:1; + u8 unk0_4:1; + u8 unk1; + u8 filler2[2]; + u8 unk4; u8 filler5[4]; u8 unk9; u8 fillerA[2]; @@ -46,15 +61,31 @@ struct UnknownStruct4 u8 unk0_3:1; }; +struct UnknownStruct5 +{ + u8 unk0_0:7; + u8 unk0_7:1; +}; + +struct UnknownStruct6 +{ + u8 filler0[9]; + u8 unk9; +}; + extern u32 gBitTable[]; extern u16 gBattleTypeFlags; +extern struct UnknownStruct5 gUnknown_020238C8; extern u8 gUnknown_020238CC[]; extern u8 gUnknown_02023A60[][0x200]; extern u8 gUnknown_02024A60; extern u32 gUnknown_02024A64; extern u16 gUnknown_02024A6A[]; extern u8 gUnknown_02024BE0[]; +extern u8 gUnknown_02024D26; +extern u16 gUnknown_02024DE8; +extern u8 gUnknown_02024E68[]; extern u8 gUnknown_02024E6D; extern u32 gUnknown_02024E70[]; extern struct SpriteTemplate gUnknown_02024E8C; @@ -80,7 +111,16 @@ extern u8 ewram[]; #define ewram17800 ((struct UnknownStruct4 *)(ewram + 0x17800)) #define ewram17810 ((struct UnknownStruct2 *)(ewram + 0x17810)) - +#define ewram17810_ ((struct UnknownStruct2_ *)(ewram + 0x17810)) +#define ewram17840 (*(struct UnknownStruct6 *)(ewram + 0x17840)) + +extern u8 move_anim_start_t3(); +extern u8 sub_8078874(); +extern void sub_8044CA0(u8); +extern void sub_8030E38(struct Sprite *); +extern void sub_80E43C0(); +extern void sub_8047858(); +extern void move_anim_start_t2_for_situation(); extern void load_gfxc_health_bar(); extern void sub_8043D84(); extern void sub_8120AA8(); @@ -108,7 +148,7 @@ extern void nullsub_10(); extern void sub_8045A5C(); extern void sub_804777C(); extern void sub_8043DFC(); -extern s16 sub_8045C78(); +//extern s16 sub_8045C78(); extern void sub_80440EC(); extern void sub_80324F8(); extern void nullsub_9(u16); @@ -129,6 +169,8 @@ void sub_811EC68(u8); void sub_811F864(u8, u8); void sub_811FA5C(void); void sub_811FF30(void); +void sub_812071C(u8); +void sub_81208E0(void); void nullsub_74(void) { @@ -205,6 +247,7 @@ void sub_811DCA0(void) u8 r2; if (!(ewram17810[gUnknown_02024A60].unk0 & 8)) + //if (!ewram17810_[gUnknown_02024A60].unk0_3) { r2 = ewram17810[gUnknown_02024A60 ^ 2].unk0 & 8; if (!r2 && (++ewram17810[gUnknown_02024A60].unk9) != 1) @@ -1311,3 +1354,309 @@ void sub_812014C(void) } gUnknown_03004330[gUnknown_02024A60] = bx_t3_healthbar_update; } + +void sub_812023C(void) +{ + dp01_tbl3_exec_completed(); +} + +struct MaybeABitfield +{ + u8 unk0_0:1; + u8 unk0_1:3; + u8 unk0_4:1; +}; + +void sub_8120248(void) +{ + if (mplay_80342A4(gUnknown_02024A60) == 0) + { + sub_8045A5C(gUnknown_03004340[gUnknown_02024A60], &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], 9); + //ewram17810[gUnknown_02024A60].unk0 &= ~0x10; + //ewram17810_[gUnknown_02024A60].unk0_4 = 0; + ((struct MaybeABitfield *)&ewram17810[gUnknown_02024A60])->unk0_4 = 0; + gUnknown_03004330[gUnknown_02024A60] = sub_811E38C; + } +} + +void sub_81202BC(void) +{ + if (mplay_80342A4(gUnknown_02024A60) == 0) + { + move_anim_start_t2_for_situation( + gUnknown_02023A60[gUnknown_02024A60][1], + gUnknown_02023A60[gUnknown_02024A60][2] + | (gUnknown_02023A60[gUnknown_02024A60][3] << 8) + | (gUnknown_02023A60[gUnknown_02024A60][4] << 16) + | (gUnknown_02023A60[gUnknown_02024A60][5] << 24)); + gUnknown_03004330[gUnknown_02024A60] = sub_811E38C; + } +} + +void sub_8120324(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120330(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_812033C(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120348(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120354(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120360(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_812036C(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120378(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120384(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120390(void) +{ + gUnknown_020238C8.unk0_0 = 0; + dp01_tbl3_exec_completed(); +} + +void sub_81203AC(void) +{ + gUnknown_020238C8.unk0_0 = gUnknown_02023A60[gUnknown_02024A60][1]; + dp01_tbl3_exec_completed(); +} + +void sub_81203E4(void) +{ + gUnknown_020238C8.unk0_7 = 0; + dp01_tbl3_exec_completed(); +} + +void sub_81203FC(void) +{ + gUnknown_020238C8.unk0_7 ^= 1; + dp01_tbl3_exec_completed(); +} + +void dp01t_29_3_blink(void) +{ + if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].invisible == TRUE) + dp01_tbl3_exec_completed(); + else + { + gUnknown_02024E6D = 1; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data1 = 0; + sub_8047858(gUnknown_02024A60); + gUnknown_03004330[gUnknown_02024A60] = bx_blink_t3; + } +} + +void sub_8120494(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_81204A0(void) +{ + s8 pan; + + if (battle_side_get_owner(gUnknown_02024A60) == 0) + pan = -64; + else + pan = 63; + PlaySE12WithPanning(gUnknown_02023A60[gUnknown_02024A60][1] | (gUnknown_02023A60[gUnknown_02024A60][2] << 8), pan); + dp01_tbl3_exec_completed(); +} + +void sub_81204E4(void) +{ + PlayFanfare(gUnknown_02023A60[gUnknown_02024A60][1] | (gUnknown_02023A60[gUnknown_02024A60][2] << 8)); + dp01_tbl3_exec_completed(); +} + +void sub_8120514(void) +{ + PlayCry3( + GetMonData(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_SPECIES), + -25, 5); + dp01_tbl3_exec_completed(); +} + +void dp01t_2E_3_battle_intro(void) +{ + sub_80E43C0(gUnknown_02023A60[gUnknown_02024A60][1]); + gUnknown_02024DE8 |= 1; + dp01_tbl3_exec_completed(); +} + +void sub_8120588(void) +{ + u8 r4; + u8 taskId; + + oamt_add_pos2_onto_pos1(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data0 = 50; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data2 = -40; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data4 = gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos1.y; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback = sub_8078B34; + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data5 = gUnknown_02024A60; + oamt_set_x3A_32(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]], sub_8030E38); + StartSpriteAnim(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]], 1); + r4 = AllocSpritePalette(0xD6F9); + LoadCompressedPalette( + gTrainerBackPicPaletteTable[gLinkPlayers[sub_803FC34(gUnknown_02024A60)].gender].data, + 0x100 + r4 * 16, 0x20); + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.paletteNum = r4; + taskId = CreateTask(sub_812071C, 5); + gTasks[taskId].data[0] = gUnknown_02024A60; + if (ewram17810[gUnknown_02024A60].unk0 & 1) + gTasks[gUnknown_02024E68[gUnknown_02024A60]].func = sub_8044CA0; + ewram17840.unk9 |= 1; + gUnknown_03004330[gUnknown_02024A60] = nullsub_74; +} + +void sub_812071C(u8 taskId) +{ + u8 r9; + + if (gTasks[taskId].data[1] < 24) + { + gTasks[taskId].data[1]++; + return; + } + + r9 = gUnknown_02024A60; + gUnknown_02024A60 = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + gUnknown_02023A60[gUnknown_02024A60][1] = gUnknown_02024A6A[gUnknown_02024A60]; + sub_811F864(gUnknown_02024A60, 0); + } + else + { + gUnknown_02023A60[gUnknown_02024A60][1] = gUnknown_02024A6A[gUnknown_02024A60]; + sub_811F864(gUnknown_02024A60, 0); + gUnknown_02024A60 ^= 2; + gUnknown_02023A60[gUnknown_02024A60][1] = gUnknown_02024A6A[gUnknown_02024A60]; + sub_80318FC(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60); + sub_811F864(gUnknown_02024A60, 0); + gUnknown_02024A60 ^= 2; + } + gUnknown_03004330[gUnknown_02024A60] = sub_811DCA0; + gUnknown_02024A60 = r9; + DestroyTask(taskId); +} + +void dp01t_30_3_80EB11C(void) +{ + if (gUnknown_02023A60[gUnknown_02024A60][1] != 0 && battle_side_get_owner(gUnknown_02024A60) == 0) + { + dp01_tbl3_exec_completed(); + return; + } + + //ewram17810[gUnknown_02024A60].unk0 |= 1; + ((struct MaybeABitfield *)&ewram17810[gUnknown_02024A60])->unk0_0 = 1; + gUnknown_02024E68[gUnknown_02024A60] = sub_8044804( + gUnknown_02024A60, + (struct BattleInterfaceStruct2 *)&gUnknown_02023A60[gUnknown_02024A60][4], + gUnknown_02023A60[gUnknown_02024A60][1], + gUnknown_02023A60[gUnknown_02024A60][2]); + ewram17810[gUnknown_02024A60].unk5 = 0; + if (gUnknown_02023A60[gUnknown_02024A60][2] != 0) + ewram17810[gUnknown_02024A60].unk5 = 0x5D; + gUnknown_03004330[gUnknown_02024A60] = sub_81208E0; +} + +void sub_81208E0(void) +{ + if (ewram17810[gUnknown_02024A60].unk5++ >= 93) + { + ewram17810[gUnknown_02024A60].unk5 = 0; + dp01_tbl3_exec_completed(); + } +} + +void sub_8120920(void) +{ + if (ewram17810[gUnknown_02024A60].unk0 & 1) + gTasks[gUnknown_02024E68[gUnknown_02024A60]].func = sub_8044CA0; + dp01_tbl3_exec_completed(); +} + +void sub_812096C(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120978(void) +{ + if (sub_8078874(gUnknown_02024A60) != 0) + { + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].invisible = gUnknown_02023A60[gUnknown_02024A60][1]; + sub_8031F88(gUnknown_02024A60); + } + dp01_tbl3_exec_completed(); +} + +void sub_81209D8(void) +{ + if (mplay_80342A4(gUnknown_02024A60) == 0) + { + u8 r3 = gUnknown_02023A60[gUnknown_02024A60][1]; + u16 r4 = gUnknown_02023A60[gUnknown_02024A60][2] | (gUnknown_02023A60[gUnknown_02024A60][3] << 8); + u8 var = gUnknown_02024A60; + + if (move_anim_start_t3(var, var, var, r3, r4) != 0) + dp01_tbl3_exec_completed(); + else + gUnknown_03004330[gUnknown_02024A60] = sub_811E3B8; + } +} + +void sub_8120A40(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120A4C(void) +{ + dp01_tbl3_exec_completed(); +} + +void sub_8120A58(void) +{ + gUnknown_02024D26 = gUnknown_02023A60[gUnknown_02024A60][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + dp01_tbl3_exec_completed(); + gUnknown_03004330[gUnknown_02024A60] = sub_811E29C; +} + +void nullsub_75(void) +{ +} -- cgit v1.2.3 From de2060410a6bd3c7939f246a982621873c49c8b0 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 7 Jun 2017 18:47:11 -0500 Subject: clean up battle_811DA74 a bit --- src/battle_811DA74.c | 74 ++++++++++++++++++++-------------------------------- 1 file changed, 28 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 24e509d94..56a4bd0c4 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -23,25 +23,18 @@ struct UnknownStruct1 struct UnknownStruct2 { - u8 unk0; - u8 unk1; - u8 filler2[2]; - u8 unk4; - u8 unk5; - u8 filler6[3]; - u8 unk9; - u8 fillerA[2]; -}; - -struct UnknownStruct2_ -{ - u8 unk0_0:3; + u8 unk0_0:1; + u8 unk0_1:2; u8 unk0_3:1; u8 unk0_4:1; - u8 unk1; + u8 unk0_5:1; + u8 unk0_6:1; + u8 unk0_7:1; + u8 unk1_0:1; u8 filler2[2]; u8 unk4; - u8 filler5[4]; + u8 unk5; + u8 filler6[3]; u8 unk9; u8 fillerA[2]; }; @@ -111,7 +104,6 @@ extern u8 ewram[]; #define ewram17800 ((struct UnknownStruct4 *)(ewram + 0x17800)) #define ewram17810 ((struct UnknownStruct2 *)(ewram + 0x17810)) -#define ewram17810_ ((struct UnknownStruct2_ *)(ewram + 0x17810)) #define ewram17840 (*(struct UnknownStruct6 *)(ewram + 0x17840)) extern u8 move_anim_start_t3(); @@ -246,10 +238,10 @@ void sub_811DCA0(void) { u8 r2; - if (!(ewram17810[gUnknown_02024A60].unk0 & 8)) - //if (!ewram17810_[gUnknown_02024A60].unk0_3) + if (!ewram17810[gUnknown_02024A60].unk0_3) { - r2 = ewram17810[gUnknown_02024A60 ^ 2].unk0 & 8; + // I couldn't get it to work as a bitfield here + r2 = *((u8 *)&ewram17810[gUnknown_02024A60 ^ 2]) & 8; if (!r2 && (++ewram17810[gUnknown_02024A60].unk9) != 1) { ewram17810[gUnknown_02024A60].unk9 = r2; @@ -308,7 +300,7 @@ void sub_811DE98(void) void sub_811DF34(void) { - if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) + if (!ewram17810[gUnknown_02024A60].unk0_6) { FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); @@ -355,16 +347,16 @@ void sub_811E034(void) void sub_811E0A0(void) { - if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) + if (!ewram17810[gUnknown_02024A60].unk0_6) dp01_tbl3_exec_completed(); } void sub_811E0CC(void) { - if (ewram17810[gUnknown_02024A60].unk1 & 1) + if (ewram17810[gUnknown_02024A60].unk1_0) { - ewram17810[gUnknown_02024A60].unk0 &= 0x7F; - (s8)ewram17810[gUnknown_02024A60].unk1 &= ~1; + ewram17810[gUnknown_02024A60].unk0_7 = 0; + ewram17810[gUnknown_02024A60].unk1_0 = 0; FreeSpriteTilesByTag(0x27F9); FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); @@ -380,10 +372,10 @@ void sub_811E0CC(void) void sub_811E1BC(void) { - if (!(ewram17810[gUnknown_02024A60].unk0 & 0x88)) + if (!ewram17810[gUnknown_02024A60].unk0_3 && !ewram17810[gUnknown_02024A60].unk0_7) sub_8141828(gUnknown_02024A60, &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]]); if (gSprites[gUnknown_0300434C[gUnknown_02024A60]].callback == SpriteCallbackDummy - && !(ewram17810[gUnknown_02024A60].unk0 & 8)) + && !ewram17810[gUnknown_02024A60].unk0_3) { DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60]]); gUnknown_03004330[gUnknown_02024A60] = sub_811E0CC; @@ -439,13 +431,13 @@ void dp01_tbl3_exec_completed(void) void sub_811E38C(void) { - if (!(ewram17810[gUnknown_02024A60].unk0 & 0x10)) + if (!ewram17810[gUnknown_02024A60].unk0_4) dp01_tbl3_exec_completed(); } void sub_811E3B8(void) { - if (!(ewram17810[gUnknown_02024A60].unk0 & 0x20)) + if (!ewram17810[gUnknown_02024A60].unk0_5) dp01_tbl3_exec_completed(); } @@ -1111,7 +1103,7 @@ void sub_811FA5C(void) ewram17810[gUnknown_02024A60].unk4 = 1; break; case 1: - if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) + if (!ewram17810[gUnknown_02024A60].unk0_6) { ewram17810[gUnknown_02024A60].unk4 = 0; move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 1); @@ -1176,7 +1168,7 @@ void sub_811FCE8(void) move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 5); ewram17810[gUnknown_02024A60].unk4++; } - else if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) + else if (!ewram17810[gUnknown_02024A60].unk0_6) { ewram17810[gUnknown_02024A60].unk4 = 0; sub_80324F8(&gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], gUnknown_02024A60); @@ -1255,7 +1247,7 @@ void sub_811FF30(void) ewram17810[gUnknown_02024A60].unk4 = 1; break; case 1: - if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) + if (!ewram17810[gUnknown_02024A60].unk0_6) { sub_80326EC(0); ExecuteMoveAnim(r4); @@ -1276,7 +1268,7 @@ void sub_811FF30(void) } break; case 3: - if (!(ewram17810[gUnknown_02024A60].unk0 & 0x40)) + if (!ewram17810[gUnknown_02024A60].unk0_6) { sub_8031F24(); sub_80324BC( @@ -1360,21 +1352,12 @@ void sub_812023C(void) dp01_tbl3_exec_completed(); } -struct MaybeABitfield -{ - u8 unk0_0:1; - u8 unk0_1:3; - u8 unk0_4:1; -}; - void sub_8120248(void) { if (mplay_80342A4(gUnknown_02024A60) == 0) { sub_8045A5C(gUnknown_03004340[gUnknown_02024A60], &gPlayerParty[gUnknown_02024A6A[gUnknown_02024A60]], 9); - //ewram17810[gUnknown_02024A60].unk0 &= ~0x10; - //ewram17810_[gUnknown_02024A60].unk0_4 = 0; - ((struct MaybeABitfield *)&ewram17810[gUnknown_02024A60])->unk0_4 = 0; + ewram17810[gUnknown_02024A60].unk0_4 = 0; gUnknown_03004330[gUnknown_02024A60] = sub_811E38C; } } @@ -1533,7 +1516,7 @@ void sub_8120588(void) gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.paletteNum = r4; taskId = CreateTask(sub_812071C, 5); gTasks[taskId].data[0] = gUnknown_02024A60; - if (ewram17810[gUnknown_02024A60].unk0 & 1) + if (ewram17810[gUnknown_02024A60].unk0_0) gTasks[gUnknown_02024E68[gUnknown_02024A60]].func = sub_8044CA0; ewram17840.unk9 |= 1; gUnknown_03004330[gUnknown_02024A60] = nullsub_74; @@ -1579,8 +1562,7 @@ void dp01t_30_3_80EB11C(void) return; } - //ewram17810[gUnknown_02024A60].unk0 |= 1; - ((struct MaybeABitfield *)&ewram17810[gUnknown_02024A60])->unk0_0 = 1; + ewram17810[gUnknown_02024A60].unk0_0 = 1; gUnknown_02024E68[gUnknown_02024A60] = sub_8044804( gUnknown_02024A60, (struct BattleInterfaceStruct2 *)&gUnknown_02023A60[gUnknown_02024A60][4], @@ -1603,7 +1585,7 @@ void sub_81208E0(void) void sub_8120920(void) { - if (ewram17810[gUnknown_02024A60].unk0 & 1) + if (ewram17810[gUnknown_02024A60].unk0_0) gTasks[gUnknown_02024E68[gUnknown_02024A60]].func = sub_8044CA0; dp01_tbl3_exec_completed(); } -- cgit v1.2.3