Users browsing this thread: 1 Guest(s)
Restrict espers by character.

#1
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
So a co-worker of mine and I have sort of been working on a hack for the past few months, the basis of which was limiting customization (or making characters more unique, depending on your point of view) by restricting espers. That is, we didn't want everyone to be able to equip every esper; rather, we wanted to keep a semblance of individuality for each character beyond their unique battle commands and starting stats.

I went neck-deep into this the past few nights at work after brainstorming on it for a while, and finally finished it tonight. Unfortunately all I have now are screen shots as I'm still trying to come up with a way to make it portable (since I'm sure anyone that wants to use it won't want to use the specific restrictions we've imposed) without forcing people to dive into the .asm file.

http://synchysi.firefish.org/ff6h/noesper1.png
http://synchysi.firefish.org/ff6h/noesper2.png
http://synchysi.firefish.org/ff6h/noesper3.png
http://synchysi.firefish.org/ff6h/noesper4.png

Anyway, I'm curious about who may be interested in something like this. Would it be worth the effort to make it portable? In my searches, I came across a thread from 2010 where someone was asking about this and DjinnAndTonic gave a response that sort of became the base of what I ended up doing. That's about the only interest I've seen in this sort of thing, though.

Edit: Completed hack with editing/installation instructions here: http://www.romhacking.net/documents/656/


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  
[-] The following 1 user says Thank You to Synchysi for this post:
  • DjinnAndTonic (05-10-2012)

#2
Posts: 831
Threads: 41
Thanks Received: 16
Thanks Given: 12
Joined: Nov 2009
Reputation: 18
Status
None
This is a promising hack! This will indeed give the game a nice twist in terms of variety of spells to be cast by some characters.

Would you mind explaining how did you go about doing this? I know assembly, but just a little bit. I'm sure Madsiur will be very interested as well.
And no, Djinn has not been on the site since early November of the past year....
Quote  

#3
Posts: 127
Threads: 8
Thanks Received: 21
Thanks Given: 12
Joined: Jan 2012
Reputation: 13
Status
None
"Making it portable", do you mean like making an .ips file?

There are a lot of handy tools that can binary compare two .smc files and make an .ips file with the difference.

http://en.wikipedia.org/wiki/Rom_hacking#Distribution ?

But I'd love to know more details about the changes you made to the game.
  Find
Quote  

#4
Posts: 3,970
Threads: 279
Thanks Received: 236
Thanks Given: 58
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
Interesting idea! Have you created a data table with esper number and then disable the selection of the esper in the menu loading routine depending which byte for which character is loaded from that table? Anyway I'm interested in your code because i would implement something similar but enable some espers to be equipable on more than one character
  Find
Quote  

#5
Posts: 2,769
Threads: 88
Thanks Received: 24
Thanks Given: 87
Joined: Jun 2009
Reputation: 25
Status
None
thats a unque idea


"Sometimes ninjas do wrong to each other, and in dat way the force of tha earf' comes around da moon - and at that presence, da dirt, it overshadows the grass, so you're like, I can't cut dis grass, there's no sun comin' through. So in order to enable each other the two fruits have to look each other in da eye and understand we can only be right, as da ripe is wrong, you know what I mean?"

-HNIC
Quote  

#6
Posts: 708
Threads: 50
Thanks Received: 12
Thanks Given: 0
Joined: Jan 2010
Reputation: 15
Status
None
This would be absolutely wonderful, I have actually been wondering about the possibility of this very thing for a while so I hope that you will be able to find a way to 'port' it, even if it means just creating a spreadsheet with instructions on what to do, even that would be just splendid!
  Find
Quote  

#7
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
(04-05-2012, 08:12 AM)Angelo26 Wrote: Would you mind explaining how did you go about doing this? I know assembly, but just a little bit. I'm sure Madsiur will be very interested as well.

