Mokha's Hacks Sundries

This user has been trying a similar concept using only Vanilla code. You could ask them.

1 Like

May I suggest also adding a “getting hit” animation? A few frames where the unit would react to getting attacked. Similar to when dodging.

I know that is currently a feature of the Tactile engine, as seen below:


(Image from @dancer_A’s Tactile tutorial)

3 Likes

Hey, sorry. It seems that the link for standalone Battle Forcast Hit-Counts is down. I tried to find it in both your Hack Soundries Github, and also your C Skill System Github, but I can’t find it anywhere. Would you be able to post it again?

okay, will be updated this weekend

1 Like

HeyMokha. I wanted to ask… Would you ever consider doing a Custom Triangle Attacks patch? The Vanilla Triangle Attack code is very limited in it’s scope. And even though it’s editable, it only allows for a limited model size

I have a few ideas:

1: Change Background to black. Simple, like with Draco Zombies in vanilla, or Manaketes in FE6. Nothing more.

2: Change Background to the wavy Fire BG like FE7 Fire Dragon.

3: Make Battle Platform dissapear (Only for unit in which the animation calls it)

4: Make Unit’s own sprite fade to black palette. (And another to shift back)

5: Make “NO DAMAGE” sound unable to appear for the animation (Requesting this because you can’t make CSA for Staves without “NO DAMAGE” appearing.

6: Make Unit’s own sprite fade out (Slowly dissapear)

7: Make enemy sprite fade out

8: Make enemy sprite fade back in

(The latter 3 allow for potential battle animations for Rewarp, Warp, Rescue, and Aum)


EDIT: Also, I was trying to install Banim Command Expansion, but it didn’t work. I just keep getting errors. Am I missing an important step?

Errors

62 errors encountered:
File: data.event, Line: 2: File EkrDragonDuma/Monster_015.img.bin not found.
File: data.event, Line: 4: File EkrDragonDuma/Monster_015.map.bin not found.
File: data.event, Line: 6: File EkrDragonDuma/Monster_015.pal.bin not found.
File: data.event, Line: 9: File EkrDragonDuma/Monster_014.img.bin not found.
File: data.event, Line: 11: File EkrDragonDuma/Monster_014.map.bin not found.
File: data.event, Line: 13: File EkrDragonDuma/Monster_014.pal.bin not found.
File: data.event, Line: 16: File EkrDragonDuma/Monster_013.img.bin not found.
File: data.event, Line: 18: File EkrDragonDuma/Monster_013.map.bin not found.
File: data.event, Line: 20: File EkrDragonDuma/Monster_013.pal.bin not found.
File: data.event, Line: 23: File EkrDragonDuma/Monster_012.img.bin not found.
File: data.event, Line: 25: File EkrDragonDuma/Monster_012.map.bin not found.
File: data.event, Line: 27: File EkrDragonDuma/Monster_012.pal.bin not found.
File: data.event, Line: 30: File EkrDragonDuma/Monster_011.img.bin not found.
File: data.event, Line: 32: File EkrDragonDuma/Monster_011.map.bin not found.
File: data.event, Line: 34: File EkrDragonDuma/Monster_011.pal.bin not found.
File: data.event, Line: 37: File EkrDragonDuma/Monster_010.img.bin not found.
File: data.event, Line: 39: File EkrDragonDuma/Monster_010.map.bin not found.
File: data.event, Line: 41: File EkrDragonDuma/Monster_010.pal.bin not found.
File: data.event, Line: 44: File EkrDragonDuma/Monster_009.img.bin not found.
File: data.event, Line: 46: File EkrDragonDuma/Monster_009.map.bin not found.
File: data.event, Line: 48: File EkrDragonDuma/Monster_009.pal.bin not found.
File: data.event, Line: 51: File EkrDragonDuma/Monster_008.img.bin not found.
File: data.event, Line: 53: File EkrDragonDuma/Monster_008.map.bin not found.
File: data.event, Line: 55: File EkrDragonDuma/Monster_008.pal.bin not found.
File: data.event, Line: 58: File EkrDragonDuma/Monster_007.img.bin not found.
File: data.event, Line: 60: File EkrDragonDuma/Monster_007.map.bin not found.
File: data.event, Line: 62: File EkrDragonDuma/Monster_007.pal.bin not found.
File: data.event, Line: 65: File EkrDragonDuma/Monster_006.img.bin not found.
File: data.event, Line: 67: File EkrDragonDuma/Monster_006.map.bin not found.
File: data.event, Line: 69: File EkrDragonDuma/Monster_006.pal.bin not found.
File: data.event, Line: 72: File EkrDragonDuma/Monster_005.img.bin not found.
File: data.event, Line: 74: File EkrDragonDuma/Monster_005.map.bin not found.
File: data.event, Line: 76: File EkrDragonDuma/Monster_005.pal.bin not found.
File: data.event, Line: 79: File EkrDragonDuma/Monster_004.img.bin not found.
File: data.event, Line: 81: File EkrDragonDuma/Monster_004.map.bin not found.
File: data.event, Line: 83: File EkrDragonDuma/Monster_004.pal.bin not found.
File: data.event, Line: 86: File EkrDragonDuma/Monster_003.img.bin not found.
File: data.event, Line: 88: File EkrDragonDuma/Monster_003.map.bin not found.
File: data.event, Line: 90: File EkrDragonDuma/Monster_003.pal.bin not found.
File: data.event, Line: 93: File EkrDragonDuma/Monster_002.img.bin not found.
File: data.event, Line: 95: File EkrDragonDuma/Monster_002.map.bin not found.
File: data.event, Line: 97: File EkrDragonDuma/Monster_002.pal.bin not found.
File: data.event, Line: 100: File EkrDragonDuma/Monster_001.img.bin not found.
File: data.event, Line: 102: File EkrDragonDuma/Monster_001.map.bin not found.
File: data.event, Line: 104: File EkrDragonDuma/Monster_001.pal.bin not found.
File: BanimCmdExpansion.event, Line: 11: File source/Utils.lyn.event not found.
File: BanimCmdExpansion.event, Line: 12: File source/UtilsASM.lyn.event not found.
File: BanimCmdExpansion.event, Line: 13: File source/BanimCmdHooksASM.lyn.event not found.
File: BanimCmdExpansion.event, Line: 14: File source/FakeHitRed.lyn.event not found.
File: BanimCmdExpansion.event, Line: 15: File source/FakeHitBlack.lyn.event not found.
File: BanimCmdExpansion.event, Line: 16: File source/EfxCallDK.lyn.event not found.
File: BanimCmdExpansion.event, Line: 17: File source/EfxRemoveDK.lyn.event not found.
File: BanimCmdExpansion.event, Line: 18: File source/EfxCallDoma.lyn.event not found.
File: BanimCmdExpansion.event, Line: 19: File source/EfxRemoveDoma.lyn.event not found.
File: BanimCmdExpansion.event, Line: 20: File source/EraseDispUp.lyn.event not found.
File BanimCmdExpansion.event, Line 24, Column 2: Symbol C0E_Hook isn’t in scope
File BanimCmdExpansion.event, Line 25, Column 2: Symbol C0F_Hook isn’t in scope
File BanimCmdExpansion.event, Line 26, Column 2: Symbol C16_Hook isn’t in scope
File BanimCmdExpansion.event, Line 27, Column 2: Symbol C17_Hook isn’t in scope
File BanimCmdExpansion.event, Line 28, Column 2: Symbol C53_Hook isn’t in scope
File BanimCmdExpansion.event, Line 29, Column 2: Symbol C54_Hook isn’t in scope
File BanimCmdExpansion.event, Line 30, Column 2: Symbol C55_Hook isn’t in scope

No data written to output.

1 Like

I will consider these commission requests. But please note that commissioned work requires compensation. Kindly consider what you can offer in return—you may refer to the content I have previously posted.

They need to be compiled before installation.

What does this mean? How would I do it

I asked Jester, and he said that the missing bin and lyn files need to be commited to the github

Well, my exact wording was that it was unfair to expect your average Joe to know you need to compile, how to do it and what tools to use, not that you couldn’t. The README is very sparse on what’s required after all.

You can use the make file for the lyns in the old master skill system (not sure if your custom build is set up for it) SkillSystem_FE8/EngineHacks/Necessary/CalcLoops/CanUnitDoubleCalcLoop/Makefile at 57843926f2c58a13f96ccdfb8c903c31ada7d35b ¡ FireEmblemUniverse/SkillSystem_FE8 ¡ GitHub

And then as I mentioned before on Discord, use PNG2DMP and rename the created DMP files to BINs.

it is just the same as cskillsys,you can refer to cskillsys to compile.

You know, you could just upload the bins and lyns and make everyone’s life easier?

We both know I love cskillsys, but it does introduce a technical hurdle for people not familiar with make files and linux in general.

1 Like

There has been offered the buildfile with compiled products published in each version of release. Users who wish to perform customizations but lack the technical expertise can directly use the files from the release.

The build logic of CHAX is entirely different from that of asm. The latter operates like applying patches, with its compilation process confined to its own directory. In contrast, the former compiles all source files across the entire project. When multiple people submit their changes, and their compiled outputs conflict with each other, that’s when you’ll be crying.

The current compilation process is not difficult. We only require essential components. There is no project management framework, no board support package dependency, no Yocto, no CMake. Only the most fundamental Makefiles, C, and EA. If a developer cannot even overcome this basic barrier, they are better off staying as a FEB player rather than a developer.

1 Like

There has been offered the buildfile with compiled products published in each version of release.

I never disputed this, but that wasn’t what we were discussing. You asked Alice to look at the Cskillsys build file as a reference for how to compile lyns and bins. My point is you’re asking a lot out of someone who only wants to get one unrelated hack working.

The current compilation process is not difficult.

It might not seem like a lot of setup to you, but you’re very experienced in C development.

I’m aware the point of the hack is to allow custom modification of the user’s own banims (in which case knowing how to compile it would indeed be a requirement), but for simply checking the hack out I don’t think it’s a lot to ask to provide the user a means to see it in action before they decide if they want to dive into the guts of the code?

But that’s just my two cents. You seem to be entrenched in your opinion, fair enough I suppose.

2 Likes

Ran into an issue; not sure if this is the same issue, but I think I figured out the cause if it has not yet been found.

When copying the list of class IDs into r13, the code calculates the offset into the promotion list table with lsl r6,r6,0x2 instead of lsl 0x3. In FEBuilder, the module has 0x8 bytes allocated per class; I probably also assumed this structure back then. The result is that the data from a lower ID class was being read instead.

Not sure where in the code this routine is located, but this is the relevant routine. Red is the problem line that I changed to lsl 0x3. I think the “add r2,r13,0x4” a couple lines down should also be “add r2,r13,0x8“ since there are six classes to copy, not four. There is another add r13 later down the code that should probably also be updated to add 0x8.

Despite this, the default trainees (or at least Ross, in my testing) still seem to have some issues. A custom trainee outside the vanilla Ross/Amelia/Ewan managed to auto-promote without issue, but when it was time for Ross to promote, the game automatically promoted him to an invalid class without providing any options.

EDIT:

The trainee auto-promotion seems to work on no$GBA debugger while it seems to break on VisualBoyAdvance. Not exactly sure why that is the case. After running the promotion check-related code, I get invalid read error from routine 8005738 from attempting to read from address 0x00(+0x40); it seems that it is possible that there is supposed to be some address/pointer at 0x3004980 that the game is supposed to read from for the input into the above routine, though I am not exactly sure if this is related to your promotion code or an unrelated issue. (Promoting using an item seems to otherwise work fine.)

Does this issue also happens if you installed the patch to vanilla base rom rather than your hacked one?

Yes; I just tested on a clean ROM, and the issue persists.

It seemed to work fine if I had played a chapter or few beforehand, but when attempting to allow the auto-promotion when just booting the game and entering the preparations screen, the invalid promotion occurred. The game fails to load the promotion menu and sets the class pointer to 0x00 in unit RAM data.

Though I installed from FEBuilder; not sure if that version is older and any such issues have already been fixed.

EDIT:

Actually, it seems to work…mostly. The table reference seems a bit off though. The code seems to allocate 0x4 bytes per class, meaning FEBuilder entry for class 0x1E is referenced for class ID 0x3D (Journeyman_t0) (0x3D*0x4 → 0xF4; 0xF4/0x8 → 0x1E, Ranger_f), though it starts reading from +0x4 instead of at the start of that entry. So the code is reading 4 class IDs from (Mokha_promotion_table+0x4) plus 2 class IDs from the vanilla table plus any special cases for the final list.