The following warnings occurred:
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 895 - File: showthread.php PHP 7.3.33 (Linux)
File Line Function
/showthread.php 895 errorHandler->error




Users browsing this thread: 1 Guest(s)
Strago natural magic

#1
Posts: 9
Threads: 5
Thanks Received: 0
Thanks Given: 0
Joined: Sep 2019
Reputation: 0
Status
Mini
Español Spanish


Tengo un problema de que tengo a Relm como maga blanca y Strago como mago negro y no tengo idea de cómo hacer que Strago aprenda magia de una manera natural y solo se editar cosas básicas en hexadecimal.

English Inglés

I have a problem that I have Relm as a white mage and Strago as a black mage and I have no idea how to make Strago learn magic in a natural way and only edit basic things in hexadecimal.


Code:
; header ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; A large part of the commenting on this code is derived directly
; from the commented code banks available at:
; http://slickproductions.org/docs.php?id=FF6
; and would not have been possible without that commenting.
;
; Additionally, the thread located at:
; http://www.ff6hacking.com/forums/showthread.php?tid=729
; was instrumental in the production of this hack
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SKILLS LEARNED AT LEVEL UP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; This points to the function governing learning abilities at
; level up, originally at C2/61B6 and now at C2/A736.
org $C260BC
JSR $A736  

; Determine if the character learns natural magic at level up.
org $C2A736
LDX #$0000       ; Relm's spell list is the first two bytes
                ; of the natural magic table now located at
                ; EC/E3A0. In vanilla, this starts at EC/E3C0
                ; with Terra's table; Relm's occupies two bytes
                ; of free space preceding.
CMP #$08         ;
BEQ LvlUpMagic   ; Branches to teach natural magic.
LDX #$0020       ; Terra's spell list is second in the table.
CMP #$00         ;
BEQ LvlUpMagic   ;
LDX #$0040       ; Celes' spell list is third.
CMP #$06         ;
BEQ LvlUpMagic   ;
LDX #$0000       ; Cyan's SwdTech list is the first eight bytes
                ; of the SedTech/Blitz table at E6/F490
CMP #$02         ;
BNE LvlUpSabin   ; If not Cyan, branch to check for Sabin.
                ; Else, it is Cyan and the code can continue
                ; to check his level.

;;;;;;;;;;;;;;;;;;
; Cyan @ level up
;;;;;;;;;;;;;;;;;;
JSR LvlAbility   ; Check for SwdTechs at this level.
BEQ ExitLearning ; If none, exit.
TSB $1CF7        ; Enable the new SwdTech.
BNE ExitLearning ; If already enabled, exit.
                ; This should only occur after Cyan's dream,
                ; which teaches him SwdTechs through an event.
LDA #$40
TSB $F0
BNE ExitLearning
LDA #$42
JMP $5FD4

;;;;;;;;;;;;;;;;;;
; Sabin @ level up
;;;;;;;;;;;;;;;;;;
LvlUpSabin:
LDX #$0008       ; Blitzes are in the second byte of the table.
CMP #$05         ; Check for Sabin.
BNE ExitLearning ; Exit if not Sabin.
JSR LvlAbility   ; Check for Blitzes at this level.
BEQ ExitLearning ; If none, exist.
TSB $1D28        ; Enable the new Blitz.
BNE ExitLearning ; If already enable, exit.
                ; This should only occur with Bum Rush, after
                ; meeting Duncan in the WoR.
LDA #$80
TSB $F0
BNE ExitLearning
LDA #$33
JMP $5FD4

;;;;;;;;;;;;;;;;;;
; Magic @ level up
;;;;;;;;;;;;;;;;;;
LvlUpMagic:
PHY
XBA
LDY #$0010       ; The spell list is composed of 16 2-byte
                ; blocks for a total of 32 bytes.
LvlCheckMag:
CMP $ECE3A1,X    ; Check against level at which spell is learned
BNE IncSpell     ; If no spell at this level, branch and
                ; increment to next spell in table.
PHA
PHY
TDC              ; [Clear 16-bit A]
LDA $ECE3A0,X    ; Get the spell ID from the table.
TAY
LDA ($F4),Y      ; [(?? check entry in spell list ??)]
CMP #$FF      
BEQ PullYA    
LDA #$80
STA ($F4),Y
PullYA:
PLY
PLA
IncSpell:        ; Increment to next 2-byte block.
INX
INX      
DEY              ; Decrement Y
BNE LvlCheckMag  ; If we haven't checked all 32 bytes,
                ; branch back and continue.