The only reason an esper would be grey (unequippable) on the esper list is if someone else already had it equipped. What I did was find the subroutine that determines that and jumped to different parts of it depending on which espers the selected character could equip. In essence, if I didn't want a character to equip a certain esper, I made the game think someone else had it equipped already.

The problem this approach presented was that, if you try to equip a grey esper, the game BZZTs you and tells you "<Chr> has it!", where <Chr> is the character equipping the current esper. Since no one actually had the esper equipped, the message was incorrect. I ended up having to write a new message to display when trying to equip a grey esper, assuming someone else didn't have it already. That's what the last screenshot shows.

(04-05-2012, 01:20 PM)m06 Wrote: "Making it portable", do you mean like making an .ips file?

By that I meant putting it out in a format that anyone could modify the esper list without having to dive into the ASM file. I can distribute it as is as an IPS file, but then if the person who downloads it isn't familiar with ASM, they're stuck with the restrictions I've already placed.

(04-05-2012, 02:11 PM)Madsiur Wrote: Interesting idea! Have you created a data table with esper number and then disable the selection of the esper in the menu loading routine depending which byte for which character is loaded from that table? Anyway I'm interested in your code because i would implement something similar but enable some espers to be equipable on more than one character

Code:
TerraTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW Eq        ; Maduin
DW Eq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW Eq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW Eq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW Eq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW Eq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW Eq        ; Phoenix

I just made one of those for each character. Espers aren't restricted to just one person; if you want Ramuh to equipped by everyone, just jump to the Eq label instead of NoEq in each character's table.

I mainly just used the routine that checks if someone has an esper equipped every time the esper list is loaded. This is my first in-depth ASM hack so I'm sure it could be made more efficient, but for now it's at least functional.

(04-05-2012, 10:02 PM)Sutebenu Sempai Wrote: This would be absolutely wonderful, I have actually been wondering about the possibility of this very thing for a while so I hope that you will be able to find a way to 'port' it, even if it means just creating a spreadsheet with instructions on what to do, even that would be just splendid!

My first idea was to write a quick Visual Basic program that would alter an IPS patch directly with whatever changes the user wanted, but I was hoping there was an easier way that I'm overlooking, since I'm not too familiar with IPS patch formatting at the moment.

Quote:But I'd love to know more details about the changes you made to the game.

My partner was keeping a detailed changelog, but he took it down as we were changing things too rapidly to keep it updated. There are quite a few things we've changed so it's hard to summarize, but our main goal was to re-balance the game a little, make every character useful in some way and ramp up difficulty a bit. Just about every esper has had its spell repertoire changed to fit more thematically with not only the esper, but the character(s) that can equip it. He's also taken on the mind-numbing task of editing every enemy and formation to improve the spread in some areas.

Some of the smaller changes we made include re-writing large portions of the dialogue, drastically cutting down on the rage list, modifying some unique commands to be more useful (notably Cyan; for example, retort is no longer reactive, but a proactive MP damage ability), trying to make physically attacking more appealing (lowering max MP, raising MP costs of powerful spells, removing magic damage +50% from global relics, etc.), and modifying some of the more useless spells (example: W.Wind is now Storm, a weaker, wind-based version of Merton).

I'll try to remember to put up a link to the changelog when he gets it back up.


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  

#8
Posts: 3,970
Threads: 279
Thanks Received: 236
Thanks Given: 58
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(04-05-2012, 11:46 PM)Synchysi Wrote: I mainly just used the routine that checks if someone has an esper equipped every time the esper list is loaded. This is my first in-depth ASM hack so I'm sure it could be made more efficient, but for now it's at least functional.

Yeah efficiency and optimization are for some people very important. I always think that there is a better way to do my ASM hacks or a better place to put the code. Keep in mind that except for C1 and C2, there is still unused space for tweaks like that in other banks (C0, C3, C4) that isn't being taken by other patches. I think your idea was pretty good.

