Item Storage without Merlinus

Item storage in FE7:
To access storage during battle, unit must be adjacent to unit with character ID 0x28 (Merlinus)
To access storage during battle preparations or send an item to storage when inventory is full, the player needs to have a character with class/character ability 2 set to 0x02 (supply depot). The supply depot ability has side effects such as hiding the unit in the unit selection screen and disabling the trade command.


Change character associated with storage access during battle. Allow that character to access their own storage:

022D5A : change 28 to ID of desired character.
079D9E : change 28 to ID of desired character.

022D6A : change 1F D1 to 00 00
Remove a check that prevents storage unit from accessing own storage.

022D94 : change 08 D0 to 08 DD
Normally, units must be 1 space away from the storage unit (adjacent) in order to access storage. This changes the distance requirement to 0-1 spaces so the storage unit can use storage.


Always allow storage to be accessed during battle preparations:

08EF26 : change 03 D1 to 03 E0
Causes the “look for character with supply depot ability” check to always return true.


Always allow items to be sent to storage when inventory is full:

02E848 : change 04 D0 to 00 00
Causes the “look for character with supply depot ability” check to always return true.


Thanks:
Nintenlord’s notes on Merlinus: Nintenlord's Utilities
Crazycolorz5’s topic: [FE8] Unit Menu Options: [FE7, FE8] Unit Menu Options

8 Likes

Finally! No more crappy Merlinus-replacement characters!

This cool but wouldn’t it be better to change the supply depot ability to be functional like this? Setting your depot characters by setting an ability but seems more user friendly then changing game code. Just saying but still really cool

Yeah, I agree that it isn’t the most elegant solution. I mainly wanted to show something that worked since I know FE7’s “unique” storage system can be a hassle for hack designers.

Assigning the “storage in battle prep” and “send item when inventory full” effects to another ability number should be easy. I guess there is also the option of trying to remove supply depot’s toxic side effects, but it might be better to leave that ability alone and let it exist for “Merlinus style deployment”

It is kind of annoying that the game uses a hard-coded character instead of an ability check for the in-battle storage access. Could I change it? At my current skill level? Umm… maybe?

You could theoretically NOP the effects you don’t want and replace the character check with a check for the bit. I’m guessing the character check goes like
Loop:
ldr r0, [r0]
ldrb r0,[r0,#4]
cmp r0,#0x28
beq Supply
b Loop
With r0 being character pointer so just load and compare supply bit instead. You could ask me or Crazycolours if you need help :slight_smile:

Edit: lol talk about bad coding, the routine that check for Merlinus bl’s to that mov r0, #0x28 and bx’s back you could replace the lb with 2 functional opcodes

But it also helps to have the trade disabling, so I don’t recommend changing the functionality of the “Supply Depot” ability.

You could keep what you want y’know :confused:
Or you could make it a separate ability :wink:

1 Like

That’d be slick for the FireShell.

Fire Shell has enough free bits so I don’t see why not

holy shit Gryz I love you, you came and solve nearly all my healing merchants problems.

Hey guys, about this…Is there a Way to make merlinus access its own storage? or use items? Because i have a little issue, i used icecube Branched promotion patch, and when Merlinus promotes on lvl 20, the game stops…So, i need him to promote earlier, or disable the autopromotion on lvl 20…or i dont know…

Now, mixing some of this and some of the animations for merlinus, and also, his autopromote on lvl, i fixed it, now, i made merlinus able to access own storage and merch…Is there a way to allow him to trade other units?..

According to my notes:

22D62: Write 0D 48 00 68 98 42 1E D0 C0 46 to make convoy access convoy
21E3E: Write C0 46 C0 46 to make convoy trade players
23D08: Write C0 46 C0 46 to make players trade convoy

1 Like

Thanks a lot Teq, it worked out, i did not ussed your first offset, since we change 22D6A to 00 00 merlinus can access its own storage with no problem. But the other two are very useful :smiley:

They end up being the same; 0000 is “lsl r0,r0,#0x0” which is just multiplying r0 by 1, while 46C0 is interpreted as “nop” or “skip this command”.

1 Like