From 9e96bd540ad3ae258ce7b2e8184cd162caa63c48 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Sep 2017 19:39:20 -0400 Subject: Battle Dome Cards BEGIN --- src/battle_dome_cards.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/battle_dome_cards.c (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c new file mode 100644 index 000000000..0afad23f6 --- /dev/null +++ b/src/battle_dome_cards.c @@ -0,0 +1,37 @@ + +// Includes +#include "global.h" + +// Static type declarations + +struct BattleDomeCard { + u8 unk_00[12]; +}; + +// Static RAM declarations + +extern struct BattleDomeCard gUnknown_0203CD04[8]; + +// Static ROM declarations + +// .rodata + +extern const struct BattleDomeCard gUnknown_0860B058; + +// .text + +void nullsub_122(void) +{ + +} + +bool8 dp13_810BB8C(void) +{ + int i; + + for (i = 0; i < 8; i ++) + { + gUnknown_0203CD04[i] = gUnknown_0860B058; + } + return FALSE; +} -- cgit v1.2.3 From e033c721219f4412a0cb2cbbdcbec583ec60c87a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Sep 2017 20:00:46 -0400 Subject: load_pokemon_image_TODO --- src/battle_dome_cards.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 0afad23f6..6ceb929ad 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -1,6 +1,15 @@ // Includes #include "global.h" +#include "sprite.h" +#include "species.h" +#include "pokemon.h" +#include "decompress.h" + +extern const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES]; +extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES]; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; +extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; // Static type declarations @@ -20,7 +29,7 @@ extern const struct BattleDomeCard gUnknown_0860B058; // .text -void nullsub_122(void) +void nullsub_122(struct Sprite *sprite) { } @@ -35,3 +44,44 @@ bool8 dp13_810BB8C(void) } return FALSE; } + +bool8 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, void *dest, bool8 isTrainer, bool8 ignoreDeoxys) +{ + if (!isTrainer) + { + if (isFrontPic) + { + if (!ignoreDeoxys) + { + LoadSpecialPokePic(&gMonFrontPicTable[species], dest, species, personality, isFrontPic); + } + else + { + LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], dest, species, personality, isFrontPic); + } + } + else + { + if (!ignoreDeoxys) + { + LoadSpecialPokePic(&gMonBackPicTable[species], dest, species, personality, isFrontPic); + } + else + { + LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], dest, species, personality, isFrontPic); + } + } + } + else + { + if (isFrontPic) + { + DecompressPicFromTable(&gTrainerFrontPicTable[species], dest, species); + } + else + { + DecompressPicFromTable(&gTrainerBackPicTable[species], dest, species); + } + } + return FALSE; +} -- cgit v1.2.3 From 7de2140b868a77ea99e4965b06602af9d7de2926 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Sep 2017 21:26:11 -0400 Subject: sub_818D0C4 --- src/battle_dome_cards.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 6ceb929ad..085afeb0c 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -3,13 +3,14 @@ #include "global.h" #include "sprite.h" #include "species.h" -#include "pokemon.h" +#include "palette.h" #include "decompress.h" extern const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES]; extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; // Static type declarations @@ -20,6 +21,7 @@ struct BattleDomeCard { // Static RAM declarations extern struct BattleDomeCard gUnknown_0203CD04[8]; +extern struct SpriteTemplate gUnknown_0203CCEC; // Static ROM declarations @@ -34,7 +36,7 @@ void nullsub_122(struct Sprite *sprite) } -bool8 dp13_810BB8C(void) +bool16 dp13_810BB8C(void) { int i; @@ -45,7 +47,7 @@ bool8 dp13_810BB8C(void) return FALSE; } -bool8 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, void *dest, bool8 isTrainer, bool8 ignoreDeoxys) +bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, void *dest, bool8 isTrainer, bool8 ignoreDeoxys) { if (!isTrainer) { @@ -85,3 +87,38 @@ bool8 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, vo } return FALSE; } + +bool16 sub_818D09C(u16 species, u32 personality, bool8 isFrontPic, void *dest, bool8 isTrainer) +{ + return load_pokemon_image_TODO(species, personality, isFrontPic, dest, isTrainer, FALSE); +} + +void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) +{ + if (!isTrainer) + { + if (paletteTag == 0xFFFF) + { + gUnknown_0203CCEC.paletteTag |= 0xFFFF; + LoadCompressedPalette(species_and_otid_get_pal(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20); + } + else + { + gUnknown_0203CCEC.paletteTag = paletteTag; + LoadCompressedObjectPalette(sub_806E7CC(species, otId, personality)); + } + } + else + { + if (paletteTag == 0xFFFF) + { + gUnknown_0203CCEC.paletteTag |= 0xFFFF; + LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, 0x100 + paletteSlot * 0x10, 0x20); + } + else + { + gUnknown_0203CCEC.paletteTag = paletteTag; + LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[species]); + } + } +} -- cgit v1.2.3 From 16b0b386be02390ab847a68b279f51aea54c3a95 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Sep 2017 21:28:28 -0400 Subject: sub_818D180 --- src/battle_dome_cards.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 085afeb0c..810ee82eb 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -122,3 +122,15 @@ void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 pal } } } + +void sub_818D180(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer) +{ + if (!isTrainer) + { + LoadCompressedPalette(species_and_otid_get_pal(species, otId, personality), paletteSlot * 0x10, 0x20); + } + else + { + LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, paletteSlot * 0x10, 0x20); + } +} -- cgit v1.2.3 From 8aeb5ea3017dfb7ea9fd8b8f1ef6bc9d4a0fbba9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Sep 2017 21:31:28 -0400 Subject: uns_builder_assign_animtable1 --- src/battle_dome_cards.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 810ee82eb..e92773a1b 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -11,6 +11,8 @@ extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; +extern const union AnimCmd *const gUnknown_082FF70C[]; +extern const union AnimCmd *const *const gUnknown_0830536C[]; // Static type declarations @@ -134,3 +136,15 @@ void sub_818D180(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 i LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, paletteSlot * 0x10, 0x20); } } + +void uns_builder_assign_animtable1(bool8 isTrainer) +{ + if (!isTrainer) + { + gUnknown_0203CCEC.anims = gUnknown_082FF70C; + } + else + { + gUnknown_0203CCEC.anims = gUnknown_0830536C[0]; + } +} -- cgit v1.2.3 From c593b51dc538961641d4f679a5b0366295179c5e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Sep 2017 22:23:13 -0400 Subject: oamt_spawn_poke_or_trainer_picture --- src/battle_dome_cards.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index e92773a1b..764e3dfe4 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -2,6 +2,7 @@ // Includes #include "global.h" #include "sprite.h" +#include "malloc.h" #include "species.h" #include "palette.h" #include "decompress.h" @@ -13,11 +14,16 @@ extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; 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; // Static type declarations struct BattleDomeCard { - u8 unk_00[12]; + u8 *frames; + const struct SpriteFrameImage *images; + u16 paletteTag; + u8 spriteId; + u8 active; }; // Static RAM declarations @@ -148,3 +154,63 @@ void uns_builder_assign_animtable1(bool8 isTrainer) gUnknown_0203CCEC.anims = gUnknown_0830536C[0]; } } + +u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys) +{ + u8 i; + u8 *framePics; + struct SpriteFrameImage *images; + int j; + u8 spriteId; + + 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; + } + images = Alloc(4 * sizeof(struct SpriteFrameImage)); + if (!images) + { + Free(framePics); + return 0xFFFF; + } + if (load_pokemon_image_TODO(species, personality, isFrontPic, framePics, isTrainer, ignoreDeoxys)) + { + // 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.oam = &gUnknown_0860B064; + uns_builder_assign_animtable1(isTrainer); + gUnknown_0203CCEC.images = images; + gUnknown_0203CCEC.affineAnims = gDummySpriteAffineAnimTable; + gUnknown_0203CCEC.callback = nullsub_122; + sub_818D0C4(species, otId, personality, paletteSlot, paletteTag, isTrainer); + 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; +} -- cgit v1.2.3 From 52dc68aa89a4e568673f1155542856504bd3da3f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Sep 2017 22:41:54 -0400 Subject: sub_818D3E4 --- src/battle_dome_cards.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'src') 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; +} -- cgit v1.2.3 From 7e157f202703f75933302d509f8b2bf26cf40655 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Sep 2017 22:49:42 -0400 Subject: Decorate local EWRAM objects in battle_dome_cards.c as EWRAM --- src/battle_dome_cards.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 7eee245ee..f27e1e4fa 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -12,13 +12,13 @@ extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; +extern const union AffineAnimCmd *const gUnknown_082FF618[]; +extern const union AffineAnimCmd *const gUnknown_082FF694[]; extern const union AnimCmd *const gUnknown_082FF70C[]; +extern const union AnimCmd *const *const gUnknown_08309AAC[NUM_SPECIES]; 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 @@ -32,8 +32,8 @@ struct BattleDomeCard { // Static RAM declarations -extern struct BattleDomeCard gUnknown_0203CD04[8]; -extern struct SpriteTemplate gUnknown_0203CCEC; +static EWRAM_DATA struct SpriteTemplate gUnknown_0203CCEC = {}; +EWRAM_DATA struct BattleDomeCard gUnknown_0203CD04[8] = {}; // Static ROM declarations -- cgit v1.2.3 From 6ef3f9dd50a0cb2d8695401d3740407fa73cde9c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Sep 2017 08:13:53 -0400 Subject: sub_818D5B0 --- src/battle_dome_cards.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index f27e1e4fa..a01115a99 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -24,7 +24,7 @@ extern const struct OamData gUnknown_0860B06C; struct BattleDomeCard { u8 *frames; - const struct SpriteFrameImage *images; + struct SpriteFrameImage *images; u16 paletteTag; u8 spriteId; u8 active; @@ -306,3 +306,33 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, gUnknown_0203CD04[i].active = TRUE; return spriteId; } + +u16 sub_818D5B0(u16 spriteId) +{ + u8 i; + u8 *framePics; + struct SpriteFrameImage *images; + + for (i = 0; i < 8; i ++) + { + if (gUnknown_0203CD04[i].spriteId == spriteId) + { + break; + } + } + if (i == 8) + { + return 0xFFFF; + } + framePics = gUnknown_0203CD04[i].frames; + images = gUnknown_0203CD04[i].images; + if (gUnknown_0203CD04[i].paletteTag != 0xFFFF) + { + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); + } + DestroySprite(&gSprites[spriteId]); + Free(framePics); + Free(images); + gUnknown_0203CD04[i] = gUnknown_0860B058; + return 0; +} -- cgit v1.2.3 From ee47fe93778f938ac99be89e24761a46b44b1816 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Sep 2017 08:22:43 -0400 Subject: sub_818D65C --- src/battle_dome_cards.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index a01115a99..b8f0c4ff8 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -2,6 +2,7 @@ // Includes #include "global.h" #include "sprite.h" +#include "window.h" #include "malloc.h" #include "species.h" #include "palette.h" @@ -336,3 +337,13 @@ u16 sub_818D5B0(u16 spriteId) gUnknown_0203CD04[i] = gUnknown_0860B058; return 0; } + +u16 sub_818D65C(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer) +{ + if (sub_818D09C(species, personality, isFrontPic, (void *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) + { + return 0xFFFF; + } + sub_818D180(species, otId, personality, paletteSlot, isTrainer); + return 0; +} -- cgit v1.2.3 From b2b6774efc5d6cd1bf9ca7f9c1c925dfd237428c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Sep 2017 08:32:49 -0400 Subject: sub_818D6CC --- src/battle_dome_cards.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index b8f0c4ff8..4b2e9f41c 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -60,7 +60,7 @@ bool16 dp13_810BB8C(void) return FALSE; } -bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, void *dest, bool8 isTrainer, bool8 ignoreDeoxys) +bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys) { if (!isTrainer) { @@ -101,7 +101,7 @@ bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, v return FALSE; } -bool16 sub_818D09C(u16 species, u32 personality, bool8 isFrontPic, void *dest, bool8 isTrainer) +bool16 sub_818D09C(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer) { return load_pokemon_image_TODO(species, personality, isFrontPic, dest, isTrainer, FALSE); } @@ -340,10 +340,25 @@ u16 sub_818D5B0(u16 spriteId) u16 sub_818D65C(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer) { - if (sub_818D09C(species, personality, isFrontPic, (void *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) + if (sub_818D09C(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) { return 0xFFFF; } sub_818D180(species, otId, personality, paletteSlot, isTrainer); return 0; } + +u16 sub_818D6CC(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId, bool8 isTrainer) +{ + u8 *framePics; + + framePics = Alloc(4 * 0x800); + if (framePics && !sub_818D09C(species, personality, isFrontPic, framePics, isTrainer)) + { + BlitBitmapRectToWindow(windowId, framePics, 0, 0, 0x40, 0x40, destX, destY, 0x40, 0x40); + sub_818D180(species, otId, personality, paletteSlot, isTrainer); + Free(framePics); + return 0; + } + return 0xFFFF; +} -- cgit v1.2.3 From 8634f722905247646305824afd62ebec60810212 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Sep 2017 08:35:27 -0400 Subject: sub_818D778 --- src/battle_dome_cards.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 4b2e9f41c..1e6a98810 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -362,3 +362,8 @@ u16 sub_818D6CC(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 de } return 0xFFFF; } + +u16 sub_818D778(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys) +{ + return oamt_spawn_poke_or_trainer_picture(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys); +} -- cgit v1.2.3 From 057894f3c583f99b4c626181fc86cfc0744c2ea1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Sep 2017 08:36:45 -0400 Subject: sub_818D7D8 --- src/battle_dome_cards.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 1e6a98810..7df33e403 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -367,3 +367,8 @@ u16 sub_818D778(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, { return oamt_spawn_poke_or_trainer_picture(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys); } + +u16 sub_818D7D8(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) +{ + return sub_818D778(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE); +} -- cgit v1.2.3 From 63ff09e806b2f8bd38e50fec7aa7d63367060df4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Sep 2017 08:53:31 -0400 Subject: Nearly finished with battle_dome_cards --- src/battle_dome_cards.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 7df33e403..280eac163 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -20,6 +20,7 @@ extern const union AnimCmd *const *const gUnknown_08309AAC[NUM_SPECIES]; extern const union AnimCmd *const *const gUnknown_0830536C[]; extern const struct OamData gUnknown_0860B064; extern const struct OamData gUnknown_0860B06C; +extern const u8 gUnknown_0831F578[]; // Static type declarations @@ -372,3 +373,52 @@ u16 sub_818D7D8(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, { return sub_818D778(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE); } + +u16 sub_818D820(u16 spriteId) +{ + return sub_818D5B0(spriteId); +} + +u16 sub_818D834(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) +{ + return sub_818D65C(species, otId, personality, isFrontPic, paletteSlot, windowId, FALSE); +} + +u16 sub_818D864(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId) +{ + return sub_818D6CC(species, otId, personality, isFrontPic, destX, destY, paletteSlot, windowId, FALSE); +} + +u16 sub_818D8AC(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) +{ + return sub_818D384(species, 0, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE); +} + +u16 sub_818D8F0(u16 spriteId) +{ + return sub_818D5B0(spriteId); +} + +u16 sub_818D904(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId) +{ + return sub_818D65C(species, 0, 0, isFrontPic, paletteSlot, windowId, TRUE); +} + +u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId) +{ + return sub_818D6CC(species, 0, 0, isFrontPic, destX, destY, paletteSlot, windowId, TRUE); +} + +//u8 sub_818D97C(u8 a0, u8 a1) +//{ +// u8 id; +// if (a1 == 1 && a0) +// { +// id = gUnknown_0831F578[0x3F]; +// } +// else +// { +// id = gUnknown_0831F578[0x3C]; +// } +// return id; +//} -- cgit v1.2.3 From bff89725ec31f87c296ec45f107f81dfe3cd54d6 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 19 Sep 2017 09:46:17 -0400 Subject: Add battle_dome_cards header to expose symbols as needed --- src/battle_dome_cards.c | 64 +++++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index 280eac163..c0557ac70 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -7,6 +7,7 @@ #include "species.h" #include "palette.h" #include "decompress.h" +#include "battle_dome_cards.h" extern const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES]; extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES]; @@ -18,8 +19,6 @@ extern const union AffineAnimCmd *const gUnknown_082FF694[]; extern const union AnimCmd *const gUnknown_082FF70C[]; extern const union AnimCmd *const *const gUnknown_08309AAC[NUM_SPECIES]; extern const union AnimCmd *const *const gUnknown_0830536C[]; -extern const struct OamData gUnknown_0860B064; -extern const struct OamData gUnknown_0860B06C; extern const u8 gUnknown_0831F578[]; // Static type declarations @@ -35,17 +34,23 @@ struct BattleDomeCard { // Static RAM declarations static EWRAM_DATA struct SpriteTemplate gUnknown_0203CCEC = {}; -EWRAM_DATA struct BattleDomeCard gUnknown_0203CD04[8] = {}; +static EWRAM_DATA struct BattleDomeCard gUnknown_0203CD04[8] = {}; // Static ROM declarations // .rodata -extern const struct BattleDomeCard gUnknown_0860B058; +static const struct BattleDomeCard gUnknown_0860B058 = {}; +static const struct OamData gUnknown_0860B064 = { + .size = 3 +}; +static const struct OamData gUnknown_0860B06C = { + .affineMode = 1, .size = 3 +}; // .text -void nullsub_122(struct Sprite *sprite) +static void nullsub_122(struct Sprite *sprite) { } @@ -61,7 +66,7 @@ bool16 dp13_810BB8C(void) return FALSE; } -bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys) +static bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys) { if (!isTrainer) { @@ -102,12 +107,12 @@ bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, u return FALSE; } -bool16 sub_818D09C(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer) +static bool16 sub_818D09C(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer) { return load_pokemon_image_TODO(species, personality, isFrontPic, dest, isTrainer, FALSE); } -void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) +static void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) { if (!isTrainer) { @@ -137,7 +142,7 @@ void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 pal } } -void sub_818D180(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer) +static void sub_818D180(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer) { if (!isTrainer) { @@ -149,7 +154,7 @@ void sub_818D180(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 i } } -void uns_builder_assign_animtable1(bool8 isTrainer) +static void uns_builder_assign_animtable1(bool8 isTrainer) { if (!isTrainer) { @@ -161,7 +166,7 @@ void uns_builder_assign_animtable1(bool8 isTrainer) } } -u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys) +static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys) { u8 i; u8 *framePics; @@ -221,7 +226,7 @@ u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 personality, b return spriteId; } -u16 sub_818D384(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) +static 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); } @@ -309,7 +314,7 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, return spriteId; } -u16 sub_818D5B0(u16 spriteId) +static u16 sub_818D5B0(u16 spriteId) { u8 i; u8 *framePics; @@ -339,7 +344,7 @@ u16 sub_818D5B0(u16 spriteId) return 0; } -u16 sub_818D65C(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer) +static u16 sub_818D65C(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer) { if (sub_818D09C(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) { @@ -349,7 +354,7 @@ u16 sub_818D65C(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 pal return 0; } -u16 sub_818D6CC(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId, bool8 isTrainer) +static u16 sub_818D6CC(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId, bool8 isTrainer) { u8 *framePics; @@ -364,7 +369,7 @@ u16 sub_818D6CC(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 de return 0xFFFF; } -u16 sub_818D778(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys) +static u16 sub_818D778(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys) { return oamt_spawn_poke_or_trainer_picture(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys); } @@ -409,16 +414,17 @@ u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteS return sub_818D6CC(species, 0, 0, isFrontPic, destX, destY, paletteSlot, windowId, TRUE); } -//u8 sub_818D97C(u8 a0, u8 a1) -//{ -// u8 id; -// if (a1 == 1 && a0) -// { -// id = gUnknown_0831F578[0x3F]; -// } -// else -// { -// id = gUnknown_0831F578[0x3C]; -// } -// return id; -//} +u8 sub_818D97C(u8 a0, u8 a1) +{ + if (a1 == 1) + { + switch (a0) + { + default: + return gUnknown_0831F578[0x3F]; + case 0: + return gUnknown_0831F578[0x3C]; + } + } + return a0; +} -- cgit v1.2.3