Vesly's ASM

Yup, adapting the Builder version instead of the one from your Github seems to fix this issue, thanks!

1 Like

default # of frames for a couple popups

ORG $114FA // frames to show "got item" popup 
BYTE 45 //96 is vanilla 
ORG $1166C // frames to show "got gold" popup 
BYTE 45 //96 is vanilla

also popup rework (bundled with skillsys) seems to kill your ability to press A to close these faster. epic hack but will need to be fixed

and here’s faster map battle round animations or something
I think it makes the hp bar not stay on the screen so dang long when healing
should probably use it in conjunction with 7743’s faster vulnerary animation patch
mGBA_eMHLNhnWWp

// speed for battle map anim rounds 
// just from the proc MapAnimBattle 9A49FC
// vanilla is 30 30 30 10 30 
ORG $9A4A06 
BYTE 10 
ORG $9A4A16 
BYTE 15 
ORG $9A4A26 
BYTE 10 
ORG $9A4A36
BYTE 5 
ORG $9A4A46
BYTE 15  
//ORG $7BCE2 // double speed of vuln animation by 7743 
//BYTE 0x08 0x34 0x24 0x04 0x24 0x0c 0x00 0x00 0x00 0x00 0x8c 0x42 0x09 0xda

2 Likes

I had an issue with @UltraxBlade’s save file in Pokemblem being wiped, so I had a look into save data to make it a bit safer, I hope.

PUSH
ORG $A644C // makes it so if checksum for a save file is bad, it will still load the save file 
SHORT $2001 // mov r0, #1 

ORG $A2D9C // makes it so if your metadata is bad, it will still load your resume data 
SHORT $2001 // mov r0, #1 
POP

This is a bandaid :adhesive_bandage: on the problem. But this should stop save files from being erased most of the time, I think. This way in the future we can analyze the corrupt save file and possibly fix that. As it is, if you write a random value to the first $D4 bytes of the savefile, the whole save file will be deleted.

This is useful to anyone who gets a report of save files being deleted for their hack.

Enjoy.

Edit: Since this I’ve had 3 people report their save file being wiped on v1.00 and nobody reporting it occurring on v1.01 or later, which released 10 days ago. So it’s probably safe to say that this fix worked! Still no idea what was causing the problem in the first place lmao

4 Likes

This is actually amazing though??? Being able to link events with items has kinda blossomed my mind with ideas to implement, thank you so much for your work!

4 Likes

Pokemblem_Titlescreen

Redppr did a new epic title screen for pokemblem, so I needed to move the Press Start text down.

// C5496 is X pos
ORG $C5498 // Press start Y position 
BYTE $8C // vanilla is #0x7C

I also moved my chapter menu over a little bit so it could be wider (there’s already a patch for the width).

ORG $1CA86 
BYTE ChMenuRight // 0x17 default
5 Likes

Autosave Do-over

ezgif.com-gif-maker (7)

This is a rework of an febuilder patch.

I made it so it’ll only autosave at the start of your turn if you have the same number (or more) units as you did last turn. This way if a player is late to reset, they can still resume to the previous turn.

This uses a byte in ram. I’ve made the default 0x202bd33 which is padding in gChapterData.

8 Likes

So not all hacks end up working, and I’ve decided to throw in the towel for line of sight, where certain terrain blocks you from attacking through it.

ezgif.com-gif-maker_8

The idea was to draw range normally and then erase the obstructed tiles. I think this was the wrong way to go about it, as a tile can be obstructed from 1 direction but still be targetable from another. Therefore the preview does not display correctly. This was bl’d to in AllMoveableSquares, AllWeaponsOneSquare, and ItemTURange.

Oh well :pensive:

5 Likes

Ok, this is hype. Now we can have accurate Tellius Bows

Enemies can’t die either…
SkillsTest.emulator_01

If you have only one ally unit and it reaches the avoid-everything threshold the enemy can’t be hit.

Here’s the list:

CannotDieList: 
BYTE Sora 0; SHORT 0x00FF
WORD 0xFFFFFFFF
2 Likes

Thanks, fixed and re-tested this to make sure it works properly now. Sorry, I should’ve caught this to begin with.

1 Like

Hey, I’m trying to implement the menu promotion patch. In general, it works great. I have a unit you talk to in certain maps and then characters can promote. However, it seems to be conflicting with other patches. You see, I want to be able to promote units both using menu promotion and using items, with different classes as a result. The menu promotion doesn’t allow you to specify what class a unit can promote to. It just promotes you using the default promotion. So to get around this I tried using the Sme’s split promotion item, and specifying a different set of classes from the default. But it, basically, doesn’t work. Trying to promote using an item just crashes the game. So I’m wondering if it’s possible to implement some kind of class specification in the menu promotion. There’s already a field for classes in the editor, but it basically just determines what classes are allowed to promote, not what they can promote into. If menu promotion could decide what a class can promote into then I could ditch the split promotion item patch entirely. It would also, just generally, be more robust as you can have different class options using different ways of activating the menu. So, yeah, would that be possible?

