Write at the beginning
Hello everyone, this is Mokha.
As I restarted the plan on GBA remake on FE-TH, I feel increasingly constrained in areas outside of my expertise, such as inspiration, design, and artwork. As far as I know, this is a common phenomenon for GBAFE hacker with no quite good solution. But I think there may be more valuable exchanges to achieve a more complete project.
Bounty Hunter Related
What I can offer:
- ASM/CHAX program modifications
- Custom modifications for ASM-based skill systems (preferably based on the 20220703 version) or CSkillSys
- Unique battle animation effects functionality development
- Miscellaneous support, including event scripting and asset import issues
- Security and other related support
What I hope to receive:
- Battle animations
- Portraits
- Sprites
- Music
- CGs
- Maps and design for battle maps
- World map gfx
As my current goal is GBA remake of Fire Emblem: Three Houses, assets related to that game for GBAFE development will be prioritized. Materials related to Fire Emblem: Engage are also welcome.
Cash is also okay if you’re willing to pay. :>
If you have functional development requirements, or interested on involved in project on GBA remake of Three Houses or just some ideas, feel free to contact me on Discord: @mokha.li
All for FE8U.
Some minor modifications suitable for porting to other people’s games may be shown here. Mainly write in C.
Repo in github see here (which is just working-in-process)
New Decomp-based C-Hack Template
Modern c-skillsystem
Battle Forcast Hit-Counts Hack
BkSel Expansion
This hack enables you to get any number of hit counts to show on Battle-Forcast window.
Just include BkSelExpansion.event
and you will make it.
Unit Status Rework
Expand Unit Status to 63 index
In vanilla, unit status (buff & debuffs) use a u8 byte at Unit Struct +0x30
, 4 bits for status-index, 4 bits for status-duration. In this work, we have expanded unit status index to 6 bits, which can support up to 63 different states simultaneously. Meanwhile, through a series of modifications, we successfully used the remaining 2 bits to make the status last for up to 4 turns.
Null BWL
Remove the total BWL Table entry
BWL Table, or Battle & Win & Lose table, a ram-space as large as 0x460 size that can be saved and loaded in save & suspand data.
The data has no meaning to the game experience, but it can provide a 0x460 saveable data for hackers as a free-ram-space.
Previously @StanH has worked Brif-Bwl
in Skills-Lite, in this work, we completely shielded this area from all read and write operations except save-data operations, making it a free-ram-space that can store data freely.
Ekr Skill Activate Anime Hack
Hack on Skill Anime Effect
Reset the Bg config to null the semi-transparency effect.
Vanilla:
Hack:
Costum Game Intro Gfx
H&S Screen Rework
DIY on H&S Screen. You could just include GameStartScreen.event
and get it. For your own gfx, replace the file Data/GameIntro.4bpp.lz
with a LZ77 compressed Png2Dmp file.
Weapon Selection routine’s Eyes Blink
Eyes blink in Weapon-Selection
// Portrait's eye will wink
ORG $22C0A
SHORT 0 0
ORG $005EA8
SHORT 0 0
Update
Added more blinking routines by genius @7743
//for FE8U
PUSH
ORG 0x05EA8
BYTE 0x00 0x00 0x00 0x00
ORG 0x1E0CC //HandleNewItemGetFromDrop
BYTE 0x00
ORG 0x22BB2 //?
BYTE 0x00
ORG 0x22C08 //AttackCommandEffect_DrawFace
BYTE 0x00
ORG 0x2326E //PlayOrDanceCommandEffect
BYTE 0x00
ORG 0x23324 //ItemCommandEffect
BYTE 0x00
ORG 0x23582 //ItemMenu
BYTE 0x00
ORG 0x2361A //?
BYTE 0x00
ORG 0x23B06 //StaffCommandEffect
BYTE 0x00
ORG 0x2999E //HammerneTargetSelection_OnSelect
BYTE 0x00
ORG 0x2D802 //TradeMenu 1
BYTE 0x00
ORG 0x2D80A //TradeMenu 2
BYTE 0x00
POP
//for FE8J
PUSH
ORG 0x05DAC
BYTE 0x00 0x00 0x00 0x00
ORG 0x1DD28
BYTE 0x00
ORG 0x22B7A
BYTE 0x00
ORG 0x22BD0
BYTE 0x00
ORG 0x23236
BYTE 0x00
ORG 0x232EC
BYTE 0x00
ORG 0x23546
BYTE 0x00
ORG 0x235DE
BYTE 0x00
ORG 0x23ACA
BYTE 0x00
ORG 0x2992A
BYTE 0x00
ORG 0x2D73A
BYTE 0x00
ORG 0x2D742
BYTE 0x00
POP
Map Anime Effect: Gravity
A Map Anime Effect
A DIY map anime, just like Debuff-Status-Clear-Routine.
Just include MapAnimesInstaller.event
, then call for function void StartMapAnim_Gravity(struct Unit* unit, ProcPtr proc)
, then it will start a child blocking proc to show anime effect.
Due to the default of the program, the target character exists in the current screen, so there is no effect of moving the camera. If not, you can either move the camera over before calling the function, or delete the comment on line 41 in Gravity/Gravity.c
Replace “a” or “an” to space
Function: PrependArticleToString rework
For now, replace “a” patch is just delete the character, this patch has rewrite function void PrependArticleToString(char *str, const char *insert_str, s8 c)
so that we can replace “a” to a space.
Just include “RemoveA.lyn.event” and then you will make it. Don’t forget define your own FreeSpace
since this is just a c-generated file.
Change Weapon During Target-Select
[details = TargetSelect Proc Rework]
Download Here
A interesting rework on SelectTargetProc
so that we can change weapon during target-selection.
Now Up & Down botton will change the target, meanwhile Left & Right
button could make you change another weapon to attack. If you don’t have any other weapons to attack current target, then the Left & Right will function as vanilla to try change target.
- Note
This patch does not considering Weapon-Range Rework! If you have already worked on Weapon Range such as apply ProperRangeGetter or WeaponRangeRework, you need rewrite the following functions in the fileSrc/NewTargetSelect.c
: IsItemCoveringRange and GetItemReachBits.
[/details]
Unit Debuff Banim Flashing Rework
[details = DIY your own flashing effect for debuff]
A patch that allows you to customize the debuff flashing effect on unit during battle.
Download Here
Usage:
Include file EfxStatusUnitRework.event and define your own debuff flashing effect in EfxUnitDebuffPalConfigTable
, which you may define the flash R/G/B color and the flashing speed.
The R/G/B effect is recommended ranging from 0 to 0x10, the higher value may result in a more pronounced flashing.
The speed range from 0 to 3, in which 0 will not change the color, 1 is the slow speed, 2 is the vanilla, and 3 may flash fast.
This patch is not conflict to any existing patch since the unit debuff index is not directly caught from unit struct, so don’t worry.
[/details]
Banim Command Expansion
see here: #18
[details = C0E/C0F (flashing screen)]
[/details]
[details = C16/C17 (Call DK)]
[/details]
[details = C53/C54/C55 (Call Dumma)]
[/details]
ClassChg expansion
[details = expand promotion list]
Download here
a rework of Old promotion expansion, enable unit promote to no more than 6 classes.
1. Custom Usage
1.1. Vanilla table
Vanilla table of 2 selectable classes has been retained. You can also config on old table to diy branched promotion classes.
1.2. Expansion
At the same time, there are two list for promotion expansion:
gPromoJidLutExpa
A0x100 * 4
linear table according to class index.
You can config 4 additional class to promote.You can also config this table by FEBuilder’s patch, ./patches/PATCH_ClassChgExpandList.txtgClassChgExpaMods
A table for promotion with higher degrees of freedom. A unit can promote toClassChgExpaMod::jid_promo
if:
- The configed class index is matched
- The configed character index is matched
- The configed item is used for promotion
- The configed event flag is set
You can config this table by FEBuilder’s patch, ./patches/PATCH_ClassChgExpandModulearList.txt
1.3. Trainees
As for auto-promotion for trainee class, there is also a reworked table for configuration. gpTraineesRe
, with two element jid
and level
.
You can also config this table by FEBuilder’s patch, ./patches/PATCH_ClassChgExpandTrainee.txt
Custom Build
If you want to modify on source code, please refer to CHAX template, note that the C-Lib use the ver.2023.07.31.
You can also write your own jid-getter function and add the function to the list gGetClasschgListFuncs.
/**
* r0: unit struct
* r1: protion item
* r2: out buffer
* r3: length of the out-buffer, DO NOT overflow!
*
* return: amount of the classes to promote
*/
typedef int (* GetClasschgListFunc_t)(struct Unit * unit, u16 item, u8 * out, int len);
extern const GetClasschgListFunc_t gGetClasschgListFuncs[];
Note that this patch has been embedded to the latest version of SkillSystem , you can directly use the FEB patches without installing for skillsys users.
[/details]
FE6 style StatScreenfx
[details = StatScreen UI]
fe8_hacks_sundries/wizardry/StatScreenfx at main · MokhaLeee/fe8_hacks_sundries (github.com)
Just as the image, let FE8U statscreen display in FE6 style.
This patch has no conflict to SkillSystem, you can directly use this patch to your skillsystem with no worry.
[/details]
No wait after trade
[details = PreAction hack]
Unit may not wait after trade with unit nor supply.
Download here
In vanilla, if unit has traded with somebody, he can handle other action freely but can only wait if player want to control other units. You can get more details here . This taken action is saved in gBmSt + 0x3D
, and may casue wait during pre-action handler PlayerPhase_PrepareAction
. This patch hacked such function and handle on actions before that handler in modular.
[/details]
Dummy Spell anim fix
[details = fix spell anim]
Download Here
Suppose you set Rapier’s range as 1-2 without configuration on SpellAssoc::efx
, you may got a problematic animation as a result that dummy efxmagic does not deal the hitted anim properly. This patch fixed on dummy spell anim as below:
vanilla →
fixed →
[/details]
FE7 style thunder bmfx
[details = new bmfx]
Download here
Port form FE7 event thunder fx to FE8U with API bmbgfx , event script is intergrated, you may save the target character index to slot2 and directly call for event EventScr_CallThunderfx
Example
SVAL 2 Riev
CALL EventScr_CallThunderfx
[/details]
FE7 style SpawnAssassinfx
[details = new bmfx]
Download here
Usage (see here )
SVAL 3 0x6 // [slot3] = x
SVAL 4 0x8 // [slot4] = y
ASMC CallEvent_SpawnAssassinfx
STAL 1
Port from FE7, you can also directly load an Assassin after call for such bmfx just as what it did in FE7
[/details]
Custom Openning Anim
[details = Display opanim like a skillanim]
Download here
[GBA火纹修改] 自定义开场动画效果展示 (bilibili.com)
Purly display images without any sounds (just like a gif).
The data is organized in the same way as skillanim, so You can directly generate your own anim script via Skill Animation Creator , note to ensure that the graphics hold size=256*160
with palette=16
.
But be aware that a large number of images will take up a lot of space, so be sure to pay attention to overflow at any time.
[/details]