PLY
RTS

;;;;;;;;;;;;;;;;;;
; Abilities/lvl up
;;;;;;;;;;;;;;;;;;
LvlAbility:
LDA #$01
STA $EE          ; Start by marking Tech/Blitz as #0
XBA              ; [Get current level from top of A?]
LvlCheckAbi:     ;
CMP $E6F490,X    ; Check level against Blitz/Tech table.
BEQ AbiBitfield  ; If equal, branch.
INX              ; Else, increment to check next index.
ASL $EE          ; Check next Tech against level.
BCC LvlCheckAbi  ; If carry is set, we've checked all 8 bits and
                ; no ability is learned. $EE will be #0.
AbiBitfield:
LDA $EE          ; Get the SwdTech/Blitz bitfield. The bit that
                ; is set = the ability to learn at this level.

ExitLearning:
RTS




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; DEFAULT SKILLS AT RECRUITMENT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


; This section governs natural abilities learned at
; recruitment

;;;;;;;;;;;;;;;;;;
; DEFAULT DANCES
;;;;;;;;;;;;;;;;;;
; This sets default dances learned at the same time as default
; lores and rages. Rather than pulling the information from
; elsewhere in the rom, the bit is hardcoded in with an LDA
; to keep the code in-line.
;
; Originally I was teaching dances at recruitment the same way
; that Cyan and Sabin learn their initial SwdTechs and Blitzes.
; However, because they learn their skills through level up,
; they require more complex code to verify which skills they
; should already have when you meet them. This new code teaches
; Wind Song by default in the same way that Strago and Gau learn
; their default Lores and Rages, respectively.

org $C0BE2F  ; Originally this is used to set font to white.
            ; As this is also in C3, it's unnecessary here, and
            ; so we can use these addresses for teaching Dances.
            ; It follows immediately after the code teaching
            ; the default Lores.
LDA #$01     ; Load bits for default Dances.
            ; #$01 is Wind Song; set other bits to teach other
            ; dances by default.
STA $1D4C    ; Stores bits in location of learned Dances in RAM
NOP          ; The original code here is six bytes long.
            ; As the new code is only five, this blocks out the
            ; remaining byte preventing any further snarls.

;;;;;;;;;;;;;;;;;;
; NATURAL SKILLS
; AT RECRUITMENT
;;;;;;;;;;;;;;;;;;
; These originally called C0/A17F and are being redirected
; to the new location of the subroutine at C0/D68D.
org $C09F6D
JSR $D68D

org $C0A177
JSR $D68D

org $C0C547
JSR $D68D

; When recruiting a character, check if they learn abilities
; based on their level. If so, teach them all abilities up to
; their current level.
org $C0D68D
;;;;;;;;;;;;;;;;;;
LDA $1600,Y      ; Grab the ID of the character being recruited.
CMP #$08         ;  
BEQ RelmRecruit  ; If Relm, branch.
CMP #$00         ;
BEQ TerraRecruit ; If Terra, branch.
CMP #$06         ;
BEQ CelesRecruit ; If Celes, branch.
CMP #$02         ;
BEQ CyanRecruit  ; If Cyan, branch.
CMP #$05         ;
BNE ExitRecruit  ; If not Sabin, exit.
JMP SabinRecruit ; Else it is Sabin, so jump.
                ; Sabin's recruitment subroutine is to far away
                ; to branch, so we need to jump to it instead.
ExitRecruit:
RTS

RelmRecruit:
LDX $00
TeachRelm:
LDA $ECE3A1,X    ; Get level from natural magic table.
CMP $1608,Y      ; Check against current level.
BEQ RelmRecCont  ; If equal, proceed to learn spell.
BCS ExitRecruit  ; If lower, exit.
RelmRecCont:
PHY    
LDA $ECE3A0,X    ; Grab the spell learned at this level.
TAY
LDA #$FF
STA $1C1E,Y      ; Teach it.
PLY
INX
INX
CPX #$0020       ; Have we checked all 16 spells?
BEQ ExitRecruit  ; If yes, exit.
BRA TeachRelm    ; Else, continue checking.