This is actually an issue with the SplitPromoItems hack, as it removed a few lines from the default vanilla behaviour, preventing any other way than items from promoting. I had to change Sme’s code slightly to make it work for pokemblem.

You can just install this version instead and it’ll work.

I’m going to sound pretty basic here, but how do I install the updated version? Just replace the text document in FEBuilderGBA?

I think you can replace these files in the patches folder:
image

FEBuilderGBA\config\patch2\FE8U\SplitPromoItems

Note that updating FEBuilder will overwrite these files.

Maybe it’s best to contact 7743 about the issue then.

Conversation Viewer

mGBA_GnOSNEV3dM

This replaces the Support Conversations menu (which shows C/B/A supports) with a custom one that shows as many events/conversations as you’d like per chapter. It automatically loads unit id 0x01 for [LoadActive] and it does a TextCont at the end of the conversation in case you used [LoadOverworldFaces].

Please edit the Installer.event file as desired to have the conversations you’d like. The format of each entry is as such:

ALIGN 4 
ChapterOneConversations:
POIN 0; // Leave as 0 to use the generic event I made that works for whichever text ID you provide. Or put in the address/label of an event here. 
SHORT 0x9DE; // Text ID of the conversation. 
BYTE 0xFF // BG to use. 0xFF = random. 
BYTE 0; // Chapter ID (for the name of the chapter) 
SHORT 0x354 // Text ID of the title for the conversation (eg. the menu on the right). 
SHORT 0 // BGM to play

Thanks to Retina and Vyland for commissioning this and making it free to use.

Edit: Figured out a way to have fewer than 6 entries.


The box still shows up as the full size, though.

More edit:
Changed the padding into BGM and fixed a couple of sound-related things that I hadn’t noticed.

I’ve now added the option to boot directly to this menu by uncommenting //#define ImmediateConversationViewer
mGBA_3RMviIibwj
It has a little graphical glitch when exiting the menu this way, but whatever lol.
Since it can run events, it might be useful for debugging things other than conversations.

20 Likes

Replace Weps by Difficulty

Have you ever wanted to have hard-mode exclusive weapons such as Hammers, Horseslayers, and Lancereavers, but didn’t want to bother with separate unit groups for each difficulty?

This patch is purely for your convenience, then.

ReplaceWepList:
BYTE Hammer IronAxe SteelAxe Hammer // I built my game around HardMode 

Search all enemies for the Hammer item.

  • On easy, replace with IronAxe.
  • On normal, replace with SteelAxe.
  • On Hard, replace with Hammer.

This is an asmc / event command, so you simply run it at the start of your chapter after loading units. Eg. ASMC ReplaceWeaponsByDifficulty

This also autolevels their WExp so that the enemies can use their newly acquired weapons.

Come to think of it, you could also replace other items like Elixirs with Vulneraries. I think it’ll mostly be used for weapons, though.

Enjoy!

8 Likes

The meaning is slightly different.
The “skip the title screen and go directly to the display” part is the correct interpretation.
The problem is what comes after that.
I want to display a specific conversation event without also displaying that menu.
For example, I want to display the conversation 0x1234.
In other words, when I start the ROM, I want to display conversation 0x1234 directly, without even showing the title screen.

If we could implement this, we would be able to preview the text directly, just like the Sappy button.
In other words, add a button to the TextEditor of the FEBuilderGBA, and when you click on it, it will play the conversation ID and the code to display it embedded in the temporary ROM.
It would make debugging even easier.

1 Like

I think you should hijack this function to execute an event you inject into ram:

You could hook the code to check if the ram at a certain address is set, and if so, execute your debug event. If not, run the game as normal.

I hijacked it here to immediately go to the conversation menu.

Make Berserk not attack the same allegiance

PUSH 
ORG $39722 
SHORT $2100 
POP 

mGBA_lU3ib60mpQ
Note: Eirika moves towards enemies while O’Neill does not (because his ai2 is “do not attack” in the LOAD). Enemies no longer attack each other, too.

mGBA_FTdKn0lKb7

AiData 0x203AA04 + 0x7B u8 aiConfig; is normally set to 4 for Berserk phase and the 2 bitflag is removed partway through. All I did was change it to 0 instead of 4 and it seems to work so far. I’m not sure what the bitflags for aiConfig do.

Enjoy.

Edit: As a bonus, this treats all units that haven’t acted as Berserked:

PUSH 
ORG $397F6
SHORT $46C0 
POP 

You could make a turn event where if there are enemies alive, then automatically end the turn (so all units will be AI-controlled that turn). It can be called by doing ASMC 0x8022739

6 Likes