diff options
author | camthesaxman <cameronghall@cox.net> | 2017-05-11 20:39:37 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-05-11 20:39:37 -0500 |
commit | 7997e4a6435cfc227127dab28450acfc5ad729c3 (patch) | |
tree | e8310ac4c898c55a18223a72a98c825acaacdf67 /src | |
parent | e584ecba5a96f19bdcd8b2767a952429b102178a (diff) |
decompile some more
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_2.c | 135 |
1 files changed, 134 insertions, 1 deletions
diff --git a/src/battle_2.c b/src/battle_2.c index a9f0fd57a..e012ab456 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -974,4 +974,137 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle; } return gTrainers[trainerNum].partySize; -}
\ No newline at end of file +} + +void sub_800FCD4(void) +{ + if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F ) + REG_BG0CNT = 0x9800; +} + +void sub_800FCFC(void) +{ + Random(); // unused return value + REG_BG0HOFS = gUnknown_030042A4; + REG_BG0VOFS = gUnknown_030042A0; + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + REG_BG3HOFS = gUnknown_030041B0; + REG_BG3VOFS = gUnknown_030041B8; + REG_WIN0H = gUnknown_030042C4; + REG_WIN0V = gUnknown_03004240; + REG_WIN1H = gUnknown_03004200; + REG_WIN1V = gUnknown_03004244; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_8089668(); +} + +void nullsub_36(struct Sprite *sprite) +{ +} + +void sub_800FDB0(struct Sprite *sprite) +{ + if (sprite->data0 != 0) + sprite->pos1.x = sprite->data1 + ((sprite->data2 & 0xFF00) >> 8); + else + sprite->pos1.x = sprite->data1 - ((sprite->data2 & 0xFF00) >> 8); + sprite->data2 += 0x180; + if (sprite->affineAnimEnded) + { + FreeSpriteTilesByTag(0x2710); + FreeSpritePaletteByTag(0x2710); + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +void sub_800FE20(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_800FDB0; + PlaySE(SE_BT_START); +} + +void sub_800FE40(u8 a) +{ + struct Pokemon *sp4 = NULL; + struct Pokemon *sp8 = NULL; + u8 r2 = ewram160CB; + u32 r7; + s32 i; + + + if (gBattleTypeFlags & 0x40) + { + switch (gLinkPlayers[r2].lp_field_18) + { + case 1: + case 3: + sp4 = gEnemyParty; + sp8 = gPlayerParty; + goto foo; + case 0: + case 2: + sp4 = gPlayerParty; + sp8 = gEnemyParty; + break; + } + } + else + { + sp4 = gPlayerParty; + sp8 = gEnemyParty; + } + //_0800FEBC + r7 = 0; + for (i = 0; i < 6; i++) + { + u16 r5 = GetMonData(&sp4[i], MON_DATA_SPECIES2); + u16 r6 = GetMonData(&sp4[i], MON_DATA_HP); + u32 r1 = GetMonData(&sp4[i], MON_DATA_STATUS); + + if (r5 == 0) + continue; + if (r5 != SPECIES_EGG && r6 != 0 && r1 == 0) + r7 |= 1 << i * 2; + + if (r5 == 0) + continue; + if (r6 != 0 && (r5 == SPECIES_EGG || r1 != 0)) + r7 |= 2 << i * 2; + + if (r5 == 0) + continue; + if (r5 != SPECIES_EGG && r6 == 0) + r7 |= 3 << i * 2; + } + gTasks[a].data[3] = r7; + r7 = 0; + for (i = 0; i < 6; i++) //_0800FF6A + { + u16 r5 = GetMonData(&sp8[i], MON_DATA_SPECIES2); + u16 r6 = GetMonData(&sp8[i], MON_DATA_HP); + u32 r1 = GetMonData(&sp8[i], MON_DATA_STATUS); + + if (r5 == 0) + continue; + if (r5 != SPECIES_EGG && r6 != 0 && r1 == 0) + r7 |= 1 << i * 2; + + if (r5 == 0) + continue; + if (r6 != 0 && (r5 == SPECIES_EGG || r1 != 0)) + r7 |= 2 << i * 2; + + if (r5 == 0) + continue; + if (r5 != SPECIES_EGG && r6 == 0) + r7 |= 3 << i * 2; + } + gTasks[a].data[4] = r7; +} |