TerraRecruit:
LDX $00
TeachTerra:
LDA $ECE3C1,X    ; Get level from natural magic table.
CMP $1608,Y      ; Check against current level.
BEQ TerraRecCont ; If equal, proceed to learn spell.
BCS ExitRecruit  ; If lower, exit
TerraRecCont:
PHY    
LDA $ECE3C0,X    ; Grab the spell learned at this level
TAY
LDA #$FF
STA $1A6E,Y      ; Teach it
PLY
INX
INX
CPX #$0020       ; Have we checked all 16 spells?
BEQ ExitRecruit  ; If so, exit.
BRA TeachTerra   ; Else, continue checking.

CelesRecruit:
LDX $00
TeachCeles:
LDA $ECE3E1,X    ; Get level from natural magic table.
CMP $1608,Y      ; Check against current level.
BEQ CelesRecCont ; If equal, proceed to learn spell.
BCS ExitRecruit  ; If lower, exit
CelesRecCont:
PHY    
LDA $ECE3E0,X    ; Grab the spell learned at this level
TAY
LDA #$FF
STA $1BB2,Y      ; Teach it
PLY
INX
INX
CPX #$0020       ; Have we checked all 16 spells?
BEQ ExitRecruit  ; If so, exit
BRA TeachCeles   ; Else, continue checking

CyanRecruit:
STZ $1B
LDX $00
TeachCyan:
LDA $E6F490,X    ; Get level at which Tech is learned
CMP $1608,Y      ; Is Cyan at that level?
BEQ CyanRecCont  ; If so, proceed with learning
BCS SetCyan      ; If he is lower, exit and teach Techs.
CyanRecCont:
INC $1B
INX
CPX #$0008       ; Have we checked all eight Techs?
BEQ SetCyan      ; If so, exit
BRA TeachCyan    ; Else, continue checking
SetCyan:
LDA $1B
TAX
LDA $1CF7        ; Get currently known Techs
ORA $C0A22C,X    ; Add to bitfield of Techs learned at level
STA $1CF7        ; Set new Blitzes learned
RTS

SabinRecruit:
STZ $1B
LDX $00
TeachSabin:
LDA $E6F498,X    ; Get level at which Blitz is learned
CMP $1608,Y      ; Is Sabin at that level?
BEQ SabinRecCont ; If so, proceed with learning
BCS SetSabin     ; If he is lower, exit and teach Blitzes.
SabinRecCont:
INC $1B
INX
CPX #$0008       ; Have we checked all eight blitzes?
BEQ SetSabin     ; If so, exit
BRA TeachSabin   ; Else, continue checking
SetSabin:
LDA $1B
TAX
LDA $1D28        ; Get currently known Blitzes
ORA $C0A22C,X    ; Add to bitfield of Blitzes learned at level
STA $1D28        ; Set new Blitzes learned
RTS



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NATURAL MAGIC
; TABLES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Relm's natural magic learning list.
; This precedes Celes and Terra's lists in the table,
; occupying free space right before it.
org $ECE3A0
DB $2D, $01 ; Cure @ 1
DB $02, $03 ; Thunder @ 3
DB $32, $06 ; Antdot @ 6
DB $30, $09 ; Raise @ 9
DB $36, $0C ; Cura @ 12
DB $07, $0E ; Thundara @ 14
DB $29, $11 ; Aspir @ 17
DB $19, $16 ; Slow @ 22
DB $2F, $17 ; Curaga @ 23
DB $33, $19 ; Esuna @ 25
DB $0B, $1C ; Thundaga @ 28
DB $28, $1E ; Slowga @ 30
DB $0E, $21 ; Holy @ 33
DB $31, $25 ; Arise @ 37
DB $2B, $28 ; Quick @ 40
DB $35, $2D ; Reraise @ 45
  Find
Quote  



Messages In This Thread
Strago natural magic - by MoisésDGT - 09-14-2019, 08:45 PM
RE: Strago natural magic - by C-Dude - 09-15-2019, 12:05 AM
RE: Strago natural magic - by MoisésDGT - 09-15-2019, 08:12 AM
RE: Strago natural magic - by C-Dude - 09-15-2019, 02:22 PM
RE: Strago natural magic - by MoisésDGT - 09-15-2019, 02:58 PM
RE: Strago natural magic - by C-Dude - 09-15-2019, 03:26 PM

Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite