diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-18 22:41:54 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-18 22:41:54 -0400 |
commit | 52dc68aa89a4e568673f1155542856504bd3da3f (patch) | |
tree | 3e499990242d73a609c04a6ebc355c3a203dd32f /src | |
parent | c593b51dc538961641d4f679a5b0366295179c5e (diff) |
sub_818D3E4
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_dome_cards.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 764e3dfe4..7eee245ee 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -15,6 +15,10 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const union AnimCmd *const gUnknown_082FF70C[]; extern const union AnimCmd *const *const gUnknown_0830536C[]; extern const struct OamData gUnknown_0860B064; +extern const struct OamData gUnknown_0860B06C; +extern const union AnimCmd *const *const gUnknown_08309AAC[NUM_SPECIES]; +extern const union AffineAnimCmd *const gUnknown_082FF694[]; +extern const union AffineAnimCmd *const gUnknown_082FF618[]; // Static type declarations @@ -214,3 +218,91 @@ u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 personality, b gUnknown_0203CD04[i].active = TRUE; return spriteId; } + +u16 sub_818D384(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) +{ + return oamt_spawn_poke_or_trainer_picture(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, isTrainer, FALSE); +} + +u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) +{ + u8 *framePics; + struct SpriteFrameImage *images; + int j; + u8 i; + u8 spriteId; + u8 flags2; + + for (i = 0; i < 8; i ++) + { + if (!gUnknown_0203CD04[i].active) + { + break; + } + } + if (i == 8) + { + return 0xFFFF; + } + framePics = Alloc(4 * 0x800); + if (!framePics) + { + return 0xFFFF; + } + if (flags & 0x80) + { + flags &= 0x7F; + flags2 = 3; + } + else + { + flags2 = flags; + } + images = Alloc(4 * sizeof(struct SpriteFrameImage)); + if (!images) + { + Free(framePics); + return 0xFFFF; + } + if (load_pokemon_image_TODO(species, personality, flags, framePics, FALSE, FALSE)) + { + // debug trap? + return 0xFFFF; + } + for (j = 0; j < 4; j ++) + { + images[j].data = framePics + 0x800 * j; + images[j].size = 0x800; + } + gUnknown_0203CCEC.tileTag = 0xFFFF; + gUnknown_0203CCEC.anims = gUnknown_08309AAC[species]; + gUnknown_0203CCEC.images = images; + if (flags2 == 0x01) + { + gUnknown_0203CCEC.affineAnims = gUnknown_082FF694; + gUnknown_0203CCEC.oam = &gUnknown_0860B06C; + } + else if (flags2 == 0x00) + { + gUnknown_0203CCEC.affineAnims = gUnknown_082FF618; + gUnknown_0203CCEC.oam = &gUnknown_0860B06C; + } + else + { + gUnknown_0203CCEC.oam = &gUnknown_0860B064; + gUnknown_0203CCEC.affineAnims = gDummySpriteAffineAnimTable; + } + gUnknown_0203CCEC.callback = nullsub_122; + sub_818D0C4(species, otId, personality, paletteSlot, paletteTag, FALSE); + spriteId = CreateSprite(&gUnknown_0203CCEC, x, y, 0); + if (paletteTag == 0xFFFF) + { + gSprites[spriteId].oam.paletteNum = paletteSlot; + } + gUnknown_0203CD04[i].frames = framePics; + gUnknown_0203CD04[i].images = images; + gUnknown_0203CD04[i].paletteTag = paletteTag; + gUnknown_0203CD04[i].spriteId = spriteId; + gUnknown_0203CD04[i].active = TRUE; + return spriteId; +} |