mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-04-28 11:17:13 -05:00
Fixes for Mirage Tower graphics (#2120)
* Add documentation for CreateCeilingCrumbleSprites * Combine mirage tower graphics * Add comment about mirage tower / player palette
This commit is contained in:
parent
709cfa1c9a
commit
f11bddf854
Binary file not shown.
|
Before Width: | Height: | Size: 904 B After Width: | Height: | Size: 935 B |
|
|
@ -315,6 +315,9 @@ graphics/pokenav/region_map/map.8bpp: %.8bpp: %.png
|
||||||
$(MISCGFXDIR)/japanese_hof.4bpp: %.4bpp: %.png
|
$(MISCGFXDIR)/japanese_hof.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 29 -Wnum_tiles
|
$(GFX) $< $@ -num_tiles 29 -Wnum_tiles
|
||||||
|
|
||||||
|
$(MISCGFXDIR)/mirage_tower.4bpp: %.4bpp: %.png
|
||||||
|
$(GFX) $< $@ -num_tiles 73 -Wnum_tiles
|
||||||
|
|
||||||
$(BATINTGFXDIR)/textbox.gbapal: $(BATINTGFXDIR)/textbox_0.gbapal \
|
$(BATINTGFXDIR)/textbox.gbapal: $(BATINTGFXDIR)/textbox_0.gbapal \
|
||||||
$(BATINTGFXDIR)/textbox_1.gbapal
|
$(BATINTGFXDIR)/textbox_1.gbapal
|
||||||
@cat $^ >$@
|
@cat $^ >$@
|
||||||
|
|
|
||||||
|
|
@ -56,12 +56,9 @@ struct FallAnim_Fossil
|
||||||
|
|
||||||
#define TAG_CEILING_CRUMBLE 4000
|
#define TAG_CEILING_CRUMBLE 4000
|
||||||
|
|
||||||
#define MIRAGE_TOWER_GFX_LENGTH (sizeof(sBlankTile_Gfx) + sizeof(sMirageTower_Gfx))
|
#define MIRAGE_TOWER_GFX_LENGTH (sizeof(sMirageTower_Gfx))
|
||||||
#define FOSSIL_DISINTEGRATE_LENGTH 0x100
|
#define FOSSIL_DISINTEGRATE_LENGTH 0x100
|
||||||
|
|
||||||
static const struct SpriteSheet sCeilingCrumbleSpriteSheets[];
|
|
||||||
static const s16 sCeilingCrumblePositions[][3];
|
|
||||||
|
|
||||||
static void PlayerDescendMirageTower(u8);
|
static void PlayerDescendMirageTower(u8);
|
||||||
static void DoScreenShake(u8);
|
static void DoScreenShake(u8);
|
||||||
static void IncrementCeilingCrumbleFinishedCount(void);
|
static void IncrementCeilingCrumbleFinishedCount(void);
|
||||||
|
|
@ -75,8 +72,7 @@ static void Task_FossilFallAndSink(u8);
|
||||||
static void SpriteCB_FallingFossil(struct Sprite *);
|
static void SpriteCB_FallingFossil(struct Sprite *);
|
||||||
static void UpdateDisintegrationEffect(u8 *, u16, u8, u8, u8);
|
static void UpdateDisintegrationEffect(u8 *, u16, u8, u8, u8);
|
||||||
|
|
||||||
static const u8 ALIGNED(2) sBlankTile_Gfx[32] = {0};
|
static const ALIGNED(2) u8 sMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
|
||||||
static const u8 sMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
|
|
||||||
static const u16 sMirageTowerTilemap[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
|
static const u16 sMirageTowerTilemap[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
|
||||||
static const u16 sFossil_Pal[] = INCBIN_U16("graphics/object_events/pics/misc/fossil.gbapal"); // Unused
|
static const u16 sFossil_Pal[] = INCBIN_U16("graphics/object_events/pics/misc/fossil.gbapal"); // Unused
|
||||||
static const u8 sFossil_Gfx[] = INCBIN_U8("graphics/object_events/pics/misc/fossil.4bpp"); // Duplicate of gObjectEventPic_Fossil
|
static const u8 sFossil_Gfx[] = INCBIN_U8("graphics/object_events/pics/misc/fossil.4bpp"); // Duplicate of gObjectEventPic_Fossil
|
||||||
|
|
@ -445,38 +441,47 @@ static void FinishCeilingCrumbleTask(u8 taskId)
|
||||||
ScriptContext_Enable();
|
ScriptContext_Enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define sIndex data[0]
|
||||||
|
#define sYOffset data[1]
|
||||||
|
|
||||||
static void CreateCeilingCrumbleSprites(void)
|
static void CreateCeilingCrumbleSprites(void)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
u8 spriteId;
|
u8 spriteId;
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < ARRAY_COUNT(sCeilingCrumblePositions); i++)
|
||||||
{
|
{
|
||||||
spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleLarge, sCeilingCrumblePositions[i][0] + 120, sCeilingCrumblePositions[i][1], 8);
|
spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleLarge, sCeilingCrumblePositions[i][0] + 120, sCeilingCrumblePositions[i][1], 8);
|
||||||
gSprites[spriteId].oam.priority = 0;
|
gSprites[spriteId].oam.priority = 0;
|
||||||
gSprites[spriteId].oam.paletteNum = 0;
|
// These sprites use color index 11 from the player's sprite palette. This probably wasn't intentional.
|
||||||
gSprites[spriteId].data[0] = i;
|
// The palettes for Brendan and May have different shades of green at this index, so the color of these sprites changes
|
||||||
|
// depending on the player's gender (and neither shade of green particularly fits a crumbling yellow/brown ceiling).
|
||||||
|
gSprites[spriteId].oam.paletteNum = PALSLOT_PLAYER;
|
||||||
|
gSprites[spriteId].sIndex = i;
|
||||||
}
|
}
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < ARRAY_COUNT(sCeilingCrumblePositions); i++)
|
||||||
{
|
{
|
||||||
spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleSmall, sCeilingCrumblePositions[i][0] + 115, sCeilingCrumblePositions[i][1] - 3, 8);
|
spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleSmall, sCeilingCrumblePositions[i][0] + 115, sCeilingCrumblePositions[i][1] - 3, 8);
|
||||||
gSprites[spriteId].oam.priority = 0;
|
gSprites[spriteId].oam.priority = 0;
|
||||||
gSprites[spriteId].oam.paletteNum = 0;
|
gSprites[spriteId].oam.paletteNum = PALSLOT_PLAYER;
|
||||||
gSprites[spriteId].data[0] = i;
|
gSprites[spriteId].sIndex = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SpriteCB_CeilingCrumble(struct Sprite *sprite)
|
static void SpriteCB_CeilingCrumble(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->data[1] += 2;
|
sprite->sYOffset += 2;
|
||||||
sprite->y2 = sprite->data[1] / 2;
|
sprite->y2 = sprite->sYOffset / 2;
|
||||||
if(((sprite->y) + (sprite->y2)) > sCeilingCrumblePositions[sprite->data[0]][2])
|
if ((sprite->y + sprite->y2) > sCeilingCrumblePositions[sprite->sIndex][2])
|
||||||
{
|
{
|
||||||
DestroySprite(sprite);
|
DestroySprite(sprite);
|
||||||
IncrementCeilingCrumbleFinishedCount();
|
IncrementCeilingCrumbleFinishedCount();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef sIndex
|
||||||
|
#undef sYOffset
|
||||||
|
|
||||||
static void SetInvisibleMirageTowerMetatiles(void)
|
static void SetInvisibleMirageTowerMetatiles(void)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
@ -543,7 +548,7 @@ static void InitMirageTowerShake(u8 taskId)
|
||||||
gTasks[taskId].tState++;
|
gTasks[taskId].tState++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
CpuSet(sBlankTile_Gfx, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH / 2);
|
CpuSet(sMirageTower_Gfx, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH / 2);
|
||||||
LoadBgTiles(0, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH, 0);
|
LoadBgTiles(0, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||||
gTasks[taskId].tState++;
|
gTasks[taskId].tState++;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user