diff options
Diffstat (limited to 'src/rom_8077ABC.c')
-rw-r--r-- | src/rom_8077ABC.c | 1608 |
1 files changed, 950 insertions, 658 deletions
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 9cf28a111..2691da859 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1,13 +1,14 @@ #include "global.h" +#include "constants/species.h" #include "rom_8077ABC.h" #include "battle.h" #include "battle_anim.h" #include "blend_palette.h" +#include "contest.h" #include "data2.h" #include "decompress.h" #include "palette.h" #include "pokemon_icon.h" -#include "constants/species.h" #include "sprite.h" #include "task.h" #include "trig.h" @@ -31,52 +32,28 @@ #define gTransformPersonalities gTransformedPersonalities #define gBattleMonSprites gObjectBankIDs - -struct Struct_unk_2019348 { - u16 field_0; - u16 field_2; - u8 field_4; - u32 field_8; - u32 field_c; - u32 field_10; -}; - -struct TransformStatus { +struct TransformStatus +{ u16 unknown; u16 species; }; -struct Struct_gUnknown_0837F578 { +struct Struct_gUnknown_0837F578 +{ u8 field_0; u8 field_1; }; -struct Struct_2017810 { +struct Struct_2017810 +{ u8 filler_0[6]; u8 field_6; u8 filler_7[5]; }; -struct Color { - u16 r:5; - u16 g:5; - u16 b:5; -}; - -struct BGCnt { - u16 priority:2; - u16 charBase:2; - u16 unused:2; - u16 mosaic:1; - u16 colorMode:1; - u16 screenBase:5; - u16 overflow:1; - u16 size:2; -}; - -#define BG1CNT (*(volatile struct BGCnt*)REG_ADDR_BG1CNT) -#define BG2CNT (*(volatile struct BGCnt*)REG_ADDR_BG2CNT) -#define BG3CNT (*(volatile struct BGCnt*)REG_ADDR_BG3CNT) +#define BG1CNT (*(vBgCnt *)REG_ADDR_BG1CNT) +#define BG2CNT (*(vBgCnt *)REG_ADDR_BG2CNT) +#define BG3CNT (*(vBgCnt *)REG_ADDR_BG3CNT) extern struct OamData gOamData_837DF9C[]; extern const union AnimCmd *const gDummySpriteAnimTable[]; @@ -102,7 +79,8 @@ extern u8 UpdateMonIconFrame(struct Sprite *sprite); EWRAM_DATA union AffineAnimCmd *gUnknown_0202F7D4 = NULL; EWRAM_DATA u32 filler_0202F7D8[3] = {0}; -const struct Struct_gUnknown_0837F578 gUnknown_0837F578[][4] = { +const struct Struct_gUnknown_0837F578 gUnknown_0837F578[][4] = +{ { { 72, 80 }, { 176, 40 }, @@ -120,14 +98,16 @@ const struct Struct_gUnknown_0837F578 gUnknown_0837F578[][4] = { // One entry for each of the four Castform forms. // Coords are probably front pic coords or back pic coords, but this data does not seem to be // used during battle, party summary, or pokedex screens. -const struct MonCoords gCastformFrontSpriteCoords[] = { +const struct MonCoords gCastformFrontSpriteCoords[] = +{ { 0x44, 17 }, // NORMAL { 0x66, 9 }, // SUN { 0x46, 9 }, // RAIN { 0x86, 8 }, // HAIL }; -const u8 gCastformElevations[] = { +const u8 gCastformElevations[] = +{ 13, // NORMAL 14, // SUN 13, // RAIN @@ -135,14 +115,16 @@ const u8 gCastformElevations[] = { }; // Y position of the backsprite for each of the four Castform forms. -const u8 gCastformBackSpriteYCoords[] = { +const u8 gCastformBackSpriteYCoords[] = +{ 0, // NORMAL 0, // SUN 0, // RAIN 0, // HAIL }; -const struct SpriteTemplate gSpriteTemplate_837F5B0[] = { +const struct SpriteTemplate gSpriteTemplate_837F5B0[] = +{ { .tileTag = 55125, .paletteTag = 55125, @@ -151,7 +133,8 @@ const struct SpriteTemplate gSpriteTemplate_837F5B0[] = { .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, - }, { + }, + { .tileTag = 55126, .paletteTag = 55126, .oam = gOamData_837DF9C, @@ -162,23 +145,26 @@ const struct SpriteTemplate gSpriteTemplate_837F5B0[] = { } }; -const struct SpriteSheet gUnknown_0837F5E0[] = { +const struct SpriteSheet gUnknown_0837F5E0[] = +{ { gMiscBlank_Gfx, 0x800, 55125, }, { gMiscBlank_Gfx, 0x800, 55126, }, }; -u8 GetBankPosition(u8 slot, u8 a2) { +u8 GetBankPosition(u8 slot, u8 a2) +{ u8 var; u16 species; struct TransformStatus *transform; - if (IsContest()) { - if (a2 == 3 && slot == 3) { + if (IsContest()) + { + if (a2 == 3 && slot == 3) a2 = 1; - } } - switch (a2) { + switch (a2) + { case 0: case 2: var = gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBankIdentity(slot)].field_0; @@ -189,339 +175,402 @@ u8 GetBankPosition(u8 slot, u8 a2) { case 3: case 4: default: - if (IsContest()) { - if (ewram19348.unk4 & 1) { - species = ewram19348.unk2; - } else { - species = ewram19348.unk0; - } - } else { - if (GetBankSide(slot)) { + if (IsContest()) + { + if (shared19348.unk4_0) + species = shared19348.unk2; + else + species = shared19348.unk0; + } + else + { + if (GetBankSide(slot)) + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); - } else { + else species = transform->species; - } - } else { + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); - } else { + else species = transform->species; - } } } - if (a2 == 3) { + if (a2 == 3) var = sub_8077E44(slot, species, 1); - } else { + else var = sub_8077E44(slot, species, 0); - } break; } return var; } -u8 sub_8077BFC(u8 slot, u16 species) { +u8 sub_8077BFC(u8 slot, u16 species) +{ u16 letter; u32 personality; struct TransformStatus *transform; u8 ret; u16 var; - if (!GetBankSide(slot) || IsContest()) { - if (species == SPECIES_UNOWN) { - if (IsContest()) { - if (ewram19348.unk4 & 1) { - personality = ewram19348.unk10; - } else { - personality = ewram19348.unk8; - } - } else { + if (GetBankSide(slot) == 0 || IsContest()) + { + if (species == SPECIES_UNOWN) + { + if (IsContest()) + { + if (shared19348.unk4_0) + personality = shared19348.unk10; + else + personality = shared19348.unk8; + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) personality = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY); - } else { + else personality = gTransformPersonalities[slot]; - } } letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = species; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } ret = gMonBackPicCoords[var].y_offset; - } else if (species == SPECIES_CASTFORM) { + } + else if (species == SPECIES_CASTFORM) + { ret = gCastformBackSpriteYCoords[gBattleMonForms[slot]]; - } else if (species > NUM_SPECIES) { + } + else if (species > NUM_SPECIES) + { ret = gMonBackPicCoords[0].y_offset; - } else { + } + else + { ret = gMonBackPicCoords[species].y_offset; } - } else { - if (species == SPECIES_UNOWN) { + } + else + { + if (species == SPECIES_UNOWN) + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) personality = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY); - } else { + else personality = gTransformPersonalities[slot]; - } letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = species; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } ret = gMonFrontPicCoords[var].y_offset; - } else if (species == SPECIES_CASTFORM) { + } + else if (species == SPECIES_CASTFORM) + { ret = gCastformFrontSpriteCoords[gBattleMonForms[slot]].y_offset; - } else if (species > NUM_SPECIES) { + } + else if (species > NUM_SPECIES) + { ret = gMonFrontPicCoords[0].y_offset; - } else { + } + else + { ret = gMonFrontPicCoords[species].y_offset; } } return ret; } -u8 sub_8077DD8(u8 slot, u16 species) { +u8 sub_8077DD8(u8 slot, u16 species) +{ u8 ret = 0; - if (GetBankSide(slot) == 1) { - if (!IsContest()) { - if (species == SPECIES_CASTFORM) { + if (GetBankSide(slot) == 1) + { + if (!IsContest()) + { + if (species == SPECIES_CASTFORM) ret = gCastformElevations[gBattleMonForms[slot]]; - } else if (species > NUM_SPECIES) { + else if (species > NUM_SPECIES) ret = gEnemyMonElevation[0]; - } else { + else ret = gEnemyMonElevation[species]; - } } } return ret; } -u8 sub_8077E44(u8 slot, u16 species, u8 a3) { +u8 sub_8077E44(u8 slot, u16 species, u8 a3) +{ u16 offset; u8 y; - if (GetBankSide(slot) == 0 || IsContest()) { + + if (GetBankSide(slot) == 0 || IsContest()) + { offset = sub_8077BFC(slot, species); - } else { + } + else + { offset = sub_8077BFC(slot, species); offset -= sub_8077DD8(slot, species); } y = offset + gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBankIdentity(slot)].field_1; - if (a3) { - if (GetBankSide(slot) == 0) { + if (a3) + { + if (GetBankSide(slot) == 0) y += 8; - } - if (y > 104) y = 104; + if (y > 104) + y = 104; } return y; } -u8 sub_8077EE4(u8 slot, u8 a2) { +u8 sub_8077EE4(u8 slot, u8 a2) +{ u16 species; struct TransformStatus *transform; - if (a2 == 3 || a2 == 4) { - if (IsContest()) { - if (ewram19348.unk4 & 1) { - species = ewram19348.unk2; - } else { - species = ewram19348.unk0; - } - } else { + if (a2 == 3 || a2 == 4) + { + if (IsContest()) + { + if (shared19348.unk4_0) + species = shared19348.unk2; + else + species = shared19348.unk0; + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = gAnimSpeciesByBanks[slot]; - } else { + else species = transform->species; - } } - if (a2 == 3) { + if (a2 == 3) return sub_8077E44(slot, species, 1); - } else { + else return sub_8077E44(slot, species, 0); - } - } else { + } + else + { return GetBankPosition(slot, a2); } } -u8 sub_8077F68(u8 slot) { +u8 sub_8077F68(u8 slot) +{ return GetBankPosition(slot, 4); } -u8 sub_8077F7C(u8 slot) { +u8 sub_8077F7C(u8 slot) +{ u16 var; - if (GetBankSide(slot)) { + if (GetBankSide(slot) != 0) var = GetBankPosition(slot, 1) + 16; - } else { + else var = GetBankPosition(slot, 1) + 17; - } return var; } -u8 sub_8077FC0(u8 slot) { +u8 sub_8077FC0(u8 slot) +{ u16 var; u8 r6; struct TransformStatus *transform; + r6 = GetBankPosition(slot, 1); - if (!IsContest()) { - if (GetBankSide(slot)) { + if (!IsContest()) + { + if (GetBankSide(slot) != 0) + { transform = &eTransformStatuses[slot]; if (!transform->species) { var = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); } else { var = transform->species; } - } else { + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) var = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); - } else { + else var = transform->species; - } } - if (GetBankSide(slot)) { + if (GetBankSide(slot) != 0) r6 -= sub_8077DD8(slot, var); - } } return r6; } -u8 GetAnimBankSpriteId(u8 whichBank) { +u8 GetAnimBankSpriteId(u8 whichBank) +{ u8 *sprites; - if (whichBank == ANIM_BANK_ATTACKER) { - if (IsBankSpritePresent(gAnimBankAttacker)) { + + if (whichBank == ANIM_BANK_ATTACKER) + { + if (IsBankSpritePresent(gAnimBankAttacker)) + { sprites = gBattleMonSprites; return sprites[gAnimBankAttacker]; - } else { + } + else + { return 0xff; } - } else if (whichBank == ANIM_BANK_TARGET) { - if (IsBankSpritePresent(gAnimBankTarget)) { + } + else if (whichBank == ANIM_BANK_TARGET) + { + if (IsBankSpritePresent(gAnimBankTarget)) + { sprites = gBattleMonSprites; return sprites[gAnimBankTarget]; - } else { + } + else + { return 0xff; } - } else if (whichBank == ANIM_BANK_ATK_PARTNER) { - if (!IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { + } + else if (whichBank == ANIM_BANK_ATK_PARTNER) + { + if (!IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) return 0xff; - } else { + else return gBattleMonSprites[gAnimBankAttacker ^ 2]; - } - } else { - if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) { + } + else + { + if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) return gBattleMonSprites[gAnimBankTarget ^ 2]; - } else { + else return 0xff; - } } } -void StoreSpriteCallbackInData(struct Sprite *sprite, void (*callback)(struct Sprite*)) { +void StoreSpriteCallbackInData(struct Sprite *sprite, void (*callback)(struct Sprite*)) +{ sprite->data[6] = (u32)(callback) & 0xffff; sprite->data[7] = (u32)(callback) >> 16; } -void SetCallbackToStoredInData(struct Sprite *sprite) { +void SetCallbackToStoredInData(struct Sprite *sprite) +{ u32 callback = (u16)sprite->data[6] | (sprite->data[7] << 16); sprite->callback = (void (*)(struct Sprite *))callback; } -void sub_8078114(struct Sprite *sprite) { - if (sprite->data[3]) { +void sub_8078114(struct Sprite *sprite) +{ + if (sprite->data[3]) + { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]); sprite->data[0] += sprite->data[2]; - if (sprite->data[0] >= 0x100) { + if (sprite->data[0] >= 0x100) sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { + else if (sprite->data[0] < 0) sprite->data[0] += 0x100; - } sprite->data[3]--; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_8078174(struct Sprite *sprite) { - if (sprite->data[3]) { +void sub_8078174(struct Sprite *sprite) +{ + if (sprite->data[3]) + { sprite->pos2.x = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); sprite->data[0] += sprite->data[2]; sprite->data[5] += sprite->data[4]; - if (sprite->data[0] >= 0x100) { + if (sprite->data[0] >= 0x100) sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { + else if (sprite->data[0] < 0) sprite->data[0] += 0x100; - } sprite->data[3]--; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void unref_sub_80781F0(struct Sprite *sprite) { - if (sprite->data[3]) { +void unref_sub_80781F0(struct Sprite *sprite) +{ + if (sprite->data[3]) + { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[4], sprite->data[1]); sprite->data[0] += sprite->data[2]; sprite->data[4] += sprite->data[5]; - if (sprite->data[0] >= 0x100) { + if (sprite->data[0] >= 0x100) sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { + else if (sprite->data[0] < 0) sprite->data[0] += 0x100; - } - if (sprite->data[4] >= 0x100) { + if (sprite->data[4] >= 0x100) sprite->data[4] -= 0x100; - } else if (sprite->data[4] < 0) { + else if (sprite->data[4] < 0) sprite->data[4] += 0x100; - } sprite->data[3]--; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_8078278(struct Sprite *sprite) { - if (sprite->data[3]) { +void sub_8078278(struct Sprite *sprite) +{ + if (sprite->data[3]) + { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], sprite->data[4]); sprite->data[0] += sprite->data[2]; - if (sprite->data[0] >= 0x100) { + if (sprite->data[0] >= 0x100) sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { + else if (sprite->data[0] < 0) sprite->data[0] += 0x100; - } sprite->data[3]--; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_80782D8(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_80782D8(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) sprite->data[0]--; - } else { + else SetCallbackToStoredInData(sprite); - } } -void sub_80782F8(struct Sprite *sprite) { +void sub_80782F8(struct Sprite *sprite) +{ sub_8078314(sprite); sprite->callback = sub_8078364; sprite->callback(sprite); } -void sub_8078314(struct Sprite *sprite) { +void sub_8078314(struct Sprite *sprite) +{ s16 old; int v1; - if (sprite->data[1] > sprite->data[2]) { + + if (sprite->data[1] > sprite->data[2]) sprite->data[0] = -sprite->data[0]; - } v1 = sprite->data[2] - sprite->data[1]; old = sprite->data[0]; sprite->data[0] = abs(v1 / sprite->data[0]); @@ -529,42 +578,55 @@ void sub_8078314(struct Sprite *sprite) { sprite->data[1] = old; } -void sub_8078364(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_8078364(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->pos2.x += sprite->data[1]; sprite->pos2.y += sprite->data[2]; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_8078394(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_8078394(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; sprite->pos2.x = sprite->data[3] >> 8; sprite->pos2.y = sprite->data[4] >> 8; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_80783D0(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_80783D0(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; sprite->pos2.x = sprite->data[3] >> 8; sprite->pos2.y = sprite->data[4] >> 8; - } else { + } + else + { SetCallbackToStoredInData(sprite); } UpdateMonIconFrame(sprite); } -void unref_sub_8078414(struct Sprite *sprite) { +void unref_sub_8078414(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x + sprite->pos2.x; sprite->data[3] = sprite->pos1.y + sprite->pos2.y; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); @@ -572,51 +634,65 @@ void unref_sub_8078414(struct Sprite *sprite) { sprite->callback = sub_80782F8; } -void sub_8078458(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_8078458(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; gSprites[sprite->data[3]].pos2.x += sprite->data[1]; gSprites[sprite->data[3]].pos2.y += sprite->data[2]; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_80784A8(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_80784A8(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; gSprites[sprite->data[5]].pos2.x = sprite->data[3] >> 8; gSprites[sprite->data[5]].pos2.y = sprite->data[4] >> 8; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_8078504(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_8078504(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->pos2.x = sprite->data[2] >> 8; sprite->data[2] += sprite->data[1]; sprite->pos2.y = sprite->data[4] >> 8; sprite->data[4] += sprite->data[3]; - if (sprite->data[0] % sprite->data[5] == 0) { - if (sprite->data[5]) { + if (sprite->data[0] % sprite->data[5] == 0) + { + if (sprite->data[5]) sprite->invisible ^= 1; - } } - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void move_anim_8074EE0(struct Sprite *sprite) { +void move_anim_8074EE0(struct Sprite *sprite) +{ FreeSpriteOamMatrix(sprite); DestroyAnimSprite(sprite); } -void unref_sub_8078588(struct Sprite *sprite) { +void unref_sub_8078588(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x + sprite->pos2.x; sprite->data[3] = sprite->pos1.y + sprite->pos2.y; sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2); @@ -624,57 +700,68 @@ void unref_sub_8078588(struct Sprite *sprite) { sprite->callback = sub_80782F8; } -void unref_sub_80785CC(struct Sprite *sprite) { +void unref_sub_80785CC(struct Sprite *sprite) +{ ResetPaletteStructByUid(sprite->data[5]); move_anim_8074EE0(sprite); } -void sub_80785E4(struct Sprite *sprite) { - if (sprite->affineAnimEnded) { +void sub_80785E4(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) SetCallbackToStoredInData(sprite); - } } -void sub_8078600(struct Sprite *sprite) { - if (sprite->animEnded) { +void sub_8078600(struct Sprite *sprite) +{ + if (sprite->animEnded) SetCallbackToStoredInData(sprite); - } } -void sub_807861C(struct Sprite *sprite) { +void sub_807861C(struct Sprite *sprite) +{ REG_BLDCNT = 0; REG_BLDALPHA = 0; DestroyAnimSprite(sprite); } -void sub_8078634(u8 task) { +void sub_8078634(u8 task) +{ REG_BLDCNT = 0; REG_BLDALPHA = 0; DestroyAnimVisualTask(task); } -void sub_8078650(struct Sprite *sprite) { +void sub_8078650(struct Sprite *sprite) +{ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); } -void sub_807867C(struct Sprite *sprite, s16 a2) { +void sub_807867C(struct Sprite *sprite, s16 a2) +{ u16 v1 = GetBankPosition(gAnimBankAttacker, 0); u16 v2 = GetBankPosition(gAnimBankTarget, 0); - if (v1 > v2) { + + if (v1 > v2) + { sprite->pos1.x -= a2; - } else if (v1 < v2) { + } + else if (v1 < v2) + { sprite->pos1.x += a2; - } else { - if (GetBankSide(gAnimBankAttacker)) { + } + else + { + if (GetBankSide(gAnimBankAttacker) != 0) sprite->pos1.x -= a2; - } else { + else sprite->pos1.x += a2; - } } } -void sub_80786EC(struct Sprite *sprite) { +void sub_80786EC(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; obj_translate_based_on_private_1_2_3_4(sprite); @@ -682,24 +769,27 @@ void sub_80786EC(struct Sprite *sprite) { sprite->data[7] = 0; } -bool8 sub_8078718(struct Sprite *sprite) { - if (sub_8078B5C(sprite)) { +bool8 sub_8078718(struct Sprite *sprite) +{ + if (sub_8078B5C(sprite)) return TRUE; - } sprite->data[7] += sprite->data[6]; sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]); return FALSE; } -void oamt_add_pos2_onto_pos1(struct Sprite *sprite) { +void oamt_add_pos2_onto_pos1(struct Sprite *sprite) +{ sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; sprite->pos2.y = 0; } -void sub_8078764(struct Sprite *sprite, u8 a2) { - if (!a2) { +void sub_8078764(struct Sprite *sprite, u8 a2) +{ + if (!a2) + { sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 0); sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 1); } @@ -707,11 +797,15 @@ void sub_8078764(struct Sprite *sprite, u8 a2) { sprite->pos1.y += gBattleAnimArgs[1]; } -void sub_80787B0(struct Sprite *sprite, u8 a2) { - if (!a2) { +void sub_80787B0(struct Sprite *sprite, u8 a2) +{ + if (!a2) + { sprite->pos1.x = sub_8077EE4(gAnimBankAttacker, 0); sprite->pos1.y = sub_8077EE4(gAnimBankAttacker, 1); - } else { + } + else + { sprite->pos1.x = sub_8077EE4(gAnimBankAttacker, 2); sprite->pos1.y = sub_8077EE4(gAnimBankAttacker, 3); } @@ -719,103 +813,127 @@ void sub_80787B0(struct Sprite *sprite, u8 a2) { sprite->pos1.y += gBattleAnimArgs[1]; } -u8 GetBankSide(u8 slot) { +u8 GetBankSide(u8 slot) +{ return gBanksBySide[slot] & 1; } -u8 GetBankIdentity(u8 slot) { +u8 GetBankIdentity(u8 slot) +{ return gBanksBySide[slot]; } -u8 GetBankByPlayerAI(u8 slot) { +u8 GetBankByIdentity(u8 slot) +{ u8 i; - for (i = 0; i < gNoOfAllBanks; i++) { - if (gBanksBySide[i] == slot) { + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBanksBySide[i] == slot) break; - } } return i; } -bool8 IsBankSpritePresent(u8 slot) { - if (IsContest()) { - if (gAnimBankAttacker == slot) { +bool8 IsBankSpritePresent(u8 slot) +{ + if (IsContest()) + { + if (gAnimBankAttacker == slot) return TRUE; - } - if (gAnimBankTarget == slot) { + if (gAnimBankTarget == slot) return TRUE; - } return FALSE; - } else { - if (gBanksBySide[slot] == 0xff) { + } + else + { + if (gBanksBySide[slot] == 0xff) return FALSE; - } - if (GetBankSide(slot)) { - if (GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) { + if (GetBankSide(slot)) + { + if (GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) return TRUE; - } - } else { - if (GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) { + } + else + { + if (GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) return TRUE; - } } return FALSE; } } -bool8 IsDoubleBattle() { +bool8 IsDoubleBattle() +{ return IS_DOUBLE_BATTLE(); } -void sub_8078914(struct Struct_sub_8078914 *unk) { - if (IsContest()) { - unk->field_0 = (u8 *)0x6008000; - unk->field_4 = (u8 *)0x600f000; +void sub_8078914(struct Struct_sub_8078914 *unk) +{ + if (IsContest()) + { + unk->field_0 = (u8 *)(VRAM + 0x8000); + unk->field_4 = (u8 *)(VRAM + 0xf000); unk->field_8 = 0xe; - } else { - unk->field_0 = (u8 *)0x6004000; - unk->field_4 = (u8 *)0x600e000; + } + else + { + unk->field_0 = (u8 *)(VRAM + 0x4000); + unk->field_4 = (u8 *)(VRAM + 0xe000); unk->field_8 = 0x8; } } -void sub_8078954(struct Struct_sub_8078914 *unk) { - if (IsContest()) { - unk->field_0 = (u8 *)0x6008000; - unk->field_4 = (u8 *)0x600f000; +void sub_8078954(struct Struct_sub_8078914 *unk) +{ + if (IsContest()) + { + unk->field_0 = (u8 *)(VRAM + 0x8000); + unk->field_4 = (u8 *)(VRAM + 0xf000); unk->field_8 = 0xe; - } else if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) { - unk->field_0 = (u8 *)0x6004000; - unk->field_4 = (u8 *)0x600e000; + } + else if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) + { + unk->field_0 = (u8 *)(VRAM + 0x4000); + unk->field_4 = (u8 *)(VRAM + 0xe000); unk->field_8 = 0x8; - } else { - unk->field_0 = (u8 *)0x6006000; - unk->field_4 = (u8 *)0x600f000; + } + else + { + unk->field_0 = (u8 *)(VRAM + 0x6000); + unk->field_4 = (u8 *)(VRAM + 0xf000); unk->field_8 = 0x9; } } -u8 sub_80789BC() { - if (IsContest()) { +u8 sub_80789BC() +{ + if (IsContest()) return 1; - } return 2; } -void sub_80789D4(bool8 a1) { - if (!a1) { - BG3CNT.size = 0; - BG3CNT.overflow = 1; - } else if (IsContest()) { - BG3CNT.size = 0; - BG3CNT.overflow = 1; - } else { - BG3CNT.size = 1; - BG3CNT.overflow = 0; +void sub_80789D4(bool8 a1) +{ + if (!a1) + { + BG3CNT.screenSize = 0; + BG3CNT.areaOverflowMode = 1; + } + else if (IsContest()) + { + BG3CNT.screenSize = 0; + BG3CNT.areaOverflowMode = 1; + } + else + { + BG3CNT.screenSize = 1; + BG3CNT.areaOverflowMode = 0; } } -void sub_8078A34(struct Sprite *sprite) { +void sub_8078A34(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078A5C(sprite); @@ -823,7 +941,8 @@ void sub_8078A34(struct Sprite *sprite) { sprite->callback(sprite); } -void sub_8078A5C(struct Sprite *sprite) { +void sub_8078A5C(struct Sprite *sprite) +{ s16 x = (sprite->data[2] - sprite->data[1]) << 8; s16 y = (sprite->data[4] - sprite->data[3]) << 8; sprite->data[1] = x / sprite->data[0]; @@ -832,32 +951,36 @@ void sub_8078A5C(struct Sprite *sprite) { sprite->data[3] = 0; } -void obj_translate_based_on_private_1_2_3_4(struct Sprite *sprite) { +void obj_translate_based_on_private_1_2_3_4(struct Sprite *sprite) +{ int x = sprite->data[2] - sprite->data[1]; int y = sprite->data[4] - sprite->data[3]; bool8 r8 = x < 0; bool8 r9 = y < 0; u16 x2 = abs(x) << 8; u16 y2 = abs(y) << 8; + x2 = x2 / sprite->data[0]; y2 = y2 / sprite->data[0]; - if (r8) { + + if (r8) x2 |= 1; - } else { + else x2 &= ~1; - } - if (r9) { + + if (r9) y2 |= 1; - } else { + else y2 &= ~1; - } + sprite->data[1] = x2; sprite->data[2] = y2; sprite->data[4] = 0; sprite->data[3] = 0; } -void sub_8078B34(struct Sprite *sprite) { +void sub_8078B34(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; obj_translate_based_on_private_1_2_3_4(sprite); @@ -865,46 +988,51 @@ void sub_8078B34(struct Sprite *sprite) { sprite->callback(sprite); } -bool8 sub_8078B5C(struct Sprite *sprite) { +bool8 sub_8078B5C(struct Sprite *sprite) +{ u16 v1, v2, x, y; - if (!sprite->data[0]) { + + if (!sprite->data[0]) return TRUE; - } + v1 = sprite->data[1]; v2 = sprite->data[2]; x = sprite->data[3]; y = sprite->data[4]; x += v1; y += v2; - if (v1 & 1) { + + if (v1 & 1) sprite->pos2.x = -(x >> 8); - } else { + else sprite->pos2.x = x >> 8; - } - if (v2 & 1) { + + if (v2 & 1) sprite->pos2.y = -(y >> 8); - } else { + else sprite->pos2.y = y >> 8; - } + sprite->data[3] = x; sprite->data[4] = y; sprite->data[0]--; return FALSE; } -void sub_8078BB8(struct Sprite *sprite) { - if (sub_8078B5C(sprite)) { +void sub_8078BB8(struct Sprite *sprite) +{ + if (sub_8078B5C(sprite)) SetCallbackToStoredInData(sprite); - } } -void sub_8078BD4(struct Sprite *sprite) { +void sub_8078BD4(struct Sprite *sprite) +{ int v1 = abs(sprite->data[2] - sprite->data[1]) << 8; sprite->data[0] = v1 / sprite->data[0]; obj_translate_based_on_private_1_2_3_4(sprite); } -void sub_8078C00(struct Sprite *sprite) { +void sub_8078C00(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078BD4(sprite); @@ -912,32 +1040,36 @@ void sub_8078C00(struct Sprite *sprite) { sprite->callback(sprite); } -void sub_8078C28(struct Sprite *sprite) { +void sub_8078C28(struct Sprite *sprite) +{ int x = sprite->data[2] - sprite->data[1]; int y = sprite->data[4] - sprite->data[3]; bool8 x_sign = x < 0; bool8 y_sign = y < 0; u16 x2 = abs(x) << 4; u16 y2 = abs(y) << 4; + x2 /= sprite->data[0]; y2 /= sprite->data[0]; - if (x_sign) { + + if (x_sign) x2 |= 1; - } else { + else x2 &= ~1; - } - if (y_sign) { + + if (y_sign) y2 |= 1; - } else { + else y2 &= ~1; - } + sprite->data[1] = x2; sprite->data[2] = y2; sprite->data[4] = 0; sprite->data[3] = 0; } -void sub_8078CC0(struct Sprite *sprite) { +void sub_8078CC0(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078C28(sprite); @@ -945,46 +1077,51 @@ void sub_8078CC0(struct Sprite *sprite) { sprite->callback(sprite); } -bool8 sub_8078CE8(struct Sprite *sprite) { +bool8 sub_8078CE8(struct Sprite *sprite) +{ u16 v1, v2, x, y; - if (!sprite->data[0]) { + + if (!sprite->data[0]) return TRUE; - } + v1 = sprite->data[1]; v2 = sprite->data[2]; x = sprite->data[3]; y = sprite->data[4]; x += v1; y += v2; - if (v1 & 1) { + + if (v1 & 1) sprite->pos2.x = -(x >> 4); - } else { + else sprite->pos2.x = x >> 4; - } - if (v2 & 1) { + + if (v2 & 1) sprite->pos2.y = -(y >> 4); - } else { + else sprite->pos2.y = y >> 4; - } + sprite->data[3] = x; sprite->data[4] = y; sprite->data[0]--; return FALSE; } -void sub_8078D44(struct Sprite *sprite) { - if (sub_8078CE8(sprite)) { +void sub_8078D44(struct Sprite *sprite) +{ + if (sub_8078CE8(sprite)) SetCallbackToStoredInData(sprite); - } } -void sub_8078D60(struct Sprite *sprite) { +void sub_8078D60(struct Sprite *sprite) +{ int v1 = abs(sprite->data[2] - sprite->data[1]) << 4; sprite->data[0] = v1 / sprite->data[0]; sub_8078C28(sprite); } -void sub_8078D8C(struct Sprite *sprite) { +void sub_8078D8C(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078D60(sprite); @@ -992,16 +1129,17 @@ void sub_8078D8C(struct Sprite *sprite) { sprite->callback(sprite); } -void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) { +void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) +{ int i; struct ObjAffineSrcData src; struct OamMatrix matrix; + src.xScale = xScale; src.yScale = yScale; src.rotation = rotation; - if (sub_8078E38()) { + if (sub_8078E38()) src.xScale = -src.xScale; - } i = gSprites[sprite].oam.matrixNum; ObjAffineSet(&src, &matrix, 1, 2); gOamMatrices[i].a = matrix.a; @@ -1010,31 +1148,33 @@ void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) { gOamMatrices[i].d = matrix.d; } -bool8 sub_8078E38() { - if (IsContest()) { - if (gSprites[GetAnimBankSpriteId(0)].data[2] == 0xc9 /* XXX SPECIES_UNOWN? */) { +bool8 sub_8078E38() +{ + if (IsContest()) + { + if (gSprites[GetAnimBankSpriteId(0)].data[2] == 0xc9 /* XXX SPECIES_UNOWN? */) return FALSE; - } return TRUE; } return FALSE; } -void sub_8078E70(u8 sprite, u8 a2) { +void sub_8078E70(u8 sprite, u8 a2) +{ u8 r7 = gSprites[sprite].data[0]; - if (IsContest() || IsAnimBankSpriteVisible(r7)) { + + if (IsContest() || IsAnimBankSpriteVisible(r7)) gSprites[sprite].invisible = FALSE; - } gSprites[sprite].oam.objMode = a2; gSprites[sprite].affineAnimPaused = TRUE; - if (!IsContest() && !gSprites[sprite].oam.affineMode) { + if (!IsContest() && !gSprites[sprite].oam.affineMode) gSprites[sprite].oam.matrixNum = ewram17810[r7].unk6; - } gSprites[sprite].oam.affineMode = 3; CalcCenterToCornerVec(&gSprites[sprite], gSprites[sprite].oam.shape, gSprites[sprite].oam.size, gSprites[sprite].oam.affineMode); } -void sub_8078F40(u8 sprite) { +void sub_8078F40(u8 sprite) +{ obj_id_set_rotscale(sprite, 0x100, 0x100, 0); gSprites[sprite].oam.affineMode = 1; gSprites[sprite].oam.objMode = 0; @@ -1042,31 +1182,33 @@ void sub_8078F40(u8 sprite) { CalcCenterToCornerVec(&gSprites[sprite], gSprites[sprite].oam.shape, gSprites[sprite].oam.size, gSprites[sprite].oam.affineMode); } -void sub_8078F9C(u8 sprite) { +void sub_8078F9C(u8 sprite) +{ u16 matrix = gSprites[sprite].oam.matrixNum; s16 c = gOamMatrices[matrix].c; - if (c < 0) { + + if (c < 0) c = -c; - } gSprites[sprite].pos2.y = c >> 3; } // related to obj_id_set_rotscale -void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation) { +void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation) +{ int i; struct ObjAffineSrcData src; struct OamMatrix matrix; - if (sprite->oam.affineMode & 1) { + + if (sprite->oam.affineMode & 1) + { sprite->affineAnimPaused = TRUE; - if (a2) { + if (a2) CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); - } src.xScale = xScale; src.yScale = yScale; src.rotation = rotation; - if (sub_8078E38()) { + if (sub_8078E38()) src.xScale = -src.xScale; - } i = sprite->oam.matrixNum; ObjAffineSet(&src, &matrix, 1, 2); gOamMatrices[i].a = matrix.a; @@ -1076,56 +1218,67 @@ void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 ro } } -void sub_8079098(struct Sprite *sprite) { +void sub_8079098(struct Sprite *sprite) +{ sub_8078FDC(sprite, TRUE, 0x100, 0x100, 0); sprite->affineAnimPaused = FALSE; CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -static u16 ArcTan2_(s16 a, s16 b) { +static u16 ArcTan2_(s16 a, s16 b) +{ return ArcTan2(a, b); } -u16 sub_80790F0(s16 a, s16 b) { +u16 sub_80790F0(s16 a, s16 b) +{ u16 var = ArcTan2_(a, b); return -var; } -void sub_8079108(u16 a1, bool8 a2) { +void sub_8079108(u16 a1, bool8 a2) +{ int i; - struct Color *c; - struct Color *c2; + struct PlttData *c; + struct PlttData *c2; u16 average; a1 *= 0x10; - if (!a2) { - for (i = 0; i < 0x10; i++) { - c = (struct Color *)&gPlttBufferUnfaded[a1 + i]; + if (!a2) + { + for (i = 0; i < 0x10; i++) + { + c = (struct PlttData *)&gPlttBufferUnfaded[a1 + i]; average = c->r + c->g + c->b; average /= 3; - c2 = (struct Color *)&gPlttBufferFaded[a1 + i]; + c2 = (struct PlttData *)&gPlttBufferFaded[a1 + i]; c2->r = average; c2->g = average; c2->b = average; } - } else { + } + else + { CpuCopy32(&gPlttBufferUnfaded[a1], &gPlttBufferFaded[a1], 0x20); } } -u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { +u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +{ u32 var = 0; u32 shift; - if (a1) { - if (!IsContest()) { + + if (a1) + { + if (!IsContest()) var = 0xe; - } else { + else var = 1 << sub_80789BC(); - } } - if (a2) { + if (a2) + { shift = gAnimBankAttacker + 16; var |= 1 << shift; } @@ -1133,62 +1286,70 @@ u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { shift = gAnimBankTarget + 16; var |= 1 << shift; } - if (a4) { - if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { + if (a4) + { + if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) + { shift = (gAnimBankAttacker ^ 2) + 16; var |= 1 << shift; } } - if (a5) { - if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) { + if (a5) + { + if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) + { shift = (gAnimBankTarget ^ 2) + 16; var |= 1 << shift; } } - if (a6) { - if (!IsContest()) { + if (a6) + { + if (!IsContest()) var |= 0x100; - } else { + else var |= 0x4000; - } } - if (a7) { - if (!IsContest()) { + if (a7) + { + if (!IsContest()) var |= 0x200; - } } return var; } -u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) { +u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) +{ u32 var = 0; u32 shift; - if (IsContest()) { - if (a1) { + + if (IsContest()) + { + if (a1) + { var |= 1 << 18; return var; } } else { if (a1) { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(0))) { - var |= 1 << (GetBankByPlayerAI(0) + 16); + if (IsAnimBankSpriteVisible(GetBankByIdentity(0))) { + var |= 1 << (GetBankByIdentity(0) + 16); } } if (a2) { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(2))) { - shift = GetBankByPlayerAI(2) + 16; + if (IsAnimBankSpriteVisible(GetBankByIdentity(2))) { + shift = GetBankByIdentity(2) + 16; var |= 1 << shift; } } if (a3) { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(1))) { - shift = GetBankByPlayerAI(1) + 16; + if (IsAnimBankSpriteVisible(GetBankByIdentity(1))) { + shift = GetBankByIdentity(1) + 16; var |= 1 << shift; } } if (a4) { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(3))) { - shift = GetBankByPlayerAI(3) + 16; + if (IsAnimBankSpriteVisible(GetBankByIdentity(3))) { + shift = GetBankByIdentity(3) + 16; var |= 1 << shift; } } @@ -1196,51 +1357,57 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) { return var; } -u8 sub_80793A8(u8 a1) { +u8 sub_80793A8(u8 a1) +{ return a1; } -u8 unref_sub_80793B0(u8 a1) { - return GetBankByPlayerAI(a1); +u8 unref_sub_80793B0(u8 a1) +{ + return GetBankByIdentity(a1); } -void sub_80793C4(struct Sprite *sprite) { +void sub_80793C4(struct Sprite *sprite) +{ bool8 var; - if (!sprite->data[0]) { - if (!gBattleAnimArgs[3]) { + + if (!sprite->data[0]) + { + if (!gBattleAnimArgs[3]) var = TRUE; - } else { + else var = FALSE; - } - if (!gBattleAnimArgs[2]) { + if (!gBattleAnimArgs[2]) sub_80787B0(sprite, var); - } else { + else sub_8078764(sprite, var); - } sprite->data[0]++; - } else if (sprite->animEnded || sprite->affineAnimEnded) { + } + else if (sprite->animEnded || sprite->affineAnimEnded) + { move_anim_8074EE0(sprite); } } -void sub_807941C(struct Sprite *sprite) { +void sub_807941C(struct Sprite *sprite) +{ bool8 v1; u8 v2; - if (!(gBattleAnimArgs[5] & 0xff00)) { + + if (!(gBattleAnimArgs[5] & 0xff00)) v1 = TRUE; - } else { + else v1 = FALSE; - } - if (!(gBattleAnimArgs[5] & 0xff)) { + + if (!(gBattleAnimArgs[5] & 0xff)) v2 = 3; - } else { + else v2 = 1; - } + sub_80787B0(sprite, v1); - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, v2) + gBattleAnimArgs[3]; @@ -1248,11 +1415,11 @@ void sub_807941C(struct Sprite *sprite) { StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80794A8(struct Sprite *sprite) { +void sub_80794A8(struct Sprite *sprite) +{ sub_80787B0(sprite, 1); - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; @@ -1261,31 +1428,38 @@ void sub_80794A8(struct Sprite *sprite) { sprite->callback = sub_8079518; } -void sub_8079518(struct Sprite *sprite) { - if (sub_8078718(sprite)) { +void sub_8079518(struct Sprite *sprite) +{ + if (sub_8078718(sprite)) DestroyAnimSprite(sprite); - } } -void sub_8079534(struct Sprite *sprite) { +void sub_8079534(struct Sprite *sprite) +{ u8 r4, slot, r7; - if (!gBattleAnimArgs[6]) { + + if (!gBattleAnimArgs[6]) + { r4 = 1; r7 = 3; - } else { + } + else + { r4 = 0; r7 = 1; } - if (!gBattleAnimArgs[5]) { + if (!gBattleAnimArgs[5]) + { sub_80787B0(sprite, r4); slot = gAnimBankAttacker; - } else { + } + else + { sub_8078764(sprite, r4); slot = gAnimBankTarget; } - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } sub_8078764(sprite, r4); sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(slot, 2) + gBattleAnimArgs[2]; @@ -1294,43 +1468,47 @@ void sub_8079534(struct Sprite *sprite) { StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1) { +s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1) +{ u16 i; u8 sprite = GetAnimBankSpriteId(a1); - if (sprite != 0xff) { - for (i = 0; i < 0x40; i++) { - if (gSprites[i].inUse) { - continue; + + if (sprite != 0xff) + { + for (i = 0; i < 0x40; i++) + { + if (!gSprites[i].inUse) + { + gSprites[i] = gSprites[sprite]; + gSprites[i].oam.objMode = 1; + gSprites[i].invisible = FALSE; + return i; } - gSprites[i] = gSprites[sprite]; - gSprites[i].oam.objMode = 1; - gSprites[i].invisible = FALSE; - return i; } } return -1; } -void obj_delete_but_dont_free_vram(struct Sprite *sprite) { +void obj_delete_but_dont_free_vram(struct Sprite *sprite) +{ sprite->usingSheet = TRUE; DestroySprite(sprite); } -void sub_8079670(u8 task) { +void sub_8079670(u8 task) +{ s16 v1 = 0; s16 v2 = 0; - if (gBattleAnimArgs[2] > gBattleAnimArgs[0]) { + + if (gBattleAnimArgs[2] > gBattleAnimArgs[0]) v2 = 1; - } - if (gBattleAnimArgs[2] < gBattleAnimArgs[0]) { + if (gBattleAnimArgs[2] < gBattleAnimArgs[0]) v2 = -1; - } - if (gBattleAnimArgs[3] > gBattleAnimArgs[1]) { + if (gBattleAnimArgs[3] > gBattleAnimArgs[1]) v1 = 1; - } - if (gBattleAnimArgs[3] < gBattleAnimArgs[1]) { + if (gBattleAnimArgs[3] < gBattleAnimArgs[1]) v1 = -1; - } + gTasks[task].data[0] = 0; gTasks[task].data[1] = gBattleAnimArgs[4]; gTasks[task].data[2] = 0; @@ -1344,30 +1522,38 @@ void sub_8079670(u8 task) { gTasks[task].func = sub_80796F8; } -void sub_80796F8(u8 taskId) { +void sub_80796F8(u8 taskId) +{ struct Task *task = &gTasks[taskId]; - if (++task->data[0] > task->data[1]) { + + if (++task->data[0] > task->data[1]) + { task->data[0] = 0; - if (++task->data[2] & 1) { - if (task->data[3] != task->data[7]) { + if (++task->data[2] & 1) + { + if (task->data[3] != task->data[7]) task->data[3] += task->data[5]; - } - } else { - if (task->data[4] != task->data[8]) { + } + else + { + if (task->data[4] != task->data[8]) task->data[4] += task->data[6]; - } } REG_BLDALPHA = (task->data[4] << 8) | task->data[3]; - if (task->data[3] == task->data[7] && task->data[4] == task->data[8]) { + if (task->data[3] == task->data[7] && task->data[4] == task->data[8]) + { DestroyAnimVisualTask(taskId); return; } } } -void sub_8079790(u8 task) { +void sub_8079790(u8 task) +{ u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); - if (sprite == 0xff) { + + if (sprite == 0xff) + { DestroyAnimVisualTask(task); return; } @@ -1375,7 +1561,8 @@ void sub_8079790(u8 task) { sub_80797EC(&gTasks[task]); } -void sub_80797EC(struct Task *task) { +void sub_80797EC(struct Task *task) +{ task->data[1] = gBattleAnimArgs[1]; task->data[2] = 0; task->data[3] = gBattleAnimArgs[2]; @@ -1386,24 +1573,33 @@ void sub_80797EC(struct Task *task) { task->func = sub_8079814; } -void sub_8079814(u8 taskId) { +void sub_8079814(u8 taskId) +{ struct Task *task = &gTasks[taskId]; - if (++task->data[4] >= task->data[5]) { + + if (++task->data[4] >= task->data[5]) + { task->data[4] = 0; - if (!task->data[6]) { + if (!task->data[6]) + { task->data[2]++; BlendPalette(task->data[0], 0xf, task->data[2], task->data[1]); - if (task->data[2] == task->data[3]) { + if (task->data[2] == task->data[3]) task->data[6] = 1; - } - } else { + } + else + { task->data[2]--; BlendPalette(task->data[0], 0xf, task->data[2], task->data[1]); - if (!task->data[2]) { - if (--task->data[7]) { + if (!task->data[2]) + { + if (--task->data[7]) + { task->data[4] = 0; task->data[6] = 0; - } else { + } + else + { DestroyAnimVisualTask(taskId); return; } @@ -1412,9 +1608,12 @@ void sub_8079814(u8 taskId) { } } -void sub_80798AC(u8 task) { +void sub_80798AC(u8 task) +{ u8 palette = IndexOfSpritePaletteTag(gBattleAnimArgs[0]); - if (palette == 0xff) { + + if (palette == 0xff) + { DestroyAnimVisualTask(task); return; } @@ -1422,7 +1621,8 @@ void sub_80798AC(u8 task) { sub_80797EC(&gTasks[task]); } -void sub_80798F4(struct Task *task, u8 a2, const void *a3) { +void sub_80798F4(struct Task *task, u8 a2, const void *a3) +{ task->data[7] = 0; task->data[8] = 0; task->data[9] = 0; @@ -1434,11 +1634,14 @@ void sub_80798F4(struct Task *task, u8 a2, const void *a3) { sub_8078E70(a2, 0); } -bool8 sub_807992C(struct Task *task) { +bool8 sub_807992C(struct Task *task) +{ gUnknown_0202F7D4 = sub_8079BFC(task->data[13], task->data[14]) + (task->data[7] << 3); - switch (gUnknown_0202F7D4->type) { + switch (gUnknown_0202F7D4->type) + { default: - if (!gUnknown_0202F7D4->frame.duration) { + if (!gUnknown_0202F7D4->frame.duration) + { task->data[10] = gUnknown_0202F7D4->frame.xScale; task->data[11] = gUnknown_0202F7D4->frame.yScale; task->data[12] = gUnknown_0202F7D4->frame.rotation; @@ -1450,44 +1653,49 @@ bool8 sub_807992C(struct Task *task) { task->data[12] += gUnknown_0202F7D4->frame.rotation; obj_id_set_rotscale(task->data[15], task->data[10], task->data[11], task->data[12]); sub_8079A64(task->data[15]); - if (++task->data[8] >= gUnknown_0202F7D4->frame.duration) { + if (++task->data[8] >= gUnknown_0202F7D4->frame.duration) + { task->data[8] = 0; task->data[7]++; } break; - case AFFINEANIMCMDTYPE_JUMP: task->data[7] = gUnknown_0202F7D4->jump.target; break; - case AFFINEANIMCMDTYPE_LOOP: - if (gUnknown_0202F7D4->loop.count) { - if (task->data[9]) { - if (!--task->data[9]) { + if (gUnknown_0202F7D4->loop.count) + { + if (task->data[9]) + { + if (!--task->data[9]) + { task->data[7]++; break; } - } else { + } + else + { task->data[9] = gUnknown_0202F7D4->loop.count; } - if (!task->data[7]) { + if (!task->data[7]) + { break; } - for (;;) { + for (;;) + { task->data[7]--; gUnknown_0202F7D4--; - if (gUnknown_0202F7D4->type == AFFINEANIMCMDTYPE_LOOP) { + if (gUnknown_0202F7D4->type == AFFINEANIMCMDTYPE_LOOP) + { task->data[7]++; return TRUE; } - if (!task->data[7]) { + if (!task->data[7]) return TRUE; - } } } task->data[7]++; break; - case 0x7fff: gSprites[task->data[15]].pos2.y = 0; sub_8078F40(task->data[15]); @@ -1497,52 +1705,62 @@ bool8 sub_807992C(struct Task *task) { return TRUE; } -void sub_8079A64(u8 sprite) { +void sub_8079A64(u8 sprite) +{ int var = 0x40 - sub_8079B10(sprite) * 2; u16 matrix = gSprites[sprite].oam.matrixNum; int var2 = (var << 8) / gOamMatrices[matrix].d; - if (var2 > 0x80) { + + if (var2 > 0x80) var2 = 0x80; - } gSprites[sprite].pos2.y = (var - var2) / 2; } -void sub_8079AB8(u8 sprite, u8 sprite2) { +void sub_8079AB8(u8 sprite, u8 sprite2) +{ int var = 0x40 - sub_8079B10(sprite2) * 2; u16 matrix = gSprites[sprite].oam.matrixNum; int var2 = (var << 8) / gOamMatrices[matrix].d; - if (var2 > 0x80) { + + if (var2 > 0x80) var2 = 0x80; - } gSprites[sprite].pos2.y = (var - var2) / 2; } -u16 sub_8079B10(u8 sprite) { +u16 sub_8079B10(u8 sprite) +{ struct TransformStatus *transform; u8 slot = gSprites[sprite].data[0]; u16 species; u16 i; - for (i = 0; i < (sizeof(gBattleMonSprites) / sizeof(u8)); i++) { - if (gBattleMonSprites[i] == sprite) { - if (IsContest()) { - species = ewram19348.unk0; + + for (i = 0; i < (sizeof(gBattleMonSprites) / sizeof(u8)); i++) + { + if (gBattleMonSprites[i] == sprite) + { + if (IsContest()) + { + species = shared19348.unk0; return gMonBackPicCoords[species].y_offset; - } else { - if (!GetBankSide(i)) { + } + else + { + if (!GetBankSide(i)) + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[i]], MON_DATA_SPECIES); - } else { + else species = transform->species; - } return gMonBackPicCoords[species].y_offset; - } else { + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[i]], MON_DATA_SPECIES); - } else { + else species = transform->species; - } return gMonFrontPicCoords[species].y_offset; } } @@ -1551,19 +1769,22 @@ u16 sub_8079B10(u8 sprite) { return 0x40; } -void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr) { +void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr) +{ *bottom = ((intptr_t) ptr) & 0xffff; *top = (((intptr_t) ptr) >> 16) & 0xffff; } -void *sub_8079BFC(s16 bottom, s16 top) { +void *sub_8079BFC(s16 bottom, s16 top) +{ return (void *)((u16)bottom | ((u16)top << 16)); } // possible new file -void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7) { +void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7) +{ task->data[8] = a7; task->data[15] = a2; // spriteId task->data[9] = a3; @@ -1574,124 +1795,133 @@ void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a task->data[12] = (a6 - a4) / a7; } -u8 sub_8079C74(struct Task *task) { - if (!task->data[8]) { +u8 sub_8079C74(struct Task *task) +{ + if (!task->data[8]) return 0; - } - if (--task->data[8]) { + + if (--task->data[8] != 0) + { task->data[9] += task->data[11]; task->data[10] += task->data[12]; - } else { + } + else + { task->data[9] = task->data[13]; task->data[10] = task->data[14]; } obj_id_set_rotscale(task->data[15], task->data[9], task->data[10], 0); - if (task->data[8]) { + if (task->data[8]) sub_8079A64(task->data[15]); - } else { + else gSprites[task->data[15]].pos2.y = 0; - } return task->data[8]; } -void sub_8079CEC(u8 task) { +void sub_8079CEC(u8 task) +{ u16 v1; - if (gAnimFriendship <= 30) { + + if (gAnimFriendship <= 30) v1 = 0; - } else if (gAnimFriendship <= 100) { + else if (gAnimFriendship <= 100) v1 = 1; - } else if (gAnimFriendship <= 200) { + else if (gAnimFriendship <= 200) v1 = 2; - } else { + else v1 = 3; - } gBattleAnimArgs[7] = v1; DestroyAnimVisualTask(task); } -void unref_sub_8079D20(u8 priority) { - if (IsAnimBankSpriteVisible(gAnimBankTarget)) { +void unref_sub_8079D20(u8 priority) +{ + if (IsAnimBankSpriteVisible(gAnimBankTarget)) gSprites[gBattleMonSprites[gAnimBankTarget]].oam.priority = priority; - } - if (IsAnimBankSpriteVisible(gAnimBankAttacker)) { + if (IsAnimBankSpriteVisible(gAnimBankAttacker)) gSprites[gBattleMonSprites[gAnimBankAttacker]].oam.priority = priority; - } - if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) { + if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) gSprites[gBattleMonSprites[gAnimBankTarget ^ 2]].oam.priority = priority; - } - if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { + if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) gSprites[gBattleMonSprites[gAnimBankAttacker ^ 2]].oam.priority = priority; - } } -void sub_8079E24() { +void sub_8079E24() +{ int i; - for (i = 0; i < gNoOfAllBanks; i++) { - if (IsAnimBankSpriteVisible(i)) { + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (IsAnimBankSpriteVisible(i)) + { gSprites[gBattleMonSprites[i]].subpriority = sub_8079E90(i); gSprites[gBattleMonSprites[i]].oam.priority = 2; } } } -u8 sub_8079E90(u8 slot) { +u8 sub_8079E90(u8 slot) +{ u8 status; u8 ret; - if (IsContest()) { - if (slot == 2) { + + if (IsContest()) + { + if (slot == 2) return 30; - } else { + else return 40; - } - } else { + } + else + { status = GetBankIdentity(slot); - if (status == 0) { + if (status == 0) ret = 30; - } else if (status == 2) { + else if (status == 2) ret = 20; - } else if (status == 1) { + else if (status == 1) ret = 40; - } else { + else ret = 50; - } } return ret; } -u8 sub_8079ED4(u8 slot) { +u8 sub_8079ED4(u8 slot) +{ u8 status = GetBankIdentity(slot); - if (IsContest()) { + + if (IsContest()) return 2; - } - if (status == 0 || status == 3) { + if (status == 0 || status == 3) return BG2CNT.priority; - } else { + else return BG1CNT.priority; - } } -u8 GetBankIdentity_permutated(u8 slot) { +u8 GetBankIdentity_permutated(u8 slot) +{ u8 status; - if (!IsContest()) { + + if (!IsContest()) + { status = GetBankIdentity(slot); - if (status == 0 || status == 3) { + if (status == 0 || status == 3) return 2; - } else { + else return 1; - } } return 1; } -u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8) { - void *src; - void *dest; - int size; - +u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8) +{ u8 sprite; u16 sheet = LoadSpriteSheet(&gUnknown_0837F5E0[a3]); u16 palette = AllocSpritePalette(gSpriteTemplate_837F5B0[a3].paletteTag); - if (!isBackpic) { + + if (!isBackpic) + { LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonFrontPicTable[species], @@ -1703,9 +1933,10 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, a7, 1 ); - } else { - LoadCompressedPalette( - GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); + } + else + { + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -1718,28 +1949,28 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, ); } - src = (void *)0x2000000; - dest = (void *)(0x6010000 + (sheet * 0x20)); - size = 0x800; - DmaCopy32(3, src, dest, size); + DmaCopy32Defvars(3, (void *)0x2000000, (void *)(VRAM + 0x10000 + (sheet * 0x20)), 0x800); - if (!isBackpic) { + if (!isBackpic) sprite = CreateSprite(&gSpriteTemplate_837F5B0[a3], a4, a5 + gMonFrontPicCoords[species].y_offset, a6); - } else { + else sprite = CreateSprite(&gSpriteTemplate_837F5B0[a3], a4, a5 + gMonBackPicCoords[species].y_offset, a6); - } - if (IsContest()) { + + if (IsContest()) + { gSprites[sprite].affineAnims = gSpriteAffineAnimTable_81E7C18; StartSpriteAffineAnim(&gSprites[sprite], 0); } return sprite; } -void sub_807A0F4(struct Sprite *sprite) { +void sub_807A0F4(struct Sprite *sprite) +{ DestroySpriteAndFreeResources(sprite); } -int sub_807A100(u8 slot, u8 a2) { +int sub_807A100(u8 slot, u8 a2) +{ u16 species; u32 personality; u16 letter; @@ -1747,80 +1978,113 @@ int sub_807A100(u8 slot, u8 a2) { int ret; const struct MonCoords *coords; struct TransformStatus *transform; - if (IsContest()) { - if (ewram19348.unk4 & 1) { - species = ewram19348.unk2; - personality = ewram19348.unk10; - } else { - species = ewram19348.unk0; - personality = ewram19348.unk8; + + if (IsContest()) + { + if (shared19348.unk4_0) + { + species = shared19348.unk2; + personality = shared19348.unk10; } - if (species == SPECIES_UNOWN) { + else + { + species = shared19348.unk0; + personality = shared19348.unk8; + } + if (species == SPECIES_UNOWN) + { letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = SPECIES_UNOWN; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } coords = &gMonBackPicCoords[var]; - } else if (species == SPECIES_CASTFORM) { + } + else if (species == SPECIES_CASTFORM) + { coords = &gCastformFrontSpriteCoords[gBattleMonForms[slot]]; - } else if (species <= SPECIES_EGG) { + } + else if (species <= SPECIES_EGG) + { coords = &gMonBackPicCoords[species]; - } else { + } + else + { coords = &gMonBackPicCoords[0]; } - } else { - if (!GetBankSide(slot)) { + } + else + { + if (!GetBankSide(slot)) + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) + { species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); personality = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY); - } else { + } + else + { species = transform->species; personality = gTransformPersonalities[slot]; } - if (species == SPECIES_UNOWN) { + if (species == SPECIES_UNOWN) + { letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = SPECIES_UNOWN; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } coords = &gMonBackPicCoords[var]; - } else if (species > SPECIES_EGG) { + } + else if (species > SPECIES_EGG) + { coords = &gMonBackPicCoords[0]; - } else { + } + else + { coords = &gMonBackPicCoords[species]; } - } else { + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) + { species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); personality = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY); - } else { + } + else + { species = transform->species; personality = gTransformPersonalities[slot]; } - if (species == SPECIES_UNOWN) { + if (species == SPECIES_UNOWN) + { letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = SPECIES_UNOWN; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } coords = &gMonFrontPicCoords[var]; - } else if (species == SPECIES_CASTFORM) { + } + else if (species == SPECIES_CASTFORM) + { coords = &gCastformFrontSpriteCoords[gBattleMonForms[slot]]; - } else if (species > SPECIES_EGG) { + } + else if (species > SPECIES_EGG) + { coords = &gMonFrontPicCoords[0]; - } else { + } + else + { coords = &gMonFrontPicCoords[species]; } } } - switch (a2) { + switch (a2) + { case 0: return (coords->coords & 0xf) * 8; case 1: @@ -1841,23 +2105,31 @@ int sub_807A100(u8 slot, u8 a2) { } } -void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) { +void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) +{ u8 v1, v2; s16 v3, v4; s16 v5, v6; - if (!a2) { + + if (!a2) + { v1 = 0; v2 = 1; - } else { + } + else + { v1 = 2; v2 = 3; } v3 = GetBankPosition(slot, v1); v4 = GetBankPosition(slot, v2); - if (IsDoubleBattle() && !IsContest()) { + if (IsDoubleBattle() && !IsContest()) + { v5 = GetBankPosition(slot ^ 2, v1); v6 = GetBankPosition(slot ^ 2, v2); - } else { + } + else + { v5 = v3; v6 = v4; } @@ -1865,7 +2137,8 @@ void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) { *a4 = (v4 + v6) / 2; } -u8 sub_807A4A0(int a1, u8 sprite, int a3) { +u8 sub_807A4A0(int a1, u8 sprite, int a3) +{ u8 new_sprite = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); gSprites[new_sprite] = gSprites[sprite]; gSprites[new_sprite].usingSheet = TRUE; @@ -1876,13 +2149,17 @@ u8 sub_807A4A0(int a1, u8 sprite, int a3) { return new_sprite; } -void sub_807A544(struct Sprite *sprite) { +void sub_807A544(struct Sprite *sprite) +{ sub_8078650(sprite); - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) + { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; sprite->hFlip = TRUE; - } else { + } + else + { sprite->pos1.x += gBattleAnimArgs[0]; } sprite->pos1.y += gBattleAnimArgs[1]; @@ -1894,11 +2171,15 @@ void sub_807A544(struct Sprite *sprite) { sprite->callback = sub_8078504; } -void sub_807A5C4(struct Sprite *sprite) { - if (GetBankSide(gAnimBankAttacker)) { +void sub_807A5C4(struct Sprite *sprite) +{ + if (GetBankSide(gAnimBankAttacker)) + { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] *= -1; - } else { + } + else + { sprite->pos1.x += gBattleAnimArgs[0]; } sprite->pos1.y += gBattleAnimArgs[1]; @@ -1911,19 +2192,20 @@ void sub_807A5C4(struct Sprite *sprite) { sprite->callback = sub_8078504; } -void sub_807A63C(struct Sprite *sprite) { +void sub_807A63C(struct Sprite *sprite) +{ sub_8078650(sprite); - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) sprite->pos1.x -= gBattleAnimArgs[0]; - } else { + else sprite->pos1.x += gBattleAnimArgs[0]; - } sprite->pos1.y += gBattleAnimArgs[1]; sprite->callback = sub_8078600; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_807A69C(u8 taskId) { +void sub_807A69C(u8 taskId) +{ u16 src; u16 dest; struct Task *task = &gTasks[taskId]; @@ -1938,23 +2220,25 @@ void sub_807A69C(u8 taskId) { dest = (task->data[4] + 0x10) * 0x10; src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; task->data[6] = sub_8079E90(gAnimBankAttacker); - if (task->data[6] == 20 || task->data[6] == 40) { + if (task->data[6] == 20 || task->data[6] == 40) task->data[6] = 2; - } else { + else task->data[6] = 3; - } CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20); BlendPalette(dest, 0x10, gBattleAnimArgs[1], gBattleAnimArgs[0]); task->func = sub_807A784; } -void sub_807A784(u8 taskId) { +void sub_807A784(u8 taskId) +{ struct Task *task = &gTasks[taskId]; - switch (task->data[2]) { + switch (task->data[2]) + { case 0: sub_807A850(task, taskId); gSprites[task->data[0]].pos2.x += task->data[1]; - if (++task->data[3] == 5) { + if (++task->data[3] == 5) + { task->data[3]--; task->data[2]++; } @@ -1962,13 +2246,15 @@ void sub_807A784(u8 taskId) { case 1: sub_807A850(task, taskId); gSprites[task->data[0]].pos2.x -= task->data[1]; - if (--task->data[3] == 0) { + if (--task->data[3] == 0) + { gSprites[task->data[0]].pos2.x = 0; task->data[2]++; } break; case 2: - if (!task->data[5]) { + if (!task->data[5]) + { FreeSpritePaletteByTag(10097); DestroyAnimVisualTask(taskId); } @@ -1976,9 +2262,11 @@ void sub_807A784(u8 taskId) { } } -void sub_807A850(struct Task *task, u8 taskId) { +void sub_807A850(struct Task *task, u8 taskId) +{ s16 sprite = duplicate_obj_of_side_rel2move_in_transparent_mode(0); - if (sprite >= 0) { + if (sprite >= 0) + { gSprites[sprite].oam.priority = task->data[6]; gSprites[sprite].oam.paletteNum = task->data[4]; gSprites[sprite].data[0] = 8; @@ -1990,8 +2278,10 @@ void sub_807A850(struct Task *task, u8 taskId) { } } -void sub_807A8D4(struct Sprite *sprite) { - if (--sprite->data[0] == 0) { +void sub_807A8D4(struct Sprite *sprite) +{ + if (--sprite->data[0] == 0) + { gTasks[sprite->data[1]].data[5]--; obj_delete_but_dont_free_vram(sprite); } @@ -2000,38 +2290,40 @@ void sub_807A8D4(struct Sprite *sprite) { void sub_807A908(struct Sprite *sprite) { sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); - if (!GetBankSide(gAnimBankAttacker)) { + if (!GetBankSide(gAnimBankAttacker)) sprite->data[0] = 5; - } else { + else sprite->data[0] = -10; - } sprite->data[1] = -40; sprite->callback = sub_807A960; } -void sub_807A960(struct Sprite *sprite) { +void sub_807A960(struct Sprite *sprite) +{ sprite->data[2] += sprite->data[0]; sprite->data[3] += sprite->data[1]; sprite->pos2.x = sprite->data[2] / 10; sprite->pos2.y = sprite->data[3] / 10; - if (sprite->data[1] < -20) { + if (sprite->data[1] < -20) sprite->data[1]++; - } - if ((sprite->pos1.y + sprite->pos2.y) < -32) { + if (sprite->pos1.y + sprite->pos2.y < -32) DestroyAnimSprite(sprite); - } } -void sub_807A9BC(struct Sprite *sprite) { +void sub_807A9BC(struct Sprite *sprite) +{ int x; sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4]; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5]; - if (!GetBankSide(gAnimBankTarget)) { + if (!GetBankSide(gAnimBankTarget)) + { x = (u16)gBattleAnimArgs[4] + 30; sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 20; - } else { + } + else + { x = (u16)gBattleAnimArgs[4] - 30; sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 80; |