Eebit's Code and Hacks

Hi there, I’m Eebit! This is a thread that will contain things that I’ve made.

I’ve created a GitHub repository where I’ll store my stuff as well. Thanks a lot to Nat for making it super easy to set up a build system!

Progression-based title screen BGM

Details

This hack allows you to set the title screen BGM based on a permanent flag being set in any save file.

Right now, the base behaviour is that it will check each save file for the following permanent flags (which can be extended in TitleBgmByFlag-Data.c).

It stops searching save files/flags when it finds the first flag in any file that matches in this order:

  • 0xB4 (“Guide - Viewing Units”) - Sets title BGM to song ID 0x06 “Grim Journey”
  • 0xE1 (“Guide - Save”) - Sets title BGM to song ID 0x05 “Treasured Memories”

If no save file has any of the listed flags set, it’ll default to song ID 0x43 (default title screen music).

I should also note that currently, this doesn’t change anything about the “extended” title song that plays when the opening intro animation is finished.

7743 has graciously made this into an FEBuilder patch with an editor, which makes it much more accessible for those using FEBuilder. Search for “Change the BGM on the title screen with a flag” in the patches list:

Screenshot of the FEBuilder patch

Multiple Map Anim Transformations

305x205

Details

Originally requested by Alice: Is there a way to have multiple classes that transform with battle anims off? - #2 by Eebit

With this hack, you can define a list of entries in the following data format:

Multi Transform List Entry:
    +0 | byte | item ID that will trigger transformation
    +1 | byte | class ID that will trigger transformation (use 0 for any class)
    +2 | byte | class ID to transform into
    +3 | byte | padding
    +4 | word | pointer to palette for the moving map sprite

For example, if I define the data in the following format:

#define ManimTransformEnt(itemId, sourceClassId, displayClassId, palette) "BYTE itemId; BYTE sourceClassId; BYTE displayClassId; BYTE 0; WORD palette"

#define AnyClass 0x00

gMultiTransformManimList:
    ManimTransformEnt(Dragonstone, Manakete_2_F, Manakete, 0x089A8F74)
    ManimTransformEnt(Rapier, EirikaLord, Bael, 0x0859EEA0)
    ManimTransformEnt(SteelLance, AnyClass, DracoZombie, 0x0859EEA0)
    ManimTransformEnt(-1, 0, 0, 0)
  • A unit with Myrrh’s vanilla class wielding a Dragonstone will transform into class 0xE (as in vanilla)
  • A unit with Eirika’s Lord class wielding a Rapier will transform into the Bael class with the Link Arena palette
  • A unit with any class wielding the Steel Lance will transform into the Draco Zombie class with the Link Arena palette

FE7 Quintessence Stealing Effect

mGBA_hBCLtRaBlU

Details

I finished decompiling the quintessence harvesting effect for the FE7J decompilation by @Mokha, and ported it over to FE8U. :slight_smile:

This is the event script for the GIF attached, which mostly approximates Lloyd’s death cutscene in FE7 Chapter 23:

ASMC StartQuintessenceStealEffect
STAL 32
ASMC ArchiveCurrentPalettes // (FE8U:0x080134D4)
SOUN 0x125 // Nosferatu steal SE -> can be replaced with FE7 sound effect
ASMC FE7J_EventE5_Sim_Type_A
ASMC FE7J_EventE5_Sim_Type_B
ASMC FE7J_EventE5_Sim_Type_A
ASMC FE7J_EventE5_Sim_Type_B
ASMC fe7j_sub_80121FC // Wrapper for WriteFadedPaletteFromArchive (FE8U:0x08013550)
ASMC QuintessenceFx_Goto_C
STAL 16
ASMC EndQuintessenceStealEffect

There are a couple minor inconsistencies that I’m hoping to iron out eventually. For example, the map sprites blink red (which I don’t believe happens in FE7), and the sine wave effect isn’t a 100% match to the original FE7 function. It’s close enough that it shouldn’t make a huge difference, however.

19 Likes

2 posts were split to a new topic: Light Rune Duration

FE7 Quintessence Stealing Effect

mGBA_hBCLtRaBlU

Details

I finished decompiling the quintessence harvesting effect for the FE7J decompilation by @Mokha, and ported it over to FE8U. :slight_smile:

This is the event script for the GIF attached, which mostly approximates Lloyd’s death cutscene in FE7 Chapter 23:

ASMC StartQuintessenceStealEffect
STAL 32
ASMC ArchiveCurrentPalettes // (FE8U:0x080134D4)
SOUN 0x125 // Nosferatu steal SE -> can be replaced with FE7 sound effect
ASMC FE7J_EventE5_Sim_Type_A
ASMC FE7J_EventE5_Sim_Type_B
ASMC FE7J_EventE5_Sim_Type_A
ASMC FE7J_EventE5_Sim_Type_B
ASMC fe7j_sub_80121FC // Wrapper for WriteFadedPaletteFromArchive (FE8U:0x08013550)
ASMC QuintessenceFx_Goto_C
STAL 16
ASMC EndQuintessenceStealEffect

There are a couple minor inconsistencies that I’m hoping to iron out eventually. For example, the map sprites blink red (which I don’t believe happens in FE7), and the sine wave effect isn’t a 100% match to the original FE7 function. It’s close enough that it shouldn’t make a huge difference, however.

11 Likes

Now I only hope that you someday find the animation of the Dragon Gate and implement it on FE8

1 Like

Could you show an example gif of what this does?
image

Or is it still a WIP?

Oh, yeah, sure! It’s still a work in progress for now. The goal of it is to make the “Guide” functionality available on the prep screen, both on the main menu and the map menu:

Prep Screen Guide

mGBA_TM2G4Qh1sM

Credits go to Huichelaar for the TSA / sprite-moving instructions used on the main screen – I borrowed those from his FE8 Preparations Augury hack.

It’s not quite ready for release because the installer unfortunately doesn’t quite work independently yet. I added some custom text entries and I’ll need to rethink my build structure a bit to make this releasable as a standalone thing.

3 Likes

Looks very cool! I think it would be great if you also made a version that was just on the map menu so that you could use this in conjuction with Augury