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.

22 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.

5 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

Hey. Out of curiosity, whenever this ASM is ready, would you consider making a version that has the Guide only in the Map view menu, so that it’s compatible with Huichelaar’s Augury ASM?

I’m trying to install this but I got this error:

File: QuintessenceEffect.event, Line: 9: File QuintessenceEffect.lyn.event not found.

image
In the folder only are these two files, the lyn file is missing

I think you need an AssembleLynEvent.bat file. You can find many of them in the SkillSystem Buildfile. You should copy it into the folder, and then execute it.

1 Like

I’ve been pushing only the source files to my repo (so nothing compiled, for example the lyn events). But you can also check out the Releases – most recently, v0.0.1-20240225 – which will contain the released version of each of the hacks with all of the compiled artifacts included :slight_smile:

2 Likes

that’s great, I tried to install it in my hack, and it now works, I love your work please continue with it

3 Likes

Hello! Excuse me asking about your prep screen guide hack from a few months ago. I’m trying to implement it independently but my naive approach ran into difficulty clearing the prep screen graphics on opening the guide and returning to the prep screen on closing the guide.

This probably occurs because I have that prep screen option call the vanilla function MapMenu_GuideCommand. I shouldn’t need a full installer if you don’t have your build ready yet, but if you could tell me what steps you took to get the guide effect working that would be greatly appreciated.

Thank you very much!