If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Final Fantasy VI/ROM map/Assembly C26: Difference between revisions
< Final Fantasy VI | ROM map
Jump to navigation
Jump to search
(reformatting compressed block) |
(Adding link to new page covering $7E5000 - $7E7C62 while code/data decompressed from $C2686C - $C28A60 is active) |
||
Line 992: | Line 992: | ||
==C2/686C data (compressed)== | ==C2/686C data (compressed)== | ||
(Compressed data - format explained in Function C2/FF6D) | (Compressed data - format explained in Function C2/FF6D) | ||
('''Decompressed data available [[Final_Fantasy_VI:7E5000_from_C2686C|here]]''') | |||
C2/686C: F4 21 (block is 8692 bytes in length, including control bytes) | 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/686E: FF 4C 0C 50 4C F3 57 4C C4 (control byte + compressed data) |
Revision as of 16:46, 13 February 2016
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 unknow
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 48 LDA #$4800 C2/6837: AB PLB C2/6838: A2 00 LDX #$00 C2/683A: 00 DA BRK $DA C2/683C: 2B PLD C2/683D: A2 00 LDX #$00 C2/683F: 00 86 BRK $86 C2/6841: 00 A9 BRK $A9 C2/6843: 7E 8D 83 ROR $838D,X C2/6846: 21 A0 AND ($A0,X) C2/6848: 6C 68 84 JMP ($8468) C2/684B: F3 A9 SBC ($A9,S),Y C2/684D: C2 85 REP #$85 C2/684F: F5 A0 SBC $A0,X C2/6851: 00 50 BRK $50 C2/6853: 84 F6 STY $F6 C2/6855: A9 7E 85 LDA #$857E C2/6858: F8 SED C2/6859: 8B PHB C2/685A: A9 7E 48 LDA #$487E 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)