This is where I will put any assets that I make.
These are free to use and modify with appropriate credits.
Acceptable credits include: “SageMatthis”, “EgalLau37”, or “SageMatthis/EgalLau37”.
These are for FE7.
ASM:
I wrote all of these from scratch (unless otherwise specified).
A set of instructions for how to use these is included in the download.
Download link
Extra character info page
This adds an extra page to the unit R-menu. This is similar to “Personal Info Page” by Runa (Runa Does an ASM).
The differences are that this version has an extra line for “Affiliation”, also allows for a quote, and has built-in conditions for faction and flags. The page also is always displayed but will display blank information for units without any texts assigned to it.
Expanded weapon abilities
This changes how the game interprets various weapon abilities (bytes 0x8~0xB, 0x1F) and splits various abilities into different flags.
The following is a break-down of weapon abilities with this installed; a “->” denotes a change from original to new:
field 1:
01 - equippable
02 - magic
04 - staff
08 - unbreakable
10 - unsellable/undroppable → unsellable
20 - brave
40 - magic weapon/no weapon EXP
80 - uncounterable/force long-range/decrement durability on miss → uncounterable
field 2:
01 - reverse triangle/double triangle effects → reverse triangle
02 - disable hammerne
04 - manakete lock/do not display stats
08 - weapon lock → cannot drop
10 - myrmidon-swordmaster lock → unused
20 - prf
40 - negate fly effectiveness
80 - negate criticals
field 3:
01 - unuseable
02 - negate def/res
04 - eliwood lock → nosferatu
08 - hector lock → eclipse
10 - lyn lock → apocalypse
20 - athos lock → devil
40 - unknown/unused → imhullu
80 - unknown/unused → starlight
field 4:
01 - unknown/unused → ignore triangle
02 - unknown/unused → double triangle effects
04 - unknown/unused → cannot critical
08 - unknown/unused → cannot double
10 - unknown/unused → cannot be doubled
20 - unknown/unused → force short-range
40 - unknown/unused → force long-range
80 - unknown/unused → decrement durability on miss
Byte 0x1F is now only used for determining whether the weapon inflicts poison.
If both Apocalypse and Eclipse are enabled, damage dealt will be equal to the target’s current HP.
Custom army status
This command is called “Fortune” in battle preparations by default.
This hack makes the “Reading” and “Rank” sub-menu commands read from a table rather than checking a specific portrait ID in chapter data. The Lyn-mode restriction has also been removed.
Force ranged animation
This hack changes the hardcoding for forcing ranged animation to instead read from a list of weapons that should force a unit to use ranged animations, even at 1-range.
Weapon type override
This hack changes the hardcoding for specific weapons to use a different weapon type depending on the range (Light brand is Light at range but Sword at melee) to instead read from a table to determine whether a weapon should use a different type, when this alternate typing should be used, and what type of damage should be dealt (magical versus physical).
Negate special effects
This changes character ability 0x8 at field 4 to “negate Luna, Eclipse, and Apocalypse”. Requires the expanded weapon abilities to work in its current form. Luna will not set target def/res to 0, and Eclipse and Apocalypse will deal damage as if they were standard weapons.
Per affinity texts
This hack adds a routine to the R-button help description for affinity. Each affinity will instead display a different text ID rather than a generic help description.
AI cannot steal
This hack adds an extra check to the AI steal check. If flag 0x80 in AI4 is set, the AI unit will not steal. Useful for bosses that have the steal ability that are intended to guard a specific tile.
Casual mode option
This hack adds coding for a menu option for casual mode. A hack that adds casual mode is required for this menu option to have any gameplay effect. The option ID is 0x10.
Unit conditional texts
This hack adds code to allow a unit to display an alternate name and description if certain conditions are met. If a text ID is not specified, the default text ID will be used instead.
Conditions include: chapter ID, faction, class, mode, flags, and allows use of a custom ASM check routine.
Custom level cap
This hack makes the level cap be based on a table on a per-class basis. I recall seeing this hack somewhere many years ago but decided to just write my own. It should function the same as that one.
Custom unit palettes
This hack adds code to allow unique palettes for specific units, including palettes for map sprites, HP boxes, map battle stats, and battle forecast. I recall seeing something similar years ago, and the idea for this hack came from that. Not sure if this is the original one I saw, but the filenames look fairly similar to what I saw in the past: Spooky ASM .
The differences include optional conditionals for each palette and the ability to assign an already-existing map sprite palette as a custom sprite color to avoid using the extra map sprite palette if that unit should just use the default map sprite palette for its faction.
Another tweak/fix included with this hack is that Wall/Snag uses the other/fourth palette for map battle stats instead of the player/ally palette.
Conditions include: faction, flag, and allows for custom ASM check routine.
Custom army commander
This hack allows specification of a unit to be designated as the army commander on a per-chapter basis. This affects the status screen and auto-cursor.
Summary
[This text will be hidden]
Tequila fixed the cloud background with regards to the black box in the center and compatibility with HP bars for FE8: ([BUG] Mod: MAP HP Bars + Weather Condition 0x7). I have made an FE7 port of it:
CloudFixFE7.zip - Google Drive
These are for FE8.
ASM:
Invert evbit 0x7 behavior
This inverts the effects of the evbit 0x7 behavior. EVBIT_T 0x7 instead causes the game to fade after an event rather than prevent it.
In a clean FE8 ROM, write 0x40 at 0x592150.
ORG 0x592150 //inverts evbit 7 check
BYTE 0x40
For other effects, the following can be written:
ORG 0x592150
BYTE 0x41 //default value
ORG 0x592150
BYTE 0x45 //always fades, regardless of value
ORG 0x592150
BYTE 0x40
ORG 0x592154
BYTE 0xD //never fades, regardless of value
Just copy-and paste one of the above blocks into a .txt file to insert with Event Assembler/Buildfiles or manually write the appropriate value(s) at the address(es) using a hex editor.
Expanded arena weapons list
By default, the arena weapon list only has up to three weapons per weapon type, with Light magic only having 2 entries and Dark magic having just one. Simply repointing will not successfully increase the number of weapons in the arena weapon list due to how the game copies the list to RAM, then reads from there instead. The following can be used to increase how many weapons are available for enemies in the arena.
PUSH
//FE8 expanded arena weapon list
ORG 0x3181C
BYTE 0x9 //highest weapon ID for weapons (09 = item)
ORG 0x31830
BYTE 0x6 //number of weapon upgrades permissible, default 4
//number of arena weapons to copy, = 1+0x8*(weapons per type+1)
//[terminator]+[number of weapon types]*(weapons per type + [separator])
ORG 0x31BCC
BYTE 0x29 //(0x4+0x1)*0x8+1 = 0x29
ORG 0x31BD8
POIN ArenaWeaponList
ORG 0x31BC2
SHORT 0xB090
ORG 0x31C08
SHORT 0xB010
POP
PUSH
//FE7 expanded arena weapon list
ORG 0x2EA28 //highest weapon ID for weapons (09 = items)
BYTE 0x9
ORG 0x2EA3C
BYTE 0x6 //number of weapon upgrades permissible, default 4
//number of arena weapons to copy, = 1+0x8*(weapons per type+1)
//[terminator]+[number of weapon types]*(weapons per type + [separator])
ORG 0x2EDD0
BYTE 0x29 //(0x4+0x1)*0x8+1 = 0x29
ORG 0x2EDDC
POIN ArenaWeaponList
ORG 0x2EDC6
SHORT 0xB090
ORG 0x2EE0A
SHORT 0xB010
POP
Changing the code to just read from the actual table rather than the copied table might also work, though I have yet to test that.