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 C35: Difference between revisions
< Final Fantasy VI | ROM map
Jump to navigation
Jump to search
Mantidactyle (talk | contribs) (Undo revision 27902 by Mantidactyle (talk)) |
m (Xkeeper moved page Final Fantasy VI:ROM map/Assembly C35 to Final Fantasy VI/ROM map/Assembly C35: normalize subpages and titles) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
{{subpage|game=Final Fantasy VI:ROM map}} | |||
==C3/501A null current spell== | ==C3/501A null current spell== | ||
Blank out the current spell (MP cost and spell learn rate too) | Blank out the current spell (MP cost and spell learn rate too) |
Latest revision as of 02:41, 24 January 2024
This is a sub-page of Final Fantasy VI/ROM map.
C3/501A null current spell
Blank out the current spell (MP cost and spell learn rate too) C3/501A: 7B TDC C3/501B: A5E5 LDA $E5 C3/501D: AA TAX C3/501E: A9FF LDA #$FF C3/5020: 9F899D7E STA $7E9D89,X C3/5024: 20B951 JSR $51B9 (set's the text color to gray among other things) C3/5027: A00B00 LDY #$000B C3/502A: A28B9E LDX #$9E8B (position of where it is to be blanked) C3/502D: 8E8121 STX $2181 C3/5030: A9FF LDA #$FF C3/5032: 8D8021 STA $2180 (insert a space) C3/5035: 88 DEY C3/5036: D0FA BNE $5032 (do 11 times?) C3/5038: 9C8021 STZ $2180 (end this string) C3/503B: 4CD97F JMP $7FD9 (display the blanked name)
C3/503E unknow
C3/503E: 20EC50 JSR $50EC (get the current spell to check) C3/5041: C9FF CMP #$FF C3/5043: F0D5 BEQ $501A C3/5045: 20A250 JSR $50A2 (get spell's learned rate) C3/5048: C900 CMP #$00 (is it zero? also no need for this CMP here...) C3/504A: F0CE BEQ $501A (branch if so) C3/504C: 20EC50 JSR $50EC (get the current spell to check) C3/504F: 206784 JSR $8467 (draw the current spell name) C3/5052: A2929E LDX #$9E92 (position of spell progress) C3/5055: 8E8121 STX $2181 C3/5058: 20EC50 JSR $50EC (get the current spell to check) C3/505B: 20A250 JSR $50A2 (get spell's learned rate) C3/505E: C9FF CMP #$FF (is it learned?) C3/5060: F026 BEQ $5088 (branch if so) C3/5062: 48 PHA C3/5063: 20B951 JSR $51B9 C3/5066: A92C LDA #$2C C3/5068: 8529 STA $29 (set text color to blue) C3/506A: A9C7 LDA #$C7 (the "..." character in the font) C3/506C: 8D8021 STA $2180 C3/506F: 68 PLA C3/5070: 20E004 JSR $04E0 (turn spell progress into digits) C3/5073: A5F8 LDA $F8 C3/5075: 8D8021 STA $2180 (draw the tens digit) C3/5078: A5F9 LDA $F9 C3/507A: 8D8021 STA $2180 (draw the ones digit) C3/507D: A9CD LDA #$CD (the "%" character in the font) C3/507F: 8D8021 STA $2180 C3/5082: 9C8021 STZ $2180 (end this string) C3/5085: 4CD97F JMP $7FD9 (draw the contents of $2180)
C3/5088 unknow
C3/5088: A924 LDA #$24 C3/508A: 8529 STA $29 (set text color to...dunno) C3/508C: 20EC50 JSR $50EC (get the current spell to check) C3/508F: 204D51 JSR $514D (determine if spells are useable?) C3/5092: A9FF LDA #$FF C3/5094: 8D8021 STA $2180 C3/5097: 8D8021 STA $2180 C3/509A: 8D8021 STA $2180 C3/509D: 8D8021 STA $2180 (four spaces, blank out spell's learn rate since it's already learned) C3/50A0: 80E0 BRA $5082
C3/50A2 get learned points for spells
Get spell's learned amount, or, if it's Gogo, branch below to check everybody else in the party. C3/50A2: 85E0 STA $E0 C3/50A4: 20DD4E JSR $4EDD C3/50A7: B90000 LDA $0000,Y C3/50AA: C90C CMP #$0C C3/50AC: F017 BEQ $50C5 (Branch if it's Gogo) C3/50AE: 8D0242 STA $4202 C3/50B1: A936 LDA #$36 C3/50B3: 8D0342 STA $4203 C3/50B6: 7B TDC C3/50B7: A5E0 LDA $E0 C3/50B9: C220 REP #$20 (16 bit memory/accum.) C3/50BB: 6D1642 ADC $4216 C3/50BE: AA TAX C3/50BF: E220 SEP #$20 (8 bit memory/accum.) C3/50C1: BD6E1A LDA $1A6E,X C3/50C4: 60 RTS C3/50C5: 64E1 STZ $E1 ($E1 = #$00) C3/50C7: 7B TDC (A = #$0000) C3/50C8: A5E1 LDA $E1 (A = $E1) C3/50CA: C528 CMP $28 C3/50CC: F014 BEQ $50E2 C3/50CE: 0A ASL A C3/50CF: AA TAX C3/50D0: B46D LDY $6D,X C3/50D2: F00E BEQ $50E2 C3/50D4: B90000 LDA $0000,Y (load character ID) C3/50D7: C90C CMP #$0C C3/50D9: B007 BCS $50E2 (Branch if it's Gogo or higher) C3/50DB: 20AE50 JSR $50AE C3/50DE: C9FF CMP #$FF C3/50E0: F009 BEQ $50EB C3/50E2: E6E1 INC $E1 C3/50E4: A5E1 LDA $E1 C3/50E6: C904 CMP #$04 C3/50E8: D0DD BNE $50C7 C3/50EA: 7B TDC C3/50EB: 60 RTS
C3/50EC unknow
C3/50EC: 7B TDC C3/50ED: A5E5 LDA $E5 C3/50EF: AA TAX C3/50F0: BF899D7E LDA $7E9D89,X C3/50F4: 60 RTS
C3/50F5 unknow
C3/50F5: 48 PHA C3/50F6: AD1242 LDA $4212 C3/50F9: 2940 AND #$40 (are we in H-blank?) C3/50FB: F0F9 BEQ $50F6 (branch if not) C3/50FD: 68 PLA C3/50FE: 8D1B21 STA $211B (save spell number as our multiplier) C3/5101: 9C1B21 STZ $211B C3/5104: A90E LDA #$0E (14 = width of magic struct) C3/5106: 8D1C21 STA $211C C3/5109: 8D1C21 STA $211C C3/510C: 60 RTS ($2134 = A * 14)
C3/510D get mp cost of spell
Determine the MP cost to a given spell C3/510D: 48 PHA (save current spell) C3/510E: 20F550 JSR $50F5 (A = A * 14) C3/5111: AE3421 LDX $2134 (X product of previous JSR) C3/5114: BFC56AC4 LDA $C46AC5,X (magic data, MP cost) C3/5118: 85E0 STA $E0 (store MP cost) C3/511A: 68 PLA (get current spell) C3/511B: C999 CMP #$99 (is the current spell Step Mine?) C3/511D: D00F BNE $512E (branch if not) C3/511F: AD1B02 LDA $021B C3/5122: 0A ASL A (* 2) C3/5123: 85E0 STA $E0 (save as new MP cost) C3/5125: AD1C02 LDA $021C C3/5128: C91E CMP #$1E C3/512A: 9002 BCC $512E C3/512C: E6E0 INC $E0 (add 1 to MP cost) C3/512E: ADD711 LDA $11D7 (load accessory byte) C3/5131: 8940 BIT #$40 (Is "reduce MP consumption to 1" bit set, aka Economizer equipped?) C3/5133: F005 BEQ $513A (branch if not, this could branch to the BIT #$20...) C3/5135: 7B TDC (to keep the upper 8 bits of A clean...) C3/5136: A901 LDA #$01 (MP cost is 1) C3/5138: 8011 BRA $514B (branch and exit) C3/513A: ADD711 LDA $11D7 (load accessory byte) C3/513D: 8920 BIT #$20 (Is "halve MP consumption" bit set, aka Gold Hairpin equipped?) C3/513F: F007 BEQ $5148 (branch and exit if not) C3/5141: 7B TDC (to keep the upper 8 bits of A clean...) C3/5142: A5E0 LDA $E0 (load current MP cost) C3/5144: 1A INC A (add one so it rounds up) C3/5145: 4A LSR A (cut in half) C3/5146: 8003 BRA $514B (branch and exit) C3/5148: 7B TDC (to keep the upper 8 bits of A clean...) C3/5149: A5E0 LDA $E0 (load MP cost) C3/514B: AA TAX (transfer MP cost to X) C3/514C: 60 RTS
C3/514D unknow
C3/514D: C92A CMP #$2A C3/514F: F02A BEQ $517B (branch if spell is Warp) C3/5151: C912 CMP #$12 C3/5153: F019 BEQ $516E (branch if spell is X-zone) C3/5155: 20F550 JSR $50F5 C3/5158: AE3421 LDX $2134 C3/515B: BFC36AC4 LDA $C46AC3,X (Magic data, where used/damage type) C3/515F: 2901 AND #$01 C3/5161: F009 BEQ $516C (this can BRA to $51B9 just as easily) C3/5163: 20EC50 JSR $50EC (get the current spell to check) C3/5166: 200D51 JSR $510D (get MP cost) C3/5169: 4C8851 JMP $5188 (BRA would work here)
C3/516C unknow
C3/516C: 804B BRA $51B9 C3/516E: 85E3 STA $E3 C3/5170: AD0102 LDA $0201 (load availability bits) C3/5173: 8901 BIT #$01 (check for X-Zone use) C3/5175: F0F5 BEQ $516C (branch if not able to, and really, it can branch to $51B9 from here on its own easily enough) C3/5177: A5E3 LDA $E3 C3/5179: 80DA BRA $5155
C3/517B unknow
C3/517B: 85E3 STA $E3 C3/517D: AD0102 LDA $0201 C3/5180: 8902 BIT #$02 (check for Warp useage) C3/5182: F0E8 BEQ $516C (branch if you can't Warp) C3/5184: A5E3 LDA $E3 C3/5186: 80CD BRA $5155
C3/5188 unknow
C3/5188: 86E2 STX $E2 (save MP cost) C3/518A: 20DD4E JSR $4EDD C3/518D: B91400 LDA $0014,Y (Statuses) C3/5190: 2920 AND #$20 (Imped?) C3/5192: F007 BEQ $519B (branch if not) C3/5194: 20EC50 JSR $50EC (get the current spell to check) C3/5197: C923 CMP #$23 C3/5199: D01E BNE $51B9 (branch if spell is not Imp) C3/519B: C220 REP #$20 (16 bit memory/accum.) C3/519D: B90D00 LDA $000D,Y (current MP) C3/51A0: 85E0 STA $E0 (save for now) C3/51A2: E220 SEP #$20 (8 bit memory/accum.) C3/51A4: A6E2 LDX $E2 (load MP cost) C3/51A6: E4E0 CPX $E0 (compare to current MP) C3/51A8: F002 BEQ $51AC (if equal, you can use it, this check is necessary because you would need cost +1 to use it otherwise) C3/51AA: B00D BCS $51B9 (if cost is more than current, you can't use it) C3/51AC: 7B TDC C3/51AD: A5E5 LDA $E5 C3/51AF: AA TAX C3/51B0: A920 LDA #$20 C3/51B2: 8529 STA $29 (set text color to white) C3/51B4: 9F099E7E STA $7E9E09,X C3/51B8: 60 RTS
C3/51B9 unknow
C3/51B9: 7B TDC C3/51BA: A5E5 LDA $E5 C3/51BC: AA TAX C3/51BD: A928 LDA #$28 C3/51BF: 8529 STA $29 (set text color to gray) C3/51C1: 9F099E7E STA $7E9E09,X C3/51C5: 60 RTS
C3/51C6 unknow
C3/51C6: A920 LDA #$20 C3/51C8: 8529 STA $29 (set text color to white) C3/51CA: C220 REP #$20 (16 bit memory/accum.) C3/51CC: A9BF81 LDA #$81BF (position of MP cost) C3/51CF: 8F899E7E STA $7E9E89 C3/51D3: E220 SEP #$20 (8 bit memory/accum.) C3/51D5: A28B9E LDX #$9E8B (where to look in VRAM) C3/51D8: 8E8121 STX $2181 C3/51DB: 7B TDC C3/51DC: A54B LDA $4B C3/51DE: AA TAX C3/51DF: BF899D7E LDA $7E9D89,X C3/51E3: 200D51 JSR $510D (get MP cost) C3/51E6: 20E004 JSR $04E0 (turn MP cost into digits) C3/51E9: A5F8 LDA $F8 C3/51EB: 8D8021 STA $2180 C3/51EE: A5F9 LDA $F9 C3/51F0: 8D8021 STA $2180 (MP cost in the upper right hand corner of the menu) C3/51F3: 9C8021 STZ $2180 (end this string) C3/51F6: 4CD97F JMP $7FD9
C3/51F9 unknow
C3/51F9: 20156A JSR $6A15 C3/51FC: 203C52 JSR $523C C3/51FF: A92C LDA #$2C C3/5201: 8529 STA $29 C3/5203: A0915C LDY #$5C91 (Address at which you find the word "Lore") C3/5206: 20F902 JSR $02F9 C3/5209: 20AC61 JSR $61AC C3/520C: 4C4D0F JMP $0F4D
C3/520F unknow
C3/520F: A2899D LDX #$9D89 C3/5212: 8E8121 STX $2181 C3/5215: A600 LDX $00 C3/5217: 64E0 STZ $E0 C3/5219: A00800 LDY #$0008 C3/521C: BD291D LDA $1D29,X C3/521F: 6A ROR A C3/5220: 48 PHA C3/5221: 9007 BCC $522A C3/5223: A5E0 LDA $E0 C3/5225: 8D8021 STA $2180 C3/5228: 8005 BRA $522F C3/522A: A9FF LDA #$FF C3/522C: 8D8021 STA $2180 C3/522F: E6E0 INC $E0 C3/5231: 68 PLA C3/5232: 88 DEY C3/5233: D0EA BNE $521F C3/5235: E8 INX C3/5236: E00300 CPX #$0003 C3/5239: D0DE BNE $5219 C3/523B: 60 RTS
C3/523C unknow
C3/523C: 200F52 JSR $520F C3/523F: 20F783 JSR $83F7 C3/5242: A00800 LDY #$0008 C3/5245: 5A PHY C3/5246: 205652 JSR $5256 C3/5249: A5E6 LDA $E6 C3/524B: 1A INC A C3/524C: 1A INC A C3/524D: 291F AND #$1F C3/524F: 85E6 STA $E6 C3/5251: 7A PLY C3/5252: 88 DEY C3/5253: D0F0 BNE $5245 C3/5255: 60 RTS
C3/5256 unknow
C3/5256: A920 LDA #$20 C3/5258: 8529 STA $29 C3/525A: 206652 JSR $5266 C3/525D: A20300 LDX #$0003 C3/5260: 207552 JSR $5275 C3/5263: E6E5 INC $E5 C3/5265: 60 RTS
C3/5266 unknow
C3/5266: A00A00 LDY #$000A (lore name length) C3/5269: 84EB STY $EB C3/526B: A0FDF9 LDY #$F9FD (lore name address) C3/526E: 84EF STY $EF C3/5270: A9E6 LDA #$E6 (lore name bank) C3/5272: 85F1 STA $F1 C3/5274: 60 RTS
C3/5275 unknow
C3/5275: A5E6 LDA $E6 C3/5277: 1A INC A C3/5278: 209F80 JSR $809F C3/527B: C220 REP #$20 (16 bit memory/accum.) C3/527D: 8A TXA C3/527E: 8F899E7E STA $7E9E89 C3/5282: E220 SEP #$20 (8 bit memory/accum.) C3/5284: 7B TDC C3/5285: A5E5 LDA $E5 C3/5287: AA TAX C3/5288: BF899D7E LDA $7E9D89,X C3/528C: C9FF CMP #$FF C3/528E: F030 BEQ $52C0 C3/5290: A5E5 LDA $E5 C3/5292: 206784 JSR $8467 (draw the current lore name) C3/5295: A2959E LDX #$9E95 C3/5298: 8E8121 STX $2181 C3/529B: A9C7 LDA #$C7 C3/529D: 8D8021 STA $2180 ('...' character in the font) C3/52A0: A5E5 LDA $E5 (get current selection) C3/52A2: 18 CLC C3/52A3: 698B ADC #$8B (add the first lore to it, making the current selection the current lore) C3/52A5: 200D51 JSR $510D (get MP cost of current lore) C3/52A8: 20E004 JSR $04E0 (turn MP cost into displayable digits) C3/52AB: A5F7 LDA $F7 C3/52AD: 8D8021 STA $2180 C3/52B0: A5F8 LDA $F8 C3/52B2: 8D8021 STA $2180 C3/52B5: A5F9 LDA $F9 C3/52B7: 8D8021 STA $2180 C3/52BA: 9C8021 STZ $2180 (end this string) C3/52BD: 4CD97F JMP $7FD9
C3/52C0 unknow
C3/52C0: A00E00 LDY #$000E (14 letters) C3/52C3: A28B9E LDX #$9E8B C3/52C6: 8E8121 STX $2181 C3/52C9: A9FF LDA #$FF C3/52CB: 8D8021 STA $2180 (insert a space) C3/52CE: 88 DEY C3/52CF: D0FA BNE $52CB (do 13 times) C3/52D1: 9C8021 STZ $2180 (end this string) C3/52D4: 4CD97F JMP $7FD9
C3/52D7 unknow
C3/52D7: 20156A JSR $6A15 C3/52DA: 206E53 JSR $536E C3/52DD: A920 LDA #$20 C3/52DF: 8529 STA $29 (set text color to white) C3/52E1: 20F452 JSR $52F4 C3/52E4: A92C LDA #$2C C3/52E6: 8529 STA $29 (set text color to blue) C3/52E8: A0B85C LDY #$5CB8 (Address at which you find the word "SwdTech") C3/52EB: 20F902 JSR $02F9 C3/52EE: 20AC61 JSR $61AC C3/52F1: 4C4D0F JMP $0F4D
C3/52F4 unknow
C3/52F4: 20F783 JSR $83F7 C3/52F7: E6E6 INC $E6 C3/52F9: 64E5 STZ $E5 C3/52FB: A00400 LDY #$0004 C3/52FE: 5A PHY C3/52FF: 201153 JSR $5311 C3/5302: A5E6 LDA $E6 C3/5304: 1A INC A C3/5305: 1A INC A C3/5306: 1A INC A C3/5307: 1A INC A C3/5308: 291F AND #$1F (clear bits 5, 6, 7) C3/530A: 85E6 STA $E6 C3/530C: 7A PLY C3/530D: 88 DEY C3/530E: D0EE BNE $52FE C3/5310: 60 RTS
C3/5311 unknow
C3/5311: 202853 JSR $5328 C3/5314: A20300 LDX #$0003 (X position of left half of SwdTech) C3/5317: 203753 JSR $5337 C3/531A: E6E5 INC $E5 C3/531C: 202853 JSR $5328 C3/531F: A21100 LDX #$0011 (X position of right half of SwdTech) C3/5322: 203753 JSR $5337 C3/5325: E6E5 INC $E5 C3/5327: 60 RTS
C3/5328 unknow
C3/5328: A00C00 LDY #$000C (SwdTech name length) C3/532B: 84EB STY $EB C3/532D: A0403C LDY #$3C40 (SwdTech address) C3/5330: 84EF STY $EF C3/5332: A9CF LDA #$CF (SwdTech bank) C3/5334: 85F1 STA $F1 C3/5336: 60 RTS
C3/5337 unknow
C3/5337: A5E6 LDA $E6 C3/5339: 209F80 JSR $809F C3/533C: C220 REP #$20 (16 bit memory/accum.) C3/533E: 8A TXA C3/533F: 8F899E7E STA $7E9E89 C3/5343: E220 SEP #$20 (8 bit memory/accum.) C3/5345: 7B TDC C3/5346: A5E5 LDA $E5 C3/5348: AA TAX C3/5349: BF899D7E LDA $7E9D89,X C3/534D: C9FF CMP #$FF C3/534F: F006 BEQ $5357 C3/5351: 206784 JSR $8467 (draw the current SwdTech name) C3/5354: 4CD97F JMP $7FD9
C3/5357 unknow
C3/5357: A00C00 LDY #$000C C3/535A: A28B9E LDX #$9E8B C3/535D: 8E8121 STX $2181 C3/5360: A9FF LDA #$FF C3/5362: 8D8021 STA $2180 C3/5365: 88 DEY C3/5366: D0FA BNE $5362 C3/5368: 9C8021 STZ $2180 (end this string) C3/536B: 4CD97F JMP $7FD9
C3/536E unknow
C3/536E: A2899D LDX #$9D89 C3/5371: 8E8121 STX $2181 C3/5374: A00800 LDY #$0008 C3/5377: 64E0 STZ $E0 C3/5379: 7B TDC C3/537A: ADF71C LDA $1CF7 (known swdtech's?) C3/537D: 6A ROR A C3/537E: 48 PHA C3/537F: 9004 BCC $5385 C3/5381: A5E0 LDA $E0 C3/5383: 8002 BRA $5387 C3/5385: A9FF LDA #$FF C3/5387: 8D8021 STA $2180 C3/538A: E6E0 INC $E0 C3/538C: 68 PLA C3/538D: 88 DEY C3/538E: D0ED BNE $537D C3/5390: 60 RTS
C3/5391 unknow
C3/5391: 20156A JSR $6A15 C3/5394: 20A753 JSR $53A7 C3/5397: A92C LDA #$2C C3/5399: 8529 STA $29 C3/539B: A0985C LDY #$5C98 (Address at which you find the word "Rage") C3/539E: 20F902 JSR $02F9 C3/53A1: 20AC61 JSR $61AC C3/53A4: 4C4D0F JMP $0F4D
C3/53A7 unknow
C3/53A7: 20C153 JSR $53C1 C3/53AA: 20F783 JSR $83F7 C3/53AD: A00900 LDY #$0009 C3/53B0: 5A PHY C3/53B1: 20EE53 JSR $53EE C3/53B4: A5E6 LDA $E6 C3/53B6: 1A INC A C3/53B7: 1A INC A C3/53B8: 291F AND #$1F C3/53BA: 85E6 STA $E6 C3/53BC: 7A PLY C3/53BD: 88 DEY C3/53BE: D0F0 BNE $53B0 C3/53C0: 60 RTS
C3/53C1 unknow
C3/53C1: A2899D LDX #$9D89 C3/53C4: 8E8121 STX $2181 C3/53C7: A600 LDX $00 C3/53C9: 64E0 STZ $E0 C3/53CB: A00800 LDY #$0008 C3/53CE: BD2C1D LDA $1D2C,X (known rages) C3/53D1: 6A ROR A C3/53D2: 48 PHA C3/53D3: 9007 BCC $53DC C3/53D5: A5E0 LDA $E0 C3/53D7: 8D8021 STA $2180 C3/53DA: 8005 BRA $53E1 C3/53DC: A9FF LDA #$FF C3/53DE: 8D8021 STA $2180 C3/53E1: E6E0 INC $E0 C3/53E3: 68 PLA C3/53E4: 88 DEY C3/53E5: D0EA BNE $53D1 C3/53E7: E8 INX C3/53E8: E02000 CPX #$0020 C3/53EB: D0DE BNE $53CB C3/53ED: 60 RTS
C3/53EE unknow
C3/53EE: A920 LDA #$20 C3/53F0: 8529 STA $29 C3/53F2: 200954 JSR $5409 C3/53F5: A20500 LDX #$0005 (X position of left half of Rages) C3/53F8: 201854 JSR $5418 C3/53FB: E6E5 INC $E5 C3/53FD: 200954 JSR $5409 C3/5400: A21300 LDX #$0013 (X position of right half of Rages) C3/5403: 201854 JSR $5418 C3/5406: E6E5 INC $E5 C3/5408: 60 RTS
C3/5409 unknow
C3/5409: A00A00 LDY #$000A (Rage name length, which corresponds with monster name length) C3/540C: 84EB STY $EB C3/540E: A050C0 LDY #$C050 (Rage address) C3/5411: 84EF STY $EF C3/5413: A9CF LDA #$CF (Rage bank) C3/5415: 85F1 STA $F1 C3/5417: 60 RTS
C3/5418 unknow
C3/5418: A5E6 LDA $E6 C3/541A: 1A INC A C3/541B: 209F80 JSR $809F C3/541E: C220 REP #$20 (16 bit memory/accum.) C3/5420: 8A TXA C3/5421: 8F899E7E STA $7E9E89 C3/5425: E220 SEP #$20 (8 bit memory/accum.) C3/5427: 7B TDC C3/5428: A5E5 LDA $E5 C3/542A: AA TAX C3/542B: BF899D7E LDA $7E9D89,X C3/542F: C9FF CMP #$FF C3/5431: F008 BEQ $543B C3/5433: A5E5 LDA $E5 C3/5435: 206784 JSR $8467 (draw the current monster name for the rage list) C3/5438: 4CD97F JMP $7FD9
C3/543B unknow
C3/543B: A00A00 LDY #$000A (Enemy names are 10 characters long) C3/543E: A28B9E LDX #$9E8B C3/5441: 8E8121 STX $2181 C3/5444: A9FF LDA #$FF C3/5446: 8D8021 STA $2180 C3/5449: 88 DEY C3/544A: D0FA BNE $5446 C3/544C: 9C8021 STZ $2180 (end this string) C3/544F: 4CD97F JMP $7FD9
C3/5452 unknow
C3/5452: 20156A JSR $6A15 C3/5455: A920 LDA #$20 C3/5457: 8529 STA $29 (set text color to white) C3/5459: 206C54 JSR $546C C3/545C: A92C LDA #$2C C3/545E: 8529 STA $29 (set text color to blue) C3/5460: A0A75C LDY #$5CA7 (Address at which you find the word "Espers") C3/5463: 20F902 JSR $02F9 C3/5466: 20AC61 JSR $61AC C3/5469: 4C4D0F JMP $0F4D
C3/546C unknow
C3/546C: 208654 JSR $5486 C3/546F: 20F783 JSR $83F7 C3/5472: A00800 LDY #$0008 C3/5475: 5A PHY C3/5476: 20E354 JSR $54E3 C3/5479: A5E6 LDA $E6 C3/547B: 1A INC A C3/547C: 1A INC A C3/547D: 291F AND #$1F C3/547F: 85E6 STA $E6 C3/5481: 7A PLY C3/5482: 88 DEY C3/5483: D0F0 BNE $5475 C3/5485: 60 RTS
C3/5486 unknow
C3/5486: A2ED9D LDX #$9DED C3/5489: 8E8121 STX $2181 C3/548C: A600 LDX $00 C3/548E: 64E0 STZ $E0 C3/5490: A00800 LDY #$0008 (8 bits per byte) C3/5493: BD691A LDA $1A69,X (espers collected) C3/5496: 6A ROR A C3/5497: 48 PHA C3/5498: 9007 BCC $54A1 C3/549A: A5E0 LDA $E0 C3/549C: 8D8021 STA $2180 (if $E0 only holds 0 here, STZ $2180 would've been fine) C3/549F: 8005 BRA $54A6
C3/54A1: A9FF LDA #$FF C3/54A3: 8D8021 STA $2180 C3/54A6: E6E0 INC $E0 (increment number of espers collected?) C3/54A8: 68 PLA C3/54A9: 88 DEY (decrement number of bits left to do) C3/54AA: D0EA BNE $5496 (branch if there are any) C3/54AC: E8 INX C3/54AD: E00400 CPX #$0004 (have we done all 4 esper bytes yet?) C3/54B0: D0DE BNE $5490 (branch if not) C3/54B2: A2899D LDX #$9D89 C3/54B5: 8E8121 STX $2181 C3/54B8: A9FF LDA #$FF C3/54BA: A21D00 LDX #$001D C3/54BD: 8D8021 STA $2180 C3/54C0: CA DEX C3/54C1: D0FA BNE $54BD C3/54C3: A2ED9D LDX #$9DED C3/54C6: 8E8121 STX $2181 C3/54C9: A01B00 LDY #$001B C3/54CC: 7B TDC (keep the upper bits of A clean) C3/54CD: AD8021 LDA $2180 (grab something from working ram, aka WRAM) C3/54D0: 300D BMI $54DF C3/54D2: 48 PHA C3/54D3: AA TAX C3/54D4: BFB5F9D1 LDA $D1F9B5,X C3/54D8: 3A DEC A C3/54D9: AA TAX C3/54DA: 68 PLA C3/54DB: 9F899D7E STA $7E9D89,X C3/54DF: 88 DEY C3/54E0: D0EB BNE $54CD C3/54E2: 60 RTS
C3/54E3 unknow
C3/54E3: 20FA54 JSR $54FA C3/54E6: A20300 LDX #$0003 (X position of left half of espers) C3/54E9: 200955 JSR $5509 C3/54EC: E6E5 INC $E5 C3/54EE: 20FA54 JSR $54FA C3/54F1: A21100 LDX #$0011 (X position of right half of espers) C3/54F4: 200955 JSR $5509 C3/54F7: E6E5 INC $E5 C3/54F9: 60 RTS
C3/54FA unknow
C3/54FA: A00800 LDY #$0008 (esper name length) C3/54FD: 84EB STY $EB C3/54FF: A0E1F6 LDY #$F6E1 (esper name address) C3/5502: 84EF STY $EF C3/5504: A9E6 LDA #$E6 (esper name bank) C3/5506: 85F1 STA $F1 C3/5508: 60 RTS
C3/5509 unknow
C3/5509: A5E6 LDA $E6 C3/550B: 1A INC A C3/550C: 209F80 JSR $809F C3/550F: C220 REP #$20 (16 bit memory/accum.) C3/5511: 8A TXA C3/5512: 8F899E7E STA $7E9E89 C3/5516: E220 SEP #$20 (8 bit memory/accum.) C3/5518: 7B TDC C3/5519: A5E5 LDA $E5 C3/551B: AA TAX C3/551C: BF899D7E LDA $7E9D89,X C3/5520: C9FF CMP #$FF C3/5522: F039 BEQ $555D C3/5524: 207455 JSR $5574 (determine if the esper is equipped by anybody) C3/5527: 206784 JSR $8467 (draw the current esper name) C3/552A: 7B TDC C3/552B: A5E5 LDA $E5 C3/552D: AA TAX C3/552E: BF899D7E LDA $7E9D89,X C3/5532: 18 CLC C3/5533: 6936 ADC #$36 (add #$36 to get to the current esper) C3/5535: 200D51 JSR $510D (get MP cost) C3/5538: 48 PHA C3/5539: A2939E LDX #$9E93 C3/553C: 8E8121 STX $2181 C3/553F: A9C7 LDA #$C7 (the '...' character in the font) C3/5541: 8D8021 STA $2180 C3/5544: 68 PLA C3/5545: 20E004 JSR $04E0 (convert MP cost to digits) C3/5548: A5F7 LDA $F7 C3/554A: 8D8021 STA $2180 (draw ones digit) C3/554D: A5F8 LDA $F8 C3/554F: 8D8021 STA $2180 (draw tens digit) C3/5552: A5F9 LDA $F9 C3/5554: 8D8021 STA $2180 (draw hundreds digit) C3/5557: 9C8021 STZ $2180 (end this string) C3/555A: 4CD97F JMP $7FD9
C3/555A unknow
C3/555D: A00C00 LDY #$000C (esper name is 8 letters, 1 for space, 3 more for MP cost) C3/5560: A28B9E LDX #$9E8B C3/5563: 8E8121 STX $2181 C3/5566: A9FF LDA #$FF C3/5568: 8D8021 STA $2180 (draw a space) C3/556B: 88 DEY C3/556C: D0FA BNE $5568 (branch if haven't drawn 12 spaces) C3/556E: 9C8021 STZ $2180 (end this string) C3/5571: 4CD97F JMP $7FD9
C3/5574 determine who is equipping espers
Determine who is equipping what espers C3/5574: 85E0 STA $E0 (save the esper in question for now) C3/5576: A600 LDX $00 C3/5578: A01000 LDY #$0010 (16 characters to check, yet only 12 of them can equip espers) C3/557B: BD1E16 LDA $161E,X (esper currently equipped by characters) C3/557E: C5E0 CMP $E0 (does it match the one we're looking at?) C3/5580: F011 BEQ $5593 (branch if so) C3/5582: C220 REP #$20 (16 bit memory/accum.) C3/5584: 8A TXA (otherwise, we need to check the next character) C3/5585: 18 CLC C3/5586: 692500 ADC #$0025 (character structure is #$0025 in size) C3/5589: AA TAX (now the next character can be checked) C3/558A: E220 SEP #$20 (8 bit memory/accum.) C3/558C: 88 DEY C3/558D: D0EC BNE $557B (branch if we haven't checked every character) C3/558F: A920 LDA #$20 (white text color, meaning the esper can be equipped) C3/5591: 8002 BRA $5595 C3/5593: A928 LDA #$28 (gray text color, meaning the esper is already equipped) C3/5595: 8529 STA $29 (set text color) C3/5597: A5E0 LDA $E0 C3/5599: 60 RTS
C3/559A unknow
C3/559A: A920 LDA #$20 C3/559C: 8529 STA $29 (set text color to white) C3/559E: C220 REP #$20 (16 bit memory/accum.) C3/55A0: A9CD40 LDA #$40CD C3/55A3: 8F899E7E STA $7E9E89 C3/55A7: A98B9E LDA #$9E8B C3/55AA: 8D8121 STA $2181 C3/55AD: E220 SEP #$20 (8 bit memory/accum.) C3/55AF: A00600 LDY #$0006 C3/55B2: BD0216 LDA $1602,X (character's name) C3/55B5: C9FF CMP #$FF (a space?) C3/55B7: F007 BEQ $55C0 (branch if so) C3/55B9: 8D8021 STA $2180 C3/55BC: E8 INX C3/55BD: 88 DEY C3/55BE: D0F2 BNE $55B2 (branch if we haven't done 6 letters yet) C3/55C0: A600 LDX $00 C3/55C2: BFD95CC3 LDA $C35CD9,X (load text for " has it!") C3/55C6: F006 BEQ $55CE (branch if null-terminated) C3/55C8: 8D8021 STA $2180 C3/55CB: E8 INX C3/55CC: 80F4 BRA $55C2 C3/55CE: 9C8021 STZ $2180 (end this string) C3/55D1: 4CD97F JMP $7FD9
C3/55D4 unknow
C3/55D4: 20156A JSR $6A15 C3/55D7: 20EA55 JSR $55EA C3/55DA: A92C LDA #$2C C3/55DC: 8529 STA $29 (set text color to blue) C3/55DE: A0B05C LDY #$5CB0 (Address at which you find the word "Blitz") C3/55E1: 20F902 JSR $02F9 C3/55E4: 20AC61 JSR $61AC C3/55E7: 4C4D0F JMP $0F4D
C3/55EA unknow
C3/55EA: 201B56 JSR $561B C3/55ED: 20F783 JSR $83F7 C3/55F0: 64E5 STZ $E5 C3/55F2: E6E6 INC $E6 C3/55F4: A00400 LDY #$0004 C3/55F7: 5A PHY C3/55F8: 200A56 JSR $560A (set both positions for blitz combination display) C3/55FB: A5E6 LDA $E6 C3/55FD: 1A INC A C3/55FE: 1A INC A C3/55FF: 1A INC A C3/5600: 1A INC A (two lines for next blitz sequence) C3/5601: 291F AND #$1F C3/5603: 85E6 STA $E6 C3/5605: 7A PLY C3/5606: 88 DEY C3/5607: D0EE BNE $55F7 C3/5609: 60 RTS
C3/560D unknow
C3/560A: A20400 LDX #$0004 (X position of left half of Blitz) C3/560D: 204356 JSR $5643 C3/5610: E6E5 INC $E5 C3/5612: A21200 LDX #$0012 (X position of right half of Blitz) C3/5615: 204356 JSR $5643 C3/5618: E6E5 INC $E5 C3/561A: 60 RTS
C3/561B unknow
C3/561B: AD281D LDA $1D28 (load Blitz's learned) C3/561E: 8003 BRA $5623 C3/5620: AD4C1D LDA $1D4C (load Dance's learned) C3/5623: A2899D LDX #$9D89 C3/5626: 8E8121 STX $2181 C3/5629: A600 LDX $00 C3/562B: A00800 LDY #$0008 C3/562E: 6A ROR A C3/562F: 48 PHA C3/5630: 9006 BCC $5638 C3/5632: 8A TXA C3/5633: 8D8021 STA $2180 C3/5636: 8005 BRA $563D C3/5638: A9FF LDA #$FF C3/563A: 8D8021 STA $2180 (draw a space) C3/563D: E8 INX C3/563E: 68 PLA C3/563F: 88 DEY C3/5640: D0EC BNE $562E C3/5642: 60 RTS
C3/5643 unknow
C3/5643: A5E6 LDA $E6 C3/5645: 209F80 JSR $809F C3/5648: C220 REP #$20 (16 bit memory/accum.) C3/564A: 8A TXA C3/564B: 8F899E7E STA $7E9E89 C3/564F: E220 SEP #$20 (8 bit memory/accum.) C3/5651: 7B TDC C3/5652: A5E5 LDA $E5 C3/5654: AA TAX C3/5655: BF899D7E LDA $7E9D89,X C3/5659: C9FF CMP #$FF C3/565B: F00F BEQ $566C C3/565D: 208356 JSR $5683 (get Blitz combinations displayed) C3/5660: A0899E LDY #$9E89 C3/5663: 84E7 STY $E7 C3/5665: A97E LDA #$7E C3/5667: 85E9 STA $E9 C3/5669: 4CBC56 JMP $56BC (display the tiles put into VRAM)
C3/566C unknow
C3/566C: A00800 LDY #$0008 C3/566F: A28B9E LDX #$9E8B C3/5672: 8E8121 STX $2181 C3/5675: A9FF LDA #$FF (A already holds #$FF) C3/5677: 8D8021 STA $2180 (draw a blank space) C3/567A: 88 DEY C3/567B: D0FA BNE $5677 (branch if haven't drawn 8 blank spaces) C3/567D: 9C8021 STZ $2180 (end this string) C3/5680: 4CD97F JMP $7FD9
C3/5683 unknow
C3/5683: 48 PHA (from only C3/565D) C3/5684: 0A ASL A (multiply by 2) C3/5685: 0A ASL A (multiply by 4) C3/5686: 0A ASL A (mulitply by 8) C3/5687: 85E0 STA $E0 (store * 8 multiplier) C3/5689: 68 PLA C3/568A: 0A ASL A (multiply by 2) C3/568B: 0A ASL A (multiply by 4) C3/568C: 18 CLC (shifting should've taken care of carry) C3/568D: 65E0 ADC $E0 (add both and the multiplier is 12) C3/568F: AA TAX (transfer multiplier to X) C3/5690: A08B9E LDY #$9E8B C3/5693: 8C8121 STY $2181 C3/5696: A00A00 LDY #$000A C3/5699: DA PHX C3/569A: BF407AC4 LDA $C47A40,X (Load blitz specification character) C3/569E: 0A ASL A C3/569F: AA TAX C3/56A0: BF1C5CC3 LDA $C35C1C,X (blitz character determines which number to get from the font for display) C3/56A4: 8D8021 STA $2180 C3/56A7: E8 INX C3/56A8: BF1C5CC3 LDA $C35C1C,X (20 is normal A0 is vertical flip 60 is horizontal flip C0 is vertical and horizontal flip) C3/56AC: 8D8021 STA $2180 C3/56AF: E8 INX C3/56B0: FA PLX (the previous INX is pointless) C3/56B1: E8 INX C3/56B2: 88 DEY C3/56B3: D0E4 BNE $5699 C3/56B5: 9C8021 STZ $2180 (end this string) C3/56B8: 9C8021 STZ $2180 (end this string) C3/56BB: 60 RTS
C3/56BC unknow
C3/56BC: A400 LDY $00 C3/56BE: C220 REP #$20 (16 bit memory/accum.) C3/56C0: A7E7 LDA [$E7] C3/56C2: 85EB STA $EB C3/56C4: E6E7 INC $E7 C3/56C6: E6E7 INC $E7 C3/56C8: E220 SEP #$20 (8 bit memory/accum.) C3/56CA: A97E LDA #$7E C3/56CC: 85ED STA $ED C3/56CE: C220 REP #$20 (16 bit memory/accum.) C3/56D0: B7E7 LDA [$E7],Y C3/56D2: F008 BEQ $56DC C3/56D4: 97EB STA [$EB],Y C3/56D6: E220 SEP #$20 (8 bit memory/accum.) C3/56D8: C8 INY C3/56D9: C8 INY C3/56DA: 80F2 BRA $56CE C3/56DC: E220 SEP #$20 (8 bit memory/accum.) C3/56DE: 60 RTS
C3/56DF unknow
C3/56DF: 20095C JSR $5C09 (Load addresses for Esper descriptions) C3/56E2: 4C2A57 JMP $572A
C3/56E5 unknow
C3/56E5: 20E35B JSR $5BE3 (Load addresses for Magic descriptions) C3/56E8: 4C2A57 JMP $572A
C3/56EB load addresses for lore descriptions
C3/56EB: A2707A LDX #$7A70 C3/56EE: 86E7 STX $E7 C3/56F0: A2A077 LDX #$77A0 C3/56F3: 86EB STX $EB C3/56F5: A9ED LDA #$ED C3/56F7: 85E9 STA $E9 C3/56F9: A9ED LDA #$ED C3/56FB: 85ED STA $ED C3/56FD: 4C2A57 JMP $572A
C3/5700 load addresses for sword tech descriptions
C3/5700: A2AEFF LDX #$FFAE C3/5703: 86E7 STX $E7 C3/5705: A200FD LDX #$FD00 C3/5708: 86EB STX $EB C3/570A: A9CF LDA #$CF C3/570C: 85E9 STA $E9 C3/570E: A9CF LDA #$CF C3/5710: 85ED STA $ED C3/5712: 4C2A57 JMP $572A
C3/5715 load addresses for blitz descriptions
C3/5715: A29EFF LDX #$FF9E C3/5718: 86E7 STX $E7 C3/571A: A200FC LDX #$FC00 C3/571D: 86EB STX $EB C3/571F: A9CF LDA #$CF C3/5721: 85E9 STA $E9 C3/5723: A9CF LDA #$CF C3/5725: 85ED STA $ED C3/5727: 4C2A57 JMP $572A
C3/572A get offset from text
Unpack the text given its starting byte, offset, and pointer table C3/572A: A2C99E LDX #$9EC9 C3/572D: 8E8121 STX $2181 C3/5730: 7B TDC C3/5731: A54B LDA $4B C3/5733: AA TAX C3/5734: BF899D7E LDA $7E9D89,X C3/5738: C9FF CMP #$FF C3/573A: F031 BEQ $576D C3/573C: C220 REP #$20 (16 bit memory/accum.) C3/573E: 0A ASL A C3/573F: A8 TAY C3/5740: B7E7 LDA [$E7],Y C3/5742: A8 TAY C3/5743: E220 SEP #$20 (8 bit memory/accum.) C3/5745: B7EB LDA [$EB],Y C3/5747: F006 BEQ $574F C3/5749: 8D8021 STA $2180 C3/574C: C8 INY C3/574D: 80F6 BRA $5745 C3/574F: 88 DEY C3/5750: B7EB LDA [$EB],Y C3/5752: C8 INY C3/5753: C91C CMP #$1C C3/5755: F010 BEQ $5767 C3/5757: C91D CMP #$1D C3/5759: F00C BEQ $5767 C3/575B: C91E CMP #$1E C3/575D: F008 BEQ $5767 C3/575F: C91F CMP #$1F C3/5761: F004 BEQ $5767 C3/5763: 9C8021 STZ $2180 (end this string) C3/5766: 60 RTS C3/5767: 9C8021 STZ $2180 (end this string) C3/576A: C8 INY C3/576B: 80D8 BRA $5745 C3/576D: A9FF LDA #$FF (A would already contain #$FF, so this is pointless) C3/576F: 8D8021 STA $2180 C3/5772: 80EF BRA $5763
C3/5744 unknow
C3/5774: 20156A JSR $6A15 C3/5777: 208A57 JSR $578A C3/577A: A92C LDA #$2C C3/577C: 8529 STA $29 C3/577E: A09F5C LDY #$5C9F (Address at which you find the word "Dance") C3/5781: 20F902 JSR $02F9 C3/5784: 20AC61 JSR $61AC C3/5787: 4C4D0F JMP $0F4D
C3/578A unknow
C3/578A: 202056 JSR $5620 C3/578D: 20F783 JSR $83F7 C3/5790: E6E6 INC $E6 C3/5792: 64E5 STZ $E5 C3/5794: A00400 LDY #$0004 C3/5797: 5A PHY C3/5798: 20AA57 JSR $57AA C3/579B: A5E6 LDA $E6 C3/579D: 1A INC A C3/579E: 1A INC A C3/579F: 1A INC A C3/57A0: 1A INC A C3/57A1: 291F AND #$1F C3/57A3: 85E6 STA $E6 C3/57A5: 7A PLY C3/57A6: 88 DEY C3/57A7: D0EE BNE $5797 C3/57A9: 60 RTS
C3/57AA unknow
C3/57AA: 20C157 JSR $57C1 C3/57AD: A20300 LDX #$0003 (X position of left half of Dance) C3/57B0: 20D057 JSR $57D0 C3/57B3: E6E5 INC $E5 C3/57B5: 20C157 JSR $57C1 C3/57B8: A21100 LDX #$0011 (X position of right half of Dance) C3/57BB: 20D057 JSR $57D0 C3/57BE: E6E5 INC $E5 C3/57C0: 60 RTS
C3/57C1 unknow
C3/57C1: A00C00 LDY #$000C (Dance name length) C3/57C4: 84EB STY $EB C3/57C6: A09DFF LDY #$FF9D (Dance address) C3/57C9: 84EF STY $EF C3/57CB: A9E6 LDA #$E6 (Dance bank) C3/57CD: 85F1 STA $F1 C3/57CF: 60 RTS
C3/57D0 unknow
C3/57D0: A5E6 LDA $E6 C3/57D2: 209F80 JSR $809F C3/57D5: C220 REP #$20 (16 bit memory/accum.) C3/57D7: 8A TXA C3/57D8: 8F899E7E STA $7E9E89 C3/57DC: E220 SEP #$20 (8 bit memory/accum.) C3/57DE: 7B TDC C3/57DF: A5E5 LDA $E5 C3/57E1: AA TAX C3/57E2: BF899D7E LDA $7E9D89,X C3/57E6: C9FF CMP #$FF C3/57E8: F006 BEQ $57F0 C3/57EA: 206784 JSR $8467 (draw the current dance name) C3/57ED: 4CD97F JMP $7FD9
C3/57F0 unknow
C3/57F0: A00C00 LDY #$000C (length of dance names) C3/57F3: A28B9E LDX #$9E8B C3/57F6: 8E8121 STX $2181 C3/57F9: A9FF LDA #$FF (A should already hold #$FF) C3/57FB: 8D8021 STA $2180 (draw a space) C3/57FE: 88 DEY C3/57FF: D0FA BNE $57FB (branch if haven't drawn 12 spaces) C3/5801: 9C8021 STZ $2180 (end this string) C3/5804: 4CD97F JMP $7FD9
C3/5807 unknow
C3/5807: 7B TDC C3/5808: A560 LDA $60 C3/580A: AA TAX C3/580B: A9FF LDA #$FF C3/580D: 9FC9357E STA $7E35C9,X C3/5811: 60 RTS
C3/5812 unknow
C3/5812: 20286A JSR $6A28 C3/5815: A03F58 LDY #$583F C3/5818: 204103 JSR $0341 (window that holds C3/581B: A04358 LDY #$5843 C3/581E: 204103 JSR $0341 (window that holds C3/5821: A04758 LDY #$5847 C3/5824: 204103 JSR $0341 (window that holds C3/5827: 20520E JSR $0E52 C3/582A: 20196A JSR $6A19 C3/582D: A0C0FF LDY #$FFC0 C3/5830: 8435 STY $35 C3/5832: A902 LDA #$02 C3/5834: 0445 TSB $45 C3/5836: 208A31 JSR $318A C3/5839: 204B58 JSR $584B C3/583C: 4C9F31 JMP $319F
C3/583F windows data
C3/583F: 9D581318 C3/5843: 8B580702 C3/5847: 8B590703
C3/584B unknow
C3/584B: A920 LDA #$20 C3/584D: 8529 STA $29 (set text color to white) C3/584F: A08958 LDY #$5889 C3/5852: 20F902 JSR $02F9 (draw "MP") C3/5855: A08E58 LDY #$588E C3/5858: 20F902 JSR $02F9 (draw "Needed") C3/585B: 7B TDC C3/585C: A54B LDA $4B C3/585E: 85E5 STA $E5 C3/5860: 20B54F JSR $4FB5 C3/5863: C220 REP #$20 (16 bit memory/accum.) C3/5865: A90D79 LDA #$790D C3/5868: 8F899E7E STA $7E9E89 C3/586C: E220 SEP #$20 (8 bit memory/accum.) C3/586E: 20EC50 JSR $50EC C3/5871: 206784 JSR $8467 C3/5874: 20D97F JSR $7FD9 C3/5877: 20EC50 JSR $50EC C3/587A: 200D51 JSR $510D C3/587D: 20E004 JSR $04E0 C3/5880: A20F7A LDX #$7A0F C3/5883: 20B604 JSR $04B6 C3/5886: 4CD97F JMP $7FD9
C3/5889 data
C3/5889: 15 7A 8C 8F 00 (MP) C3/588E: 4D 7A 8D 9E 9E 9D 9E 9D 00 (Needed)
C3/5897 unknow
C3/5897: A44F LDY $4F C3/5899: 848E STY $8E C3/589B: A54A LDA $4A C3/589D: 8590 STA $90 C3/589F: 20545B JSR $5B54 C3/58A2: 209F59 JSR $599F C3/58A5: 20110F JSR $0F11 C3/58A8: 206813 JSR $1368 (trigger NMI) C3/58AB: 20FD0E JSR $0EFD C3/58AE: C220 REP #$20 (16 bit memory/accum.) C3/58B0: A90001 LDA #$0100 C3/58B3: 8F109A7E STA $7E9A10 C3/58B7: E220 SEP #$20 (8 bit memory/accum.) C3/58B9: A549 LDA $49 C3/58BB: 855F STA $5F C3/58BD: A907 LDA #$07 (Skill list Y position in Esper Menu) C3/58BF: 8549 STA $49 C3/58C1: 202D4E JSR $4E2D C3/58C4: A9C0 LDA #$C0 C3/58C6: 1446 TRB $46 C3/58C8: 207D59 JSR $597D C3/58CB: 4C8659 JMP $5986
C3/58CE unknow
C3/58CE: 208359 JSR $5983 (get finger position and move or stay) C3/58D1: 20935B JSR $5B93 C3/58D4: A508 LDA $08 C3/58D6: 8980 BIT #$80 (did you press A?) C3/58D8: F030 BEQ $590A (branch if not, BPL...) C3/58DA: 7B TDC C3/58DB: A54B LDA $4B C3/58DD: D02B BNE $590A C3/58DF: A599 LDA $99 (esper to equip) C3/58E1: 207455 JSR $5574 (can esper be equiped?) C3/58E4: 85E0 STA $E0 C3/58E6: A529 LDA $29 (load text color) C3/58E8: C928 CMP #$28 (is it gray?) C3/58EA: D016 BNE $5902 (branch if not) C3/58EC: 20C00E JSR $0EC0 (makes the buzzer sound) C3/58EF: A910 LDA #$10 C3/58F1: 0445 TSB $45 C3/58F3: 209A55 JSR $559A C3/58F6: A02000 LDY #$0020 C3/58F9: 8420 STY $20 C3/58FB: A934 LDA #$34 C3/58FD: 8526 STA $26 C3/58FF: 4C110F JMP $0F11
C3/5902 unknow
C3/5902: 20B20E JSR $0EB2 (makes the click sound) C3/5905: 202929 JSR $2929 (show esper name) C3/5908: 8009 BRA $5913
C3/590A unknow
C3/590A: A509 LDA $09 C3/590C: 8980 BIT #$80 (did you press B?) C3/590E: F06C BEQ $597C (branch if not, BPL...) C3/5910: 20A90E JSR $0EA9 C3/5913: A910 LDA #$10 C3/5915: 0445 TSB $45 C3/5917: A55F LDA $5F C3/5919: 8549 STA $49 C3/591B: 206C54 JSR $546C C3/591E: 201F09 JSR $091F (set arrow's initial position) C3/5921: C220 REP #$20 (16 bit memory/accum.) C3/5923: A90010 LDA #$1000 C3/5926: 9F4A357E STA $7E354A,X C3/592A: A96000 LDA #$0060 (arrow position in esper menu *after* checking an esper, this position is off) C3/592D: 9FCA347E STA $7E34CA,X C3/5931: E220 SEP #$20 (8 bit memory/accum.) C3/5933: 20184C JSR $4C18 C3/5936: A58E LDA $8E C3/5938: 854D STA $4D C3/593A: A48E LDY $8E C3/593C: 844F STY $4F C3/593E: A590 LDA $90 C3/5940: 854A STA $4A C3/5942: A54A LDA $4A C3/5944: 85E0 STA $E0 C3/5946: A550 LDA $50 C3/5948: 38 SEC C3/5949: E5E0 SBC $E0 C3/594B: 854E STA $4E C3/594D: 20214C JSR $4C21 C3/5950: A906 LDA #$06 C3/5952: 855C STA $5C C3/5954: A908 LDA #$08 C3/5956: 855A STA $5A C3/5958: A902 LDA #$02 C3/595A: 855B STA $5B C3/595C: 20FD0E JSR $0EFD C3/595F: 206813 JSR $1368 (trigger NMI) C3/5962: C220 REP #$20 (16 bit memory/accum.) C3/5964: 7B TDC C3/5965: 8F109A7E STA $7E9A10 C3/5969: E220 SEP #$20 (8 bit memory/accum.) C3/596B: A00001 LDY #$0100 C3/596E: 8439 STY $39 C3/5970: 843D STY $3D C3/5972: 202D4E JSR $4E2D C3/5975: 20110F JSR $0F11 C3/5978: A91E LDA #$1E C3/597A: 8526 STA $26 (execute at C3/28D3) C3/597C: 60 RTS
C3/597D unknow
C3/597D: A08C59 LDY #$598C C3/5980: 4CFE05 JMP $05FE
C3/5983 unknow
C3/5983: 202D07 JSR $072D C3/5986: A09159 LDY #$5991 C3/5989: 4C4006 JMP $0640
C3/598C data: hotspot
C3/598C: 80 00 00 01 07
C3/5991 data: finger positions
C3/5991: 1070 (finger at esper name) C3/5993: 187C (finger on spell 1) C3/5995: 1888 (finger on spell 2) C3/5997: 1894 (finger on spell 3) C3/5999: 18A0 (finger on spell 4) C3/599B: 18AC (finger on spell 5) C3/599D: 18B8 (finger on level up bonus)
C3/599F show spells taught by esper
C3/599F: A920 LDA #$20 C3/59A1: 8529 STA $29 (set text color to white) C3/59A3: A0EA5C LDY #$5CEA C3/59A6: 20F902 JSR $02F9 (display "Learn rate") C3/59A9: A0E25C LDY #$5CE2 C3/59AC: 20F902 JSR $02F9 (display "Skill") C3/59AF: A599 LDA $99 C3/59B1: 207455 JSR $5574 C3/59B4: A01144 LDY #$4411 C3/59B7: 201935 JSR $3519 (esper name position) C3/59BA: 7B TDC C3/59BB: A599 LDA $99 C3/59BD: 0A ASL A C3/59BE: 0A ASL A C3/59BF: 0A ASL A C3/59C0: AA TAX C3/59C1: A00800 LDY #$0008 (Indirectly says below is 8 chars long) C3/59C4: BFE1F6E6 LDA $E6F6E1,X (Load Esper X's name) C3/59C8: 8D8021 STA $2180 C3/59CB: E8 INX C3/59CC: 88 DEY C3/59CD: D0F5 BNE $59C4 C3/59CF: 9C8021 STZ $2180 (end this string) C3/59D2: 20D97F JSR $7FD9 (write out esper name) C3/59D5: 7B TDC C3/59D6: A54B LDA $4B C3/59D8: AA TAX C3/59D9: BF899D7E LDA $7E9D89,X C3/59DD: 8D0242 STA $4202 C3/59E0: A90B LDA #$0B C3/59E2: 8D0342 STA $4203 C3/59E5: A920 LDA #$20 C3/59E7: 8529 STA $29 (set text color to white) C3/59E9: A01100 LDY #$0011 C3/59EC: 84F5 STY $F5 C3/59EE: C220 REP #$20 (16 bit memory/accum.) C3/59F0: AD1642 LDA $4216 C3/59F3: AA TAX C3/59F4: E220 SEP #$20 (8 bit memory/accum.) C3/59F6: BF006ED8 LDA $D86E00,X (Load data for esper X) C3/59FA: 85E0 STA $E0 C3/59FC: E8 INX C3/59FD: BF006ED8 LDA $D86E00,X (Load data for esper X) C3/5A01: 85E1 STA $E1 C3/5A03: E8 INX C3/5A04: DA PHX C3/5A05: A20500 LDX #$0005 (up to 5 spells to display) C3/5A08: A4F5 LDY $F5 C3/5A0A: A5E1 LDA $E1 C3/5A0C: 48 PHA C3/5A0D: 20E15A JSR $5AE1 (get a spell to learn) C3/5A10: A21800 LDX #$0018 C3/5A13: A4F5 LDY $F5 C3/5A15: 68 PLA C3/5A16: 85E1 STA $E1 C3/5A18: 20845A JSR $5A84 (get spell's learned %) C3/5A1B: FA PLX C3/5A1C: C220 REP #$20 (16 bit memory/accum.) C3/5A1E: E6F5 INC $F5 C3/5A20: E6F5 INC $F5 C3/5A22: A5F5 LDA $F5 C3/5A24: C91B00 CMP #$001B C3/5A27: D0CB BNE $59F4 C3/5A29: E220 SEP #$20 (8 bit memory/accum.) C3/5A2B: BF006ED8 LDA $D86E00,X (Load data for esper X) C3/5A2F: C9FF CMP #$FF C3/5A31: F034 BEQ $5A67 (branch if no level up bonus) C3/5A33: 8D0242 STA $4202 C3/5A36: A909 LDA #$09 C3/5A38: 8D0342 STA $4203 C3/5A3B: A01347 LDY #$4713 C3/5A3E: 201935 JSR $3519 (position of "At level up...") C3/5A41: A600 LDX $00 C3/5A43: BFF75CC3 LDA $C35CF7,X (get "At level up..." text) C3/5A47: 8D8021 STA $2180 C3/5A4A: E8 INX C3/5A4B: E00E00 CPX #$000E (text is not null-terminated, so keep track of how much of the name has been drawn) C3/5A4E: D0F3 BNE $5A43 (branch if haven't done 14 letters) C3/5A50: AE1642 LDX $4216 C3/5A53: A00900 LDY #$0009 C3/5A56: BFAEFECF LDA $CFFEAE,X (short esper bonus descriptions) C3/5A5A: 8D8021 STA $2180 C3/5A5D: E8 INX C3/5A5E: 88 DEY C3/5A5F: D0F5 BNE $5A56 C3/5A61: 9C8021 STZ $2180 (end this string) C3/5A64: 4CD97F JMP $7FD9
C3/5A67 unknow
C3/5A67: A01347 LDY #$4713 C3/5A6A: 201935 JSR $3519 (position of "At level up...") C3/5A6D: A01700 LDY #$0017 C3/5A70: A28B9E LDX #$9E8B C3/5A73: 8E8121 STX $2181 C3/5A76: A9FF LDA #$FF C3/5A78: 8D8021 STA $2180 (insert a space) C3/5A7B: 88 DEY C3/5A7C: D0FA BNE $5A78 (do 22 times) C3/5A7E: 9C8021 STZ $2180 (end this string) C3/5A81: 4CD97F JMP $7FD9
C3/5A84 unknow
C3/5A84: 203D5B JSR $5B3D C3/5A87: C220 REP #$20 (16 bit memory/accum.) C3/5A89: 8A TXA C3/5A8A: 8F899E7E STA $7E9E89 C3/5A8E: E220 SEP #$20 (8 bit memory/accum.) C3/5A90: A28B9E LDX #$9E8B C3/5A93: 8E8121 STX $2181 C3/5A96: A5E1 LDA $E1 C3/5A98: C9FF CMP #$FF C3/5A9A: F035 BEQ $5AD1 (branch if no spell) C3/5A9C: 20A250 JSR $50A2 (get current spell's learn %) C3/5A9F: C9FF CMP #$FF C3/5AA1: F01F BEQ $5AC2 (branch if already learned this spell) C3/5AA3: 48 PHA C3/5AA4: A9FF LDA #$FF C3/5AA6: 8D8021 STA $2180 (insert a space) C3/5AA9: 68 PLA C3/5AAA: 20E004 JSR $04E0 (turn A into displayable digits) C3/5AAD: A5F8 LDA $F8 C3/5AAF: 8D8021 STA $2180 (draw ones digit) C3/5AB2: A5F9 LDA $F9 C3/5AB4: 8D8021 STA $2180 (draw tens digit) C3/5AB7: A9CD LDA #$CD ('%' character in the font) C3/5AB9: 8D8021 STA $2180 C3/5ABC: 9C8021 STZ $2180 (end this string) C3/5ABF: 4CD97F JMP $7FD9
C3/5AC2 unknow
C3/5AC2: A9B5 LDA #$B5 ('1' character in the font) C3/5AC4: 8D8021 STA $2180 C3/5AC7: A9B4 LDA #$B4 ('0' character in the font) C3/5AC9: 8D8021 STA $2180 C3/5ACC: 8D8021 STA $2180 (make '100%', adds the '%' after the branch) C3/5ACF: 80E6 BRA $5AB7
C3/5AD1 unknow
C3/5AD1: A9FF LDA #$FF (spell not learned, blank out) C3/5AD3: 8D8021 STA $2180 C3/5AD6: 8D8021 STA $2180 C3/5AD9: 8D8021 STA $2180 C3/5ADC: 8D8021 STA $2180 (four spaces) C3/5ADF: 80DB BRA $5ABC
C3/5AE1 display spell to learn
Display spell to learn, used by Esper menu and item properties menu C3/5AE1: 203D5B JSR $5B3D C3/5AE4: C220 REP #$20 (16 bit memory/accum.) C3/5AE6: 8A TXA C3/5AE7: 8F899E7E STA $7E9E89 C3/5AEB: E220 SEP #$20 (8 bit memory/accum.) C3/5AED: 20B54F JSR $4FB5 (get spell name length and location) C3/5AF0: A5E1 LDA $E1 C3/5AF2: C9FF CMP #$FF C3/5AF4: F030 BEQ $5B26 (branch if no spell) C3/5AF6: 206784 JSR $8467 (draw the spell name) C3/5AF9: A2929E LDX #$9E92 (space between spell name and ':' character) C3/5AFC: 8E8121 STX $2181 C3/5AFF: A9C1 LDA #$C1 (':' character in the font) C3/5B01: 8D8021 STA $2180 C3/5B04: A9FF LDA #$FF C3/5B06: 8D8021 STA $2180 C3/5B09: 8D8021 STA $2180 (two spaces) C3/5B0C: A9D7 LDA #$D7 (special 'x' character in the font) C3/5B0E: 8D8021 STA $2180 C3/5B11: A5E0 LDA $E0 C3/5B13: 20E004 JSR $04E0 (turn A into displayable digits) C3/5B16: A5F8 LDA $F8 C3/5B18: 8D8021 STA $2180 C3/5B1B: A5F9 LDA $F9 C3/5B1D: 8D8021 STA $2180 C3/5B20: 9C8021 STZ $2180 (end this string) C3/5B23: 4CD97F JMP $7FD9
C3/5B26 unknow
C3/5B26: A00F00 LDY #$000F (15...) C3/5B29: A28B9E LDX #$9E8B C3/5B2C: 8E8121 STX $2181 C3/5B2F: A9FF LDA #$FF C3/5B31: 8D8021 STA $2180 (insert a space) C3/5B34: 88 DEY C3/5B35: D0FA BNE $5B31 (do 14 times?) C3/5B37: 9C8021 STZ $2180 (end this string) C3/5B3A: 4CD97F JMP $7FD9
C3/5B3D unknow
C3/5B3D: C220 REP #$20 (16 bit memory/accum.) C3/5B3F: 98 TYA C3/5B40: 0A ASL A C3/5B41: 0A ASL A C3/5B42: 0A ASL A C3/5B43: 0A ASL A C3/5B44: 0A ASL A C3/5B45: 0A ASL A C3/5B46: 85E7 STA $E7 C3/5B48: 8A TXA C3/5B49: 0A ASL A C3/5B4A: 18 CLC C3/5B4B: 65E7 ADC $E7 C3/5B4D: 694940 ADC #$4049 C3/5B50: AA TAX C3/5B51: E220 SEP #$20 (8 bit memory/accum.) C3/5B53: 60 RTS
C3/5B54 unknow
C3/5B54: 7B TDC C3/5B55: A599 LDA $99 C3/5B57: 8F8DAB7E STA $7EAB8D C3/5B5B: A54B LDA $4B C3/5B5D: AA TAX C3/5B5E: BF899D7E LDA $7E9D89,X C3/5B62: 8D0242 STA $4202 C3/5B65: A90B LDA #$0B C3/5B67: 8D0342 STA $4203 C3/5B6A: 8B PHB C3/5B6B: A97E LDA #$7E C3/5B6D: 48 PHA C3/5B6E: AB PLB C3/5B6F: A00100 LDY #$0001 C3/5B72: C220 REP #$20 (16 bit memory/accum.) C3/5B74: AF164200 LDA $004216 C3/5B78: AA TAX C3/5B79: E220 SEP #$20 (8 bit memory/accum.) C3/5B7B: E8 INX C3/5B7C: BF006ED8 LDA $D86E00,X (Load data for esper X) C3/5B80: 998DAB STA $AB8D,Y C3/5B83: E8 INX C3/5B84: C8 INY C3/5B85: C00600 CPY #$0006 C3/5B88: D0F1 BNE $5B7B C3/5B8A: BF006ED8 LDA $D86E00,X (Load data for esper X) C3/5B8E: 8D93AB STA $AB93 C3/5B91: AB PLB C3/5B92: 60 RTS
C3/5B93 unknow
C3/5B93: A2C99E LDX #$9EC9 C3/5B96: 8E8121 STX $2181 C3/5B99: 7B TDC C3/5B9A: A54B LDA $4B C3/5B9C: AA TAX C3/5B9D: BF8DAB7E LDA $7EAB8D,X (Load the inventory quantity for X) C3/5BA1: C9FF CMP #$FF C3/5BA3: F02C BEQ $5BD1 C3/5BA5: 48 PHA C3/5BA6: 20DB5B JSR $5BDB C3/5BA9: 68 PLA C3/5BAA: C220 REP #$20 (16 bit memory/accum.) C3/5BAC: 0A ASL A C3/5BAD: A8 TAY C3/5BAE: B7E7 LDA [$E7],Y C3/5BB0: A8 TAY C3/5BB1: E220 SEP #$20 (8 bit memory/accum.) C3/5BB3: B7EB LDA [$EB],Y C3/5BB5: F006 BEQ $5BBD C3/5BB7: 8D8021 STA $2180 C3/5BBA: C8 INY C3/5BBB: 80F6 BRA $5BB3 C3/5BBD: 88 DEY C3/5BBE: B7EB LDA [$EB],Y C3/5BC0: C8 INY C3/5BC1: C91C CMP #$1C C3/5BC3: F010 BEQ $5BD5 C3/5BC5: C91D CMP #$1D C3/5BC7: F00C BEQ $5BD5 C3/5BC9: C91E CMP #$1E C3/5BCB: F008 BEQ $5BD5 C3/5BCD: C91F CMP #$1F C3/5BCF: F004 BEQ $5BD5 C3/5BD1: 9C8021 STZ $2180 (end this string) C3/5BD4: 60 RTS
C3/5BD5 unknow
C3/5BD5: 9C8021 STZ $2180 (end this string) C3/5BD8: C8 INY C3/5BD9: 80D8 BRA $5BB3
C3/5BDB load addresses for magic descriptions
C3/5BDB: A54B LDA $4B C3/5BDD: F02A BEQ $5C09 C3/5BDF: C906 CMP #$06 C3/5BE1: F013 BEQ $5BF6 C3/5BE3: A280CF LDX #$CF80 C3/5BE6: 86E7 STX $E7 C3/5BE8: A2A0C9 LDX #$C9A0 C3/5BEB: 86EB STX $EB C3/5BED: A9D8 LDA #$D8 C3/5BEF: 85E9 STA $E9 C3/5BF1: A9D8 LDA #$D8 C3/5BF3: 85ED STA $ED C3/5BF5: 60 RTS
C3/5BF6 load addresses for long esper bonus descriptions
C3/5BF6: A2D0FF LDX #$FFD0 C3/5BF9: 86E7 STX $E7 C3/5BFB: A200FE LDX #$FE00 C3/5BFE: 86EB STX $EB C3/5C00: A9ED LDA #$ED C3/5C02: 85E9 STA $E9 C3/5C04: A9ED LDA #$ED C3/5C06: 85ED STA $ED C3/5C08: 60 RTS
C3/5C09 load addresses for esper descriptions
C3/5C09: A240FE LDX #$FE40 C3/5C0C: 86E7 STX $E7 C3/5C0E: A24039 LDX #$3940 C3/5C11: 86EB STX $EB C3/5C13: A9CF LDA #$CF C3/5C15: 85E9 STA $E9 C3/5C17: A9CF LDA #$CF C3/5C19: 85ED STA $ED C3/5C1B: 60 RTS
C3/5C1C data: blitz character table
Blitz character table (hint: look in a table file) C3/5C1C: 0000 C3/5C1E: 0000 (A's entry would go here, but there's no point...) C3/5C20: 0000 (B's entry would go here, but there's no point...) C3/5C22: 9720 (X, normal orientation) C3/5C24: 9820 (Y, normal orientation) C3/5C26: 8B20 (L, normal orientation) C3/5C28: 9120 (R, normal orientation) C3/5C2A: D620 (down/left, normal orientation) C3/5C2C: D4A0 (up, flipped vertically, aka down) C3/5C2E: D660 (down/left, flipped horizontally, aka down/right) C3/5C30: D520 (right, normal orientation) C3/5C32: D6C0 (down/left, facing up/right) C3/5C34: D420 (up, normal orientation) C3/5C36: D6A0 (down/left, flipped vertically, aka up/left) C3/5C38: D560 (right, flipped horizontally, aka left)
C3/5C3A unknow
C3/5C3A: 485C C3/5C3C: 515C C3/5C3E: 595C C3/5C40: 635C C3/5C42: 6B5C C3/5C44: 725C C3/5C46: 795C
C3/5C48 strings
C3/5C48: 0D7984ACA99EABAC00 (position of and word "Espers") C3/5C51: 8D798C9AA0A29C00 (position of and word "Magic") C3/5C59: 8D7A92B09D939E9CA100 (position of and word "SwdTech") C3/5C63: 0D7B81A5A2ADB300 (position of and word "Blitz") C3/5C6B: 8D7B8BA8AB9E00 (position of and word "Lore") C3/5C72: 0D7C919AA09E00 (position of and word "Rage") C3/5C79: 8D7C839AA79C9E00 (position of and word "Dance")
C3/5C81 data
Data: Used by C3/69BA C3/5C81: C25C (from C3/4D30?) C3/5C83: C75C C3/5C85: CC5C
C3/5C87 strings
C3/5C87: B7818C8FC7FFFFFFFF00 (position of and word "MP... ") C3/5C91: B7818BA8AB9E00 (position of and word "Lore") C3/5C98: B781919AA09E00 (position of and word "Rage") C3/5C9F: B781839AA79C9E00 (position of and word "Dance") C3/5CA7: B78184ACA99EABAC00 (position of and word "Espers") C3/5CB0: B78181A5A2ADB300 (position of and word "Blitz") C3/5CB8: B78192B09D939E9CA100 (position of and word "SwdTech") C3/5CC2: 2D428B9500 (position of and word "LV") C3/5CC7: AD42878F00 (position of and word "HP") C3/5CCA: 2D438C8F00 (position of and word "MP") C3/5CD1: BB42C000 (from C3/4EF6, position of and character "/") C3/5CD5: 3B43C000 (from C3/4EFC, position of and character "/") C3/5CD9: FFA19AACFFA2ADBE00 (" has it!") C3/5CE2: 394492A4A2A5A500 (position of and word "Skill") C3/5CEA: 23448B9E9AABA7C5919AAD9E00 (position of and words "Learn rate") C3/5CF7: 80ADFFA59EAF9EA5FFAEA9C5C5C5 (position of and words "At level up...", note this isn't terminated)
C3/5D05 unknow
C3/5D05: 20175D JSR $5D17 (from C3/1C4C) C3/5D08: 20C15D JSR $5DC1 C3/5D0B: 203C5D JSR $5D3C C3/5D0E: 208D5F JSR $5F8D (display stats for status screen) C3/5D11: 20775D JSR $5D77 C3/5D14: 4CAC61 JMP $61AC
C3/5D17 unknow
C3/5D17: 20156A JSR $6A15 C3/5D1A: 20236A JSR $6A23 C3/5D1D: 203C6A JSR $6A3C C3/5D20: 20416A JSR $6A41 C3/5D23: 20466A JSR $6A46 C3/5D26: 204B6A JSR $6A4B C3/5D29: A0815F LDY #$5F81 C3/5D2C: 204103 JSR $0341 (window for the status screen) C3/5D2F: A0795F LDY #$5F79 C3/5D32: 204103 JSR $0341 (window that holds "Status") C3/5D35: A07D5F LDY #$5F7D C3/5D38: 204103 JSR $0341 (window that holds commands) C3/5D3B: 60 RTS
C3/5D3C unknow
C3/5D3C: 20415D JSR $5D41 (from C3/5D0B, C3/6357) C3/5D3F: 801B BRA $5D5C C3/5D41: A920 LDA #$20 (from C3/5D3C, C3/5D83) C3/5D43: 8529 STA $29 (set text color to white) C3/5D45: A25B64 LDX #$645B C3/5D48: A00800 LDY #$0008 C3/5D4B: 20BA69 JSR $69BA (display "/," "/," "%," and "%") C3/5D4E: A924 LDA #$24 C3/5D50: 8529 STA $29 (set text color to blue) C3/5D52: A25564 LDX #$6455 C3/5D55: A00600 LDY #$0006 C3/5D58: 20BA69 JSR $69BA (display "LV," "HP," and "MP") C3/5D5B: 60 RTS
C3/5D5C unknow
C3/5D5C: A92C LDA #$2C C3/5D5E: 8529 STA $29 (set text color to blue) C3/5D60: A23764 LDX #$6437 C3/5D63: A01E00 LDY #$001E C3/5D66: 20BA69 JSR $69BA (display "Vigor," "Stamina," "Mag.Pwr," "Evade%," "MBlock%," "..," "..," "..," "..," "..," "..," "..," "..," "..," and "Status") C3/5D69: A92C LDA #$2C C3/5D6B: 8529 STA $29 (set text color to blue) C3/5D6D: A26364 LDX #$6463 C3/5D70: A00C00 LDY #$000C C3/5D73: 20BA69 JSR $69BA (display "Speed," "Bat. Pwr," "Defense," "Mag.Def," Your Exp:," and "For level up:") C3/5D76: 60 RTS
C3/5D77 unknow
C3/5D77: 20520E JSR $0E52 C3/5D7A: 20280E JSR $0E28 C3/5D7D: 206E0E JSR $0E6E C3/5D80: 4C7C0E JMP $0E7C
C3/5D83 unknow
C3/5D83: 20415D JSR $5D41 C3/5D86: 208D5F JSR $5F8D (display status for status screen) C3/5D89: 20A261 JSR $61A2 C3/5D8C: A00000 LDY #$0000 C3/5D8F: 8414 STY $14 C3/5D91: A04938 LDY #$3849 C3/5D94: 8416 STY $16 C3/5D96: A00008 LDY #$0800 C3/5D99: 8412 STY $12 C3/5D9B: A00040 LDY #$4000 C3/5D9E: 841B STY $1B C3/5DA0: A04978 LDY #$7849 C3/5DA3: 841D STY $1D C3/5DA5: A00008 LDY #$0800 C3/5DA8: 8419 STY $19 C3/5DAA: 20B011 JSR $11B0 (execute everything in OAM queue) C3/5DAD: 206813 JSR $1368 (trigger NMI) C3/5DB0: A400 LDY $00 C3/5DB2: 841B STY $1B C3/5DB4: A00048 LDY #$4800 C3/5DB7: 8414 STY $14 C3/5DB9: A04988 LDY #$8849 C3/5DBC: 8416 STY $16 C3/5DBE: 4C6813 JMP $1368 (trigger NMI)
C3/5DC1 unknow
C3/5DC1: A2099E LDX #$9E09 (from C3/5D08) C3/5DC4: 8E8121 STX $2181 C3/5DC7: 7B TDC (A = #$0000) C3/5DC8: AA TAX (X = #$0000) C3/5DC9: DA PHX (save X) C3/5DCA: C220 REP #$20 (16 bit memory/accum.) C3/5DCC: 8A TXA C3/5DCD: 0A ASL A (* 2) C3/5DCE: AA TAX C3/5DCF: ADDC1E LDA $1EDC C3/5DD2: 3F679CC3 AND $C39C67,X C3/5DD6: F023 BEQ $5DFB C3/5DD8: C220 REP #$20 (16 bit memory/accum.) C3/5DDA: BF6969C3 LDA $C36969,X (Xth character's working RAM offset) C3/5DDE: AA TAX C3/5DDF: E220 SEP #$20 (8 bit memory/accum.) C3/5DE1: BD1600 LDA $0016,X (unmodified command 1) C3/5DE4: 8D8021 STA $2180 C3/5DE7: BD1700 LDA $0017,X (unmodified command 2) C3/5DEA: 8D8021 STA $2180 C3/5DED: BD1800 LDA $0018,X (unmodified command 3) C3/5DF0: 8D8021 STA $2180 C3/5DF3: BD1900 LDA $0019,X (unmodified command 4) C3/5DF6: 8D8021 STA $2180 C3/5DF9: 8010 BRA $5E0B C3/5DFB: E220 SEP #$20 (8 bit memory/accum.) C3/5DFD: A9FF LDA #$FF C3/5DFF: 8D8021 STA $2180 C3/5E02: 8D8021 STA $2180 C3/5E05: 8D8021 STA $2180 C3/5E08: 8D8021 STA $2180 (four spaces, 16 loop iterations) C3/5E0B: FA PLX C3/5E0C: E8 INX C3/5E0D: E01000 CPX #$0010 C3/5E10: D0B7 BNE $5DC9 C3/5E12: 7B TDC (A = #$0000) C3/5E13: AA TAX (X = #$0000) C3/5E14: DA PHX (save X) C3/5E15: BF099E7E LDA $7E9E09,X C3/5E19: DF0A9E7E CMP $7E9E0A,X C3/5E1D: D008 BNE $5E27 C3/5E1F: 48 PHA C3/5E20: A9FF LDA #$FF C3/5E22: 9F0A9E7E STA $7E9E0A,X C3/5E26: 68 PLA C3/5E27: E8 INX C3/5E28: E04000 CPX #$0040 C3/5E2B: D0EC BNE $5E19 C3/5E2D: FA PLX C3/5E2E: E8 INX C3/5E2F: E04000 CPX #$0040 C3/5E32: D0E0 BNE $5E14 C3/5E34: A28A9D LDX #$9D8A C3/5E37: 8E8121 STX $2181 C3/5E3A: A9FF LDA #$FF C3/5E3C: 8D8021 STA $2180 C3/5E3F: 7B TDC (A = #$0000) C3/5E40: AA TAX (X = #$0000) C3/5E41: A8 TAY (Y = #$0000) C3/5E42: 7B TDC (A = #$0000) C3/5E43: DA PHX C3/5E44: BF099E7E LDA $7E9E09,X (load command?) C3/5E48: 3016 BMI $5E60 C3/5E4A: C912 CMP #$12 (is command Mimic?) C3/5E4C: F012 BEQ $5E60 (branch if so) C3/5E4E: 85E0 STA $E0 C3/5E50: 0A ASL A C3/5E51: AA TAX C3/5E52: BF00FECF LDA $CFFE00,X (load command info) C3/5E56: 2901 AND #$01 (can Gogo use this command?) C3/5E58: F006 BEQ $5E60 (branch if not) C3/5E5A: A5E0 LDA $E0 C3/5E5C: 8D8021 STA $2180 C3/5E5F: C8 INY C3/5E60: FA PLX C3/5E61: E8 INX C3/5E62: E04000 CPX #$0040 C3/5E65: D0DB BNE $5E42 C3/5E67: C8 INY C3/5E68: 98 TYA C3/5E69: 8F899D7E STA $7E9D89 C3/5E6D: A28DAA LDX #$AA8D C3/5E70: 8E8121 STX $2181 C3/5E73: 7B TDC (A = #$0000) C3/5E74: AA TAX (X = #$0000) C3/5E75: BF855FC3 LDA $C35F85,X (window data for Gogo's command list?) C3/5E79: 8D8021 STA $2180 C3/5E7C: E8 INX C3/5E7D: E00800 CPX #$0008 C3/5E80: D0F3 BNE $5E75 C3/5E82: 98 TYA C3/5E83: 85E2 STA $E2 C3/5E85: 18 CLC C3/5E86: 65E2 ADC $E2 C3/5E88: 65E2 ADC $E2 C3/5E8A: 29FE AND #$FE C3/5E8C: F002 BEQ $5E90 C3/5E8E: 1A INC A C3/5E8F: 1A INC A C3/5E90: 4A LSR A C3/5E91: 8F90AA7E STA $7EAA90 C3/5E95: 8F94AA7E STA $7EAA94 C3/5E99: A08DAA LDY #$AA8D C3/5E9C: A97E LDA #$7E C3/5E9E: 85E9 STA $E9 (JSR $0343 would've worked) C3/5EA0: 204503 JSR $0345 (draw a window, data at 7E/AA8D) C3/5EA3: A091AA LDY #$AA91 C3/5EA6: A97E LDA #$7E C3/5EA8: 85E9 STA $E9 (JSR $0343 would've worked) C3/5EAA: 204503 JSR $0345 (draw a window, data at 7E/AA91) C3/5EAD: AF899D7E LDA $7E9D89 C3/5EB1: 85E5 STA $E5 C3/5EB3: 64E6 STZ $E6 C3/5EB5: 7B TDC (A = #$0000) C3/5EB6: AA TAX (X = #$0000) C3/5EB7: A0C980 LDY #$80C9 C3/5EBA: DA PHX C3/5EBB: 5A PHY C3/5EBC: BF8A9D7E LDA $7E9D8A,X C3/5EC0: 20D75E JSR $5ED7 (check for grayed commands) C3/5EC3: 7A PLY C3/5EC4: C220 REP #$20 (16 bit memory/accum.) C3/5EC6: 98 TYA C3/5EC7: 18 CLC C3/5EC8: 698000 ADC #$0080 C3/5ECB: A8 TAY C3/5ECC: E220 SEP #$20 (8 bit memory/accum.) C3/5ECE: FA PLX C3/5ECF: E8 INX C3/5ED0: E4E5 CPX $E5 C3/5ED2: D0E6 BNE $5EBA C3/5ED4: 4C505F JMP $5F50 (blank out Gogo's portrait for the command list)
C3/5ED7 unknow
C3/5ED7: 48 PHA C3/5ED8: 201935 JSR $3519 C3/5EDB: 68 PLA C3/5EDC: 302E BMI $5F0C (blank out the command name) C3/5EDE: 4CE65E JMP $5EE6 (no BRA?)
C3/5EE1 check for blank and grayed out commands
C3/5EE1: 202C61 JSR $612C (Check for blanked commands) C3/5EE4: 3026 BMI $5F0C C3/5EE6: 20255F JSR $5F25 (Check for greyed out commands) C3/5EE9: 85E2 STA $E2 C3/5EEB: 48 PHA C3/5EEC: 0A ASL A C3/5EED: 0A ASL A C3/5EEE: 85E0 STA $E0 C3/5EF0: 68 PLA C3/5EF1: 0A ASL A C3/5EF2: 18 CLC C3/5EF3: 65E0 ADC $E0 C3/5EF5: 65E2 ADC $E2 C3/5EF7: AA TAX C3/5EF8: A00700 LDY #$0007 (Commands are 7 letters long) C3/5EFB: BFA0CED8 LDA $D8CEA0,X (Load Xth letter of Battle Cmd. name) C3/5EFF: 8D8021 STA $2180 C3/5F02: E8 INX C3/5F03: 88 DEY C3/5F04: D0F5 BNE $5EFB C3/5F06: 9C8021 STZ $2180 (end this string) C3/5F09: 4CD97F JMP $7FD9
C3/5F0C unknow
C3/5F0C: A9FF LDA #$FF C3/5F0E: 8D8021 STA $2180 C3/5F11: 8D8021 STA $2180 C3/5F14: 8D8021 STA $2180 C3/5F17: 8D8021 STA $2180 C3/5F1A: 8D8021 STA $2180 C3/5F1D: 8D8021 STA $2180 C3/5F20: 8D8021 STA $2180 (7 spaces. Blank out command space) C3/5F23: 80E1 BRA $5F06
C3/5F25 check for grayed out commands
C3/5F25: 48 PHA C3/5F26: C90B CMP #$0B (is it runic?) C3/5F28: F010 BEQ $5F3A C3/5F2A: C907 CMP #$07 (is it swdtech?) C3/5F2C: F016 BEQ $5F44 C3/5F2E: A920 LDA #$20 C3/5F30: 8529 STA $29 (set text color to white) C3/5F32: 68 PLA C3/5F33: 60 RTS C3/5F34: A924 LDA #$24 C3/5F36: 8529 STA $29 (set text color to gray) C3/5F38: 68 PLA C3/5F39: 60 RTS
C3/5F3A grey out runic if no weapons have runic ability
C3/5F3A: ADDA11 LDA $11DA C3/5F3D: 0DDB11 ORA $11DB C3/5F40: 10F2 BPL $5F34 C3/5F42: 80EA BRA $5F2E
C3/5F44 grey out sword tech if no weapons have sword tech ability
C3/5F44: ADDA11 LDA $11DA C3/5F47: 0DDB11 ORA $11DB C3/5F4A: 8902 BIT #$02 C3/5F4C: F0E6 BEQ $5F34 C3/5F4E: 80DE BRA $5F2E
C3/5F50 hide gogo's portrait
Put Gogo's portrait behind the menu tiles C3/5F50: A2CA61 LDX #$61CA (where to start the portrait overwriting) C3/5F53: 86E7 STX $E7 C3/5F55: A97E LDA #$7E C3/5F57: 85E9 STA $E9 C3/5F59: A20600 LDX #$0006 (how many tiles to do; Note: Gogo's portrait is not completely overwritten here, as the starting position and/or number of tiles is off. The bottom row of pixels for the portrait isn't overwritten, and "Throw" has a nice display error.) C3/5F5C: 7B TDC C3/5F5D: A8 TAY C3/5F5E: A93D LDA #$3D C3/5F60: 97E7 STA [$E7],Y (change top byte of tilemap entry. to my knowledge, it's normally 1Dh, which means we're turning on Bit 13 of the word. this bit gives foreground priority to the tile, thus moving the background in front of the portrait.) C3/5F62: C8 INY C3/5F63: C8 INY (move to next entry in tilemap) C3/5F64: C01200 CPY #$0012 C3/5F67: D0F7 BNE $5F60 (loop for 9 tiles) C3/5F69: C220 REP #$20 (16 bit memory/accum.) C3/5F6B: A5E7 LDA $E7 C3/5F6D: 18 CLC C3/5F6E: 694000 ADC #$0040 C3/5F71: 85E7 STA $E7 C3/5F73: E220 SEP #$20 (8 bit memory/accum.) C3/5F75: CA DEX C3/5F76: D0E4 BNE $5F5C (loop for 6 tile rows) C3/5F78: 60 RTS
C3/5F79 data: windows
C3/5F79: 8B 58 06 01 C3/5F7D: EB 5A 09 06 C3/5F81: 8B 58 1C 18 C3/5F85: C7 58 00 12 C3/5F89: 87 60 07 12
C3/5F8D unknow
C3/5F8D: 7B TDC C3/5F8E: A528 LDA $28 C3/5F90: 0A ASL A C3/5F91: AA TAX C3/5F92: 7C955F JMP ($5F95,X)
C3/5F95 data
C3/5F95: 9D 5F C3/5F97: A7 5F C3/5F99: B1 5F C3/5F9B: BB 5F
C3/5F9D unknow
C3/5F9D: A66D LDX $6D C3/5F9F: 8667 STX $67 C3/5FA1: 7B TDC C3/5FA2: A569 LDA $69 C3/5FA4: 4CC25F JMP $5FC2 (BRA would work here) C3/5FA7: A66F LDX $6F C3/5FA9: 8667 STX $67 C3/5FAB: 7B TDC C3/5FAC: A56A LDA $6A C3/5FAE: 4CC25F JMP $5FC2 (BRA would work here) C3/5FB1: A671 LDX $71 C3/5FB3: 8667 STX $67 C3/5FB5: 7B TDC C3/5FB6: A56B LDA $6B C3/5FB8: 4CC25F JMP $5FC2 (BRA would work here) C3/5FBB: A673 LDX $73 C3/5FBD: 8667 STX $67 C3/5FBF: 7B TDC C3/5FC0: A56C LDA $6C C3/5FC2: 220600C2 JSL $C20006 (equipment check function) C3/5FC6: A467 LDY $67 C3/5FC8: 20E899 JSR $99E8 C3/5FCB: A920 LDA #$20 C3/5FCD: 8529 STA $29 (set text color to white) C3/5FCF: ADA611 LDA $11A6 (strength) C3/5FD2: 20E004 JSR $04E0 (turn value into displayable digits) C3/5FD5: A2E17E LDX #$7EE1 C3/5FD8: 20C004 JSR $04C0 (display strength) C3/5FDB: ADA411 LDA $11A4 (agility) C3/5FDE: 20E004 JSR $04E0 (turn value into displayable digits) C3/5FE1: A2617F LDX #$7F61 C3/5FE4: 20C004 JSR $04C0 (display agility) C3/5FE7: ADA211 LDA $11A2 (stamina) C3/5FEA: 20E004 JSR $04E0 (turn value into displayable digits) C3/5FED: A2E17F LDX #$7FE1 C3/5FF0: 20C004 JSR $04C0 (display stamina) C3/5FF3: ADA011 LDA $11A0 (magic) C3/5FF6: 20E004 JSR $04E0 (turn value into displayable digits) C3/5FF9: A26188 LDX #$8861 C3/5FFC: 20C004 JSR $04C0 (display magic) C3/5FFF: 207193 JSR $9371 C3/6002: ADAC11 LDA $11AC C3/6005: 18 CLC C3/6006: 6DAD11 ADC $11AD C3/6009: 85F3 STA $F3 C3/600B: 7B TDC C3/600C: 6900 ADC #$00 C3/600E: 85F4 STA $F4 C3/6010: 202E05 JSR $052E C3/6013: A27D7E LDX #$7E7D C3/6016: 208604 JSR $0486 C3/6019: ADBA11 LDA $11BA (defense) C3/601C: 20E004 JSR $04E0 (turn value into displayable digits) C3/601F: A2FD7E LDX #$7EFD C3/6022: 20C004 JSR $04C0 C3/6025: ADA811 LDA $11A8 (hit rate) C3/6028: 20E004 JSR $04E0 (turn value into displayable digits) C3/602B: A27D7F LDX #$7F7D C3/602E: 20C004 JSR $04C0 C3/6031: ADBB11 LDA $11BB (magic defense) C3/6034: 20E004 JSR $04E0 (turn value into displayable digits) C3/6037: A2FD7F LDX #$7FFD C3/603A: 20C004 JSR $04C0 C3/603D: ADAA11 LDA $11AA C3/6040: 20E004 JSR $04E0 C3/6043: A27D88 LDX #$887D C3/6046: 20C004 JSR $04C0 C3/6049: A08F39 LDY #$398F C3/604C: 20CF34 JSR $34CF (display character name) C3/604F: A09D39 LDY #$399D C3/6052: 20E534 JSR $34E5 (JSR's to RTS, but normally this would display status ailments or class names if they existed) C3/6055: A0B139 LDY #$39B1 C3/6058: 20E634 JSR $34E6 (display currently equipped esper) C3/605B: 200261 JSR $6102 C3/605E: A920 LDA #$20 C3/6060: 8529 STA $29 (set text color to white) C3/6062: A29660 LDX #$6096 C3/6065: 206C0C JSR $0C6C (display level, HP, MP, etc) C3/6068: A667 LDX $67 C3/606A: BD1100 LDA $0011,X (experience acquired, low byte) C3/606D: 85F1 STA $F1 C3/606F: BD1200 LDA $0012,X (experience acquired, middle byte) C3/6072: 85F2 STA $F2 C3/6074: BD1300 LDA $0013,X (experience acquired, high byte) C3/6077: 85F3 STA $F3 C3/6079: 208205 JSR $0582 (turn value into displayable digits) C3/607C: A2D77C LDX #$7CD7 C3/607F: 20A304 JSR $04A3 (display experience acquired) C3/6082: 20A060 JSR $60A0 C3/6085: 208205 JSR $0582 C3/6088: A2D77D LDX #$7DD7 C3/608B: 20A304 JSR $04A3 C3/608E: 6447 STZ $47 C3/6090: 20B011 JSR $11B0 (execute everything in OAM queue) C3/6093: 4C5B62 JMP $625B (display any afflicted status ailments)