(04-05-2012, 11:46 PM)Synchysi Wrote: My first idea was to write a quick Visual Basic program that would alter an IPS patch directly with whatever changes the user wanted, but I was hoping there was an easier way that I'm overlooking, since I'm not too familiar with IPS patch formatting at the moment.

There is always the possibility of a ASM file. You write your code and leave the tables blanks in the file. Anyone who can read comments should be able to edit the tables. The only thing is that you need an assembler such as xkas to assemble the file to the ROM.

Here'S an example of assembly file with tables, for a FFIV style stat growth system in FFVI, courtesy of Lenophis:

Code:
hirom   ; don't change this
header  ; comment out if your rom has no header

org $C260D0  ; location in both SNES versions
; org $C260B8  ; location in SFC/Japanese version
JSL $C0D814

org $C0D814
PHX
PHY
REP #$20
LDA $08,S  ; get our original index, we need it to look at the right stat for the right character
TAY
SEP #$20
LDA $161A,Y  ; time for a strength boost
CLC
ADC str_table,X  ; add the value for this level
CMP #$81  ; 129 or higher?
BCC str_skip
LDA #$80  ; cap at 128
str_skip:
STA $161A,Y  ; new strength
LDA $161B,Y  ; time for an agility boost
CLC
ADC agi_table,X  ; add the value for this level
CMP #$81  ; 129 or higher?
BCC agi_skip
LDA #$80  ; cap at 128
agi_skip:
STA $161B,Y  ; new agility
LDA $161C,Y  ; time for a stamina boost
CLC
ADC sta_table,X  ; add the value for this level
CMP #$81  ; 129 or higher?
BCC sta_skip
LDA #$80  ; cap at 128
sta_skip:
STA $161C,Y  ; new stamina
LDA $161D,Y  ; time for a magic boost
CLC
ADC mag_table,X  ; add the value for this level
CMP #$81  ; 129 or higher?
BCC mag_skip
LDA #$80  ; cap at 128
mag_skip:
STA $161D,Y  ; new magic
PLY
PLX
TDC
LDA $E6F500,X  ; get MP growth
RTL

; the four tables for strength, magic, agility, and stamina. change these zeroes to your heart's content
; if you wish to subtract for whatever reason, just think of these as signed values.

str_table:
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 0-19
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 20-39
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 40-59
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 60-79
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 80-99

agi_table:
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 0-19
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 20-39
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 40-59
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 60-79
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 80-99

sta_table:
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 0-19
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 20-39
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 40-59
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 60-79
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 80-99

mag_table:
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 0-19
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 20-39
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 40-59
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 60-79
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; levels 80-99
  Find
Quote  

#9
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
I suppose I could do that. The tables are all that would need modifying, and as you can see above they're pretty self-explanatory.
(04-06-2012, 12:23 AM)Madsiur Wrote:
(04-05-2012, 11:46 PM)Synchysi Wrote: I mainly just used the routine that checks if someone has an esper equipped every time the esper list is loaded. This is my first in-depth ASM hack so I'm sure it could be made more efficient, but for now it's at least functional.

Yeah efficiency and optimization are for some people very important. I always think that there is a better way to do my ASM hacks or a better place to put the code. Keep in mind that except for C1 and C2, there is still unused space for tweaks like that in other banks (C0, C3, C4) that isn't being taken by other patches. I think your idea was pretty good.

It's important to me too, and the fact that what I wrote takes up 1034 bytes at the end of C3 leads me to believe it could be streamlined. Though to be fair, 864 of that are the character tables (27 espers * 16 character slots * 2 bytes per entry). There are a couple of places I believe it could be optimized, I'm just not sure how to go about it.


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  

#10
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
Sorry for the delay (and the double post). I wanted to clean up the assembly file and clarify the comments, and shifts at work tend to make me disappear for a week at a time.

Anyway, here's the actual code. Hopefully it's clear enough.

Code:
hirom   ; Don't change this.
header  ; Comment out if your ROM has no header.

