Hypergammaspaces' assorted ASM

I’ve been starting work on something that (I hope) will be very cool for how we port and make spell animations. As part of this project, I ported FE7 Forblaze to FE8 just to learn how the system works.

This is a native source port - no CSA_Engine needed, it replicates the FE7 animation 1:1 and doesn’t lag on hardware.

My eventual goal is reverse-engineering vanilla spells and making a way to create new ones in the native engine. Hopefully more updates coming soon…

20 Likes

Oh man, yes please. The rebuilds of spells are badass, but some of them miss that little but important kick here and there. Would be great to get 1:1 ports!

2 Likes

I am irrationally excited about perfect spell animation ports

5 Likes

Small update on the spell animation stuff - it’s not dead, Tequila’s taking my proof of concept for it and has been making some updates in the background and porting a few more spells.

While working with my translators for Sacred Echoes, we discovered that ChapterNamesAsText didn’t include support for accented characters, and that it was a common pain point for Spanish-language works. The original patch is just a port from FE7U’s system to FE8U’s, so I investigated how FE7E did it and was able to port it over (and add a few missing characters). It now supports &, (), commas, and single quotes.

Unfortunately IntSys were under space constraints, so only lowercase accented letters were included. However, this should cover Spanish chapter titles thoroughly enough, and it’s at least partial support for French and German.

chartable
(excuse the redundant test text, it’s just for demonstration)

16 Likes

Cap B/W/L display at 999

I haven’t hacked in a while, but I’ve tested this and it works. Have you ever had a unit that’s been in 1000 battles or more? Some Sacred Echoes players have, and discovered that it overwrites the letter labels, so I made this patch to cap the display to 999.

Insert at ORG 0x87048
.thumb
.macro blh to, reg=r3
  push   {\reg}
  ldr    \reg, =\to
  mov    lr, \reg
  pop    {\reg}
  .short 0xf800
.endm

@Caps BWL display at 999, for people who grind too much
.set return_point, 0x0808709D
.set max_value, 0x3E7 @999 dec

    ldrh r0, [r6, #0xC]
    lsl  r0, r0, #0x12
    lsr  r0, r0, #0x14
    blh  0x080AEBEC   @Div10_Safe
    lsl  r0, r0, #0x1
    add  r0, r0, r5
    ldrh r2, [r6, #0xC]
    lsl  r2, r2, #0x12
    lsr  r2, r2, #0x14
    ldr  r1, =max_value
    cmp  r2, r1
    ble  DrawBattles
        mov  r0, #6
        add  r0, r0, r5
        mov  r2, r1
    DrawBattles:
    mov  r1, #0x2
    blh  0x08004B88   @DrawUiNumber
    ldrb r1, [r6, #0xB]
    ldrb r0, [r6, #0xC]
    mov  r4, #0x3
    and  r0, r4
    lsl  r0, r0, #0x8
    orr  r0, r1
    blh  0x080AEBEC   @Div10_Safe
    lsl  r0, r0, #0x1
    mov  r1, r5
    add  r1, #0x8
    add  r0, r0, r1
    ldrb r1, [r6, #0xB]
    ldrb r2, [r6, #0xC]
    and  r2, r4
    lsl  r2, r2, #0x8
    orr  r2, r1
    ldr  r1, =max_value
    cmp  r2, r1
    ble  DrawWins
        mov  r2, r1
        mov  r0, #6
        mov  r1, r5
        add  r1, #0x8
        add  r0, r0, r1
    DrawWins:
    mov  r1, #0x2
    blh  0x08004B88   @DrawUiNumber
    ldrb r0, [r6, #0x0]
    blh  0x080AEBEC   @Div10_Safe
    lsl  r0, r0, #0x1
    add  r5, #0x10
    add  r0, r0, r5
    ldrb r2, [r6, #0x0]
    mov  r1, #0x2
    blh  0x08004B88   @DrawUiNumber
    ldr  r3, =return_point
    bx   r3
    
.align
.ltorg

6 Likes

Been a while, but I realized recently that Battle Palette Rework can support more than 255 palettes with some minor tweaks. The Dropbox has been updated with the new version.

9 Likes