Some minor modifications suitable for porting to other people’s games may be shown here. Mainly write in C, C-Lib is called as decomp-based include files.
This hack enables you to get any number of hit counts to show on Battle-Forcast window.
BkSelExpansion.event and you will make it.
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.
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.
Hack on Skill Anime Effect
Reset the Bg config to null the semi-transparency effect.
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.
Eyes blink in Weapon-Selection
// Portrait's eye will wink ORG $22C0A SHORT 0 0 ORG $005EA8 SHORT 0 0
Reworked on promotin routinue to allow diy on promotion list. Now you can freely decide the promotion list based on character index, class index and item index. Since this patch does not involve the item system rework, if you want to use non-promotion items to promote characters, you will also need other patches such as IER.
PromotionRework.event and then you will get it. For custom usage, define your own usr-function
const u8 *GetUnitPromoList(u8 charId, u8 classId, u8 itemId), I have made an example.
A Map Anime Effect
A DIY map anime, just like Debuff-Status-Clear-Routine.
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
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.