Users browsing this thread: 1 Guest(s)
Runic question

#1
Posts: 30
Threads: 6
Thanks Received: 0
Thanks Given: 11
Joined: Nov 2018
Reputation: 0
Status
None
So i was trying to find a way to make runic more user friendly i have the runic forever hack v 2.1 By Hatzen80

Then i found this https://www.ff6hacking.com/forums/thread...unic+enemy post # 24
It would make runic only effect enemy spells.

So first off would those 2 things work together or conflict since they alter the same ability.

Second i have absolutley no idea how to do the second part coding wise is there a way to get an ips patch or an instruction?
  Find
Quote  

#2
Posts: 3,800
Threads: 270
Thanks Received: 762
Thanks Given: 389
Joined: Oct 2011
Reputation: 63
Status
Tissue-aware
I don't have the answer to your first question. To use GrayShadow's code, you need to use an assembler like xkas 0.06. Then you copy his code into a text file you rename the extension to .asm and you assemble it using the windows command prompt. The only thing that needs to be changed is "org $C2xxxx" to free space in bank $C2, such as "org $C26469" for a vanilla ROM. Note that if you use xkas, you'll need to write "hirom" at the top of your file and "header" if your ROM has a header.
  Find
Quote  

#3
Posts: 242
Threads: 19
Thanks Received: 101
Thanks Given: 105
Joined: Dec 2018
Reputation: 18
Status
Moog
They likely conflict, because they probably hook into the same section of code in different ways. If using them both doesn't outright cause the game to crash on activating Runic, it may behave as if only one is applied, or may behave in a way entirely unexpected.

Interestingly enough, Hatzen's Runic Forever--at least the last version I saw--is set up to check if the target is the runicker and bypass the spell block if so. It might be possible to change that segment to check if the target is not a monster, and if so let the spells go past.

Code:
;-------------------------------------------------------------------------------
; check runic for fighter Y
;-------------------------------------------------------------------------------
check_runic:

        LDA $3AA0,Y
        LSR                 ;check for valid target
        BCC .runic_no       ;don't runic if invalid target
        
        PEA $80C0           ;check for sleep, death, petrify
        PEA $2210           ;check for freeze, hide, stop
        JSR $5864           ;routine to check for status
        BCC .runic_no       ;don't runic if any status found
        
        LDA $3E4C,Y
        BIT #$06            ;check for runic flags
        BEQ .runic_no       ;don't runic if spell can't be absorbed

        STX $EE             ;spell target
             TXA                 ;caster
             CMP #$08             ;check if battle slot is a party slot?
             BCC .runic_no       ;don't runic if target is a party member?

    .runic_yes
        SEC
        RTS
        
    .runic_no
        CLC
        RTS
The three further indented lines are what would need to be changed. I'm going off Runic Forever 2_1, and those lines seem to be what let the runicker get their spells past themselves. Changing the comparison to caster against a static #08 and branching if the number is less makes runic ignore your party as far as I can tell.

However, this will make runic one-sided, as it will ALWAYS favor your party. It effectively breaks the Air Force Bit... you'll need to change that boss battle to make the bit do something else (perhaps a lot of HP and then it casts Exploder after a while?).
  Find
Quote  

#4
Posts: 30
Threads: 6
Thanks Received: 0
Thanks Given: 11
Joined: Nov 2018
Reputation: 0
Status
None
Yeah I didn't Think of that probably better to leave it as the runic forever 2.1 has it otherwise it probably ruins quite a few boss fights
  Find
Quote  

#5
Posts: 242
Threads: 19
Thanks Received: 101
Thanks Given: 105
Joined: Dec 2018
Reputation: 18
Status
Moog
...Perhaps the check could be made more comprehensive.  It'd take more freespace, though.

Code:
;-------------------------------------------------------------------------------
; check runic for fighter Y
;-------------------------------------------------------------------------------
check_runic:

       LDA $3AA0,Y
       LSR                 ;check for valid target
       BCC .runic_no       ;don't runic if invalid target
       
       PEA $80C0           ;check for sleep, death, petrify            80E1        [Adds Blind and Moogle to the restrictions]
            C2/3544:    F4 E1 80
                            80E0        [Remove the blind restriction, since Cover doesn't have that]
       PEA $2210           ;check for freeze, hide, stop
            C2/3547:    
       JSR $5864           ;routine to check for status
       BCC .runic_no       ;don't runic if any status found
       
       LDA $3E4C,Y                                                        $3EF8,Y
            C2/354F:    B9 F8 3E
       BIT #$06            ;check for runic flags                        BIT #$10        [Former STOP bit]
            C2/3552:    89 10
       BEQ .runic_no       ;don't runic if spell can't be absorbed

       STX $EE             ;spell target

       TYA                 ;target
       CMP #$08             ;check if battle slot is a party slot?
       BCC .party_yes       ;handle party runicker
       BRA .party_no       ;handle monster runicker

   .party_yes
       TXA                 ;caster
       CMP #$08             ;check if battle slot is a party slot?
       BCC .runic_no       ;don't runic for party caster
        BRA .runic_yes       ;otherwise runic
       
   .party_no
       TXA                 ;caster
       CMP #$08             ;check if battle slot is a party slot?
       BCS .runic_no       ;don't runic for monster caster
                            ;don't need an otherwise branch here since .runic_yes is next
   .runic_yes
       SEC
       RTS
       
   .runic_no
       CLC
       RTS
I think this would check if the target is a monster or not, then runic so long as the caster is on the OPPOSITE team.  It would replace the section by the same name in Hatzen08's RunicForever2_1.  I'd test this like I did with the other post, but I'd have to put it in by hand (because xkas doesn't like me and Asar likes introducing errors) and I don't have the room near the RunicForever code in my rom.

EDIT: If you assemble this and your characters runic their own spells, that means .party_yes and .party_no are labelled wrong and need to be swapped.  If you assemble it and it crashes... then I have no idea!
EDIT: Hopefully you didn't grab this in the middle of the night. I forgot a BRA command.
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite