If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working at any time.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Final Fantasy VI/ROM map/Assembly C26
< Final Fantasy VI | ROM map
Jump to navigation
Jump to search
This is a sub-page of Final Fantasy VI/ROM map.
C2/602A learn spell based on esper
C2/602A: DA PHX C2/602B: 20 93 62 JSR $6293 (Multiply A by #$0B and store in X) C2/602E: A0 05 00 LDY #$0005 (Do for each spell taught by esper) C2/6031: 7B TDC (Clear A) C2/6032: BF 01 6E D8 LDA $D86E01,X (Spell taught) C2/6036: C9 FF CMP #$FF C2/6038: F0 0A BEQ $6044 (Branch if no spell taught) C2/603A: 5A PHY C2/603B: A8 TAY C2/603C: BF 00 6E D8 LDA $D86E00,X (Spell learn rate) C2/6040: 20 4B 60 JSR $604B (Add amount to known% for spell) C2/6043: 7A PLY C2/6044: E8 INX C2/6045: E8 INX C2/6046: 88 DEY C2/6047: D0 E8 BNE $6031 (Check next spell taught) C2/6049: FA PLX C2/604A: 60 RTS
C2/604B learn spell
C2/604B: F0 1F BEQ $606C (If no spell to learn) C2/604D: EB XBA C2/604E: A5 FB LDA $FB (Magic points gained from the battle) C2/6050: 20 81 47 JSR $4781 (Multiply by spell learn rate) C2/6053: 85 EE STA $EE (Store this amount in $EE) C2/6055: B1 F4 LDA ($F4),Y C2/6057: C9 FF CMP #$FF C2/6059: F0 11 BEQ $606C (Branch if spell already known) C2/605B: 18 CLC C2/605C: 65 EE ADC $EE (Add amount learned to % known for spell) C2/605E: B0 04 BCS $6064 C2/6060: C9 64 CMP #$64 C2/6062: 90 02 BCC $6066 C2/6064: A9 80 LDA #$80 C2/6066: 91 F4 STA ($F4),Y C2/6068: A5 F1 LDA $F1 C2/606A: 04 F0 TSB $F0 C2/606C: 60 RTS
C2/606D unknow
C2/606D: 64 F8 STZ $F8
C2/606F: 7B TDC (Clear 16-bit A)
C2/6070: BD 08 16 LDA $1608,X (current level)
C2/6073: C9 63 CMP #$63
C2/6075: B0 F5 BCS $606C (exit if >= 99)
C2/6077: C2 20 REP #$20 (Set 16-bit A)
C2/6079: 0A ASL
C2/607A: DA PHX
C2/607B: AA TAX (level * 2)
C2/607C: 7B TDC (Clear 16-bit A)
C2/607D: 18 CLC (Clear carry)
C2/607E: 7F 1E 82 ED ADC $ED821E,X (add to Experience Needed for Level Up FROM this level)
C2/6082: 90 02 BCC $6086 (branch if bottom 16-bits of sum didn't overflow)
C2/6084: E6 F8 INC $F8 (if so, increment a counter that will determine
top 16-bits)
C2/6086: CA DEX
C2/6087: CA DEX (point to experience needed for next lowest level)
C2/6088: D0 F3 BNE $607D (total experience needed for level 1 thru current level.
IOW, total experience needed to reach next level.)
C2/608A: FA PLX
(BUT, experience needed is stored divided by 8 in ROM, so we
must multiply it to get true value)
C2/608B: 0A ASL
C2/608C: 26 F8 ROL $F8 (multiply 32-bit [only 24 bits ever used] experience
needed by 2)
C2/608E: 0A ASL
C2/608F: 26 F8 ROL $F8 (again)
C2/6091: 0A ASL
C2/6092: 26 F8 ROL $F8 (again)
C2/6094: 85 F6 STA $F6 (so now, $F6 thru $F8 = total 24-bit experience needed
to advance from our given level)
C2/6096: BD 12 16 LDA $1612,X (top 2 bytes of current Experience)
C2/6099: C5 F7 CMP $F7 (compare to top 2 bytes of needed experience)
C2/609B: E2 20 SEP #$20 (set 8-bit Accumulator)
C2/609D: 90 CD BCC $606C (Exit if (current exp / 256) < (needed exp / 256) )
C2/609F: D0 07 BNE $60A8 (if (current exp / 256) != (needed exp / 256), branch)
(since it's not less than, we know it's greater than)
C2/60A1: BD 11 16 LDA $1611,X (bottom byte of Experience)
C2/60A4: C5 F6 CMP $F6 (compare to experience needed)
C2/60A6: 90 C4 BCC $606C (Exit if less)
C2/60A8: A5 F2 LDA $F2
C2/60AA: F0 05 BEQ $60B1
C2/60AC: 64 F2 STZ $F2
C2/60AE: 20 D4 5F JSR $5FD4
C2/60B1: 20 C2 60 JSR $60C2 (raise level, raise normal HP and MP, and give any
Esper bonus)
C2/60B4: DA PHX
C2/60B5: BD 08 16 LDA $1608,X (load level)
C2/60B8: EB XBA (put in top of A)
C2/60B9: BD 00 16 LDA $1600,X
C2/60BC: 20 B6 61 JSR $61B6
C2/60BF: FA PLX
C2/60C0: 80 AB BRA $606D (repeat to check for another possible level gain,
since it's possible a battle with wicked high
experience on a wussy character boosted multiple
levels.)
C2/60C2 add bonus when level up
(Gain level, raise HP and MP, and give any Esper bonus)
C2/60C2: 08 PHP
C2/60C3: FE 08 16 INC $1608,X (increment current level)
C2/60C6: 64 FD STZ $FD
C2/60C8: 64 FF STZ $FF
C2/60CA: DA PHX
C2/60CB: 7B TDC (Clear 16-bit A)
C2/60CC: BD 08 16 LDA $1608,X (get level)
C2/60CF: AA TAX
C2/60D0: BF 00 F5 E6 LDA $E6F500,X (normal MP gain for level)
C2/60D4: 85 FE STA $FE
C2/60D6: BF 9E F4 E6 LDA $E6F49E,X (normal HP gain for level)
C2/60DA: 85 FC STA $FC
C2/60DC: FA PLX
C2/60DD: BD 1E 16 LDA $161E,X (get equipped Esper)
C2/60E0: 30 14 BMI $60F6 (if it's null, don't try to calculate bonuses)
C2/60E2: 5A PHY
C2/60E3: DA PHX
C2/60E4: 9B TXY (Y will be used to index stats that are boosted
by the $614E call. i believe it currently points
to offset of character block from $1600)
C2/60E5: 20 93 62 JSR $6293 (X = A * 11d)
C2/60E8: 7B TDC (Clear 16-bit A)
C2/60E9: BF 0A 6E D8 LDA $D86E0A,X (end of data block for Esper.. probably
has level-up bonus)
C2/60ED: 30 05 BMI $60F4 (if null, don't try to calculate bonus)
C2/60EF: 0A ASL
C2/60F0: AA TAX (multiply bonus index by 2)
C2/60F1: FC 4E 61 JSR ($614E,X) (calculate bonus. note that [Stat]+1 jumps to the
same place as [Stat]+2. what distinguishes them?
Bit 1 of X. if X is 20, 24, 28, 32, you'll get +1
to a stat.. if it's 18, 22, 26, 30, you get +2.
for HP/MP boosts, X of 0/2/4 means HP, and
6/8/10 means MP)
C2/60F4: FA PLX
C2/60F5: 7A PLY
C2/60F6: C2 21 REP #$21 (set 16-bit A, clear carry)
C2/60F8: BD 0B 16 LDA $160B,X (maximum HP)
C2/60FB: 48 PHA
C2/60FC: 29 00 C0 AND #$C000 (isolate top bits, which indicate (bit 7, then bit 6):
00 = no equipment % bonus, 11 = 12.5% bonus,
01 = 25% bonus, 10 = 50% bonus)
C2/60FF: 85 EE STA $EE (save equipment bonus bits)
C2/6101: 68 PLA (get max HP again)
C2/6102: 29 FF 3F AND #$3FFF (isolate bottom 14 bits.. just the max HP w/o bonus)
C2/6105: 65 FC ADC $FC (add to HP gain for level)
C2/6107: C9 10 27 CMP #$2710
C2/610A: 90 03 BCC $610F (branch if less than 10000)
C2/610C: A9 0F 27 LDA #$270F (replace with 9999)
C2/610F: 05 EE ORA $EE (combine with bonus bits)
C2/6111: 9D 0B 16 STA $160B,X (save updated max HP)
C2/6114: 18 CLC (clear carry)
C2/6115: BD 0F 16 LDA $160F,X (now maximum MP)
C2/6118: 48 PHA
C2/6119: 29 00 AND #$C000 (isolate top bits, which indicate (bit 7, then bit 6):
00 = no equipment % bonus, 11 = 12.5% bonus,
01 = 25% bonus, 10 = 50% bonus)
C2/611C: 85 EE STA $EE (save equipment bonus bits)
C2/611E: 68 PLA (get max MP again)
C2/611F: 29 FF 3F AND #$3FFF (isolate bottom 14 bits.. just the max MP w/o bonus)
C2/6122: 65 FE ADC $FE (add to MP gain for level)
C2/6124: C9 E8 03 CMP #$03E8
C2/6127: 90 03 BCC $612C (branch if less than 1000)
C2/6129: A9 E7 03 LDA #$03E7 (replace with 999)
C2/612C: 05 EE ORA $EE (combine with bonus bits)
C2/612E: 9D 0F 16 STA $160F,X (save updated max MP)
C2/6131: 28 PLP
C2/6132: 60 RTS
C2/6133 unknow
C2/6133: 5A PHY C2/6134: A0 35 00 LDY #$0035 C2/6137: B1 F4 LDA ($F4),Y C2/6139: C9 80 CMP #$80 C2/613B: D0 0C BNE $6149 C2/613D: A9 FF LDA #$FF C2/613F: 91 F4 STA ($F4),Y C2/6141: 8C 35 2F STY $2F35 C2/6144: A9 32 LDA #$32 C2/6146: 20 D4 5F JSR $5FD4 C2/6149: 88 DEY C2/614A: 10 EB BPL $6137 C2/614C: 7A PLY C2/614D: 60 RTS
C2/614E pointers: esper bonus
C2/614E: 70 61 (~10% HP bonus) (HP due to X) C2/6150: 74 61 (~30% HP bonus) (HP due to X) C2/6152: 78 61 (50% HP bonus) (HP due to X) C2/6154: 70 61 (~10% MP bonus) (MP due to X) C2/6156: 74 61 (~30% MP bonus) (MP due to X) C2/6158: 78 61 (50% MP bonus) (MP due to X) C2/615A: B0 61 (Double natural HP gain for level. Curious...) C2/615C: 97 61 (No bonus) C2/615E: 97 61 (No bonus) C2/6160: 9B 61 (Vigor bonus) (+1 due to X value in caller) C2/6162: 9B 61 (Vigor bonus) (+2 due to X) C2/6164: 9A 61 (Speed bonus) (+1 due to X) C2/6166: 9A 61 (Speed bonus) (+2 due to X. No Esper currently uses) C2/6168: 99 61 (Stamina bonus) (+1 due to X) C2/616A: 99 61 (Stamina bonus) (+2 due to X) C2/616C: 98 61 (MagPwr bonus) (+1 due to X) C2/616E: 98 61 (MagPwr bonus) (+2 due to X)
C2/6170 esper bonus: HP or MP
C2/6170: A9 1A LDA #$1A (26 => 10.12625% bonus)
C2/6172: 80 06 BRA $617A
C2/6174: A9 4E LDA #$4E (78 => 30.46875% bonus)
C2/6176: 80 02 BRA $617A
C2/6178: A9 80 LDA #$80 (128 ==> 50% bonus)
C2/617A: E0 06 00 CPX #$0006 (are we boosting MP rather than HP?)
C2/617D: A2 00 00 LDX #$0000 (start pointing to $FC, which holds normal HP to raise)
C2/6180: 90 02 BCC $6184 (if X was less than 6, we're just boosting HP,
so branch)
C2/6182: E8 INX
C2/6183: E8 INX (point to $FE, which holds normal MP to raise)
C2/6184: EB XBA (put boost numerator in top of A)
C2/6185: B5 FC LDA $FC,X (get current HP or MP to add)
C2/6187: 20 81 47 JSR $4781
C2/618A: EB XBA (get (boost number * current HP or MP to add) / 256.
after all, the boost IS a percentage..)
C2/618B: D0 01 BNE $618E (if the HP/MP bonus is nonzero, branch)
C2/618D: 1A INC (if it was zero, be nice and give the chump one..)
C2/618E: 18 CLC
C2/618F: 75 FC ADC $FC,X
C2/6191: 95 FC STA $FC,X (add boost to natural HP/MP gain)
C2/6193: 90 02 BCC $6197
C2/6195: F6 FD INC $FD,X (if bottom byte overflowed from add, boost top byte)
C2/6197: 60 RTS
C2/6198 esper bonus: vigor, speed, stamina or magic power
(Esper stat bonus at level-up. Vigor, Speed, Stamina, or MagPwr.
If Bit 1 of X is set, give +1 bonus. If not, give +2.)
C2/6198: C8 INY (enter here = 3 INYs = point to MagPwr)
C2/6199: C8 INY (enter here = 2 INYs = point to Stamina)
C2/619A: C8 INY (enter here = 1 INY = point to Speed)
C2/619B: 8A TXA (enter here = 0 INYs = point to Vigor)
C2/619C: 4A LSR
C2/619D: 4A LSR (Carry holds bit 1 of X)
C2/619E: BB TYX (0 to 3 value. determines which stat will be altered)
C2/619F: BD 1A 16 LDA $161A,X (at $161A,X we have Vigor, Speed, Stamina, and MagPwr,
respectively)
C2/61A2: 1A INC
C2/61A3: B0 01 BCS $61A6 (If carry set, just give +1)
C2/61A5: 1A INC
C2/61A6: C9 81 CMP #$81 (is stat >= 129?)
C2/61A8: 90 02 BCC $61AC
C2/61AA: A9 80 LDA #$80 (if so, make it 128)
C2/61AC: 9D 1A 16 STA $161A,X (save updated stat)
C2/61AF: 60 RTS
C2/61B0 esper bonus: double natural HP gain by level (unused)
(Give double natural HP gain for level? Can't say I know when this happens...) C2/61B0: 7B TDC (Clear 16-bit A) C2/61B1: AA TAX (X = 0) C2/61B2: A5 FC LDA $FC C2/61B4: 80 D8 BRA $618E
C2/61B6 unknow
C2/61B6: A2 00 00 LDX #$0000 (point to start of Terra's magic learned at
level up block)
C2/61B9: C9 00 CMP #$00 (is it character #0, Terra?)
C2/61BB: F0 3F BEQ $61FC (if yes, branch to see if she learns any spells)
C2/61BD: A2 20 00 LDX #$0020 (point to start of Celes' magic learned at
level up block)
C2/61C0: C9 06 CMP #$06 (is it character #6, Celes?)
C2/61C2: F0 38 BEQ $61FC (if yes, branch to see if she learns any spells)
C2/61C4: A2 00 00 LDX #$0000 (point to start of Cyan's SwdTechs learned
at level up block)
C2/61C7: C9 02 CMP #$02 (if it character #2, Cyan?)
C2/61C9: D0 15 BNE $61E0 (if not, check for Sabin)
C2/61CB level up: sword tech learning
(Cyan learning SwdTechs at level up.
His data block is just an array of 8 bytes: the level for learning each SwdTech)
C2/61CB: 20 22 62 JSR $6222 (are any SwdTechs learned at the current level?)
C2/61CE: F0 51 BEQ $6221 (if not, exit)
C2/61D0: 0C F7 1C TSB $1CF7 (if so, enable the newly learnt SwdTech)
C2/61D3: D0 4C BNE $6221 (if it was already enabled [e.g. Cleave learned
in nightmare], suppress celebratory messages
and such)
C2/61D5: A9 40 LDA #$40
C2/61D7: 04 F0 TSB $F0
C2/61D9: D0 46 BNE $6221
C2/61DB: A9 42 LDA #$42
C2/61DD: 4C D4 5F JMP $5FD4
C2/61E0 level up: blitz learning
(Sabin learning Blitzes at level up.
His data block is just an array of 8 bytes: the level for learning each Blitz)
C2/61E0: A2 08 00 LDX #$0008 (point to start of Sabin's Blitzes learned
at level up block)
C2/61E3: C9 05 CMP #$05 (is it character #5, Sabin?)
C2/61E5: D0 3A BNE $6221 (if not, exit)
C2/61E7: 20 22 62 JSR $6222 (are any Blitzes learned at the current level?)
C2/61EA: F0 35 BEQ $6221 (if not, exit)
C2/61EC: 0C 28 1D TSB $1D28 (if so, enable the newly learnt Blitz)
C2/61EF: D0 30 BNE $6221 (if it was already enabled [e.g. Bum Rush taught
by Duncan], suppress celebratory messages
and such)
C2/61F1: A9 80 LDA #$80
C2/61F3: 04 F0 TSB $F0
C2/61F5: D0 2A BNE $6221
C2/61F7: A9 33 LDA #$33
C2/61F9: 4C D4 5F JMP $5FD4
C2/61FC level up: Terra and Celes learning of spells
(Terra and Celes natural magic learning at level up)
C2/61FC: 5A PHY
C2/61FD: EB XBA
C2/61FE: A0 10 00 LDY #$0010 (check a total of 32 bytes, as Terra and Celes
each have a 16-element spell list, with
2 bytes per element [spell #, then level] )
C2/6201: DF C1 E3 EC CMP $ECE3C1,X (Terra/Celes level-up spell list: Level at
which spell learned)
C2/6205: D0 14 BNE $621B (if this level isn't one where the character
learns a spell, branch to check the next
list element)
C2/6207: 48 PHA
C2/6208: 5A PHY
C2/6209: 7B TDC (Clear 16-bit A)
C2/620A: BF C0 E3 EC LDA $ECE3C0,X (Terra/Celes level-up spell list: Spell number)
C2/620E: A8 TAY
C2/620F: B1 F4 LDA ($F4),Y (?? check entry in spell list ??)
C2/6211: C9 FF CMP #$FF
C2/6213: F0 04 BEQ $6219
C2/6215: A9 80 LDA #$80
C2/6217: 91 F4 STA ($F4),Y
C2/6219: 7A PLY
C2/621A: 68 PLA
C2/621B: E8 INX
C2/621C: E8 INX (check next spell and level pair)
C2/621D: 88 DEY
C2/621E: D0 E1 BNE $6201
C2/6220: 7A PLY
C2/6221: 60 RTS
C2/6222 handle blitz or sword tech learned abilities
(Handles Sabin's Blitzes learned or Cyan's SwdTechs learned, depending on X value)
C2/6222: A9 01 LDA #$01
C2/6224: 85 EE STA $EE (start by marking SwdTech/Blitz #0)
C2/6226: EB XBA (get current level from top of A?)
C2/6227: DF 90 F4 E6 CMP $E6F490,X (does level match the one in the SwdTech/Blitz
table?)
C2/622B: F0 05 BEQ $6232 (if so, branch)
C2/622D: E8 INX (otherwise, move to check next level)
C2/622E: 06 EE ASL $EE (mark the next SwdTech/Blitz as learned instead)
C2/6230: 90 F5 BCC $6227 (loop for all 8 bits. if Carry is set, we've
checked all 8 to no avail, and $EE will be 0,
indicating no SwdTech or Blitz is learned)
C2/6232: A5 EE LDA $EE (get the SwdTech/Blitz bitfield.. where the number
of the bit that is set represents the number of
the SwdTech/Blitz to learn)
C2/6234: 60 RTS
C2/6235 add experience to character
Add Experience for battle to character
If XP over 15,000,000 sets XP to 15,000,000
C2/6235: 08 PHP
C2/6236: C2 21 REP #$21
C2/6238: AD 35 2F LDA $2F35 (XP Gained from battle)
C2/623B: 7D 11 16 ADC $1611,X (Add to XP for character)
C2/623E: 85 F6 STA $F6
C2/6240: E2 20 SEP #$20 (Set 8-bit Accumulator)
C2/6242: AD 37 2F LDA $2F37 (Do third byte of XP)
C2/6245: 7D 13 16 ADC $1613,X
C2/6248: 85 F8 STA $F8
C2/624A: DA PHX
C2/624B: A2 02 00 LDX #$0002 (The following loops will compare the character's
new Experience (held in $F6 - $F8) to 15000000, and
if it exceeds that amount, cap it at 15000000.)
C2/624E: BF 76 62 C2 LDA $C26276,X
C2/6252: D5 F6 CMP $F6,X
C2/6254: F0 0E BEQ $6264
C2/6256: B0 0F BCS $6267
C2/6258: A2 02 LDX #$0002
C2/625B: BF 76 62 C2 LDA $C26276,X
C2/625F: 95 F6 STA $F6,X
C2/6261: CA DEX
C2/6262: 10 F7 BPL $625B
C2/6264: CA DEX
C2/6265: 10 E7 BPL $624E
C2/6267: FA PLX
C2/6268: A5 F8 LDA $F8
C2/626A: 9D 13 16 STA $1613,X (store to third persistent byte of XP)
C2/626D: C2 20 REP #$20
C2/626F: A5 F6 LDA $F6
C2/6271: 9D 11 16 STA $1611,X (store to bottom two bytes of XP)
C2/6274: 28 PLP
C2/6275: 60 RTS
C2/6276 data: experience cap
Data (Experience cap: 15000000) C2/6276: C0 C2/6277: E1 C2/6278: E4
C2/6279 unknow
C2/6279: A9 05 LDA #$05 C2/627B: 20 11 64 JSR $6411 C2/627E: A9 0A LDA #$0A C2/6280: 4C 11 64 JMP $6411
C2/6283 set address for spells knows by character
Stores address for spells known by character in $F4 C2/6283: 08 PHP C2/6284: EB XBA C2/6285: A9 36 LDA #$36 C2/6287: 20 81 47 JSR $4781 C2/628A: C2 21 REP #$21 C2/628C: 69 6E 1A ADC #$1A6E C2/628F: 85 F4 STA $F4 C2/6291: 28 PLP C2/6292: 60 RTS
C2/6293 math: X = A * 0B
Multiply A by #$0B and store in X C2/6293: EB XBA C2/6294: A9 0B LDA #$0B C2/6296: 20 81 47 JSR $4781 C2/6299: AA TAX C2/629A: 60 RTS
C2/629B copy function
(Copy $3A28-$3A2B variables into ($76) buffer) C2/629B: 8D 28 3A STA $3A28 C2/629E: 48 PHA C2/629F: DA PHX C2/62A0: 08 PHP C2/62A1: C2 20 REP #$20 (Set 16-bit Accumulator) C2/62A3: E2 10 SEP #$10 (Set 8-bit Index Registers) C2/62A5: AE 72 3A LDX $3A72 (X = animation buffer pointer) C2/62A8: AD 28 3A LDA $3A28 C2/62AB: 9D 6E 2D STA $2D6E,X C2/62AE: AD 2A 3A LDA $3A2A (Final Damage) C2/62B1: 9D 70 2D STA $2D70,X (Store in damage taken) C2/62B4: E8 INX C2/62B5: E8 INX C2/62B6: E8 INX C2/62B7: E8 INX C2/62B8: 8E 72 3A STX $3A72 (increase animation buffer pointer by 4) C2/62BB: 28 PLP C2/62BC: FA PLX C2/62BD: 68 PLA C2/62BE: 60 RTS
C2/62BF unknow
??? Function Calls 629B, setting the accumulator to 16-bit before. C2/62BF: 08 PHP C2/62C0: C2 20 REP #$20 (Set 16-bit Accumulator) C2/62C2: 20 9B 62 JSR $629B C2/62C5: 28 PLP C2/62C6: 60 RTS
C2/62C7 add item to inventory
(Add/restore characters' items to inventory. This function is called:
- At the end of a character's turn when they Steal or Metamorph something.
- At the end of battle for all characters, to account for items they tried to use
during the battle, but were thwarted by being killed/etc (the game depletes items
upon *issuing* the command, so it'll be gone from inventory even if the command
never executed).
- It can also be used to restore a "bottomless" item at the end of a character's
turn. [The game does support equipment that doesn't deplete when you use it as
an Item, though no such equipment exists.])
C2/62C7: A2 06 LDX #$06
C2/62C9: BD 18 30 LDA $3018,X
C2/62CC: 1C 8C 3A TRB $3A8C (clear this character's "add my items to inventory"
flag)
C2/62CF: F0 19 BEQ $62EA (if it wasn't set, then skip this character)
C2/62D1: BD F4 32 LDA $32F4,X
C2/62D4: C9 FF CMP #$FF (does this character have a valid item to add to
inventory?)
C2/62D6: F0 12 BEQ $62EA (branch if not)
C2/62D8: 20 DC 54 JSR $54DC
C2/62DB: A9 01 LDA #$01
C2/62DD: 8D 75 2E STA $2E75
C2/62E0: A9 05 LDA #$05
C2/62E2: 20 11 64 JSR $6411
C2/62E5: A9 FF LDA #$FF
C2/62E7: 9D F4 32 STA $32F4,X (null the item to add to inventory)
C2/62EA: CA DEX
C2/62EB: CA DEX
C2/62EC: 10 DB BPL $62C9 (loop for all 4 party members)
C2/62EE: 60 RTS
C2/62EF display damage/healing
(Call C2/12F5 to do actual damage/healing at the end of a "strike", then queue
damage and/or healing values for display. Note that -1 (FFFFh) in a Damage
Taken/Healed variable means the damage taken or healed is nonexistent and won't
be displayed, as opposed to a displayable 0.)
C2/62EF: DA PHX
C2/62F0: 5A PHY
C2/62F1: 64 F0 STZ $F0
C2/62F3: 64 F2 STZ $F2
C2/62F5: A0 12 LDY #$12
C2/62F7: B9 D0 33 LDA $33D0,Y (Damage Taken)
C2/62FA: D9 E4 33 CMP $33E4,Y (Damage Healed)
C2/62FD: D0 03 BNE $6302
C2/62FF: 1A INC
C2/6300: F0 43 BEQ $6345 (Branch if Damage Taken and Damage Healed are
both nonexistent)
C2/6302: B9 18 30 LDA $3018,Y
C2/6305: 1C 5A 3A TRB $3A5A (Target is not missed)
(how can we have a target who's both missed
and being damaged/healed going into this
function, you ask? it could be from Launcher
firing multiple missiles at a single target.
or it could be from spread-aiming a spell at
a Reflective group, and multiple reflections
coming back at a single target.)
C2/6308: 20 F5 12 JSR $12F5 (Do the HP or MP Damage/Healing to entity)
C2/630B: CC 82 3A CPY $3A82 (Check if target protected by Golem)
C2/630E: D0 13 BNE $6323 (Branch if not ^)
C2/6310: B9 D0 33 LDA $33D0,Y (Damage Taken)
C2/6313: 1A INC
C2/6314: F0 0D BEQ $6323 (branch if Damage Taken is nonexistent, but
there is Damage Healed)
C2/6316: 38 SEC
C2/6317: AD 36 3A LDA $3A36 (HP for Golem)
C2/631A: F9 D0 33 SBC $33D0,Y (Subtract damage)
C2/631D: B0 01 BCS $6320 (If > 0)
C2/631F: 7B TDC
C2/6320: 8D 36 3A STA $3A36 (Set to 0 if < 0)
C2/6323: B9 E4 33 LDA $33E4,Y (Damage Healed)
C2/6326: 1A INC
C2/6327: F0 1C BEQ $6345 (Branch if Damage Healed nonexistent)
C2/6329: 3A DEC
C2/632A: 09 00 80 ORA #$8000
C2/632D: 99 E4 33 STA $33E4,Y (Set "sign bit" in Damage Healed)
C2/6330: E6 F2 INC $F2 (will be nonzero if any target has both damage done and
damage healed)
C2/6332: B9 D0 33 LDA $33D0,Y
C2/6335: 1A INC
C2/6336: D0 0D BNE $6345 (Branch if there is Damage Taken)
C2/6338: C6 F2 DEC $F2 (damage was healed but not done, so undo incrementation done
for this target)
C2/633A: B9 E4 33 LDA $33E4,Y
C2/633D: 99 D0 33 STA $33D0,Y (If only Damage Healed, Damage Taken = - Damage Healed)
C2/6340: 7B TDC
C2/6341: 3A DEC
C2/6342: 99 E4 33 STA $33E4,Y (Store -1 in Damage Healed)
C2/6345: B9 18 30 LDA $3018,Y
C2/6348: 2C 5A 3A BIT $3A5A
C2/634B: F0 06 BEQ $6353 (branch if target is not missed)
C2/634D: A9 00 40 LDA #$4000
C2/6350: 99 D0 33 STA $33D0,Y (Store Miss bit in damage)
C2/6353: B9 D0 33 LDA $33D0,Y
C2/6356: 1A INC
C2/6357: F0 02 BEQ $635B (If no damage dealt and/or damage healed)
C2/6359: E6 F0 INC $F0
C2/635B: 88 DEY
C2/635C: 88 DEY
C2/635D: 10 98 BPL $62F7
C2/635F: A4 F0 LDY $F0 (how many targets have damage dealt and/or damage healed)
C2/6361: C0 05 CPY #$05
C2/6363: 20 98 63 JSR $6398
C2/6366: 20 B4 63 JSR $63B4
C2/6369: A5 F2 LDA $F2
C2/636B: F0 1A BEQ $6387 (if no target had both damage healed and damage done, branch)
C2/636D: A2 12 LDX #$12
C2/636F: A0 00 LDY #$00
C2/6371: BD E4 33 LDA $33E4,X (Damage Healed)
C2/6374: 9D D0 33 STA $33D0,X (Store in Damage Taken)
C2/6377: 1A INC
C2/6378: F0 01 BEQ $637B (If no damage dealt)
C2/637A: C8 INY (how many targets have [2nd round of] damage dealt?)
C2/637B: CA DEX
C2/637C: CA DEX
C2/637D: 10 F2 BPL $6371
C2/637F: C0 05 CPY #$05
C2/6381: 20 98 63 JSR $6398
C2/6384: 20 B4 63 JSR $63B4
C2/6387: 7B TDC
C2/6388: 3A DEC
C2/6389: A2 12 LDX #$12
C2/638B: 9D E4 33 STA $33E4,X (Store -1 in Damage Healed)
C2/638E: 9D D0 33 STA $33D0,X (Store -1 in Damage Taken)
C2/6391: CA DEX
C2/6392: CA DEX
C2/6393: 10 F6 BPL $638B (null out damage for all onscreen targets)
C2/6395: 7A PLY
C2/6396: FA PLX
C2/6397: 60 RTS
C2/6398 display damage
(For less than 5 targets damaged or healed, use a "cascading" damage display.
One target's damage/healing numbers will show up a split second after the other's.)
C2/6398: B0 19 BCS $63B3 (Exit function if 5+ targets have damage dealt?
Why the hell not branch to C2/63B4, cut the BCC there,
and cut the "JSR $63B4"s out of function C2/62EF?)
C2/639A: A2 12 LDX #$12
C2/639C: BD D0 33 LDA $33D0,X (Damage Taken)
C2/639F: 1A INC
C2/63A0: F0 0D BEQ $63AF (If no damage)
C2/63A2: 3A DEC
C2/63A3: 8D 2A 3A STA $3A2A (Store in final damage)
C2/63A6: 8A TXA
C2/63A7: 4A LSR (Acc = 0-9 target #)
C2/63A8: EB XBA
C2/63A9: 09 0B 00 ORA #$000B (target # in top of A, 0x0B in bottom?)
C2/63AB: 20 9B 62 JSR $629B (Copy $3A28-$3A2B variables into ($76) buffer)
C2/63AE: CA DEX
C2/63AF: CA DEX
C2/63B1: 10 E9 BPL $639C (loop for all onscreen targets)
C2/63B3: 60 RTS (if < 5 targets have damage dealt, Carry will always
be clear here. either we skipped the LSR above, or
it was done on an even number.)
C2/63B4 display damage simultaneously
(For 5+ targets damaged or healed, have all their damage/healing numbers pop up
simultaneously.)
C2/63B4: 90 24 BCC $63DA (exit function if less than 5 targets have damage dealt?)
C2/63B6: 08 PHP
C2/63B7: E2 20 SEP #$20 (Set 8-bit Accumulator)
C2/63B9: A9 03 LDA #$03
C2/63BB: 20 9B 62 JSR $629B (Copy $3A28-$3A2B variables into ($76) buffer)
C2/63BE: AD 34 3A LDA $3A34
C2/63C1: EE 34 3A INC $3A34
C2/63C4: EB XBA
C2/63C5: A9 14 LDA #$14
C2/63C7: 20 81 47 JSR $4781
C2/63CA: C2 31 REP #$31 (Set 16-bit Accumulator, 16-bit X and Y, clear Carry)
C2/63CC: 69 CE 2B ADC #$2BCE
C2/63CF: A8 TAY
C2/63D0: A2 D0 33 LDX #$33D0
C2/63D3: A9 13 00 LDA #$0013
C2/63D6: 54 7E 7E MVN $7E,$7E (copy $33D0 thru $33E3, the damage variables for all
10 targets, to some other memory location)
C2/63D9: 28 PLP
C2/63DA: 60 RTS
C2/63D8 copy function
(Copy 8 words (16 bytes) from $A0 to ((7E:3A32) + #$2C6E)) (C1 inspection shows $2C6E to be the area where animation scripts are read from. Thus, $3A32 stores the beginning offset for the animation script.) C2/63DB: DA PHX C2/63DC: 5A PHY C2/63DD: 08 PHP C2/63DE: E2 20 SEP #$20 (Set 8-bit A) C2/63E0: 7B TDC C2/63E1: AD 32 3A LDA $3A32 C2/63E4: 48 PHA C2/63E5: C2 31 REP #$31 (Set 16-bit A,Y,X) C2/63E7: 69 6E 2C ADC #$2C6E C2/63EA: A8 TAY C2/63EB: A2 A0 00 LDX #$00A0 C2/63EE: A9 0F 00 LDA #$000F C2/63F1: 54 7E 7E MVN #$7E,7E C2/63F4: E2 30 SEP #$30 (Set 8-bit A,Y,X) C2/63F6: 68 PLA C2/63F7: 69 10 ADC #$10 C2/63F9: 8D 32 3A STA $3A32 C2/63FC: 28 PLP C2/63FD: 7A PLY C2/63FE: FA PLX C2/63FF: 60 RTS
C2/6400 null function
(Zero $A0 through $AF) C2/6400: DA PHX C2/6401: 08 PHP C2/6402: C2 20 REP #$20 (set 16-bit accumulator) C2/6404: A2 06 LDX #$06 C2/6406: 74 A0 STZ $A0,X C2/6408: 74 A8 STZ $A8,X (overall: $A0 thru $AF are zeroed out) C2/640A: CA DEX C2/640B: CA DEX C2/640C: 10 F8 BPL $6406 (loop 4 times) C2/640E: 28 PLP C2/640F: FA PLX C2/6410: 60 RTS
C2/6411 unknow
C2/6411: DA PHX C2/6412: 5A PHY C2/6413: 08 PHP C2/6414: E2 20 SEP #$20 C2/6416: C2 11 REP #$11 C2/6418: 48 PHA C2/6419: 7B TDC C2/641A: 68 PLA C2/641B: C9 02 CMP #$02 C2/641D: D0 06 BNE $6425 C2/641F: A5 B1 LDA $B1 C2/6421: 30 06 BMI $6429 C2/6423: A9 02 LDA #$02 C2/6425: 22 00 00 C1 JSR $C10000 C2/6429: 28 PLP C2/642A: 7A PLY C2/642B: FA PLX C2/642C: 60 RTS
C2/642D monster commands script FA
Monster command script command #$FA C2/642D: C2 20 REP #$20 (Set 16-bit accumulator) C2/642F: A5 B8 LDA $B8 (Byte 2 & 3) C2/6431: 8D 2A 3A STA $3A2A (Store in final damage)? C2/6434: E2 20 SEP #$20 (Set 8-bit Accumulator) C2/6436: A5 B6 LDA $B6 (Byte 0) C2/6438: EB XBA C2/6439: A9 14 LDA #$14 C2/643B: 4C BF 62 JMP $62BF
C2/643E unknow (unused)
(Well, well, well... it's a shame that this function is
apparently never called.)
C2/643E: C2 20 REP #$20 (Set 16-bit Accumulator)
C2/6440: AD 55 1D LDA $1D55 (get Font color from Configuration)
C2/6443: C9 DE 7B CMP #$7BDE (are Red, Green, and Blue all equal
to 30?)
C2/6446: E2 20 SEP #$20 (Set 8-bit Accumulator)
C2/6448: D0 1E BNE $6468 (branch if not desired Font color)
C2/644A: AF 19 42 00 LDA $004219 (Joypad #1 status register)
C2/644E: C9 28 CMP #$28 (are Up and Select pressed, and
only those?)
C2/6450: D0 16 BNE $6468 (branch if not)
C2/6452: A9 02 LDA #$02
C2/6454: 0C 96 3A TSB $3A96 (set some flag)
C2/6457: D0 0F BNE $6468 (branch if it was already set)
C2/6459: A9 FF LDA #$FF
C2/645B: 85 B9 STA $B9
C2/645D: A9 05 LDA #$05
C2/645F: 85 B8 STA $B8
C2/6461: A2 00 LDX #$00
C2/6463: A9 24 LDA #$24
C2/6465: 20 91 4E JSR $4E91 (queue up something. you tell me what.)
C2/6468: 60 RTS
C2/6469 free space
(Blank Space - 919 bytes) C2/6469: FF FF FF FF C2/646D: FF FF FF FF C2/6471: FF FF FF FF C2/6475: FF FF FF FF C2/6479: FF FF FF FF C2/647D: FF FF FF FF C2/6481: FF FF FF FF C2/6485: FF FF FF FF C2/6489: FF FF FF FF C2/648D: FF FF FF FF C2/6491: FF FF FF FF C2/6495: FF FF FF FF C2/6499: FF FF FF FF C2/649D: FF FF FF FF C2/64A1: FF FF FF FF C2/64A5: FF FF FF FF C2/64A9: FF FF FF FF C2/64AD: FF FF FF FF C2/64B1: FF FF FF FF C2/64B5: FF FF FF FF C2/64B9: FF FF FF FF C2/64BD: FF FF FF FF C2/64C1: FF FF FF FF C2/64C5: FF FF FF FF C2/64C9: FF FF FF FF C2/64CD: FF FF FF FF C2/64D1: FF FF FF FF C2/64D5: FF FF FF FF C2/64D9: FF FF FF FF C2/64DD: FF FF FF FF C2/64E1: FF FF FF FF C2/64E5: FF FF FF FF C2/64E9: FF FF FF FF C2/64ED: FF FF FF FF C2/64F1: FF FF FF FF C2/64F5: FF FF FF FF C2/64F9: FF FF FF FF C2/64FD: FF FF FF FF C2/6501: FF FF FF FF C2/6505: FF FF FF FF C2/6509: FF FF FF FF C2/650D: FF FF FF FF C2/6511: FF FF FF FF C2/6515: FF FF FF FF C2/6519: FF FF FF FF C2/651D: FF FF FF FF C2/6521: FF FF FF FF C2/6525: FF FF FF FF C2/6529: FF FF FF FF C2/652D: FF FF FF FF C2/6531: FF FF FF FF C2/6535: FF FF FF FF C2/6539: FF FF FF FF C2/653D: FF FF FF FF C2/6541: FF FF FF FF C2/6545: FF FF FF FF C2/6549: FF FF FF FF C2/654D: FF FF FF FF C2/6551: FF FF FF FF C2/6555: FF FF FF FF C2/6559: FF FF FF FF C2/655D: FF FF FF FF C2/6561: FF FF FF FF C2/6565: FF FF FF FF C2/6569: FF FF FF FF C2/656D: FF FF FF FF C2/6571: FF FF FF FF C2/6575: FF FF FF FF C2/6579: FF FF FF FF C2/657D: FF FF FF FF C2/6581: FF FF FF FF C2/6585: FF FF FF FF C2/6589: FF FF FF FF C2/658D: FF FF FF FF C2/6591: FF FF FF FF C2/6595: FF FF FF FF C2/6599: FF FF FF FF C2/659D: FF FF FF FF C2/65A1: FF FF FF FF C2/65A5: FF FF FF FF C2/65A9: FF FF FF FF C2/65AD: FF FF FF FF C2/65B1: FF FF FF FF C2/65B5: FF FF FF FF C2/65B9: FF FF FF FF C2/65BD: FF FF FF FF C2/65C1: FF FF FF FF C2/65C5: FF FF FF FF C2/65C9: FF FF FF FF C2/65CD: FF FF FF FF C2/65D1: FF FF FF FF C2/65D5: FF FF FF FF C2/65D9: FF FF FF FF C2/65DD: FF FF FF FF C2/65E1: FF FF FF FF C2/65E5: FF FF FF FF C2/65E9: FF FF FF FF C2/65ED: FF FF FF FF C2/65F1: FF FF FF FF C2/65F5: FF FF FF FF C2/65F9: FF FF FF FF C2/65FD: FF FF FF FF C2/6601: FF FF FF FF C2/6605: FF FF FF FF C2/6609: FF FF FF FF C2/660D: FF FF FF FF C2/6611: FF FF FF FF C2/6615: FF FF FF FF C2/6619: FF FF FF FF C2/661D: FF FF FF FF C2/6621: FF FF FF FF C2/6625: FF FF FF FF C2/6629: FF FF FF FF C2/662D: FF FF FF FF C2/6631: FF FF FF FF C2/6635: FF FF FF FF C2/6639: FF FF FF FF C2/663D: FF FF FF FF C2/6641: FF FF FF FF C2/6645: FF FF FF FF C2/6649: FF FF FF FF C2/664D: FF FF FF FF C2/6651: FF FF FF FF C2/6655: FF FF FF FF C2/6659: FF FF FF FF C2/665D: FF FF FF FF C2/6661: FF FF FF FF C2/6665: FF FF FF FF C2/6669: FF FF FF FF C2/666D: FF FF FF FF C2/6671: FF FF FF FF C2/6675: FF FF FF FF C2/6679: FF FF FF FF C2/667D: FF FF FF FF C2/6681: FF FF FF FF C2/6685: FF FF FF FF C2/6689: FF FF FF FF C2/668D: FF FF FF FF C2/6691: FF FF FF FF C2/6695: FF FF FF FF C2/6699: FF FF FF FF C2/669D: FF FF FF FF C2/66A1: FF FF FF FF C2/66A5: FF FF FF FF C2/66A9: FF FF FF FF C2/66AD: FF FF FF FF C2/66B1: FF FF FF FF C2/66B5: FF FF FF FF C2/66B9: FF FF FF FF C2/66BD: FF FF FF FF C2/66C1: FF FF FF FF C2/66C5: FF FF FF FF C2/66C9: FF FF FF FF C2/66CD: FF FF FF FF C2/66D1: FF FF FF FF C2/66D5: FF FF FF FF C2/66D9: FF FF FF FF C2/66DD: FF FF FF FF C2/66E1: FF FF FF FF C2/66E5: FF FF FF FF C2/66E9: FF FF FF FF C2/66ED: FF FF FF FF C2/66F1: FF FF FF FF C2/66F5: FF FF FF FF C2/66F9: FF FF FF FF C2/66FD: FF FF FF FF C2/6701: FF FF FF FF C2/6705: FF FF FF FF C2/6709: FF FF FF FF C2/670D: FF FF FF FF C2/6711: FF FF FF FF C2/6715: FF FF FF FF C2/6719: FF FF FF FF C2/671D: FF FF FF FF C2/6721: FF FF FF FF C2/6725: FF FF FF FF C2/6729: FF FF FF FF C2/672D: FF FF FF FF C2/6731: FF FF FF FF C2/6735: FF FF FF FF C2/6739: FF FF FF FF C2/673D: FF FF FF FF C2/6741: FF FF FF FF C2/6745: FF FF FF FF C2/6749: FF FF FF FF C2/674D: FF FF FF FF C2/6751: FF FF FF FF C2/6755: FF FF FF FF C2/6759: FF FF FF FF C2/675D: FF FF FF FF C2/6761: FF FF FF FF C2/6765: FF FF FF FF C2/6769: FF FF FF FF C2/676D: FF FF FF FF C2/6771: FF FF FF FF C2/6775: FF FF FF FF C2/6779: FF FF FF FF C2/677D: FF FF FF FF C2/6781: FF FF FF FF C2/6785: FF FF FF FF C2/6789: FF FF FF FF C2/678D: FF FF FF FF C2/6791: FF FF FF FF C2/6795: FF FF FF FF C2/6799: FF FF FF FF C2/679D: FF FF FF FF C2/67A1: FF FF FF FF C2/67A5: FF FF FF FF C2/67A9: FF FF FF FF C2/67AD: FF FF FF FF C2/67B1: FF FF FF FF C2/67B5: FF FF FF FF C2/67B9: FF FF FF FF C2/67BD: FF FF FF FF C2/67C1: FF FF FF FF C2/67C5: FF FF FF FF C2/67C9: FF FF FF FF C2/67CD: FF FF FF FF C2/67D1: FF FF FF FF C2/67D5: FF FF FF FF C2/67D9: FF FF FF FF C2/67DD: FF FF FF FF C2/67E1: FF FF FF FF C2/67E5: FF FF FF FF C2/67E9: FF FF FF FF C2/67ED: FF FF FF FF C2/67F1: FF FF FF FF C2/67F5: FF FF FF FF C2/67F9: FF FF FF FF C2/67FD: FF FF FF
C2/6800 decompress cinematics block and do selected cinematic
C2/6800: 4C 13 68 JMP $6813 C2/6803: 4C 0C 68 JMP $680C C2/6806: 4C 1A 68 JMP $681A C2/6809: 4C 21 68 JMP $6821 C2/680C: 20 28 68 JSR $6828 C2/680F: 5C 00 50 7E JMP $7E5000 (do title screen cinematic) C2/6813: 20 28 68 JSR $6828 C2/6816: 5C 03 50 7E JMP $7E5003 (do opening credits cinematic) C2/681A: 20 28 68 JSR $6828 C2/681D: 5C 06 50 7E JMP $7E5006 (do floating island cinematic) C2/6821: 20 28 68 JSR $6828 C2/6824: 5C 09 50 7E JMP $7E5009 (do world tearing apart cinematic) C2/6828: 08 PHP C2/6829: C2 30 REP #$30 C2/682B: 48 PHA C2/682C: DA PHX C2/682D: 5A PHY C2/682E: 8B PHB C2/682F: 0B PHD C2/6830: C2 10 REP #$10 C2/6832: E2 20 SEP #$20 C2/6834: A9 00 LDA #$00 C2/6836: 48 PHA C2/6837: AB PLB C2/6838: A2 00 00 LDX #$0000 C2/683B: DA PHX C2/683C: 2B PLD C2/683D: A2 00 00 LDX #$0000 C2/6840: 86 00 STX $00 C2/6842: A9 7E LDA #$7E C2/6844: 8D 83 21 STA $2183 C2/6847: A0 6C 68 LDY #$686C C2/684A: 84 F3 STY $F3 C2/684C: A9 C2 LDA #$C2 C2/684E: 85 F5 STA $F5 C2/6850: A0 00 50 LDY #$5000 C2/6853: 84 F6 STY $F6 C2/6855: A9 7E LDA #$7E C2/6857: 85 F8 STA $F8 C2/6859: 8B PHB C2/685A: A9 7E LDA #$7E C2/685C: 48 PHA C2/685D: AB PLB C2/685E: 22 6D FF C2 JSR $C2FF6D C2/6862: AB PLB C2/6863: C2 30 REP #$30 C2/6865: 2B PLD C2/6866: AB PLB C2/6867: 7A PLY C2/6868: FA PLX C2/6869: 68 PLA C2/686A: 28 PLP C2/686B: 60 RTS
C2/686C data (compressed)
(Compressed data - format explained in Function C2/FF6D) (Decompressed data available here) C2/686C: F4 21 (block is 8692 bytes in length, including control bytes) C2/686E: FF 4C 0C 50 4C F3 57 4C C4 (control byte + compressed data) C2/6877: FF 69 4C F2 6C 08 C2 30 48 (control byte + compressed data) C2/6880: FF DA 5A 8B 0B 20 2F 50 20 (etc.) C2/6889: FF 7F 50 20 F7 50 20 A8 50 C2/6892: FF 20 43 50 20 4E 50 C2 30 C2/689B: FF 2B AB 7A FA 68 28 6B E2 C2/68A4: FF 20 A9 7E 48 AB A2 00 00 C2/68AD: FB DA 2B 13 00 86 00 20 62 50 C2/68B7: FF 60 A9 F0 8F 00 13 00 22 C2/68C0: FF 04 00 C5 60 A9 8F 8F 00 C2/68C9: FF 21 00 7B 8F 00 42 00 8F C2/68D2: FD 0B 35 00 0C 42 00 60 A9 5C C2/68DC: FF 8D 00 15 8D 04 15 A2 33 C2/68E5: FF 72 8E 01 15 A2 64 72 8E C2/68EE: FF 05 15 A9 7E 8D 03 15 8D C2/68F7: FF 07 15 60 20 11 77 7B 20 C2/6900: FF 93 50 20 15 78 20 4F 78 C2/6909: FF 20 85 74 20 FA 78 60 8F C2/6912: DF 02 13 00 A9 10 23 08 A9 02 C2/691C: FB 8F 01 25 20 7B A5 19 30 18 C2/6926: FF 0A AA FC DF 50 A5 06 89 C2/692F: FF 80 D0 08 20 0F 75 20 FD C2/6938: FF 71 80 E8 A9 FF 8D 00 02 C2/6941: FF A0 0F 00 84 15 A9 00 A0 C2/694A: FF A0 55 20 DC 74 A4 15 F0 C2/6953: FE 95 28 F4 60 AE 51 80 52 97 C2/695D: FF 52 A6 52 E0 52 EC 52 3F C2/6966: FF 53 77 53 8A 53 9C 53 B5 C2/696F: D7 53 BC 53 86 08 0D 8B 00 31 51 C2/697A: FA 96 20 EE A3 B0 7B A8 85 19 84 C2/6985: F7 25 84 27 6A 08 4E 50 60 55 C2/698F: FF 51 A5 51 00 00 63 10 BD C2/6998: DF 77 00 00 FF 7F 1B 99 20 06 C2/69A2: FF 53 A2 00 30 A0 65 74 20 C2/69AB: AF 24 73 A2 20 38 31 31 42 39 43 C2/69B6: BF 7B A9 01 20 3A 73 36 09 45 C2/69C0: D9 74 57 19 40 01 35 51 57 11 A0 00 C2/69CC: FF 01 84 25 A0 2C 01 84 15 C2/69D5: FF E6 19 A9 0F 85 32 60 A4 C2/69DE: FF 15 D0 04 A9 FF 85 19 60 C2/69E7: 16 48 09 63 7B 3C 09 40 53 09 3C 09 37 49 C2/69F5: 55 C3 91 11 C0 38 29 40 38 29 60 38 29 C2/6A02: E5 E0 38 29 A0 38 29 B1 01 03 7C A9 C2/6A0E: 09 04 59 09 BA 01 23 E2 21 C3 01 EC 29 CC 01 C2/6A1D: D9 43 E2 21 D5 01 E3 7B E3 11 A9 01 C2/6A29: 1B A0 39 AC 08 A0 3C A5 00 7C 19 14 02 C2/6A36: FD C8 AC 08 C2 20 A9 40 30 9D C2/6A40: 53 01 37 0D 00 28 3A 60 33 72 C0 33 1A C2/6A4D: 7E 82 09 12 E6 19 A0 43 04 A6 00 C2/6A58: 97 FF 8F 05 73 00 FF 61 00 82 09 0A C2/6A64: 9F 20 97 78 A0 1E 1E 12 82 09 35 C2/6A6F: 66 A8 00 C5 53 AD 00 A8 00 31 54 8D 1A C2/6A7C: 79 AF 94 0A 36 09 83 7B A9 02 64 21 C2/6A88: 4D A3 56 19 A0 4A 79 11 82 09 07 62 02 C2/6A95: F1 F0 A5 00 82 09 7B 01 A0 C0 03 84 C2/6AA1: D1 15 33 09 52 19 E4 09 60 A8 00 DB 76 C2/6AAE: BE 2C 1A 5C 7A 9D 00 35 0D 00 40 C2/6AB9: FF 9D 01 33 A9 A0 9D 01 34 C2/6AC2: 4A E4 42 5F F0 22 90 F8 2A 82 09 33 62 02 C2/6AD0: 0E 73 01 15 A2 00 8E 09 A6 22 2A 13 E4 11 C2/6ADE: C4 37 01 2C 03 08 64 21 42 23 82 09 0E A9 C2/6AEC: EB 40 04 20 0B 01 A5 00 20 BD 5C C2/6AF7: FE 82 09 0D E6 19 64 31 A9 80 C2/6B01: CF 85 33 A0 A0 D2 02 82 09 08 A0 C2/6B0C: FD E0 B8 1A A5 18 29 03 D0 06 C2/6B16: 2F C2 20 E6 27 5B 1A 02 81 02 87 09 C2/6B22: FD 7B A0 00 60 AA 7C C9 53 CD C2/6B2C: FF 53 D5 53 A6 1D FE 00 3A C2/6B35: FF 9E 01 37 A5 33 30 56 A6 C2/6B3E: FF 1D 7B A8 9E 01 38 A6 1D C2/6B47: FF BD 01 37 18 7D 01 38 20 C2/6B50: FF A5 54 48 AF 12 42 00 29 C2/6B59: 7F 40 F0 F8 A9 08 8F 1B 30 08 C2/6B63: BE D6 03 68 8F 1C 21 00 DF 0B A6 C2/6B6E: FF 1D C2 20 AF 35 21 00 99 C2/6B77: EF 80 41 E2 20 BE 0B 38 18 69 C2/6B81: DF 04 9D 01 38 C8 FF 03 C0 C0 C2/6B8B: FF 00 D0 B6 FE 01 37 38 60 C2/6B94: FD 18 A2 03 35 54 39 54 41 54 C2/6B9E: D6 AB 1B 00 39 B3 03 5B B7 0B A9 10 C2/6BAA: F4 FC 03 BE 9B 0A D5 C3 00 45 99 02 C2/6BB6: F5 45 F2 93 B3 08 24 18 69 40 EB C2/6BC1: FF A5 00 EB AA BF 6D FE C2 C2/6BCA: BE A2 03 B3 54 B7 54 C1 16 1C A9 C2/6BD5: FB 01 9D 1D 04 18 29 01 F0 0F C2/6BDF: DE BE 03 00 39 C9 40 B2 00 DA 54 C2/6BEA: F7 FE 00 39 0B 0C A9 40 8F 05 C2/6BF4: DD 42 31 00 04 42 00 A7 04 8F 06 C2/6BFF: F7 42 00 EA CA 0C 64 F2 A0 FC C2/6C09: FF 00 64 E2 64 E9 64 EA AF C2/6C12: 7F 15 42 00 85 E8 AF 14 DC 04 C2/6C1C: FD E7 A7 04 C5 E2 90 02 80 07 C2/6C26: FE 2F 02 00 01 80 0C 7B A5 EA C2/6C30: FF 38 E5 E2 C2 20 49 FF FF C2/6C39: FF 1A 99 FA 3D A5 E7 18 65 C2/6C42: FF E9 85 E9 E2 20 E6 E2 88 C2/6C4B: F6 10 05 D0 D0 A2 03 3D 55 41 55 C2/6C56: FF 59 55 A0 FF FF 84 10 A0 C2/6C5F: FF 40 00 84 0E A9 7F 85 14 C2/6C68: F2 5F 0B 27 AB 13 86 13 36 C2 20 A5 C2/6C74: FF 27 C9 1F 01 F0 2F C9 00 C2/6C7D: FF 01 B0 24 29 07 00 D0 1F C2/6C86: FF A5 27 38 E9 08 00 29 F8 C2/6C8F: FF FF 0A 0A 0A 18 69 C0 23 C2/6C98: DB 85 12 50 45 85 10 8E 0B 38 60 C2/6CA3: F3 E2 20 1F 15 0D 0C A4 55 A8 55 C2/6CAE: 4B B2 55 95 1C 0F F8 02 B0 00 0C BE 0B C2/6CBB: FF 33 85 32 DE 01 33 38 60 C2/6CC4: FA 70 03 32 0D 0C CC 55 D2 55 EB C2/6CCF: 73 55 20 B6 03 97 0C 80 9D 00 3C 05 C2/6CDB: F7 A9 3E 56 F1 12 20 5F 75 38 C2/6CE5: FD 60 A5 0C 36 F0 17 C9 01 F0 C2/6CEF: BF 07 A6 1D DE 00 36 9E 05 02 C2/6CF9: F7 A0 F9 56 AD 00 E6 36 80 ED C2/6D03: 7F BD 01 3B C9 FE D0 03 AD 03 C2/6D0D: AB C2 20 C0 03 AA C2 05 75 C6 05 20 C2/6D19: F8 B5 0B B7 05 9A 0C 3A 4C DC 55 7B C2/6D25: FF E6 34 A5 18 18 65 34 AA C2/6D2E: FF BF 00 FD C0 60 23 7C 01 C2/6D37: DF 59 56 02 D9 56 1E 26 79 56 C2/6D41: FF 02 99 56 03 B9 56 04 D9 C2/6D4A: FF 56 FE 63 10 DE 66 5B 56 C2/6D53: FF B4 45 2E 35 08 31 E8 2C C2/6D5C: FF C7 28 A6 24 A5 1C 84 18 C2/6D65: FF 64 14 63 10 BB 21 36 11 C2/6D6E: FF 7F 73 00 00 39 52 D7 45 C2/6D77: DF 51 39 EC 2C E7 44 16 85 20 C2/6D81: EF 84 18 84 14 4D 2E 7B 5A 00 C2/6D8B: FF 00 94 3D 53 35 EE 2C AA C2/6D94: 1B 24 A5 66 06 64 1C 4D 0E 89 1E 51 0E C2/6DA1: FF D6 45 00 00 AA 20 A7 20 C2/6DAA: CF 85 1C 43 18 89 2E 89 4E CC 24 C2/6DB5: F8 13 09 B9 9E 51 0E 63 10 AA 7C FD C2/6DC1: 9F 56 01 57 36 57 AB 13 FE 05 29 C2/6DCC: 5F 03 F0 37 0A AA F1 05 46 DE 06 C2/6DD7: 2E F1 12 E2 20 DA FE 05 FA F8 02 FB 16 C2/6DE4: 77 29 7F 69 28 04 34 A6 1D C4 05 C2/6DEF: BC BE 0B E9 05 F0 05 20 8D C6 05 18 C2/6DFB: FF 60 00 00 4E 57 66 57 4E C2/6E04: FF 57 7F 57 01 7E 57 01 84 C2/6E0D: 6A 2D 17 91 2D 17 9E 2D 0F FE AB 2D 17 C2/6E1A: D5 B0 2D 17 BD 2D 17 CA 3F 17 00 01 C2/6E26: DF 08 00 4C 35 03 24 07 35 10 C2/6E30: FF 00 60 35 08 10 62 35 03 C2/6E39: F7 08 00 64 6A 07 66 35 08 20 C2/6E43: D5 68 6E 0F 6A 6A 07 6C 77 07 6E 35 C2/6E4F: FE 5D 0F 75 03 10 00 4E 75 08 C2/6E59: 97 00 60 75 6B 07 75 6F 0F 96 07 66 C2/6E65: A9 75 78 07 9A 0F 6A 96 07 6C A3 07 6E C2/6E72: FF 75 40 A8 40 70 B0 48 68 C2/6E7B: FF A8 70 68 60 A8 80 D0 88 C2/6E84: FF 58 90 A8 98 88 50 58 70 C2/6E8D: FF 60 90 60 10 78 08 C2 30 C2/6E96: FF 48 DA 5A 8B 0B 20 2F 50 C2/6E9F: FF 20 13 58 20 72 58 20 43 C2/6EA8: FD 50 0B 01 C2 30 2B AB 7A FA C2/6EB2: 77 68 28 6B 5D 00 20 3C 58 69 02 C2/6EBD: F2 72 38 04 7D 28 64 38 FF 61 60 8B C2/6EC9: FF A9 00 48 AB A9 03 8D 01 C2/6ED2: FF 21 A6 00 8E 02 21 A9 07 C2/6EDB: FF 8D 05 21 A9 78 8D 07 21 C2/6EE4: FF A9 7C 8D 08 21 A9 74 8D C2/6EED: FF 09 21 8D 0A 21 A9 22 8D C2/6EF6: FF 0B 21 A9 77 8D 0C 21 7B C2/6EFF: 6F 8D 1A 21 AB 85 30 AD 58 90 F8 C2/6F0A: FE B2 38 22 0C 00 EE 60 B5 58 C2/6F14: FF 4C 5A 66 5A 70 5A 20 70 C2/6F1D: EF 5C 20 5D 5B 1A 10 22 09 00 C2/6F27: FF EE 22 03 00 EE AB 20 45 C2/6F30: 51 5C 08 01 28 0B 43 61 60 4A 29 80 4A 29 C2/6F3E: F1 A0 4A 29 37 79 BA B9 A9 68 85 39 C2/6F4A: FF A9 48 85 3A A9 78 85 3B C2/6F53: EF A9 C0 85 3C 70 03 3D A9 90 C2/6F5D: FF 85 3E 64 29 64 2A A0 38 C2/6F66: 7F 00 84 2B 64 37 64 38 72 00 C2/6F70: 7B C0 5F 77 00 7B 20 08 5B B1 02 C2/6F7B: 32 36 01 02 35 01 33 0B 90 64 B1 12 BF 08 C2/6F89: 40 46 01 A7 12 C9 00 46 01 05 1A 44 11 06 3B 13 C2/6F99: BF 31 A0 70 64 A9 03 A8 22 10 C2/6FA3: 24 52 21 ED 00 30 52 21 C3 01 50 52 21 FF 39 C2/6FB2: B2 72 00 27 30 09 72 00 ED 5A 8D 1A 92 C2/6FBF: DE B1 09 7B 9D 01 39 9A 0C 36 A9 C2/6FCA: F9 5A 9C 04 2F 02 A0 FF 9D 00 38 C2/6FD5: 50 F4 02 B6 21 9A 04 BF 01 0A 03 0E 28 C8 19 C2/6FE4: 55 60 CF 61 02 BE 09 07 03 0E 2D C8 19 C2/6FF1: FD 80 CF 19 E6 19 A9 01 85 32 C2/6FFB: 76 63 00 A0 CA (continued at C2/7000)