; Restricts espers to be equippable only by certain characters set in the tables at the bottom.
; All locations have only been tested in FF3us ROM version 1.0, although it should work in version 1.1.
; This will probably not work on the Japanese version.

; Uses 1034 bytes of free space at the end of bank C3.
; Address range utilized: C3/F091 to C3/F49B


; Loads the skills menu and gets the character ID. We interrupt this routine in order
; to store the character ID in $1CF8 (formerly Bushido names in the Japanese version;
; unused in FF3us).
; This is why it likely won't work in FF3j, although I suppose you could just find
; another unused location.

org $C31B61

JSR StChr


; Checks if any espers are already equipped. We come here just to create a label for
; ease of use and readability.

org $C35576

ChkEq:


; Sets text color to grey if an esper is unequippable. As above, we only come here to
; create a label.
; The game will later use the text color to determine whether to allow a character to
; use a particular esper.

org $C35593

GreyEsp:


; This prints out the name of the person currently using the esper you're trying to
; equip, which was originally the only thing stopping someone from equipping a certain
; esper. We need to change this, as the name will be blank if the character simply
; can't equip it.

org $C355B2

JSR Uneq


; The following lines originally jumped to the subroutine for checking if espers were
; already equipped (C3/5574). This check obviously isn't necessary if the character is
; unable to equip the esper anyway.
; There is one other place this check is called from (C3/59B1), but it doesn't need to
; be touched (and in fact shouldn't be) as it's only executed when viewing an esper's
; specifics.

org $C35524

JSR ChkEsp

org $C358E1

JSR ChkEsp


; Custom functions follow.

org $C3F091            ; Start of free space in bank C3.

StChr:                ; Gets the ID of the current character and stores it for later use.
TAX
LDA $69,X
STA $1CF8
RTS

ChkEsp:                ; Checks if a character can use an esper before checking if someone else has it equipped.
PHX                    ; Preserve X. May or may not be necessary, but better safe than sorry.
STA $E0                ; Stores the esper ID for later use. Could use the stack, but the esper ID needs to go into $E0 anyway.
LDA $1CF8            ; Character ID, from above.
ASL
TAX                    ; Used as the following table's index, hence doubling it previously.
LDA $E0
ASL                    ; Double A (which now holds the current esper's ID) for indexing use in the next table.
JMP (ChrTbl,X)


; These two code blocks are jumped to from the tables at the bottom.
; Their main purpose is to make sure X is restored from the stack.

Eq:
PLX
JMP ChkEq

NoEq:
PLX
JMP GreyEsp


; Handles error messages in the case of trying to equip a grey esper.

Uneq:
LDA $1602,X            ; Character's name.
CMP #$80            ; If the first letter isn't blank, then someone has the esper equipped and we can go back to tell the player as much.
BCS Exit
PLX                    ; Else, the character can't equip the esper at all and we need to tell the player as much.
LDX $00                

; Above: PLX because we no longer need to RTS to where this subroutine was called from.
; Sloppy, I know. BCS alone (instead of branching to an RTS) won't work because the branch is just too long.
; I'm looking for a way to streamline it.
; LDX $00 because it's necessary anyway as a counter for the next block.

; The following is identical to the code that prints "<Char> has it!",
; just altered slightly so it reads "Can't equip!"

LoadNoEqTxt:
LDA NoEqTxt,X
BEQ Null            ; If the character (letter) being written is null ($00), end the line.
STA $2180            ; Print the current letter.
INX                    ; Go to the next letter.
BRA LoadNoEqTxt
Exit:
RTS

Null:
STZ $2180            ; End this string.
JMP $7FD9


; "Can't equip!" text.
NoEqTxt:
DB $82,$9A,$A7,$C3,$AD,$FF,$9E,$AA,$AE,$A2,$A9,$BE,$00


; Character pointer table.
ChrTbl:
DW Terra
DW Locke
DW Cyan
DW Shadow
DW Edgar
DW Sabin
DW Celes
DW Strago
DW Relm
DW Setzer
DW Mog
DW Gau
DW Gogo
DW Umaro
DW Slot15
DW Slot16            ; These last four are probably unnecessary, but better safe than sorry, I suppose.


; The following is probably unnecessary, but will remain until I can figure out a way to streamline it.

; From above, A holds the esper ID (doubled) for use in the table indexing that follows.

Terra:
TAX
JMP (TerraTbl,X)

Locke:
TAX
JMP (LockeTbl,X)

Cyan:
TAX
JMP (CyanTbl,X)

Shadow:
TAX
JMP (ShadowTbl,X)

Edgar:
TAX
JMP (EdgarTbl,X)

Sabin:
TAX
JMP (SabinTbl,X)

Celes:
TAX
JMP (CelesTbl,X)

Strago:
TAX
JMP (StragoTbl,X)

Relm:
TAX
JMP (RelmTbl,X)

Setzer:
TAX
JMP (SetzerTbl,X)

Mog:
TAX
JMP (MogTbl,X)

Gau:
TAX
JMP (GauTbl,X)

Gogo:
TAX
JMP (GogoTbl,X)

Umaro:
TAX
JMP (UmaroTbl,X)

Slot15:
TAX
JMP (Slot15Tbl,X)

Slot16:
TAX
JMP (Slot16Tbl,X)


; Character esper tables follow. They should be pretty self-explanatory.
; Eq = can equip
; NoEq = can't equip

TerraTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW Eq        ; Maduin
DW Eq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW Eq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW Eq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW Eq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW Eq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW Eq        ; Phoenix

LockeTbl:
DW NoEq        ; Ramuh
DW Eq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW Eq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW Eq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW Eq        ; Phoenix

CyanTbl:
DW Eq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW Eq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW Eq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

ShadowTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW Eq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW Eq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

EdgarTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW Eq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW Eq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW Eq        ; Golem
DW Eq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

SabinTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW Eq        ; Terrato
DW NoEq        ; Shoat
DW Eq        ; Maduin
DW NoEq        ; Bismark
DW Eq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW Eq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

CelesTbl:
DW Eq        ; Ramuh
DW NoEq        ; Ifrit
DW Eq        ; Shiva
DW Eq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW Eq        ; Alexander
DW Eq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW Eq        ; Phantom
DW Eq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

StragoTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW Eq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW Eq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW Eq        ; ZoneSeek
DW Eq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

RelmTbl:
DW NoEq        ; Ramuh
DW Eq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW Eq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW Eq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW Eq        ; Starlet
DW NoEq        ; Phoenix

SetzerTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW Eq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW Eq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW Eq        ; Starlet
DW NoEq        ; Phoenix

MogTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW Eq        ; Terrato
DW Eq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW Eq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

GauTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW Eq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW Eq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

GogoTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

UmaroTbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

Slot15Tbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

Slot16Tbl:
DW NoEq        ; Ramuh
DW NoEq        ; Ifrit
DW NoEq        ; Shiva
DW NoEq        ; Siren
DW NoEq        ; Terrato
DW NoEq        ; Shoat
DW NoEq        ; Maduin
DW NoEq        ; Bismark
DW NoEq        ; Stray
DW NoEq        ; Palidor
DW NoEq        ; Tritoch
DW NoEq        ; Odin
DW NoEq        ; Raiden
DW NoEq        ; Bahamut
DW NoEq        ; Alexander
DW NoEq        ; Crusader
DW NoEq        ; Ragnarok
DW NoEq        ; Kirin
DW NoEq        ; ZoneSeek
DW NoEq        ; Carbunkle
DW NoEq        ; Phantom
DW NoEq        ; Seraph
DW NoEq        ; Golem
DW NoEq        ; Unicorn
DW NoEq        ; Fenrir
DW NoEq        ; Starlet
DW NoEq        ; Phoenix

; EOF

The formatting looks a lot better in my editor. Sweat


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite