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/7E5000 from C2686C
Jump to navigation
Jump to search
This is a sub-page of Final Fantasy VI.
- 7e5000 - 7e7c62 is decompressed from c2686c - c28a60 and used by 4 different cinematics
- the title screen, the opening credits, the floating island rising into the sky, and the world tearing apart.
; Initial commentary is primarily based on analysis of the opening credits and is somewhat limited; anyone with additional information should feel free to update it!
; some notes on memory use (based on analysis of opening credits; others may vary): ; $00 - $01: #$0000 ; $04 - $05: Controller Port 1 Data1 from most recent read ; $06 - $07: new Controller Port 1 Data1 (difference between most recent read and second most recent read) ; $08 - $09: Controller Port 1 Data1 from second most recent read ; $0e - $0f: DMA channel 0: number of bytes to copy ; $10 - $11: VRAM address; setting this to #$ffff will skip VRAM update ; $12 - $13: DMA Source Address for Channel 0 low/high bytes ; $14: DMA Source Address for Channel 0 bank byte ; $15 - $16: minimum number of IRQs to process? appears to control timing ; $17: IRQ status ; $18: number of IRQs processed? also updated by c067a8 and c0686e ; $19: jump table index for current routine ; $1a ; $1d: position of current routine in array ; $25: BG1HOFS low byte ; $26: BG1HOFS high byte ; $27: BG1VOFS low byte ; $28: BG1VOFS high byte ; $29: BG2HOFS low byte ; $2a: BG2HOFS high byte ; $2b: BG2VOFS low byte ; $2c: BG2VOFS high byte ; $2d: BG3HOFS low byte ; $2e: BG3HOFS high byte ; $2f: BG3VOFS low byte ; $30: BG3VOFS high byte ; $31: which channels to use for HDMA ; $32: screen brightness ; $33 ; $36 ; $3f - $40: Mode 7 Center X ; $41 - $42: Mode 7 Center Y
; a bunch of #$0100 arrays: ; $3200: 2 byte routine address to execute in loop at 7e750f ; $3300 ; $3301 ; $3400 ; $3401 ; $3500 ; $3600 ; $3601 ; $3700 ; $3701 ; $3800 ; $3801 ; $3900 ; $3901: jump table index ; $3a00: jump table index for our $3200 routine ; $3a01 ; $3b00 ; $3b01 ; $3c00 ; $3c01: our routine array index ; $3d00
; list of routine addresses written to $3200 array: ; $53c5 (used by: title screen) ; $5431 (used by: title screen) ; $54af (used by: title screen) ; $5539 (used by: title screen) ; $55a0 (used by: title screen, opening credits, floating island, world tearing apart) ; $55c8 (used by: title screen) ; $56f9 (used by: title screen) ; $5a92 (used by: opening credits) ; $5aed (used by: opening credits) ; $5cc6 (used by: title screen, opening credits) ; $5ce2 (used by: opening credits) ; $5f27 (used by: opening credits) ; $5f7e (used by: opening credits) ; $5fc0 (used by: opening credits) ; $6b18 (used by: floating island) ; $6b8c (used by: floating island) ; $6e8a (used by: world tearing apart) ; $6efd (used by: world tearing apart) ; $705a (used by: world tearing apart) ; $735a (used by: title screen, opening credits, floating island, world tearing apart) ; $76db (used by: title screen, opening credits, world tearing apart)
; title screen cinematic ; used by: title screen ; called by: c2680f 7E/5000: 4C0C50 JMP $500C
; opening credits cinematic ; used by: opening credits ; called by: c26816 7E/5003: 4CF357 JMP $57F3
; floating island cinematic ; used by: floating island ; called by: c2681d 7E/5006: 4CC469 JMP $69C4
; world tearing apart cinematic ; used by: world tearing apart ; called by: c26824 7E/5009: 4CF26C JMP $6CF2
; used by: title screen ; called by: 7e5000 7E/500C: 08 PHP 7E/500D: C230 REP #$30 7E/500F: 48 PHA 7E/5010: DA PHX 7E/5011: 5A PHY 7E/5012: 8B PHB 7E/5013: 0B PHD 7E/5014: 202F50 JSR $502F ; set data bank to #$7e, direct page to #$0000, $00 to #$0000, then register IRQ handlers 7E/5017: 207F50 JSR $507F ; initialize memory 7E/501A: 20F750 JSR $50F7 7E/501D: 20A850 JSR $50A8 7E/5020: 204350 JSR $5043 ; set up and call c50004 7E/5023: 204E50 JSR $504E ; set screen brightness, disable NMI, IRQ, DMA, HDMA 7E/5026: C230 REP #$30 7E/5028: 2B PLD 7E/5029: AB PLB 7E/502A: 7A PLY 7E/502B: FA PLX 7E/502C: 68 PLA 7E/502D: 28 PLP 7E/502E: 6B RTL
; set data bank to #$7e, direct page to #$0000, $00 to #$0000, then register IRQ handlers ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e5014, 7e57fb, 7e69cc, 7e6cfa 7E/502F: E220 SEP #$20 7E/5031: A97E LDA #$7E 7E/5033: 48 PHA 7E/5034: AB PLB 7E/5035: A20000 LDX #$0000 7E/5038: DA PHX 7E/5039: 2B PLD 7E/503A: A20000 LDX #$0000 ; X is stil #$0000... 7E/503D: 8600 STX $00 7E/503F: 206250 JSR $5062 ; register IRQ handlers 7E/5042: 60 RTS
; set up and call c50004 ; used by: title screen, opening credits ; called by: 7e5020, 7e5804 7E/5043: A9F0 LDA #$F0 7E/5045: 8F001300 STA $001300 ; used by c50004 7E/5049: 220400C5 JSL $C50004 7E/504D: 60 RTS
; set screen brightness, disable NMI, IRQ, DMA, HDMA ; generally the last routine called before rtl, but title screen does this twice ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e5023, 7e512d, 7e5807, 7e69d5, 7e6d03 7E/504E: A98F LDA #$8F 7E/5050: 8F002100 STA $002100 ; set screen brightness to #$8f 7E/5054: 7B TDC 7E/5055: 8F004200 STA $004200 ; Interrupt Enable Flags (no NMI, IRQ, or auto joypad read) 7E/5059: 8F0B4200 STA $00420B ; DMA Enable (disable) 7E/505D: 8F0C4200 STA $00420C ; HDMA Enable (disable) 7E/5061: 60 RTS
; register IRQ handlers ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e503f 7E/5062: A95C LDA #$5C ; opcode for JML 7E/5064: 8D0015 STA $1500 ; 00ff10 does JML $001500 7E/5067: 8D0415 STA $1504 ; 00ff14 does JML $001504 7E/506A: A23372 LDX #$7233 ; address of screen update IRQ handler 7E/506D: 8E0115 STX $1501 7E/5070: A26472 LDX #$7264 ; address of RTI IRQ handler 7E/5073: 8E0515 STX $1505 7E/5076: A97E LDA #$7E 7E/5078: 8D0315 STA $1503 7E/507B: 8D0715 STA $1507 7E/507E: 60 RTS
; initialize memory ; used by: title screen ; called by: 7e5017 7E/507F: 201177 JSR $7711 ; common initialization of special registers 7E/5082: 7B TDC 7E/5083: 209350 JSR $5093 ; set up and call c50004 7E/5086: 201578 JSR $7815 ; initialize values to be passed to special registers 7E/5089: 204F78 JSR $784F ; write #$00 to VRAM $0000 - $8000 7E/508C: 208574 JSR $7485 ; initialize more memory 7E/508F: 20FA78 JSR $78FA 7E/5092: 60 RTS
; set up and call c50004 ; used by: title screen ; called by: 7e5083, 7e5293 7E/5093: 8F021300 STA $001302 ; used by c50004 7E/5097: A910 LDA #$10 7E/5099: 8F001300 STA $001300 ; used by c50004 7E/509D: A902 LDA #$02 7E/509F: 8F011300 STA $001301 ; used by c50004 7E/50A3: 220400C5 JSL $C50004 7E/50A7: 60 RTS
; used by: title screen ; called by: 7e501d, 7e50be 7E/50A8: 7B TDC 7E/50A9: A519 LDA $19 ; jump table index for current routine 7E/50AB: 3018 BMI $50C5 ; if high bit is set, we're done 7E/50AD: 0A ASL A ; jump table entries are 2 bytes wide 7E/50AE: AA TAX 7E/50AF: FCDF50 JSR ($50DF,X) 7E/50B2: A506 LDA $06 ; new Controller Port 1 Data1 7E/50B4: 8980 BIT #$80 ; was "A" button pressed? 7E/50B6: D008 BNE $50C0 ; if so, skip to end 7E/50B8: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/50BB: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/50BE: 80E8 BRA $50A8 ; called by: 7e50b6 7E/50C0: A9FF LDA #$FF 7E/50C2: 8D0002 STA $0200 ; called by: 7e50ab 7E/50C5: A00F00 LDY #$000F 7E/50C8: 8415 STY $15 7E/50CA: A900 LDA #$00 7E/50CC: A0A055 LDY #$55A0 7E/50CF: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines ; called by: 7e50dc 7E/50D2: A415 LDY $15 7E/50D4: F008 BEQ $50DE 7E/50D6: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/50D9: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/50DC: 80F4 BRA $50D2 ; called by: 7e50d4 7E/50DE: 60 RTS
; used by: title screen ; jump table for 7e50af 7E/50DF: AE51 7E/50E1: 8052 7E/50E3: 9752 7E/50E5: A652 7E/50E7: E052 7E/50E9: EC52 7E/50EB: 3F53 7E/50ED: 7753 7E/50EF: 8A53 7E/50F1: 9C53 7E/50F3: B553 7E/50F5: BC53
; used by: title screen ; called by: 7e501a, 7e5107 7E/50F7: 7B TDC 7E/50F8: A519 LDA $19 ; jump table index for current routine 7E/50FA: 300D BMI $5109 ; if high bit is set, we're done 7E/50FC: 0A ASL A ; jump table entries are 2 bytes wide 7E/50FD: AA TAX 7E/50FE: FC3151 JSR ($5131,X) 7E/5101: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/5104: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/5107: 80EE BRA $50F7 ; called by: 7e50fa 7E/5109: A00F00 LDY #$000F 7E/510C: 8415 STY $15 7E/510E: A900 LDA #$00 7E/5110: A0A055 LDY #$55A0 7E/5113: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines ; called by: 7e5120 7E/5116: A415 LDY $15 7E/5118: F008 BEQ $5122 7E/511A: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/511D: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/5120: 80F4 BRA $5116 ; called by: 7e5118 7E/5122: 7B TDC 7E/5123: A8 TAY 7E/5124: 8519 STA $19 ; jump table index for current routine 7E/5126: 8425 STY $25 7E/5128: 8427 STY $27 7E/512A: 208574 JSR $7485 ; initialize more memory 7E/512D: 204E50 JSR $504E ; set screen brightness, disable NMI, IRQ, DMA, HDMA 7E/5130: 60 RTS
; used by: title screen ; jump table for 7e50fe 7E/5131: 5551 7E/5133: A551
; data for 7e735a ; used by: title screen ; referenced at 7e518c 7E/5135: 0000 7E/5137: 6310 7E/5139: BD77 7E/513B: 0000 7E/513D: FF7F 7E/513F: FF7F 7E/5141: FF7F 7E/5143: FF7F 7E/5145: FF7F 7E/5147: FF7F 7E/5149: FF7F 7E/514B: FF7F 7E/514D: FF7F 7E/514F: FF7F 7E/5151: FF7F 7E/5153: FF7F
; used by: title screen ; called by: 7e50fe (X = #$00) 7E/5155: 200653 JSR $5306 7E/5158: A20030 LDX #$3000 7E/515B: A06574 LDY #$7465 7E/515E: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/5161: A22030 LDX #$3020 7E/5164: A06574 LDY #$7465 7E/5167: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/516A: A22031 LDX #$3120 7E/516D: A06574 LDY #$7465 7E/5170: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/5173: A22031 LDX #$3120 7E/5176: A0437B LDY #$7B43 7E/5179: A901 LDA #$01 7E/517B: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/517E: A20030 LDX #$3000 7E/5181: A04574 LDY #$7445 7E/5184: A901 LDA #$01 7E/5186: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5189: A22030 LDX #$3020 7E/518C: A03551 LDY #$5135 7E/518F: A901 LDA #$01 7E/5191: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5194: A00001 LDY #$0100 7E/5197: 8425 STY $25 7E/5199: A02C01 LDY #$012C 7E/519C: 8415 STY $15 7E/519E: E619 INC $19 ; jump table index for current routine 7E/51A0: A90F LDA #$0F 7E/51A2: 8532 STA $32 ; screen brightness 7E/51A4: 60 RTS
; used by: title screen ; called by: 7e50fe (X = #$02) 7E/51A5: A415 LDY $15 7E/51A7: D004 BNE $51AD 7E/51A9: A9FF LDA #$FF 7E/51AB: 8519 STA $19 ; jump table index for current routine ; called by: 7e51a7 7E/51AD: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$00) 7E/51AE: A22031 LDX #$3120 7E/51B1: A0637B LDY #$7B63 7E/51B4: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51B7: A24031 LDX #$3140 7E/51BA: A0437B LDY #$7B43 7E/51BD: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51C0: A20030 LDX #$3000 7E/51C3: A06574 LDY #$7465 7E/51C6: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51C9: A22030 LDX #$3020 7E/51CC: A0C37B LDY #$7BC3 7E/51CF: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51D2: A2C030 LDX #$30C0 7E/51D5: A06574 LDY #$7465 7E/51D8: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51DB: A24030 LDX #$3040 7E/51DE: A06574 LDY #$7465 7E/51E1: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51E4: A26030 LDX #$3060 7E/51E7: A06574 LDY #$7465 7E/51EA: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51ED: A2E030 LDX #$30E0 7E/51F0: A06574 LDY #$7465 7E/51F3: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51F6: A2A030 LDX #$30A0 7E/51F9: A06574 LDY #$7465 7E/51FC: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/51FF: A2C030 LDX #$30C0 7E/5202: A0037C LDY #$7C03 7E/5205: A904 LDA #$04 7E/5207: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/520A: A24030 LDX #$3040 7E/520D: A0237C LDY #$7C23 7E/5210: A904 LDA #$04 7E/5212: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5215: A26030 LDX #$3060 7E/5218: A0237C LDY #$7C23 7E/521B: A904 LDA #$04 7E/521D: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5220: A2E030 LDX #$30E0 7E/5223: A0437C LDY #$7C43 7E/5226: A904 LDA #$04 7E/5228: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/522B: A2A030 LDX #$30A0 7E/522E: A0E37B LDY #$7BE3 7E/5231: A904 LDA #$04 7E/5233: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5236: A901 LDA #$01 7E/5238: A03955 LDY #$5539 7E/523B: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/523E: A03C00 LDY #$003C 7E/5241: 8415 STY $15 7E/5243: E619 INC $19 ; jump table index for current routine 7E/5245: A90F LDA #$0F 7E/5247: 8532 STA $32 ; screen brightness 7E/5249: A901 LDA #$01 7E/524B: A0C855 LDY #$55C8 7E/524E: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5251: C220 REP #$20 7E/5253: A94030 LDA #$3040 7E/5256: 9D0137 STA $3701,X 7E/5259: E220 SEP #$20 7E/525B: A901 LDA #$01 7E/525D: A0C855 LDY #$55C8 7E/5260: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5263: C220 REP #$20 7E/5265: A96030 LDA #$3060 7E/5268: 9D0137 STA $3701,X 7E/526B: E220 SEP #$20 7E/526D: A901 LDA #$01 7E/526F: A0C855 LDY #$55C8 7E/5272: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5275: C220 REP #$20 7E/5277: A9C030 LDA #$30C0 7E/527A: 9D0137 STA $3701,X 7E/527D: E220 SEP #$20 7E/527F: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$02) 7E/5280: A415 LDY $15 7E/5282: D012 BNE $5296 7E/5284: E619 INC $19 ; jump table index for current routine 7E/5286: A04304 LDY #$0443 7E/5289: 8415 STY $15 7E/528B: A9FF LDA #$FF 7E/528D: 8F051300 STA $001305 7E/5291: A9FF LDA #$FF 7E/5293: 209350 JSR $5093 ; set up and call c50004 ; called by: 7e5282 7E/5296: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$04) 7E/5297: A415 LDY $15 7E/5299: D00A BNE $52A5 7E/529B: 209778 JSR $7897 7E/529E: A01E00 LDY #$001E 7E/52A1: 8415 STY $15 7E/52A3: E619 INC $19 ; jump table index for current routine ; called by: 7e5299 7E/52A5: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$06) 7E/52A6: A415 LDY $15 7E/52A8: D035 BNE $52DF 7E/52AA: A900 LDA #$00 7E/52AC: A0C553 LDY #$53C5 7E/52AF: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/52B2: A900 LDA #$00 7E/52B4: A03154 LDY #$5431 7E/52B7: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/52BA: A900 LDA #$00 7E/52BC: A0AF54 LDY #$54AF 7E/52BF: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/52C2: A20030 LDX #$3000 7E/52C5: A0837B LDY #$7B83 7E/52C8: A902 LDA #$02 7E/52CA: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/52CD: A22030 LDX #$3020 7E/52D0: A0A37B LDY #$7BA3 7E/52D3: A901 LDA #$01 7E/52D5: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/52D8: A04A01 LDY #$014A 7E/52DB: 8415 STY $15 7E/52DD: E619 INC $19 ; jump table index for current routine ; called by: 7e52a8 7E/52DF: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$08) 7E/52E0: A415 LDY $15 7E/52E2: D007 BNE $52EB 7E/52E4: E619 INC $19 ; jump table index for current routine 7E/52E6: A0F000 LDY #$00F0 7E/52E9: 8415 STY $15 ; called by: 7e52e2 7E/52EB: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$0a) 7E/52EC: A415 LDY $15 7E/52EE: D015 BNE $5305 7E/52F0: E619 INC $19 ; jump table index for current routine 7E/52F2: A0C003 LDY #$03C0 7E/52F5: 8415 STY $15 7E/52F7: 200653 JSR $5306 7E/52FA: A22031 LDX #$3120 7E/52FD: A0437B LDY #$7B43 7E/5300: A904 LDA #$04 7E/5302: 203A73 JSR $733A ; add $735a to array of routines and store its arguments ; called by: 7e52ee 7E/5305: 60 RTS
; used by: title screen ; called by: 7e5155, 7e52f7 7E/5306: A900 LDA #$00 7E/5308: A0DB76 LDY #$76DB 7E/530B: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/530E: C220 REP #$20 7E/5310: A95C7A LDA #$7A5C 7E/5313: 9D0035 STA $3500,X 7E/5316: E220 SEP #$20 7E/5318: A940 LDA #$40 7E/531A: 9D0133 STA $3301,X 7E/531D: A9A0 LDA #$A0 7E/531F: 9D0134 STA $3401,X 7E/5322: A900 LDA #$00 7E/5324: A0DB76 LDY #$76DB 7E/5327: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/532A: C220 REP #$20 7E/532C: A95F7A LDA #$7A5F 7E/532F: 9D0035 STA $3500,X 7E/5332: E220 SEP #$20 7E/5334: A990 LDA #$90 7E/5336: 9D0133 STA $3301,X 7E/5339: A9A0 LDA #$A0 7E/533B: 9D0134 STA $3401,X 7E/533E: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$0c) 7E/533F: A415 LDY $15 7E/5341: D033 BNE $5376 7E/5343: E619 INC $19 ; jump table index for current routine 7E/5345: A00001 LDY #$0100 7E/5348: 8415 STY $15 7E/534A: A20031 LDX #$3100 7E/534D: A0637B LDY #$7B63 7E/5350: A902 LDA #$02 7E/5352: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5355: A22031 LDX #$3120 7E/5358: A0637B LDY #$7B63 7E/535B: A904 LDA #$04 7E/535D: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5360: A20030 LDX #$3000 7E/5363: A0637B LDY #$7B63 7E/5366: A908 LDA #$08 7E/5368: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/536B: A22030 LDX #$3020 7E/536E: A0637B LDY #$7B63 7E/5371: A908 LDA #$08 7E/5373: 203A73 JSR $733A ; add $735a to array of routines and store its arguments ; called by: 7e5341 7E/5376: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$0e) 7E/5377: A415 LDY $15 7E/5379: D00E BNE $5389 7E/537B: A940 LDA #$40 7E/537D: 0433 TSB $33 7E/537F: E619 INC $19 ; jump table index for current routine 7E/5381: A00100 LDY #$0001 7E/5384: 8415 STY $15 7E/5386: 20BD5C JSR $5CBD ; add $5cc6 to array of routines ; called by: 7e5379 7E/5389: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$10) 7E/538A: A415 LDY $15 7E/538C: D00D BNE $539B 7E/538E: E619 INC $19 ; jump table index for current routine 7E/5390: 6431 STZ $31 ; which channels to use for HDMA 7E/5392: A980 LDA #$80 7E/5394: 8533 STA $33 7E/5396: A0A003 LDY #$03A0 7E/5399: 8415 STY $15 ; called by: 7e538c 7E/539B: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$12) 7E/539C: A415 LDY $15 7E/539E: D008 BNE $53A8 7E/53A0: A0E001 LDY #$01E0 7E/53A3: 8415 STY $15 7E/53A5: E619 INC $19 ; jump table index for current routine 7E/53A7: 60 RTS ; called by: 7e539e 7E/53A8: A518 LDA $18 ; number of IRQs processed? 7E/53AA: 2903 AND #$03 7E/53AC: D006 BNE $53B4 7E/53AE: C220 REP #$20 7E/53B0: E627 INC $27 7E/53B2: E220 SEP #$20 ; called by: 7e53ac 7E/53B4: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$14) 7E/53B5: A415 LDY $15 7E/53B7: D002 BNE $53BB 7E/53B9: E619 INC $19 ; jump table index for current routine ; called by: 7e53b7 7E/53BB: 60 RTS
; used by: title screen ; called by: 7e50af (X = #$16) 7E/53BC: A9FF LDA #$FF 7E/53BE: 8519 STA $19 ; jump table index for current routine 7E/53C0: 7B TDC 7E/53C1: 8D0002 STA $0200 7E/53C4: 60 RTS
; used by: title screen ; called by: 7e755c ; written to routine array by 7e52ac 7E/53C5: AA TAX 7E/53C6: 7CC953 JMP ($53C9,X)
; used by: title screen ; jump table for 7e53c6 7E/53C9: CD53 CD53 7E/53CB: D553 D553
; used by: title screen ; called by: 7e53c6 (X = #$00) 7E/53CD: A61D LDX $1D 7E/53CF: FE003A INC $3A00,X 7E/53D2: 9E0137 STZ $3701,X ; called by: 7e53c6 (X = #$02) 7E/53D5: A533 LDA $33 7E/53D7: 3056 BMI $542F 7E/53D9: A61D LDX $1D 7E/53DB: 7B TDC 7E/53DC: A8 TAY 7E/53DD: 9E0138 STZ $3801,X ; called by: 7e5428 7E/53E0: A61D LDX $1D 7E/53E2: BD0137 LDA $3701,X 7E/53E5: 18 CLC 7E/53E6: 7D0138 ADC $3801,X 7E/53E9: 20A554 JSR $54A5 7E/53EC: 48 PHA ; called by: 7e53f3 7E/53ED: AF124200 LDA $004212 ; PPU Status 7E/53F1: 2940 AND #$40 7E/53F3: F0F8 BEQ $53ED ; wait for V-Blank 7E/53F5: A908 LDA #$08 7E/53F7: 8F1B2100 STA $00211B ; Mode 7 Matrix A 7E/53FB: 7B TDC 7E/53FC: 8F1B2100 STA $00211B ; Mode 7 Matrix A 7E/5400: 68 PLA 7E/5401: 8F1C2100 STA $00211C ; Mode 7 Matrix B 7E/5405: 8F1C2100 STA $00211C ; Mode 7 Matrix B 7E/5409: A61D LDX $1D 7E/540B: C220 REP #$20 7E/540D: AF352100 LDA $002135 ; Multiplication Result middle + high bytes 7E/5411: 998041 STA $4180,Y 7E/5414: E220 SEP #$20 7E/5416: A61D LDX $1D 7E/5418: BD0138 LDA $3801,X 7E/541B: 18 CLC 7E/541C: 6904 ADC #$04 7E/541E: 9D0138 STA $3801,X 7E/5421: C8 INY 7E/5422: C8 INY 7E/5423: C8 INY 7E/5424: C8 INY 7E/5425: C0C000 CPY #$00C0 7E/5428: D0B6 BNE $53E0 7E/542A: FE0137 INC $3701,X 7E/542D: 38 SEC 7E/542E: 60 RTS ; called by: 7e53d7 7E/542F: 18 CLC 7E/5430: 60 RTS
; used by: title screen ; called by: 7e755c ; written to routine array by 7e52b4 7E/5431: AA TAX 7E/5432: 7C3554 JMP ($5435,X)
; used by: title screen ; jump table for 7e5432 7E/5435: 3954 3954 7E/5437: 4154 4154
; used by: title screen ; called by: 7e5432 (X = #$00) 7E/5439: A61D LDX $1D 7E/543B: FE003A INC $3A00,X 7E/543E: 9E0039 STZ $3900,X ; called by: 7e5432 (X = #$02) 7E/5441: A533 LDA $33 7E/5443: 305B BMI $54A0 7E/5445: A61D LDX $1D 7E/5447: 7B TDC 7E/5448: A8 TAY 7E/5449: A910 LDA #$10 7E/544B: 9D0138 STA $3801,X ; called by: 7e5499 7E/544E: A61D LDX $1D 7E/5450: BD0137 LDA $3701,X 7E/5453: 18 CLC 7E/5454: 7D0138 ADC $3801,X 7E/5457: 20A554 JSR $54A5 7E/545A: 48 PHA ; called by: 7e5461 7E/545B: AF124200 LDA $004212 ; PPU Status 7E/545F: 2940 AND #$40 7E/5461: F0F8 BEQ $545B ; wait for V-Blank 7E/5463: A90A LDA #$0A 7E/5465: 8F1B2100 STA $00211B ; Mode 7 Matrix A 7E/5469: 7B TDC 7E/546A: 8F1B2100 STA $00211B ; Mode 7 Matrix A 7E/546E: 68 PLA 7E/546F: 8F1C2100 STA $00211C ; Mode 7 Matrix B 7E/5473: 8F1C2100 STA $00211C ; Mode 7 Matrix B 7E/5477: A61D LDX $1D 7E/5479: C220 REP #$20 7E/547B: AF352100 LDA $002135 ; Multiplication Result middle + high bytes 7E/547F: 990045 STA $4500,Y 7E/5482: 990245 STA $4502,Y 7E/5485: E220 SEP #$20 7E/5487: A61D LDX $1D 7E/5489: BD0138 LDA $3801,X 7E/548C: 18 CLC 7E/548D: 6904 ADC #$04 7E/548F: 9D0138 STA $3801,X 7E/5492: C8 INY 7E/5493: C8 INY 7E/5494: C8 INY 7E/5495: C8 INY 7E/5496: C0C000 CPY #$00C0 7E/5499: D0B3 BNE $544E 7E/549B: FE0137 INC $3701,X 7E/549E: 38 SEC 7E/549F: 60 RTS ; called by: 7e5443 7E/54A0: 18 CLC 7E/54A1: 60 RTS
; unknown - never actually executed? 7E/54A2: 18 CLC 7E/54A3: 6940 ADC #$40 ; used by: title screen ; called by: 7e53e9, 7e5457 7E/54A5: EB XBA 7E/54A6: A500 LDA $00 7E/54A8: EB XBA 7E/54A9: AA TAX 7E/54AA: BF6DFEC2 LDA $C2FE6D,X 7E/54AE: 60 RTS
; used by: title screen ; called by: 7e755c ; written to routine array by 7e52bc 7E/54AF: AA TAX 7E/54B0: 7CB354 JMP ($54B3,X)
; used by: title screen ; jump table for 7e54b0 7E/54B3: B754 7E/54B5: C154
; used by: title screen ; called by: 7e54b0 (X = #$00) 7E/54B7: A61D LDX $1D 7E/54B9: FE003A INC $3A00,X 7E/54BC: A901 LDA #$01 7E/54BE: 9D0039 STA $3900,X ; called by: 7e54b0 (X = #$02) 7E/54C1: A518 LDA $18 ; number of IRQs processed? 7E/54C3: 2901 AND #$01 7E/54C5: F00F BEQ $54D6 7E/54C7: A61D LDX $1D 7E/54C9: BD0039 LDA $3900,X 7E/54CC: C940 CMP #$40 7E/54CE: F008 BEQ $54D8 7E/54D0: 20DA54 JSR $54DA 7E/54D3: FE0039 INC $3900,X ; called by: 7e54c5 7E/54D6: 38 SEC 7E/54D7: 60 RTS ; called by: 7e54ce 7E/54D8: 18 CLC 7E/54D9: 60 RTS
; used by: title screen ; called by: 7e54d0 7E/54DA: A940 LDA #$40 7E/54DC: 8F054200 STA $004205 ; Dividend C high byte 7E/54E0: 7B TDC 7E/54E1: 8F044200 STA $004204 ; Dividend C low byte 7E/54E5: BD0039 LDA $3900,X 7E/54E8: 8F064200 STA $004206 ; Divisor B 7E/54EC: EA NOP ; probably making really sure that $004214 and $004215 are ready before we read them 7E/54ED: EA NOP 7E/54EE: EA NOP 7E/54EF: EA NOP 7E/54F0: EA NOP 7E/54F1: 64F2 STZ $F2 7E/54F3: A0FC00 LDY #$00FC 7E/54F6: 64E2 STZ $E2 7E/54F8: 64E9 STZ $E9 7E/54FA: 64EA STZ $EA 7E/54FC: AF154200 LDA $004215 ; Quotient of Divide Result high byte 7E/5500: 85E8 STA $E8 7E/5502: AF144200 LDA $004214 ; Quotient of Divide Result low byte 7E/5506: 85E7 STA $E7 ; called by: 7e5536 7E/5508: BD0039 LDA $3900,X 7E/550B: C5E2 CMP $E2 7E/550D: 9002 BCC $5511 7E/550F: 8007 BRA $5518 ; called by: 7e550d 7E/5511: C220 REP #$20 7E/5513: A90001 LDA #$0100 7E/5516: 800C BRA $5524 ; called by: 7e550f 7E/5518: 7B TDC 7E/5519: A5EA LDA $EA 7E/551B: 38 SEC 7E/551C: E5E2 SBC $E2 7E/551E: C220 REP #$20 7E/5520: 49FFFF EOR #$FFFF 7E/5523: 1A INC A ; called by: 7e5516 7E/5524: 99FA3D STA $3DFA,Y 7E/5527: A5E7 LDA $E7 7E/5529: 18 CLC 7E/552A: 65E9 ADC $E9 7E/552C: 85E9 STA $E9 7E/552E: E220 SEP #$20 7E/5530: E6E2 INC $E2 7E/5532: 88 DEY 7E/5533: 88 DEY 7E/5534: 88 DEY 7E/5535: 88 DEY 7E/5536: D0D0 BNE $5508 7E/5538: 60 RTS
; used by: title screen ; called by: 7e755c ; written to routine array by 7e5238 7E/5539: AA TAX 7E/553A: 7C3D55 JMP ($553D,X)
; used by: title screen ; jump table for 7e553a 7E/553D: 4155 7E/553F: 5955
; used by: title screen ; called by: 7e553a (X = #$00) 7E/5541: A0FFFF LDY #$FFFF 7E/5544: 8410 STY $10 ; VRAM address (skip VRAM update) 7E/5546: A04000 LDY #$0040 7E/5549: 840E STY $0E ; DMA channel 0: number of bytes to copy 7E/554B: A97F LDA #$7F 7E/554D: 8514 STA $14 ; DMA Source Address for Channel 0 bank byte 7E/554F: A00100 LDY #$0001 7E/5552: 8427 STY $27 7E/5554: A61D LDX $1D 7E/5556: FE003A INC $3A00,X ; called by: 7e553a (X = #$02) 7E/5559: A518 LDA $18 ; number of IRQs processed? 7E/555B: 2903 AND #$03 7E/555D: D036 BNE $5595 7E/555F: C220 REP #$20 7E/5561: A527 LDA $27 7E/5563: C91F01 CMP #$011F 7E/5566: F02F BEQ $5597 7E/5568: C90001 CMP #$0100 7E/556B: B024 BCS $5591 7E/556D: 290700 AND #$0007 7E/5570: D01F BNE $5591 7E/5572: A527 LDA $27 7E/5574: 38 SEC 7E/5575: E90800 SBC #$0008 7E/5578: 29F8FF AND #$FFF8 7E/557B: 0A ASL A 7E/557C: 0A ASL A 7E/557D: 0A ASL A 7E/557E: 18 CLC 7E/557F: 69C023 ADC #$23C0 7E/5582: 8512 STA $12 ; DMA Source Address for Channel 0 low/high bytes 7E/5584: A527 LDA $27 7E/5586: 38 SEC 7E/5587: E90800 SBC #$0008 7E/558A: 29F8FF AND #$FFF8 7E/558D: 0A ASL A 7E/558E: 0A ASL A 7E/558F: 8510 STA $10 ; VRAM address ; called by: 7e556b, 7e5570 7E/5591: E627 INC $27 7E/5593: E220 SEP #$20 ; called by: 7e555d 7E/5595: 38 SEC 7E/5596: 60 RTS ; called by: 7e5566 7E/5597: E220 SEP #$20 7E/5599: A0FFFF LDY #$FFFF 7E/559C: 8410 STY $10 ; VRAM address (skip VRAM update) 7E/559E: 18 CLC 7E/559F: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e755c ; written to routine array by 7e50cc, 7e5110, 7e5896, 7e6a29, 7e6d60 7E/55A0: AA TAX 7E/55A1: 7CA455 JMP ($55A4,X)
; jump table for 7e55a1 7E/55A4: A855 7E/55A6: B255
; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e55a1 (X = #$00) 7E/55A8: A61D LDX $1D ; routine array position 7E/55AA: FE003A INC $3A00,X 7E/55AD: A90F LDA #$0F 7E/55AF: 9D0133 STA $3301,X ; called by: 7e55a1 (X = #$02) 7E/55B2: A415 LDY $15 7E/55B4: F00C BEQ $55C2 7E/55B6: A61D LDX $1D ; routine array position 7E/55B8: BD0133 LDA $3301,X 7E/55BB: 8532 STA $32 ; screen brightness 7E/55BD: DE0133 DEC $3301,X 7E/55C0: 38 SEC 7E/55C1: 60 RTS ; called by: 7e55b4 7E/55C2: A980 LDA #$80 7E/55C4: 8532 STA $32 ; screen brightness 7E/55C6: 18 CLC 7E/55C7: 60 RTS
; used by: title screen ; called by: 7e755c ; written to routine array by 7e524b, 7e525d, 7e526f 7E/55C8: AA TAX 7E/55C9: 7CCC55 JMP ($55CC,X)
; jump table for 7e55c8 7E/55CC: D255 7E/55CE: EB55 7E/55D0: 2056
; used by: title screen ; called by: 7e55c9 (X = #$00) 7E/55D2: A61D LDX $1D 7E/55D4: FE003A INC $3A00,X 7E/55D7: A980 LDA #$80 7E/55D9: 9D0036 STA $3600,X ; used by: title screen ; called by: 7e562d 7E/55DC: C220 REP #$20 7E/55DE: A93E56 LDA #$563E 7E/55E1: 9D0035 STA $3500,X 7E/55E4: E220 SEP #$20 7E/55E6: 205F75 JSR $755F ; stz to our $3b00, copy our $3500 to $eb, copy ($eb),#$2 to our $3b01 7E/55E9: 38 SEC 7E/55EA: 60 RTS
; used by: title screen ; called by: 7e55c9 (X = #$02) 7E/55EB: A61D LDX $1D 7E/55ED: BD0036 LDA $3600,X 7E/55F0: F017 BEQ $5609 7E/55F2: C901 CMP #$01 7E/55F4: F007 BEQ $55FD ; called by: 7e5607 7E/55F6: A61D LDX $1D 7E/55F8: DE0036 DEC $3600,X 7E/55FB: 38 SEC 7E/55FC: 60 RTS ; called by: 7e55f4 7E/55FD: A902 LDA #$02 7E/55FF: A0F956 LDY #$56F9 7E/5602: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5605: E636 INC $36 7E/5607: 80ED BRA $55F6 ; called by: 7e55f0 7E/5609: BD013B LDA $3B01,X 7E/560C: C9FE CMP #$FE 7E/560E: D003 BNE $5613 7E/5610: FE003A INC $3A00,X ; called by: 7e560e 7E/5613: C220 REP #$20 7E/5615: BD0137 LDA $3701,X 7E/5618: AA TAX 7E/5619: E220 SEP #$20 7E/561B: 207575 JSR $7575 7E/561E: 38 SEC 7E/561F: 60 RTS
; used by: title screen ; called by: 7e55c9 (X = #$04) 7E/5620: 203056 JSR $5630 7E/5623: A61D LDX $1D 7E/5625: 9D0036 STA $3600,X 7E/5628: A901 LDA #$01 7E/562A: 9D003A STA $3A00,X 7E/562D: 4CDC55 JMP $55DC
; used by: title screen, opening credits ; called by: 7e5620, 7e5706, 7e571e, 7e5726, 7e5f4b, 7e5f59 7E/5630: 7B TDC 7E/5631: E634 INC $34 7E/5633: A518 LDA $18 ; number of IRQs processed? 7E/5635: 18 CLC 7E/5636: 6534 ADC $34 7E/5638: AA TAX 7E/5639: BF00FDC0 LDA $C0FD00,X 7E/563D: 60 RTS
; data for $3500,x ; is the third byte ever used? ; used by: title screen ; referenced at 7e55de 7E/563E: 237C01 7E/5641: 595602 7E/5644: D95601 7E/5647: 595602 7E/564A: D95601 7E/564D: 795602 7E/5650: 995603 7E/5653: B95604 7E/5656: D956FE
; used by: title screen ; dereferenced from $3500,x via 7e5641, 7e5647 7E/5659: 6310 7E/565B: DE66 7E/565D: 5B56 7E/565F: B445 7E/5661: 2E35 7E/5663: 0831 7E/5665: E82C 7E/5667: C728 7E/5669: A624 7E/566B: A51C 7E/566D: 8418 7E/566F: 6414 7E/5671: 6310 7E/5673: BB21 7E/5675: 3611 7E/5677: 7F73
; used by: title screen ; dereferenced from $3500,x via 7e564d 7E/5679: 0000 7E/567B: 3952 7E/567D: D745 7E/567F: 5139 7E/5681: EC2C 7E/5683: E72C 7E/5685: C728 7E/5687: A624 7E/5689: 8520 7E/568B: 8418 7E/568D: 8414 7E/568F: 6414 7E/5691: 6310 7E/5693: BB21 7E/5695: 3611 7E/5697: 7B5A
; used by: title screen ; dereferenced from $3500,x via 7e5650 7E/5699: 0000 7E/569B: 943D 7E/569D: 5335 7E/569F: EE2C 7E/56A1: AA24 7E/56A3: A524 7E/56A5: 8520 7E/56A7: 641C 7E/56A9: 6414 7E/56AB: 6310 7E/56AD: 6310 7E/56AF: 6310 7E/56B1: 6310 7E/56B3: BB21 7E/56B5: 3611 7E/56B7: D645
; used by: title screen ; dereferenced from $3500,x via 7e5653 7E/56B9: 0000 7E/56BB: AA20 7E/56BD: A720 7E/56BF: 851C 7E/56C1: 4318 7E/56C3: 6310 7E/56C5: 6310 7E/56C7: 6310 7E/56C9: 6310 7E/56CB: 6310 7E/56CD: 6310 7E/56CF: 6310 7E/56D1: 6310 7E/56D3: BB21 7E/56D5: 3611 7E/56D7: CC24
; used by: title screen ; dereferenced from $3500,x via 7e5644, 7e564a, 7e5656 7E/56D9: 0000 7E/56DB: 6310 7E/56DD: 6310 7E/56DF: 6310 7E/56E1: 6310 7E/56E3: 6310 7E/56E5: 6310 7E/56E7: 6310 7E/56E9: 6310 7E/56EB: 6310 7E/56ED: 6310 7E/56EF: 6310 7E/56F1: 6310 7E/56F3: BB21 7E/56F5: 3611 7E/56F7: 6310
; used by: title screen ; called by: 7e755c ; written to routine array by 7e55ff 7E/56F9: AA TAX 7E/56FA: 7CFD56 JMP ($56FD,X)
; used by: title screen ; jump table for 7e56fa 7E/56FD: 0157 7E/56FF: 3657
; used by: title screen ; called by: 7e56fa (X = #$00) 7E/5701: A61D LDX $1D 7E/5703: FE003A INC $3A00,X 7E/5706: 203056 JSR $5630 7E/5709: 2903 AND #$03 7E/570B: F037 BEQ $5744 7E/570D: 0A ASL A 7E/570E: AA TAX 7E/570F: C220 REP #$20 7E/5711: BD4657 LDA $5746,X 7E/5714: A61D LDX $1D 7E/5716: 9D0035 STA $3500,X 7E/5719: E220 SEP #$20 7E/571B: E220 SEP #$20 ; in case it didn't work the first time :p 7E/571D: DA PHX 7E/571E: 203056 JSR $5630 7E/5721: FA PLX 7E/5722: 9D0133 STA $3301,X 7E/5725: DA PHX 7E/5726: 203056 JSR $5630 7E/5729: FA PLX 7E/572A: 297F AND #$7F 7E/572C: 6910 ADC #$10 7E/572E: 9D0134 STA $3401,X 7E/5731: A61D LDX $1D 7E/5733: 205F75 JSR $755F ; stz to our $3b00, copy our $3500 to $eb, copy ($eb),#$2 to our $3b01 ; used by: title screen ; called by: 7e56fa (X = #$02) 7E/5736: A61D LDX $1D 7E/5738: BD013B LDA $3B01,X 7E/573B: C9FE CMP #$FE 7E/573D: F005 BEQ $5744 7E/573F: 208D75 JSR $758D 7E/5742: 38 SEC 7E/5743: 60 RTS ; called by: 7e570b, 7e573d 7E/5744: 18 CLC 7E/5745: 60 RTS
; used by: title screen ; data for 7e5711 7E/5746: 0000 7E/5748: 4E57 7E/574A: 6657 7E/574C: 4E57
; data for $3500,x ; used by: title screen ; dereferenced from 7e5748, 7e574c 7E/574E: 7F5701 7E/5751: 7E5701 7E/5754: 845701 7E/5757: 7E5701 7E/575A: 915701 7E/575D: 7E5701 7E/5760: 9E5701 7E/5763: 7E57FE
; data for $3500,x ; used by: title screen ; dereferenced from 7e574a 7E/5766: AB5701 7E/5769: 7E5701 7E/576C: B05701 7E/576F: 7E5701 7E/5772: BD5701 7E/5775: 7E5701 7E/5778: CA5701 7E/577B: 7E57FE
; probably dereferenced from 7e5751, 7e5757, 7e575d, 7e5763, 7e5769, 7e576f, 7e5775, 7e577b 7E/577E: 00 ; probably dereferenced from 7e574e 7E/577F: 01 7E/5780: 08004C35 ; probably dereferenced from 7e5754 7E/5784: 03 7E/5785: 00004E35 7E/5789: 10006035 7E/578D: 08106235 ; probably dereferenced from 7e575a 7E/5791: 03 7E/5792: 08006435 7E/5796: 08106635 7E/579A: 08206835 ; probably dereferenced from 7e5754 7E/579E: 03 7E/579F: 08006A35 7E/57A3: 08106C35 7E/57A7: 08206E35 ; probably dereferenced from 7e5754 7E/57AB: 01 7E/57AC: 08004C75 ; probably dereferenced from 7e576c 7E/57B0: 03 7E/57B1: 10004E75 7E/57B5: 08006075 7E/57B9: 08106275 ; probably dereferenced from 7e5772 7E/57BD: 03 7E/57BE: 08006475 7E/57C2: 08106675 7E/57C6: 08206875 ; probably dereferenced from 7e5778 7E/57CA: 03 7E/57CB: 08006A75 7E/57CF: 08106C75 7E/57D3: 08206E75
; unknown - never used? 7E/57D7: 40 7E/57D8: A8 7E/57D9: 40 7E/57DA: 70 7E/57DB: B0 7E/57DC: 48 7E/57DD: 68 7E/57DE: A8 7E/57DF: 70 7E/57E0: 68 7E/57E1: 60 7E/57E2: A8 7E/57E3: 80 7E/57E4: D0 7E/57E5: 88 7E/57E6: 58 7E/57E7: 90 7E/57E8: A8 7E/57E9: 98 7E/57EA: 88 7E/57EB: 50 7E/57EC: 58 7E/57ED: 70 7E/57EE: 60 7E/57EF: 90 7E/57F0: 60 7E/57F1: 10 7E/57F2: 78
; used by: opening credits ; called by: 7e5003 7E/57F3: 08 PHP 7E/57F4: C230 REP #$30 7E/57F6: 48 PHA 7E/57F7: DA PHX 7E/57F8: 5A PHY 7E/57F9: 8B PHB 7E/57FA: 0B PHD 7E/57FB: 202F50 JSR $502F ; set data bank to #$7e, direct page to #$0000, $00 to #$0000, then register IRQ handlers 7E/57FE: 201358 JSR $5813 ; initialize a bunch of stuff 7E/5801: 207258 JSR $5872 ; main opening credits loop 7E/5804: 204350 JSR $5043 ; set up and call c50004 7E/5807: 204E50 JSR $504E ; set screen brightness, disable NMI, IRQ, DMA, HDMA 7E/580A: C230 REP #$30 7E/580C: 2B PLD 7E/580D: AB PLB 7E/580E: 7A PLY 7E/580F: FA PLX 7E/5810: 68 PLA 7E/5811: 28 PLP 7E/5812: 6B RTL
; used by: opening credits ; initialize special registers ; set up and call c50004 ; initialize more memory ; decompress $d8f000 to $7f0000, move data around, write stuff to VRAM ; called by: 7e57fe 7E/5813: 201177 JSR $7711 ; common initialization of special registers 7E/5816: 203C58 JSR $583C ; override default special register values for opening credits 7E/5819: A9FF LDA #$FF 7E/581B: 8F021300 STA $001302 ; used by c50004 7E/581F: A910 LDA #$10 7E/5821: 8F001300 STA $001300 ; used by c50004 7E/5825: A904 LDA #$04 7E/5827: 8F011300 STA $001301 ; used by c50004 7E/582B: 220400C5 JSL $C50004 7E/582F: 201578 JSR $7815 ; initialize values to be passed to special registers 7E/5832: 204F78 JSR $784F ; write #$00 to VRAM $0000 - $8000 7E/5835: 208574 JSR $7485 ; initialize more memory 7E/5838: 20FF61 JSR $61FF ; decompress $d8f000 to $7f0000, move data around, write stuff to VRAM 7E/583B: 60 RTS
; used by: opening credits ; override default special register values for opening credits ; called by: 7e5816 7E/583C: 8B PHB 7E/583D: A900 LDA #$00 7E/583F: 48 PHA 7E/5840: AB PLB 7E/5841: A903 LDA #$03 7E/5843: 8D0121 STA $2101 ; Object Size and Chr Address 7E/5846: A600 LDX $00 7E/5848: 8E0221 STX $2102 ; OAM Address low + high bytes 7E/584B: A907 LDA #$07 7E/584D: 8D0521 STA $2105 ; BG Mode and Character Size 7E/5850: A978 LDA #$78 7E/5852: 8D0721 STA $2107 ; BG1 Tilemap Address and Size 7E/5855: A97C LDA #$7C 7E/5857: 8D0821 STA $2108 ; BG2 Tilemap Address and Size 7E/585A: A974 LDA #$74 7E/585C: 8D0921 STA $2109 ; BG3 Tilemap Address and Size 7E/585F: 8D0A21 STA $210A ; BG4 Tilemap Address and Size 7E/5862: A922 LDA #$22 7E/5864: 8D0B21 STA $210B ; BG1 and 2 Chr Address 7E/5867: A977 LDA #$77 7E/5869: 8D0C21 STA $210C ; BG3 and 4 Chr Address 7E/586C: 7B TDC 7E/586D: 8D1A21 STA $211A ; Mode 7 Settings (they were already set this way by 7e7763, though) 7E/5870: AB PLB 7E/5871: 60 RTS
; used by: opening credits ; main opening credits loop ; called by: 7e5801, 7e5888 7E/5872: 7B TDC 7E/5873: A519 LDA $19 ; jump table index for current routine 7E/5875: 3018 BMI $588F ; if high bit set, we're all done 7E/5877: 0A ASL A ; jump table addresses are 2 bytes wide 7E/5878: AA TAX 7E/5879: FCAD58 JSR ($58AD,X) 7E/587C: A506 LDA $06 ; new Controller Port 1 Data1 7E/587E: 8980 BIT #$80 ; was "A" button pressed? 7E/5880: D008 BNE $588A ; if so, skip to end 7E/5882: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/5885: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/5888: 80E8 BRA $5872 ; skip to the end of credits ; called by: 7e5880 7E/588A: A9FF LDA #$FF 7E/588C: 8D0002 STA $0200 ; credits text is done... on with the show! ; called by: 7e5875 7E/588F: A00F00 LDY #$000F 7E/5892: 8415 STY $15 7E/5894: A900 LDA #$00 7E/5896: A0A055 LDY #$55A0 7E/5899: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines ; called by: 7e58a6 7E/589C: A415 LDY $15 7E/589E: F008 BEQ $58A8 7E/58A0: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/58A3: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/58A6: 80F4 BRA $589C ; called by: 7e589e 7E/58A8: 220C00EE JSL $EE000C 7E/58AC: 60 RTS
; used by: opening credits ; jump table for 7e5879 7E/58AD: B558 7E/58AF: 4C5A 7E/58B1: 665A 7E/58B3: 705A
; used by: opening credits ; called by: 7e5879 (X = #$00) 7E/58B5: 20705C JSR $5C70 7E/58B8: 205D5B JSR $5B5D 7E/58BB: 8B PHB 7E/58BC: A900 LDA #$00 7E/58BE: 48 PHA 7E/58BF: AB PLB 7E/58C0: 220900EE JSL $EE0009 7E/58C4: 220300EE JSL $EE0003 7E/58C8: AB PLB 7E/58C9: 20455C JSR $5C45 7E/58CC: 208574 JSR $7485 ; initialize more memory 7E/58CF: A20031 LDX #$3100 7E/58D2: A06574 LDY #$7465 7E/58D5: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/58D8: A22031 LDX #$3120 7E/58DB: A06574 LDY #$7465 7E/58DE: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/58E1: A26031 LDX #$3160 7E/58E4: A06574 LDY #$7465 7E/58E7: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/58EA: A28031 LDX #$3180 7E/58ED: A06574 LDY #$7465 7E/58F0: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/58F3: A2A031 LDX #$31A0 7E/58F6: A06574 LDY #$7465 7E/58F9: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/58FC: A20030 LDX #$3000 7E/58FF: A06574 LDY #$7465 7E/5902: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/5905: A22030 LDX #$3020 7E/5908: A06574 LDY #$7465 7E/590B: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/590E: A24030 LDX #$3040 7E/5911: A06574 LDY #$7465 7E/5914: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/5917: A26030 LDX #$3060 7E/591A: A06574 LDY #$7465 7E/591D: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/5920: A2E030 LDX #$30E0 7E/5923: A06574 LDY #$7465 7E/5926: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/5929: A968 LDA #$68 7E/592B: 8539 STA $39 7E/592D: A948 LDA #$48 7E/592F: 853A STA $3A 7E/5931: A978 LDA #$78 7E/5933: 853B STA $3B 7E/5935: A9C0 LDA #$C0 7E/5937: 853C STA $3C 7E/5939: A980 LDA #$80 7E/593B: 853D STA $3D 7E/593D: A990 LDA #$90 7E/593F: 853E STA $3E 7E/5941: 6429 STZ $29 ; BG2HOFS 7E/5943: 642A STZ $2A 7E/5945: A03800 LDY #$0038 7E/5948: 842B STY $2B ; BG2VOFS 7E/594A: 6437 STZ $37 7E/594C: 6438 STZ $38 7E/594E: A900 LDA #$00 7E/5950: A0C05F LDY #$5FC0 7E/5953: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5956: 7B TDC 7E/5957: 20085B JSR $5B08 7E/595A: A901 LDA #$01 7E/595C: 20085B JSR $5B08 7E/595F: A902 LDA #$02 7E/5961: 20085B JSR $5B08 7E/5964: A22031 LDX #$3120 7E/5967: A09064 LDY #$6490 7E/596A: A901 LDA #$01 7E/596C: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/596F: A26031 LDX #$3160 7E/5972: A09064 LDY #$6490 7E/5975: A902 LDA #$02 7E/5977: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/597A: A28031 LDX #$3180 7E/597D: A09064 LDY #$6490 7E/5980: A904 LDA #$04 7E/5982: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5985: A2A031 LDX #$31A0 7E/5988: A09064 LDY #$6490 7E/598B: A906 LDA #$06 7E/598D: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/5990: A20031 LDX #$3100 7E/5993: A07064 LDY #$6470 7E/5996: A903 LDA #$03 7E/5998: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/599B: A22030 LDX #$3020 7E/599E: A01064 LDY #$6410 7E/59A1: A902 LDA #$02 7E/59A3: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/59A6: A24030 LDX #$3040 7E/59A9: A03064 LDY #$6430 7E/59AC: A902 LDA #$02 7E/59AE: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/59B1: A26030 LDX #$3060 7E/59B4: A05064 LDY #$6450 7E/59B7: A902 LDA #$02 7E/59B9: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/59BC: A2E030 LDX #$30E0 7E/59BF: A0437C LDY #$7C43 7E/59C2: A904 LDA #$04 7E/59C4: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/59C7: A900 LDA #$00 7E/59C9: A0275F LDY #$5F27 7E/59CC: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/59CF: A900 LDA #$00 7E/59D1: A0ED5A LDY #$5AED 7E/59D4: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/59D7: A900 LDA #$00 7E/59D9: A0925A LDY #$5A92 7E/59DC: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/59DF: 7B TDC 7E/59E0: 9D0139 STA $3901,X 7E/59E3: A901 LDA #$01 7E/59E5: 9D0036 STA $3600,X 7E/59E8: A95A LDA #$5A 7E/59EA: 9D0039 STA $3900,X 7E/59ED: C220 REP #$20 7E/59EF: A9A0FF LDA #$FFA0 7E/59F2: 9D0038 STA $3800,X 7E/59F5: E220 SEP #$20 7E/59F7: A900 LDA #$00 7E/59F9: A0925A LDY #$5A92 7E/59FC: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/59FF: A901 LDA #$01 7E/5A01: 9D0139 STA $3901,X 7E/5A04: A90A LDA #$0A 7E/5A06: 9D0036 STA $3600,X 7E/5A09: A928 LDA #$28 7E/5A0B: 9D0039 STA $3900,X 7E/5A0E: C220 REP #$20 7E/5A10: A960FF LDA #$FF60 7E/5A13: 9D0038 STA $3800,X 7E/5A16: E220 SEP #$20 7E/5A18: A900 LDA #$00 7E/5A1A: A0925A LDY #$5A92 7E/5A1D: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5A20: A902 LDA #$02 7E/5A22: 9D0139 STA $3901,X 7E/5A25: A907 LDA #$07 7E/5A27: 9D0036 STA $3600,X 7E/5A2A: A92D LDA #$2D 7E/5A2C: 9D0039 STA $3900,X 7E/5A2F: C220 REP #$20 7E/5A31: A980FF LDA #$FF80 7E/5A34: 9D0038 STA $3800,X 7E/5A37: E220 SEP #$20 7E/5A39: E619 INC $19 ; update jump table index for 7e5879 to indicate that we've run this code 7E/5A3B: A901 LDA #$01 7E/5A3D: 8532 STA $32 ; screen brightness 7E/5A3F: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/5A42: A0CA00 LDY #$00CA 7E/5A45: 8415 STY $15 7E/5A47: A90F LDA #$0F 7E/5A49: 8532 STA $32 ; screen brightness 7E/5A4B: 60 RTS
; used by: opening credits ; called by: 7e5879 (X = #$02) 7E/5A4C: A415 LDY $15 7E/5A4E: D012 BNE $5A62 ; if $15 is #$00, then move to phase 3 7E/5A50: E619 INC $19 ; jump table index for current routine 7E/5A52: A0E40C LDY #$0CE4 7E/5A55: 8415 STY $15 7E/5A57: A900 LDA #$00 7E/5A59: A0E25C LDY #$5CE2 7E/5A5C: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5A5F: 20BD5C JSR $5CBD ; add $5cc6 to array of routines ; called by: 7e5a4e 7E/5A62: 20795A JSR $5A79 ; do mode 7 stuff 7E/5A65: 60 RTS
; used by: opening credits ; called by: 7e5879 (X = #$04) 7E/5A66: A415 LDY $15 7E/5A68: D002 BNE $5A6C ; if $15 is #$00, then move to phase 4 7E/5A6A: E619 INC $19 ; jump table index for current routine ; called by: 7e5a68 7E/5A6C: 20795A JSR $5A79 ; do mode 7 stuff 7E/5A6F: 60 RTS
; used by: opening credits ; called by: 7e5879 (X = #$06) 7E/5A70: A9FF LDA #$FF 7E/5A72: 8519 STA $19 ; jump table index for current routine - flag credits text complete 7E/5A74: 7B TDC 7E/5A75: 8D0002 STA $0200 7E/5A78: 60 RTS
; mode 7 stuff ; used by: opening credits ; called by: 7e5a62, 7e5a6c 7E/5A79: A53F LDA $3F 7E/5A7B: 8F1F2100 STA $00211F ; Mode 7 Center X 7E/5A7F: A540 LDA $40 7E/5A81: 8F1F2100 STA $00211F ; Mode 7 Center X 7E/5A85: A541 LDA $41 7E/5A87: 8F202100 STA $002120 ; Mode 7 Center Y 7E/5A8B: A542 LDA $42 7E/5A8D: 8F202100 STA $002120 ; Mode 7 Center Y 7E/5A91: 60 RTS
; used by: opening credits ; called by: 7e755c ; written to routine array by 7e59d9, 7e59f9, 7e5a1a 7E/5A92: AA TAX 7E/5A93: 7C965A JMP ($5A96,X)
; used by: opening credits ; jump table for 7e5a93 7E/5A96: 9C5A 7E/5A98: AF5A 7E/5A9A: C65A
; used by: opening credits ; called by: 7e5a93 (X = #$00) 7E/5A9C: A61D LDX $1D ; routine array index 7E/5A9E: FE003A INC $3A00,X 7E/5AA1: 7B TDC 7E/5AA2: BD0139 LDA $3901,X 7E/5AA5: A8 TAY 7E/5AA6: B93C00 LDA $003C,Y 7E/5AA9: 9D0134 STA $3401,X 7E/5AAC: 9E0034 STZ $3400,X ; used by: opening credits ; called by: 7e5a93 (X = #$02) 7E/5AAF: A61D LDX $1D ; routine array index 7E/5AB1: BD0036 LDA $3600,X 7E/5AB4: D00B BNE $5AC1 7E/5AB6: FE003A INC $3A00,X 7E/5AB9: BD0039 LDA $3900,X 7E/5ABC: 9D0036 STA $3600,X 7E/5ABF: 38 SEC 7E/5AC0: 60 RTS ; called by: 7e5ab4 7E/5AC1: DE0036 DEC $3600,X 7E/5AC4: 38 SEC 7E/5AC5: 60 RTS
; used by: opening credits ; called by: 7e5a93 (X = #$04) 7E/5AC6: A61D LDX $1D ; routine array index 7E/5AC8: BD0036 LDA $3600,X 7E/5ACB: F01E BEQ $5AEB 7E/5ACD: C220 REP #$20 7E/5ACF: BD0034 LDA $3400,X 7E/5AD2: 18 CLC 7E/5AD3: 7D0038 ADC $3800,X 7E/5AD6: 9D0034 STA $3400,X 7E/5AD9: E220 SEP #$20 7E/5ADB: 7B TDC 7E/5ADC: BD0139 LDA $3901,X 7E/5ADF: A8 TAY 7E/5AE0: BD0134 LDA $3401,X 7E/5AE3: 993C00 STA $003C,Y 7E/5AE6: DE0036 DEC $3600,X 7E/5AE9: 38 SEC 7E/5AEA: 60 RTS ; called by: 7e5acb 7E/5AEB: 18 CLC 7E/5AEC: 60 RTS
; used by: opening credits ; called by: 7e755c ; written to routine array by 7e59d1 7E/5AED: A518 LDA $18 ; number of IRQs processed? 7E/5AEF: 2903 AND #$03 7E/5AF1: D008 BNE $5AFB ; if low 2 bits of $18 are both not set, 16-bit dec $41 and $27 7E/5AF3: C220 REP #$20 7E/5AF5: C641 DEC $41 7E/5AF7: C627 DEC $27 ; BG1VOFS 7E/5AF9: E220 SEP #$20 ; called by: 7e5af1 7E/5AFB: A518 LDA $18 7E/5AFD: 293F AND #$3F 7E/5AFF: D005 BNE $5B06 ; if low 6 bits of $18 are all not set, dec $2b 7E/5B01: A42B LDY $2B ; BG2VOFS 7E/5B03: C8 INY 7E/5B04: 842B STY $2B ; BG2VOFS ; called by: 7e5aff 7E/5B06: 38 SEC 7E/5B07: 60 RTS
; used by: opening credits ; called by: 7e5957, 7e595c, 7e5961 7E/5B08: 85F4 STA $F4 7E/5B0A: 0A ASL A 7E/5B0B: 0A ASL A 7E/5B0C: 0A ASL A 7E/5B0D: 85F3 STA $F3 7E/5B0F: A400 LDY $00 ; called by: 7e5b42 7E/5B11: 5A PHY 7E/5B12: A902 LDA #$02 7E/5B14: A07E5F LDY #$5F7E 7E/5B17: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5B1A: A5F4 LDA $F4 7E/5B1C: 9D0039 STA $3900,X 7E/5B1F: A5F3 LDA $F3 7E/5B21: 9D0139 STA $3901,X 7E/5B24: 7A PLY 7E/5B25: C220 REP #$20 7E/5B27: B9455B LDA $5B45,Y 7E/5B2A: 9D0035 STA $3500,X 7E/5B2D: E220 SEP #$20 7E/5B2F: C8 INY 7E/5B30: C8 INY 7E/5B31: B9455B LDA $5B45,Y 7E/5B34: 9D0137 STA $3701,X 7E/5B37: C8 INY 7E/5B38: B9455B LDA $5B45,Y 7E/5B3B: 9D0138 STA $3801,X 7E/5B3E: C8 INY 7E/5B3F: C01800 CPY #$0018 7E/5B42: D0CD BNE $5B11 7E/5B44: 60 RTS
; data for 7e5b27 (2 bytes), 7e5b31 (1 byte), and 7e5b38 (1 byte) 7E/5B45: 3160 04 F8 7E/5B49: 5460 00 00 7E/5B4D: 2161 FD E0 7E/5B51: 9061 FB E0 7E/5B55: 7F60 04 08 7E/5B59: D060 04 08
; used by: opening credits ; happens before credits text gets loaded ; called by: 7e58b8 7E/5B5D: 8B PHB 7E/5B5E: A900 LDA #$00 7E/5B60: 48 PHA 7E/5B61: AB PLB 7E/5B62: A917 LDA #$17 7E/5B64: 8D2C21 STA $212C ; Main Screen Designation (enable BG1, 2, 3 and OBJ) 7E/5B67: A902 LDA #$02 7E/5B69: 8D2D21 STA $212D ; Subscreen Designation (enable only BG2) 7E/5B6C: A9E0 LDA #$E0 7E/5B6E: 8D3221 STA $2132 ; Fixed Color Data 7E/5B71: 9C2043 STZ $4320 ; DMA Control for Channel 2 (CPU -> PPU, auto-increment, 1 register write once) 7E/5B74: A932 LDA #$32 7E/5B76: 8D2143 STA $4321 ; DMA Destination Register for Channel 2 ($002132, Fixed Color Data) 7E/5B79: A0235C LDY #$5C23 7E/5B7C: 8C2243 STY $4322 ; DMA Source Address for Channel 2 low + high bytes 7E/5B7F: A97E LDA #$7E 7E/5B81: 8D2443 STA $4324 ; DMA Source Address for Channel 2 bank byte 7E/5B84: 8D2743 STA $4327 ; HDMA Indirect Address for Channel 2 bank byte 7E/5B87: 9C3043 STZ $4330 ; DMA Control for Channel 3 (CPU -> PPU, auto-increment, 1 register write once) 7E/5B8A: A905 LDA #$05 7E/5B8C: 8D3143 STA $4331 ; DMA Destination Register for Channel 3 ($002105, BG Mode and Character Size) 7E/5B8F: A0405C LDY #$5C40 7E/5B92: 8C3243 STY $4332 ; DMA Source Address for Channel 3 low + high bytes 7E/5B95: A97E LDA #$7E 7E/5B97: 8D3443 STA $4334 ; DMA Source Address for Channel 3 bank byte 7E/5B9A: 8D3743 STA $4337 ; HDMA Indirect Address for Channel 3 bank byte 7E/5B9D: A901 LDA #$01 7E/5B9F: 8D4043 STA $4340 ; DMA Control for Channel 4 (CPU -> PPU, auto-increment, 2 registers write once) 7E/5BA2: A930 LDA #$30 7E/5BA4: 8D4143 STA $4341 ; DMA Destination Register for Channel 4 ($002130, Color Addition Select) 7E/5BA7: A00E5C LDY #$5C0E 7E/5BAA: 8C4243 STY $4342 ; DMA Source Address for Channel 4 low + high bytes 7E/5BAD: A97E LDA #$7E 7E/5BAF: 8D4443 STA $4344 ; DMA Source Address for Channel 4 bank byte 7E/5BB2: 8D4743 STA $4347 ; HDMA Indirect Address for Channel 4 bank byte 7E/5BB5: 8D5443 STA $4354 ; DMA Source Address for Channel 5 bank byte 7E/5BB8: 8D5743 STA $4357 ; HDMA Indirect Address for Channel 5 bank byte 7E/5BBB: A902 LDA #$02 7E/5BBD: 8D5043 STA $4350 ; DMA Control for Channel 5 (CPU -> PPU, auto-increment, 1 register write twice) 7E/5BC0: A911 LDA #$11 7E/5BC2: 8D5143 STA $4351 ; DMA Destination Register for Channel 5 ($002111, BG3 Horizontal Scroll) 7E/5BC5: A0015C LDY #$5C01 7E/5BC8: 8C5243 STY $4352 ; DMA Source Address for Channel 5 low + high bytes 7E/5BCB: A943 LDA #$43 7E/5BCD: 8D6043 STA $4360 ; DMA Control for Channel 6 (PPU -> CPU, auto-increment, 2 registers write twice each) 7E/5BD0: A91B LDA #$1B 7E/5BD2: 8D6143 STA $4361 ; DMA Destination Register for Channel 6 ($00211b, Mode 7 Matrix A) 7E/5BD5: A0155C LDY #$5C15 7E/5BD8: 8C6243 STY $4362 ; DMA Source Address for Channel 6 low + high bytes 7E/5BDB: A97E LDA #$7E 7E/5BDD: 8D6443 STA $4364 ; DMA Source Address for Channel 6 bank byte 7E/5BE0: 8D6743 STA $4367 ; HDMA Indirect Address for Channel 6 bank byte 7E/5BE3: A943 LDA #$43 7E/5BE5: 8D7043 STA $4370 ; DMA Control for Channel 7 (PPU -> CPU, auto-increment, 2 registers write twice each) 7E/5BE8: A91D LDA #$1D 7E/5BEA: 8D7143 STA $4371 ; DMA Destination Register for Channel 7 ($00211d, Mode 7 Matrix C) 7E/5BED: A01C5C LDY #$5C1C 7E/5BF0: 8C7243 STY $4372 ; DMA Source Address for Channel 7 low + high bytes 7E/5BF3: A97E LDA #$7E 7E/5BF5: 8D7443 STA $4374 ; DMA Source Address for Channel 7 bank byte 7E/5BF8: 8D7743 STA $4377 ; HDMA Indirect Address for Channel 7 bank byte 7E/5BFB: A9FC LDA #$FC 7E/5BFD: 0431 TSB $31 ; which channels to use for HDMA (enable 2-7, don't touch 0-1) 7E/5BFF: AB PLB 7E/5C00: 60 RTS
; BG3 Horizontal Scroll ; used by: opening credits ; referenced at 7e5bc5 7E/5C01: 27 7E/5C02: 00 7E/5C03: 00 7E/5C04: 10 7E/5C05: 00 7E/5C06: 00 7E/5C07: 10 7E/5C08: 00 7E/5C09: 00 7E/5C0A: 10 7E/5C0B: 00 7E/5C0C: 00 7E/5C0D: 00
; Color Addition Select ; used by: opening credits ; referenced at 7e5ba7 7E/5C0E: 54 7E/5C0F: 82 7E/5C10: 04 7E/5C11: 01 7E/5C12: 80 7E/5C13: 81 7E/5C14: 00
; Mode 7 Matrix A ; used by: opening credits ; referenced at 7e5bd5 7E/5C15: E4 7E/5C16: A0 7E/5C17: 3C 7E/5C18: FB 7E/5C19: 30 7E/5C1A: 3E 7E/5C1B: 00
; Mode 7 Matrix C ; used by: opening credits ; referenced at 7e5bed 7E/5C1C: E4 7E/5C1D: 20 7E/5C1E: 40 7E/5C1F: FB 7E/5C20: B0 7E/5C21: 41 7E/5C22: 00
; Fixed Color Data ; used by: opening credits ; referenced at 7e5b79 7E/5C23: 54 7E/5C24: E0 7E/5C25: 01 7E/5C26: ED 7E/5C27: 01 7E/5C28: EB 7E/5C29: 01 7E/5C2A: EA 7E/5C2B: 02 7E/5C2C: E9 7E/5C2D: 03 7E/5C2E: E8 7E/5C2F: 04 7E/5C30: E7 7E/5C31: 05 7E/5C32: E6 7E/5C33: 06 7E/5C34: E5 7E/5C35: 07 7E/5C36: E4 7E/5C37: 08 7E/5C38: E3 7E/5C39: 0C 7E/5C3A: E2 7E/5C3B: 0F 7E/5C3C: E1 7E/5C3D: 1E 7E/5C3E: E0 7E/5C3F: 00
; BG Mode and Character Size ; used by: opening credits ; referenced at 7e5b8f 7E/5C40: 54 7E/5C41: 09 7E/5C42: 01 7E/5C43: 07 7E/5C44: 00
; used by: opening credits ; called by: 7e58c9 ; copy #$01c0 bytes from $0300 to $3d00 and from $0680 to $4080, interlaced with the same number of bytes from $04c0 and $0840 ; store interlaced 2 byte values from $0300 and $04c0 (#$01c0 from each for a total of #$0380 bytes) to $3d00, and interlaced 2 byte values from $0680 and $0840 (#$01c0 from each for a total of #$0380 bytes) to $4080 ; $4080 is never read from? 7E/5C45: 7B TDC 7E/5C46: AA TAX 7E/5C47: A8 TAY 7E/5C48: C220 REP #$20 ; called by: 7e5c6b 7E/5C4A: BD0003 LDA $0300,X 7E/5C4D: 99003D STA $3D00,Y 7E/5C50: BD8006 LDA $0680,X 7E/5C53: 998040 STA $4080,Y 7E/5C56: C8 INY 7E/5C57: C8 INY 7E/5C58: BDC004 LDA $04C0,X 7E/5C5B: 99003D STA $3D00,Y 7E/5C5E: BD4008 LDA $0840,X 7E/5C61: 998040 STA $4080,Y 7E/5C64: C8 INY 7E/5C65: C8 INY 7E/5C66: E8 INX 7E/5C67: E8 INX 7E/5C68: E0C001 CPX #$01C0 7E/5C6B: D0DD BNE $5C4A 7E/5C6D: E220 SEP #$20 7E/5C6F: 60 RTS
; used by: opening credits ; happens before credits text gets loaded ; called by: 7e58b5 7E/5C70: A00001 LDY #$0100 7E/5C73: 843F STY $3F 7E/5C75: A08000 LDY #$0080 7E/5C78: 8441 STY $41 7E/5C7A: 8425 STY $25 ; BG1HOFS 7E/5C7C: 7B TDC 7E/5C7D: A8 TAY 7E/5C7E: 8427 STY $27 ; BG1VOFS 7E/5C80: 6472 STZ $72 7E/5C82: 6473 STZ $73 7E/5C84: 6474 STZ $74 7E/5C86: A0E000 LDY #$00E0 7E/5C89: 8487 STY $87 7E/5C8B: A00040 LDY #$4000 7E/5C8E: 848B STY $8B 7E/5C90: A00000 LDY #$0000 7E/5C93: 848D STY $8D 7E/5C95: A0FFFF LDY #$FFFF 7E/5C98: 848F STY $8F 7E/5C9A: 20B15C JSR $5CB1 ; stz $7e4400 - $7e4680 7E/5C9D: A04074 LDY #$7440 7E/5CA0: 8410 STY $10 ; VRAM address 7E/5CA2: A00044 LDY #$4400 7E/5CA5: 8412 STY $12 ; DMA Source Address for Channel 0 low/high bytes 7E/5CA7: A97E LDA #$7E 7E/5CA9: 8514 STA $14 ; DMA Source Address for Channel 0 bank byte 7E/5CAB: A08002 LDY #$0280 7E/5CAE: 840E STY $0E ; DMA channel 0: number of bytes to copy 7E/5CB0: 60 RTS
; happens before credits text gets loaded ; stz $7e4400 - $7e4680 ; used by: opening credits ; called by: 7e5c9a 7E/5CB1: 7B TDC 7E/5CB2: AA TAX ; called by: 7e5cba 7E/5CB3: 9E0044 STZ $4400,X 7E/5CB6: E8 INX 7E/5CB7: E08002 CPX #$0280 7E/5CBA: D0F7 BNE $5CB3 7E/5CBC: 60 RTS
; used by: title screen, opening credits ; add $5cc6 to array of routines ; called by: 7e5386, 7e5a5f 7E/5CBD: A900 LDA #$00 7E/5CBF: A0C65C LDY #$5CC6 7E/5CC2: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5CC5: 60 RTS
; used by: title screen, opening credits ; called by: 7e755c ; written to routine array by 7e5cbf 7E/5CC6: A518 LDA $18 ; number of IRQs processed? 7E/5CC8: 2901 AND #$01 ; check low bit of $18 7E/5CCA: D00B BNE $5CD7 ; if low bit of $18 not set, set Y to #$7c43 7E/5CCC: A2E030 LDX #$30E0 ; this happens for both if and else :p 7E/5CCF: A0437C LDY #$7C43 7E/5CD2: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) TO (X); this happens for both if and else :p 7E/5CD5: 8009 BRA $5CE0 ; if low bit of $18 is set, set Y to #$6498 ; called by: 7e5cca 7E/5CD7: A2E030 LDX #$30E0 ; this happens for both if and else :p 7E/5CDA: A09864 LDY #$6498 7E/5CDD: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (y) TO (X); this happens for both if and else :p ; called by: 7e5cd5 7E/5CE0: 38 SEC 7E/5CE1: 60 RTS
; used by: opening credits ; called by: 7e755c ; written to routine array by 7e5a59 7E/5CE2: AA TAX 7E/5CE3: 7CE65C JMP ($5CE6,X)
; used by: opening credits ; jump table for 7e5ce3 7E/5CE6: EA5C 7E/5CE8: FC5C
; used by: opening credits ; called by: 7e5ce3 (X = #$00) 7E/5CEA: A61D LDX $1D ; routine array index 7E/5CEC: FE003A INC $3A00,X ; update jump table index 7E/5CEF: C220 REP #$20 7E/5CF1: A9475D LDA #$5D47 ; start of pointer table 7E/5CF4: 9D0035 STA $3500,X 7E/5CF7: E220 SEP #$20 7E/5CF9: 205F75 JSR $755F ; stz to our $3b00, copy our $3500 to $eb, copy ($eb),#$2 to our $3b01 ; used by: opening credits ; called by: 7e5ce3 (X = #$02) 7E/5CFC: A61D LDX $1D ; routine array index 7E/5CFE: BD013B LDA $3B01,X ; extra byte after pointer to string? 7E/5D01: C901 CMP #$01 7E/5D03: D00B BNE $5D10 ; if extra byte is #$01 7E/5D05: A20030 LDX #$3000 7E/5D08: A00064 LDY #$6400 7E/5D0B: A901 LDA #$01 7E/5D0D: 203A73 JSR $733A ; add $735a to array of routines and store its arguments ; called by: 7e5d03 7E/5D10: A61D LDX $1D ; routine array index 7E/5D12: BD013B LDA $3B01,X ; extra byte after pointer to string? 7E/5D15: C920 CMP #$20 7E/5D17: D00B BNE $5D24 ; if extra byte is #$20 7E/5D19: A20030 LDX #$3000 7E/5D1C: A06574 LDY #$7465 7E/5D1F: A901 LDA #$01 7E/5D21: 203A73 JSR $733A ; add $735a to array of routines and store its arguments ; called by: 7e5d17 7E/5D24: A61D LDX $1D ; routine array index 7E/5D26: BD013B LDA $3B01,X ; extra byte after pointer to string? 7E/5D29: C9FE CMP #$FE 7E/5D2B: F018 BEQ $5D45 ; if extra byte is #$fe, clc so we get removed from array 7E/5D2D: 209375 JSR $7593 7E/5D30: E210 SEP #$10 7E/5D32: BD003B LDA $3B00,X ; position in pointer table 7E/5D35: A8 TAY 7E/5D36: C220 REP #$20 7E/5D38: B1EB LDA ($EB),Y ; load our pointer 7E/5D3A: 85E7 STA $E7 7E/5D3C: C210 REP #$10 7E/5D3E: E220 SEP #$20 7E/5D40: 208B5E JSR $5E8B ; store text in RAM 7E/5D43: 38 SEC 7E/5D44: 60 RTS
; called by: 7e5d2b 7E/5D45: 18 CLC 7E/5D46: 60 RTS
; credits text pointer table (2 byte read address, 1 byte something) 7E/5D47: 986501 ; producer 7E/5D4A: A5658B ; HIRONOBU SAKAGUCHI 7E/5D4D: 195E01 ; blank screen 7E/5D50: BC6501 ; director 7E/5D53: C9658B ; YOSHINORI KITASE, HIROYUKI ITOU 7E/5D56: 195E01 ; blank screen 7E/5D59: ED6501 ; main programmer 7E/5D5C: 01668B ; KEN NARITA, KIYOSHI YOSHII 7E/5D5F: 195E01 ; blank screen 7E/5D62: 216601 ; graphic director 7E/5D65: 36668B ; TETSUYA TAKAHASHI, KAZUKO SHIBUYA 7E/5D68: 195E01 ; blank screen 7E/5D6B: 216601 ; graphic director 7E/5D6E: 5D668B ; HIDEO MINABA, TETSUYA NOMURA 7E/5D71: 195E01 ; blank screen 7E/5D74: 7E6601 ; music 7E/5D77: 88668B ; NOBUO UEMATSU 7E/5D7A: 195E01 ; blank screen 7E/5D7D: 9A6601 ; image designer 7E/5D80: AD668B ; YOSHITAKA AMANO 7E/5D83: 195E01 ; blank screen 7E/5D86: C16601 ; battle planner 7E/5D89: D4668B ; YASUYUKI HASEBE, AKIYOSHI OOTA 7E/5D8C: 195E01 ; blank screen 7E/5D8F: F76601 ; field planner 7E/5D92: 09678B ; YOSHIHIKO MAEKAWA, KEITA ETOH 7E/5D95: 195E01 ; blank screen 7E/5D98: F76601 ; field planner 7E/5D9B: 2E678B ; SATORU TSUJI, HIDETOSHI KEZUKA 7E/5D9E: 195E01 ; blank screen 7E/5DA1: 546701 ; event planner 7E/5DA4: 66678B ; TSUKASA FUJITA, KEISUKE MATSUHARA 7E/5DA7: 195E01 ; blank screen 7E/5DAA: 8D6701 ; effect programmer 7E/5DAD: A3678B ; HIROSHI HARATA, SATOSHI OGATA 7E/5DB0: 195E01 ; blank screen 7E/5DB3: C46701 ; battle programmer 7E/5DB6: DA678B ; AKIHIRO YAMAGUCHI 7E/5DB9: 195E01 ; blank screen 7E/5DBC: F06701 ; sound programmer 7E/5DBF: 05688B ; MINORU AKAO 7E/5DC2: 195E01 ; blank screen 7E/5DC5: 156801 ; effect graphic designer 7E/5DC8: 31688B ; HIROKATSU SASAKI 7E/5DCB: 195E01 ; blank screen 7E/5DCE: 466801 ; field graphic designer 7E/5DD1: 61688B ; TAKAHARU MATSUO, YUSUKE NAORA, NOBUYUKI IKEDA 7E/5DD4: 195E01 ; blank screen 7E/5DD7: 466801 ; field graphic designer 7E/5DDA: 94688B ; TOMOE INAZAWA, KAORI TANAKA, TAKAMICHI SHIBUYA 7E/5DDD: 195E01 ; blank screen 7E/5DE0: 466801 ; field graphic designer 7E/5DE3: CA688B ; SHINICHIROU HAMASAKA, AKIYOSHI MASUDA 7E/5DE6: 195E01 ; blank screen 7E/5DE9: F56801 ; monster graphic designer 7E/5DEC: 12698B ; HITOSHI SASAKI 7E/5DEF: 195E01 ; blank screen 7E/5DF2: 256901 ; object graphic designer 7E/5DF5: 41698B ; KAZUHIRO OHKAWA 7E/5DF8: 195E01 ; blank screen 7E/5DFB: 556901 ; sound engineer 7E/5DFE: 68698B ; EIJI NAKAMURA 7E/5E01: 195E01 ; blank screen 7E/5E04: 7A6901 ; remake planner 7E/5E07: 8D698B ; WEIMIN LI, AIKO ITO 7E/5E0A: 195E01 ; blank screen 7E/5E0D: A56901 ; translator 7E/5E10: B4698B ; TED WOOLSEY 7E/5E13: 195E01 ; blank screen 7E/5E16: 195EFE ; blank screen and finish ; data for blank screen (maybe? only 2 byte header instead of 4?) 7E/5E19: 4644010101010101010101010101010101010101010101010101010101FE010101010101010101010101010101010101010101010101010101FE010101010101010101010101010101010101010101010101010101FE01010101010101010101010101010101010101010101010101010100
; read a string pointer from 16-byte $e7 ; string format is 2-byte RAM write address (stored to $eb), something (stored to $43), ; index into table at $7e5f07, then text until #$00 ; used by: opening credits ; called by: 7e5d40 7E/5E8B: A600 LDX $00 7E/5E8D: 9B TXY 7E/5E8E: C220 REP #$20 7E/5E90: B2E7 LDA ($E7) ; read RAM write address 7E/5E92: 85EB STA $EB 7E/5E94: E6E7 INC $E7 7E/5E96: E6E7 INC $E7 7E/5E98: E220 SEP #$20 7E/5E9A: B1E7 LDA ($E7),Y ; read something 7E/5E9C: 8543 STA $43 7E/5E9E: C8 INY 7E/5E9F: 7B TDC 7E/5EA0: B1E7 LDA ($E7),Y ; read index into table at $7e5f07 7E/5EA2: C8 INY 7E/5EA3: 20DF5E JSR $5EDF ; set up stuff in $5c0[258b] ; called by: 7e5ebf, 7e5edd 7E/5EA6: B1E7 LDA ($E7),Y ; start reading string 7E/5EA8: F017 BEQ $5EC1 ; if we read #$00, we're all done this string 7E/5EAA: C9FE CMP #$FE ; check for newline 7E/5EAC: F014 BEQ $5EC2 ; handle newline 7E/5EAE: C9FF CMP #$FF ; this never actually happens 7E/5EB0: F019 BEQ $5ECB ; handle whatever #$ff is (new page?) 7E/5EB2: 5A PHY 7E/5EB3: 9B TXY 7E/5EB4: 91EB STA ($EB),Y ; store letter in ($eb) + Y 7E/5EB6: E8 INX 7E/5EB7: 9B TXY 7E/5EB8: A543 LDA $43 ; load our something 7E/5EBA: 91EB STA ($EB),Y ; store our something to ($eb) + Y 7E/5EBC: E8 INX 7E/5EBD: 7A PLY 7E/5EBE: C8 INY ; move to next letter 7E/5EBF: 80E5 BRA $5EA6 ; called by: 7e5ea8 7E/5EC1: 60 RTS
; handle newline ; called by: 7e5eac 7E/5EC2: C221 REP #$21 7E/5EC4: A98000 LDA #$0080 7E/5EC7: 85E0 STA $E0 7E/5EC9: 8007 BRA $5ED2
; never actually executed - half line? new page? ; called by: 7e5eb0 7E/5ECB: C221 REP #$21 7E/5ECD: A94000 LDA #$0040 7E/5ED0: 85E0 STA $E0
; $eb = $eb + $e0, zero A, X, inc Y ; called by: 7e5ec9 7E/5ED2: A5EB LDA $EB 7E/5ED4: 65E0 ADC $E0 7E/5ED6: 85EB STA $EB 7E/5ED8: E220 SEP #$20 7E/5EDA: 7B TDC 7E/5EDB: AA TAX 7E/5EDC: C8 INY ; move to next letter 7E/5EDD: 80C7 BRA $5EA6
; 8-bit A is index into table at $7e5f07 ; bit-flips data from table and stores to $5c0[258b] ; used by: opening credits ; called by: 7e5ea3 7E/5EDF: DA PHX 7E/5EE0: 5A PHY ; pointless since we never change Y 7E/5EE1: 0A ASL A ; 7e5f07 table entries are 4 bytes wide 7E/5EE2: 0A ASL A 7E/5EE3: AA TAX 7E/5EE4: BD075F LDA $5F07,X 7E/5EE7: 49FF EOR #$FF 7E/5EE9: 8D025C STA $5C02 7E/5EEC: BD085F LDA $5F08,X 7E/5EEF: 49FF EOR #$FF 7E/5EF1: 8D055C STA $5C05 7E/5EF4: BD095F LDA $5F09,X 7E/5EF7: 49FF EOR #$FF 7E/5EF9: 8D085C STA $5C08 7E/5EFC: BD0A5F LDA $5F0A,X 7E/5EFF: 49FF EOR #$FF 7E/5F01: 8D0B5C STA $5C0B 7E/5F04: 7A PLY ; pointless since we never change Y 7E/5F05: FA PLX 7E/5F06: 60 RTS
; data for 7e5ee4, 7e5eec, 7e5ef4, and 7e5efc (1 byte each) 7E/5F07: 00000000 7E/5F0B: 00000400 7E/5F0F: 04000000 7E/5F13: 00040000 7E/5F17: 00040400 7E/5F1B: 04040000 7E/5F1F: 04000400 7E/5F23: 00040004
; used by: opening credits ; called by: 7e755c ; written to routine array by 7e59c9 7E/5F27: A51F LDA $1F 7E/5F29: C977 CMP #$77 7E/5F2B: B03F BCS $5F6C 7E/5F2D: A940 LDA #$40 7E/5F2F: 1433 TRB $33 7E/5F31: A900 LDA #$00 7E/5F33: A0DB76 LDY #$76DB 7E/5F36: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/5F39: 7B TDC 7E/5F3A: A518 LDA $18 ; number of IRQs processed? 7E/5F3C: 2907 AND #$07 7E/5F3E: 0A ASL A 7E/5F3F: A8 TAY 7E/5F40: C220 REP #$20 7E/5F42: B96E5F LDA $5F6E,Y 7E/5F45: 9D0035 STA $3500,X 7E/5F48: E220 SEP #$20 7E/5F4A: DA PHX 7E/5F4B: 203056 JSR $5630 7E/5F4E: FA PLX 7E/5F4F: 9D0133 STA $3301,X 7E/5F52: 290F AND #$0F 7E/5F54: 1A INC 7E/5F55: 9D0138 STA $3801,X 7E/5F58: DA PHX 7E/5F59: 203056 JSR $5630 7E/5F5C: FA PLX 7E/5F5D: 9D0134 STA $3401,X 7E/5F60: 9D0038 STA $3800,X 7E/5F63: 2903 AND #$03 7E/5F65: 1A INC 7E/5F66: 9D0137 STA $3701,X 7E/5F69: 9D0037 STA $3700,X ; called by: 7e5f2b 7E/5F6C: 38 SEC 7E/5F6D: 60 RTS
; used by: opening credits ; data for 7e5f42 7E/5F6E: B463 7E/5F70: B763 7E/5F72: BA63 7E/5F74: BD63 7E/5F76: C063 7E/5F78: C363 7E/5F7A: C663 7E/5F7C: BA63
; used by: opening credits ; called by: 7e755c ; written to routine array by 7e5b14 7E/5F7E: AA TAX 7E/5F7F: 7C825F JMP ($5F82,X)
; used by: opening credits ; jump table for 7e5f7f 7E/5F82: 865F 7E/5F84: 985F
; used by: opening credits ; called by: 7e5f7f (X = #$00) 7E/5F86: A61D LDX $1D ; routine array index 7E/5F88: FE003A INC $3A00,X 7E/5F8B: 205F75 JSR $755F ; stz to our $3b00, copy our $3500 to $eb, copy ($eb),#$2 to our $3b01 7E/5F8E: BD0139 LDA $3901,X 7E/5F91: 18 CLC 7E/5F92: 7D013B ADC $3B01,X 7E/5F95: 9D013B STA $3B01,X ; used by: opening credits ; called by: 7e5f7f (X = #$02) 7E/5F98: A61D LDX $1D ; routine array index 7E/5F9A: 7B TDC 7E/5F9B: BD0039 LDA $3900,X 7E/5F9E: A8 TAY 7E/5F9F: A537 LDA $37 7E/5FA1: 18 CLC 7E/5FA2: 7D0137 ADC $3701,X 7E/5FA5: BB TYX 7E/5FA6: 7539 ADC $39,X 7E/5FA8: A61D LDX $1D ; routine array index 7E/5FAA: 9D0133 STA $3301,X 7E/5FAD: A538 LDA $38 7E/5FAF: 18 CLC 7E/5FB0: 7D0138 ADC $3801,X 7E/5FB3: BB TYX 7E/5FB4: 753C ADC $3C,X 7E/5FB6: A61D LDX $1D ; routine array index 7E/5FB8: 9D0134 STA $3401,X 7E/5FBB: 208D75 JSR $758D 7E/5FBE: 38 SEC 7E/5FBF: 60 RTS
; used by: opening credits ; called by: 7e755c ; written to routine array by 7e5950 7E/5FC0: AA TAX 7E/5FC1: 7CC45F JMP ($5FC4,X)
; used by: opening credits ; jump table for 7e5fc1 7E/5FC4: C85F 7E/5FC6: DF5F
; used by: opening credits ; called by: 7e5fc1 (X = #$00) 7E/5FC8: A61D LDX $1D ; routine array index 7E/5FCA: FE003A INC $3A00,X 7E/5FCD: C220 REP #$20 7E/5FCF: A92760 LDA #$6027 7E/5FD2: 9D0035 STA $3500,X 7E/5FD5: E220 SEP #$20 7E/5FD7: A908 LDA #$08 7E/5FD9: 9D013B STA $3B01,X 7E/5FDC: 9E003B STZ $3B00,X ; used by: opening credits ; called by: 7e5fc1 (X = #$02) 7E/5FDF: A61D LDX $1D ; routine array index 7E/5FE1: 20EF5F JSR $5FEF 7E/5FE4: 7B TDC 7E/5FE5: BD003B LDA $3B00,X ; position in pointer table? 7E/5FE8: A8 TAY 7E/5FE9: B1EB LDA ($EB),Y 7E/5FEB: 8538 STA $38 7E/5FED: 38 SEC 7E/5FEE: 60 RTS
; used by: opening credits ; called by: 7e5fe1 7E/5FEF: C220 REP #$20 7E/5FF1: BD0035 LDA $3500,X 7E/5FF4: 85EB STA $EB 7E/5FF6: E220 SEP #$20 ; called by: 7e6005, 7e6015 7E/5FF8: BD013B LDA $3B01,X 7E/5FFB: C9FF CMP #$FF 7E/5FFD: D008 BNE $6007 7E/5FFF: 9E003B STZ $3B00,X ; position in pointer table? 7E/6002: 201B60 JSR $601B 7E/6005: 80F1 BRA $5FF8 ; called by: 7e5ffd 7E/6007: BD013B LDA $3B01,X 7E/600A: D00B BNE $6017 7E/600C: FE003B INC $3B00,X ; position in pointer table? 7E/600F: FE003B INC $3B00,X ; position in pointer table? 7E/6012: 201B60 JSR $601B 7E/6015: 80E1 BRA $5FF8 ; called by: 7e600a 7E/6017: DE013B DEC $3B01,X 7E/601A: 60 RTS
; used by: opening credits ; called by: 7e6002, 7e6012 7E/601B: 7B TDC 7E/601C: BD003B LDA $3B00,X ; position in pointer table? 7E/601F: A8 TAY 7E/6020: C8 INY 7E/6021: B1EB LDA ($EB),Y 7E/6023: 9D013B STA $3B01,X 7E/6026: 60 RTS
; data for $3500,x ; used by: opening credits ; referenced from 7e5fd2 7E/6027: 0104 7E/6029: 0208 7E/602B: 0104 7E/602D: 0004 7E/602F: 00FF
; data for $3500,x ; used by: opening credits ; dereferenced from 7e5b45 7E/6031: 406004 7E/6034: 456010 7E/6037: 4A6004 7E/603A: 4F6010 7E/603D: 4A60FF
; probably dereferenced from 7e6031 7E/6040: 01 7E/6041: 90278430 ; probably dereferenced from 7e6034 7E/6045: 01 7E/6046: 90268430 ; probably dereferenced from 7e6037, 7e603d 7E/604A: 01 7E/604B: 90278470 ; probably dereferenced from 7e603a 7E/604F: 01 7E/6050: 90268470
; data for $3500,x ; used by: opening credits ; dereferenced from 7e5b49 7E/6054: 5D6014 7E/6057: 6E6014 7E/605A: 6E60FF
; probably dereferenced from 7e6054 7E/605D: 04 7E/605E: 90086C30 7E/6062: A0086E30 7E/6066: 90188030 7E/606A: A0188230 ; probably dereferenced from 7e6057, 7e605a 7E/606E: 04 7E/606F: 98086C70 7E/6073: 88086E70 7E/6077: 98188070 7E/607B: 88188270
; data for $3500,x ; used by: opening credits ; dereferenced from 7e5b55 7E/607F: 9A6008 7E/6082: A36004 7E/6085: AC6004 7E/6088: B56004 7E/608B: BE6008 7E/608E: C76004 7E/6091: AC6004 7E/6094: B56004 7E/6097: B560FF
; probably dereferenced from 7e607f 7E/609A: 02 7E/609B: 80 7E/609C: 08 7E/609D: 60 7E/609E: 30 7E/609F: 80 7E/60A0: 18 7E/60A1: 62 7E/60A2: 30 ; probably dereferenced from 7e6082 7E/60A3: 02 7E/60A4: 80 7E/60A5: 09 7E/60A6: 60 7E/60A7: 30 7E/60A8: 80 7E/60A9: 19 7E/60AA: 62 7E/60AB: 30 ; probably dereferenced from 7e6085, 7e6091 7E/60AC: 02 7E/60AD: 80 7E/60AE: 09 7E/60AF: 64 7E/60B0: 30 7E/60B1: 80 7E/60B2: 19 7E/60B3: 66 7E/60B4: 30 ; probably dereferenced from 7e6088, 7e6094, 7e6097 7E/60B5: 02 7E/60B6: 80 7E/60B7: 08 7E/60B8: 64 7E/60B9: 30 7E/60BA: 80 7E/60BB: 18 7E/60BC: 66 7E/60BD: 30 ; probably dereferenced from 7e608b 7E/60BE: 02 7E/60BF: 80 7E/60C0: 08 7E/60C1: 68 7E/60C2: 30 7E/60C3: 80 7E/60C4: 18 7E/60C5: 6A 7E/60C6: 30 ; probably dereferenced from 7e608e 7E/60C7: 02 7E/60C8: 80 7E/60C9: 09 7E/60CA: 68 7E/60CB: 30 7E/60CC: 80 7E/60CD: 19 7E/60CE: 6A 7E/60CF: 30
; data for $3500,x ; used by: opening credits ; dereferenced from 7e5b59 7E/60D0: 0F6108 7E/60D3: 186104 7E/60D6: FD6004 7E/60D9: 066104 7E/60DC: EB6008 7E/60DF: F46004 7E/60E2: FD6004 7E/60E5: 066104 7E/60E8: 0661FF
; probably dereferenced from 7e60dc 7E/60EB: 02 7E/60EC: A0 7E/60ED: 08 7E/60EE: 60 7E/60EF: 70 7E/60F0: A0 7E/60F1: 18 7E/60F2: 62 7E/60F3: 70 ; probably dereferenced from 7e60df 7E/60F4: 02 7E/60F5: A0 7E/60F6: 09 7E/60F7: 60 7E/60F8: 70 7E/60F9: A0 7E/60FA: 19 7E/60FB: 62 7E/60FC: 70 ; probably dereferenced from 7e60d6, 7e60e2 7E/60FD: 02 7E/60FE: A0 7E/60FF: 09 7E/6100: 64 7E/6101: 70 7E/6102: A0 7E/6103: 19 7E/6104: 66 7E/6105: 70 ; probably dereferenced from 7e60d9, 7e60e5, 7e60e8 7E/6106: 02 7E/6107: A0 7E/6108: 08 7E/6109: 64 7E/610A: 70 7E/610B: A0 7E/610C: 18 7E/610D: 66 7E/610E: 70 ; probably dereferenced from 7e60d0 7E/610F: 02 7E/6110: A0 7E/6111: 08 7E/6112: 68 7E/6113: 70 7E/6114: A0 7E/6115: 18 7E/6116: 6A 7E/6117: 70 ; probably dereferenced from 7e60d3 7E/6118: 02 7E/6119: A0 7E/611A: 09 7E/611B: 68 7E/611C: 70 7E/611D: A0 7E/611E: 19 7E/611F: 6A 7E/6120: 70
; data for $3500,x ; used by: opening credits ; dereferenced from 7e5b4d 7E/6121: 3F6104 7E/6124: 486104 7E/6127: 516104 7E/612A: 5A6104 7E/612D: 636104 7E/6130: 6C6108 7E/6133: 756104 7E/6136: 7E6104 7E/6139: 876104 7E/613C: 8761FF
; probably dereferenced from 7e6121 7E/613F: 02 7E/6140: 90 7E/6141: 3F 7E/6142: 40 7E/6143: 30 7E/6144: 90 7E/6145: 4F 7E/6146: 42 7E/6147: 30 ; probably dereferenced from 7e6124 7E/6148: 02 7E/6149: 90 7E/614A: 3D 7E/614B: 40 7E/614C: 30 7E/614D: 90 7E/614E: 4D 7E/614F: 42 7E/6150: 30 ; probably dereferenced from 7e6127 7E/6151: 02 7E/6152: 90 7E/6153: 3F 7E/6154: 44 7E/6155: 30 7E/6156: 90 7E/6157: 4F 7E/6158: 46 7E/6159: 30 ; probably dereferenced from 7e612a 7E/615A: 02 7E/615B: 90 7E/615C: 3E 7E/615D: 44 7E/615E: 30 7E/615F: 90 7E/6160: 4E 7E/6161: 46 7E/6162: 30 ; probably dereferenced from 7e612d 7E/6163: 02 7E/6164: 90 7E/6165: 3D 7E/6166: 48 7E/6167: 30 7E/6168: 90 7E/6169: 4D 7E/616A: 4A 7E/616B: 30 ; probably dereferenced from 7e6130 7E/616C: 02 7E/616D: 90 7E/616E: 3E 7E/616F: 48 7E/6170: 30 7E/6171: 90 7E/6172: 4E 7E/6173: 4A 7E/6174: 30 ; probably dereferenced from 7e6133 7E/6175: 02 7E/6176: 90 7E/6177: 3D 7E/6178: 4C 7E/6179: 30 7E/617A: 90 7E/617B: 4D 7E/617C: 4E 7E/617D: 30 ; probably dereferenced from 7e6136 7E/617E: 02 7E/617F: 90 7E/6180: 3F 7E/6181: 4C 7E/6182: 30 7E/6183: 90 7E/6184: 4F 7E/6185: 4E 7E/6186: 30 ; probably dereferenced from 7e6139 7E/6187: 02 7E/6188: 90 7E/6189: 41 7E/618A: 4C 7E/618B: 30 7E/618C: 90 7E/618D: 51 7E/618E: 4E 7E/618F: 30
; data for $3500,x ; used by: opening credits ; dereferenced from 7e5b51 7E/6190: AE6108 7E/6193: B76104 7E/6196: C06104 7E/6199: C96104 7E/619C: D26104 7E/619F: DB6104 7E/61A2: E46104 7E/61A5: ED6104 7E/61A8: F66104 7E/61AB: F661FF
; probably dereferenced from 7e6190 7E/61AE: 02 7E/61AF: A0 7E/61B0: 3E 7E/61B1: 48 7E/61B2: 70 7E/61B3: A0 7E/61B4: 4E 7E/61B5: 4A 7E/61B6: 70 ; probably dereferenced from 7e6193 7E/61B7: 02 7E/61B8: A0 7E/61B9: 3D 7E/61BA: 4C 7E/61BB: 70 7E/61BC: A0 7E/61BD: 4D 7E/61BE: 4E 7E/61BF: 70 ; probably dereferenced from 7e6196 7E/61C0: 02 7E/61C1: A0 7E/61C2: 3F 7E/61C3: 4C 7E/61C4: 70 7E/61C5: A0 7E/61C6: 4F 7E/61C7: 4E 7E/61C8: 70 ; probably dereferenced from 7e6199 7E/61C9: 02 7E/61CA: A0 7E/61CB: 41 7E/61CC: 4C 7E/61CD: 70 7E/61CE: A0 7E/61CF: 51 7E/61D0: 4E 7E/61D1: 70 ; probably dereferenced from 7e619c 7E/61D2: 02 7E/61D3: A0 7E/61D4: 3F 7E/61D5: 40 7E/61D6: 70 7E/61D7: A0 7E/61D8: 4F 7E/61D9: 42 7E/61DA: 70 ; probably dereferenced from 7e619f 7E/61DB: 02 7E/61DC: A0 7E/61DD: 3D 7E/61DE: 40 7E/61DF: 70 7E/61E0: A0 7E/61E1: 4D 7E/61E2: 42 7E/61E3: 70 ; probably dereferenced from 7e61a2 7E/61E4: 02 7E/61E5: A0 7E/61E6: 3F 7E/61E7: 44 7E/61E8: 70 7E/61E9: A0 7E/61EA: 4F 7E/61EB: 46 7E/61EC: 70 ; probably dereferenced from 7e61a5 7E/61ED: 02 7E/61EE: A0 7E/61EF: 3E 7E/61F0: 44 7E/61F1: 70 7E/61F2: A0 7E/61F3: 4E 7E/61F4: 46 7E/61F5: 70 ; probably dereferenced from 7e61a8, 7e61ab 7E/61F6: 02 7E/61F7: A0 7E/61F8: 3D 7E/61F9: 48 7E/61FA: 70 7E/61FB: A0 7E/61FC: 4D 7E/61FD: 4A 7E/61FE: 70
; used by: opening credits ; decompress $d8f000 to $7f0000, copy parts of it around, and write stuff to VRAM ; called by: 7e5838 7E/61FF: 20A87A JSR $7AA8 ; decompress $d8f000 to $7f0000, copy parts of it around, and write stuff to VRAM 7E/6202: C221 REP #$21 7E/6204: AF66DADF LDA $DFDA66 7E/6208: 6900DB ADC #$DB00 7E/620B: 85E7 STA $E7 7E/620D: E220 SEP #$20 7E/620F: AF68DADF LDA $DFDA68 7E/6213: 69DF ADC #$DF 7E/6215: 85E9 STA $E9 7E/6217: A00098 LDY #$9800 7E/621A: 84EB STY $EB 7E/621C: A97F LDA #$7F 7E/621E: 85ED STA $ED 7E/6220: A00008 LDY #$0800 7E/6223: 84EF STY $EF 7E/6225: 20CC62 JSR $62CC ; copy $ef bytes from [$e7] to [$eb] 7E/6228: C221 REP #$21 7E/622A: AF5DDADF LDA $DFDA5D 7E/622E: 6900E3 ADC #$E300 7E/6231: 85E7 STA $E7 7E/6233: E220 SEP #$20 7E/6235: AF5FDADF LDA $DFDA5F 7E/6239: 69DF ADC #$DF 7E/623B: 85E9 STA $E9 7E/623D: A000A0 LDY #$A000 7E/6240: 84EB STY $EB 7E/6242: A97F LDA #$7F 7E/6244: 85ED STA $ED 7E/6246: A00008 LDY #$0800 7E/6249: 84EF STY $EF 7E/624B: 20CC62 JSR $62CC ; copy $ef bytes from [$e7] to [$eb] 7E/624E: C221 REP #$21 7E/6250: AF60DADF LDA $DFDA60 7E/6254: 6900DB ADC #$DB00 7E/6257: 85E7 STA $E7 7E/6259: E220 SEP #$20 7E/625B: AF62DADF LDA $DFDA62 7E/625F: 69DF ADC #$DF 7E/6261: 85E9 STA $E9 7E/6263: A000A8 LDY #$A800 7E/6266: 84EB STY $EB 7E/6268: A97F LDA #$7F 7E/626A: 85ED STA $ED 7E/626C: A00008 LDY #$0800 7E/626F: 84EF STY $EF 7E/6271: 20CC62 JSR $62CC ; copy $ef bytes from [$e7] to [$eb] 7E/6274: 64E4 STZ $E4 7E/6276: 64E5 STZ $E5 7E/6278: A980 LDA #$80 7E/627A: 85ED STA $ED 7E/627C: A20098 LDX #$9800 7E/627F: A97F LDA #$7F 7E/6281: 204863 JSR $6348 7E/6284: 20DD62 JSR $62DD 7E/6287: A000B8 LDY #$B800 7E/628A: 84E7 STY $E7 7E/628C: A97F LDA #$7F 7E/628E: 85E9 STA $E9 7E/6290: 64ED STZ $ED 7E/6292: 64EE STZ $EE 7E/6294: A00040 LDY #$4000 7E/6297: 84EB STY $EB 7E/6299: A00000 LDY #$0000 7E/629C: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$4000 bytes from $7fb800 to VRAM $0000, adding #$0000) 7E/629F: A28000 LDX #$0080 7E/62A2: 86E4 STX $E4 7E/62A4: A980 LDA #$80 7E/62A6: 85ED STA $ED 7E/62A8: A200A8 LDX #$A800 7E/62AB: A97F LDA #$7F 7E/62AD: 204863 JSR $6348 7E/62B0: 20DD62 JSR $62DD 7E/62B3: A000B8 LDY #$B800 7E/62B6: 84E7 STY $E7 7E/62B8: A97F LDA #$7F 7E/62BA: 85E9 STA $E9 7E/62BC: 64ED STZ $ED 7E/62BE: 64EE STZ $EE 7E/62C0: A00040 LDY #$4000 7E/62C3: 84EB STY $EB 7E/62C5: A00020 LDY #$2000 7E/62C8: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$4000 bytes from $7fb800 to VRAM $2000, adding #$0000) 7E/62CB: 60 RTS
; used by: opening credits, floating island ; copy $ef bytes from [$e7] to [$eb] ; called by: 7e6225, 7e624b, 7e6271, 7e6c12, 7e7ac2 7E/62CC: C220 REP #$20 7E/62CE: A400 LDY $00 ; called by: 7e62d8 7E/62D0: B7E7 LDA [$E7],Y 7E/62D2: 97EB STA [$EB],Y 7E/62D4: C8 INY 7E/62D5: C8 INY 7E/62D6: C4EF CPY $EF 7E/62D8: D0F6 BNE $62D0 7E/62DA: E220 SEP #$20 7E/62DC: 60 RTS
; used by: opening credits ; not sure what the point of this is yet ; called by: 7e6284, 7e62b0 7E/62DD: 7B TDC 7E/62DE: AA TAX ; called by: 7e62f8 7E/62DF: C220 REP #$20 7E/62E1: BDFB62 LDA $62FB,X 7E/62E4: A8 TAY 7E/62E5: E8 INX 7E/62E6: E8 INX 7E/62E7: BDFB62 LDA $62FB,X 7E/62EA: 85E7 STA $E7 7E/62EC: E8 INX 7E/62ED: E8 INX 7E/62EE: E220 SEP #$20 7E/62F0: DA PHX 7E/62F1: 201B63 JSR $631B ; copy #$400 bytes from $0bc0 + y in #$20 chunks to every other byte of $b800 + $e7, incrementing $e7 by #$0101 each time 7E/62F4: FA PLX 7E/62F5: E02000 CPX #$0020 7E/62F8: D0E5 BNE $62DF 7E/62FA: 60 RTS
; data for 7e62e1 (2 bytes, stored to Y) and 7e62e7 (2 bytes, stored to $e7) 7E/62FB: 0000 0000 7E/62FF: 0004 4000 7E/6303: 0000 8000 7E/6307: 0004 C000 7E/630B: 0008 0020 7E/630F: 000C 4020 7E/6313: 0008 8020 7E/6317: 000C C020
; used by: opening credits ; copy #$400 bytes from $0bc0 + y in #$20 chunks to every other byte of $b800 + $e7, incrementing $e7 by #$0101 each time ; called by: 7e62f1 7E/631B: 8B PHB 7E/631C: A97F LDA #$7F 7E/631E: 48 PHA 7E/631F: AB PLB 7E/6320: A920 LDA #$20 7E/6322: 85E0 STA $E0 ; do the inner loop #$20 times, incrementing $e7 by #$0101 each time 7E/6324: A920 LDA #$20 7E/6326: 85E1 STA $E1 7E/6328: A6E7 LDX $E7 ; copy #$20 bytes from $0bc0 + y to every other byte of $b800 + $e7 7E/632A: B9C00B LDA $0BC0,Y 7E/632D: 9D00B8 STA $B800,X 7E/6330: C8 INY 7E/6331: E8 INX 7E/6332: E8 INX 7E/6333: C6E1 DEC $E1 7E/6335: D0F3 BNE $632A 7E/6337: C221 REP #$21 7E/6339: A5E7 LDA $E7 7E/633B: 690001 ADC #$0100 7E/633E: 85E7 STA $E7 7E/6340: E220 SEP #$20 7E/6342: C6E0 DEC $E0 7E/6344: D0DE BNE $6324 7E/6346: AB PLB 7E/6347: 60 RTS
; used by: opening credits ; called by: 7e6281, 7e62ad 7E/6348: 85E9 STA $E9 7E/634A: 86E7 STX $E7 7E/634C: 8B PHB 7E/634D: A97F LDA #$7F 7E/634F: 48 PHA 7E/6350: AB PLB 7E/6351: 7B TDC 7E/6352: AA TAX ; called by: 7e63b0 7E/6353: A908 LDA #$08 7E/6355: 85E6 STA $E6 ; called by: 7e639d 7E/6357: C220 REP #$20 7E/6359: A01000 LDY #$0010 7E/635C: A7E7 LDA [$E7] 7E/635E: 85F1 STA $F1 7E/6360: B7E7 LDA [$E7],Y 7E/6362: 85EF STA $EF 7E/6364: 7B TDC 7E/6365: E220 SEP #$20 7E/6367: A00800 LDY #$0008 ; called by: 7e6393 7E/636A: 7B TDC 7E/636B: 06F0 ASL $F0 7E/636D: 2A ROL A 7E/636E: 06EF ASL $EF 7E/6370: 2A ROL A 7E/6371: 06F2 ASL $F2 7E/6373: 2A ROL A 7E/6374: 06F1 ASL $F1 7E/6376: 2A ROL A 7E/6377: 290F AND #$0F 7E/6379: F012 BEQ $638D 7E/637B: 85E0 STA $E0 7E/637D: DA PHX 7E/637E: A6E4 LDX $E4 7E/6380: BFB8647E LDA $7E64B8,X 7E/6384: FA PLX 7E/6385: 0A ASL A 7E/6386: 0A ASL A 7E/6387: 0A ASL A 7E/6388: 0A ASL A 7E/6389: 2930 AND #$30 7E/638B: 05E0 ORA $E0 ; called by: 7e6379 7E/638D: 9D01B8 STA $B801,X 7E/6390: E8 INX 7E/6391: E8 INX 7E/6392: 88 DEY 7E/6393: D0D5 BNE $636A 7E/6395: A4E7 LDY $E7 7E/6397: C8 INY 7E/6398: C8 INY 7E/6399: 84E7 STY $E7 7E/639B: C6E6 DEC $E6 7E/639D: D0B8 BNE $6357 7E/639F: C220 REP #$20 7E/63A1: E6E4 INC $E4 7E/63A3: A5E7 LDA $E7 7E/63A5: 18 CLC 7E/63A6: 691000 ADC #$0010 7E/63A9: 85E7 STA $E7 7E/63AB: 7B TDC 7E/63AC: E220 SEP #$20 7E/63AE: C6ED DEC $ED 7E/63B0: D0A1 BNE $6353 7E/63B2: AB PLB 7E/63B3: 60 RTS
; data for $3500,x ; used by: opening credits ; dereferenced from 7e5f6e 7E/63B4: C963FE ; dereferenced from 7e5f70 7E/63B7: CE63FE ; dereferenced from 7e5f72, 7e5f7c 7E/63BA: D363FE ; dereferenced from 7e5f74 7E/63BD: D863FE ; dereferenced from 7e5f76 7E/63C0: DD63FE ; dereferenced from 7e5f78 7E/63C3: EE63FE ; dereferenced from 7e5f7a 7E/63C6: F763FE
; probably dereferenced from 7e63b4 7E/63C9: 01 7E/63CA: 00 7E/63CB: 00 7E/63CC: 86 7E/63CD: 72 ; probably dereferenced from 7e63b7 7E/63CE: 01 7E/63CF: 00 7E/63D0: 00 7E/63D1: 87 7E/63D2: 76 ; probably dereferenced from 7e63ba 7E/63D3: 01 7E/63D4: 00 7E/63D5: 00 7E/63D6: 88 7E/63D7: 78 ; probably dereferenced from 7e63bd 7E/63D8: 01 7E/63D9: 00 7E/63DA: 00 7E/63DB: 89 7E/63DC: 7A ; probably dereferenced from 7e63b4 7E/63DD: 04 7E/63DE: 08 7E/63DF: 08 7E/63E0: 87 7E/63E1: 72 7E/63E2: 00 7E/63E3: 00 7E/63E4: 86 7E/63E5: 36 7E/63E6: 00 7E/63E7: 10 7E/63E8: 86 7E/63E9: 78 7E/63EA: 20 7E/63EB: 00 7E/63EC: 86 7E/63ED: 32 ; probably dereferenced from 7e63b4 7E/63EE: 02 7E/63EF: 00 7E/63F0: 00 7E/63F1: 89 7E/63F2: 76 7E/63F3: 10 7E/63F4: 08 7E/63F5: 89 7E/63F6: 76 ; probably dereferenced from 7e63b4 7E/63F7: 02 7E/63F8: 00 7E/63F9: 00 7E/63FA: 86 7E/63FB: 7A 7E/63FC: 30 7E/63FD: 08 7E/63FE: 86 7E/63FF: 38
; data for 7e735a ; used by: opening credits ; referenced at 7e5d08 7E/6400: 0000 7E/6402: FF7F 7E/6404: F662 7E/6406: E620 7E/6408: 0000 7E/640A: 9C73 7E/640C: 514E 7E/640E: 8314
; data for 7e735a ; used by: opening credits ; referenced at 7e599e 7E/6410: 0000 7E/6412: 0B46 7E/6414: CA3D 7E/6416: 4829 7E/6418: 692D 7E/641A: 4929 7E/641C: 6A35 7E/641E: 0820
; unknown 7E/6420: 08 7E/6421: 20 7E/6422: 08 7E/6423: 20 7E/6424: 08 7E/6425: 20 7E/6426: CD 7E/6427: 35 7E/6428: AB 7E/6429: 31 7E/642A: 70 7E/642B: 56 7E/642C: 6F 7E/642D: 56 7E/642E: 4E 7E/642F: 52
; data for 7e735a ; used by: opening credits ; referenced at 7e59a9 7E/6430: 0000 7E/6432: 0B46 7E/6434: CA3D 7E/6436: 2725 7E/6438: C614 7E/643A: 0D4A 7E/643C: E71C 7E/643E: 7056 7E/6440: 6F56 7E/6442: 4E52 7E/6444: AC39 7E/6446: 692D 7E/6448: 2725 7E/644A: 7056 7E/644C: 6F56 7E/644E: 4E52
; data for 7e735a ; used by: opening credits ; referenced at 7e59b4 7E/6450: 0000 7E/6452: 8A35 7E/6454: 6A31 7E/6456: 692D 7E/6458: 4829 7E/645A: 4929 7E/645C: 692D 7E/645E: 0D4A 7E/6460: 0820 7E/6462: 0820 7E/6464: 0820 7E/6466: 0820 7E/6468: 0820 7E/646A: 0820 7E/646C: 6F56 7E/646E: 6F56
; data for 7e735a ; used by: opening credits ; referenced at 7e5993 7E/6470: 0000 7E/6472: EF41 7E/6474: 8C31 7E/6476: 282D 7E/6478: 0725 7E/647A: E71C 7E/647C: C618 7E/647E: 8B41 7E/6480: 6939 7E/6482: 062D 7E/6484: C524 7E/6486: 8A3D 7E/6488: 2631 7E/648A: 0820 7E/648C: 0820 7E/648E: 0820
; data for 7e735a ; used by: opening credits ; referenced at 7e5967, 7e5972, 7e597d, 7e5988 7E/6490: 0000 7E/6492: D262 7E/6494: 905A 7E/6496: 4E52
; data for 7e5cda ; used by: title screen, opening credits 7E/6498: 0000 7E/649A: 7615 7E/649C: 2E00 7E/649E: 420C 7E/64A0: 4108 7E/64A2: CD45 7E/64A4: 6A3D 7E/64A6: 2835 7E/64A8: 2825 7E/64AA: E72C 7E/64AC: E624 7E/64AE: C520 7E/64B0: C518 7E/64B2: A318 7E/64B4: 8314 7E/64B6: 6310
; data for 7e6380 7E/64B8: 00 7E/64B9: 01 7E/64BA: 02 7E/64BB: 01 7E/64BC: 01 7E/64BD: 01 7E/64BE: 01 7E/64BF: 01 7E/64C0: 01 7E/64C1: 02 7E/64C2: 02 7E/64C3: 02 7E/64C4: 02 7E/64C5: 02 7E/64C6: 02 7E/64C7: 03 7E/64C8: 02 7E/64C9: 03 7E/64CA: 03 7E/64CB: 02 7E/64CC: 02 7E/64CD: 02 7E/64CE: 02 7E/64CF: 02 7E/64D0: 02 7E/64D1: 02 7E/64D2: 02 7E/64D3: 01 7E/64D4: 01 7E/64D5: 01 7E/64D6: 01 7E/64D7: 01 7E/64D8: 02 7E/64D9: 02 7E/64DA: 02 7E/64DB: 02 7E/64DC: 02 7E/64DD: 02 7E/64DE: 02 7E/64DF: 02 7E/64E0: 02 7E/64E1: 02 7E/64E2: 02 7E/64E3: 01 7E/64E4: 01 7E/64E5: 01 7E/64E6: 01 7E/64E7: 01 7E/64E8: 02 7E/64E9: 02 7E/64EA: 02 7E/64EB: 02 7E/64EC: 02 7E/64ED: 02 7E/64EE: 02 7E/64EF: 02 7E/64F0: 02 7E/64F1: 02 7E/64F2: 02 7E/64F3: 01 7E/64F4: 01 7E/64F5: 01 7E/64F6: 01 7E/64F7: 01 7E/64F8: 02 7E/64F9: 02 7E/64FA: 02 7E/64FB: 02 7E/64FC: 02 7E/64FD: 02 7E/64FE: 02 7E/64FF: 02 7E/6500: 02 7E/6501: 02 7E/6502: 02 7E/6503: 02 7E/6504: 02 7E/6505: 02 7E/6506: 02 7E/6507: 02 7E/6508: 02 7E/6509: 02 7E/650A: 02 7E/650B: 02 7E/650C: 02 7E/650D: 02 7E/650E: 02 7E/650F: 02 7E/6510: 02 7E/6511: 02 7E/6512: 02 7E/6513: 02 7E/6514: 02 7E/6515: 02 7E/6516: 02 7E/6517: 02 7E/6518: 02 7E/6519: 02 7E/651A: 02 7E/651B: 02 7E/651C: 02 7E/651D: 02 7E/651E: 02 7E/651F: 02 7E/6520: 02 7E/6521: 02 7E/6522: 02 7E/6523: 02 7E/6524: 02 7E/6525: 02 7E/6526: 02 7E/6527: 02 7E/6528: 02 7E/6529: 02 7E/652A: 02 7E/652B: 02 7E/652C: 02 7E/652D: 02 7E/652E: 02 7E/652F: 02 7E/6530: 05 7E/6531: 05 7E/6532: 05 7E/6533: 05 7E/6534: 05 7E/6535: 05 7E/6536: 05 7E/6537: 05 7E/6538: 03 7E/6539: 03 7E/653A: 03 7E/653B: 05 7E/653C: 05 7E/653D: 03 7E/653E: 03 7E/653F: 03 7E/6540: 03 7E/6541: 03 7E/6542: 03 7E/6543: 03 7E/6544: 03 7E/6545: 03 7E/6546: 03 7E/6547: 03 7E/6548: 02 7E/6549: 02 7E/654A: 05 7E/654B: 05 7E/654C: 05 7E/654D: 05 7E/654E: 03 7E/654F: 03 7E/6550: 03 7E/6551: 03 7E/6552: 03 7E/6553: 03 7E/6554: 03 7E/6555: 03 7E/6556: 03 7E/6557: 03 7E/6558: 02 7E/6559: 02 7E/655A: 03 7E/655B: 02 7E/655C: 02 7E/655D: 02 7E/655E: 03 7E/655F: 03 7E/6560: 03 7E/6561: 03 7E/6562: 03 7E/6563: 03 7E/6564: 03 7E/6565: 03 7E/6566: 03 7E/6567: 02 7E/6568: 02 7E/6569: 03 7E/656A: 02 7E/656B: 02 7E/656C: 02 7E/656D: 03 7E/656E: 03 7E/656F: 02 7E/6570: 03 7E/6571: 03 7E/6572: 03 7E/6573: 03 7E/6574: 03 7E/6575: 04 7E/6576: 02 7E/6577: 02 7E/6578: 02 7E/6579: 02 7E/657A: 02 7E/657B: 02 7E/657C: 02 7E/657D: 02 7E/657E: 02 7E/657F: 02 7E/6580: 02 7E/6581: 02 7E/6582: 02 7E/6583: 02 7E/6584: 02 7E/6585: 02 7E/6586: 02 7E/6587: 02 7E/6588: 02 7E/6589: 02 7E/658A: 02 7E/658B: 02 7E/658C: 02 7E/658D: 02 7E/658E: 02 7E/658F: 02 7E/6590: 02 7E/6591: 02 7E/6592: 02 7E/6593: 02 7E/6594: 00 7E/6595: 02 7E/6596: 02 7E/6597: 02
; opening credits text ; referenced at 7e5d47 7E/6598: 5844 24 00 2C2E2B20311F212E00 "producer[END]" ; referenced at 7e5d4a 7E/65A5: CE44 20 00 090A13100F1003160114020C02081604090A00 "HIRONOBU SAKAGUCHI[END]" ; referenced at 7e5d50 7E/65BC: 5844 24 01 20252E211F302B2E00 "director[END]" ; referenced at 7e5d53 7E/65C9: D044 20 01 1A1014090A0F10130A010C0A15021406FE01090A13101A160C0A010A15101600 "YOSHINORI KITASE<\n> HIROYUKI ITOU[END]" ; referenced at 7e5d59 7E/65ED: 5044 24 02 291D252A012C2E2B232E1D2929212E00 "main programmer[END]" ; referenced at 7e5d5c 7E/6601: D244 20 02 01010C060F010F02130A1502FE0C0A1A1014090A011A1014090A0A00 " KEN NARITA<\n>KIYOSHI YOSHII[END]" ; referenced at 7e5d62, 7e5d6b 7E/6621: 5044 24 03 232E1D2C24251F0120252E211F302B2E00 "graphic director[END]" ; referenced at 7e5d65 7E/6636: CE44 20 03 15061514161A020115020C02090214090AFE01010C021B160C100114090A03161A0200 "TETSUYA TAKAHASHI<\n> KAZUKO SHIBUYA[END]" ; referenced at 7e5d6e 7E/665D: D244 20 00 01090A050610010E0A0F020302FE15061514161A02010F100E16130200 " HIDEO MINABA<\n>TETSUYA NOMURA[END]" ; referenced at 7e5d74 7E/667E: 5A44 24 00 29312F251F00 "music[END]" ; referenced at 7e5d77 7E/6688: D244 20 00 0F100316100116060E0215141600 "NOBUO UEMATSU[END]" ; referenced at 7e5d7d 7E/669A: 5244 24 03 25291D23210120212F25232A212E00 "image designer[END]" ; referenced at 7e5d80 7E/66AD: D044 20 03 1A1014090A15020C0201020E020F1000 "YOSHITAKA AMANO[END]" ; referenced at 7e5d86 7E/66C1: 5244 24 04 1E1D30302821012C281D2A2A212E00 "battle planner[END]" ; referenced at 7e5d89 7E/66D4: D044 20 04 1A0214161A160C0A01090214060306FE01020C0A1A1014090A011010150200 "YASUYUKI HASEBE<\n> AKIYOSHI OOTA[END]" ; referenced at 7e5d8f, 7e5d98 7E/66F7: 5244 24 05 2225212820012C281D2A2A212E00 "field planner[END]" ; referenced at 7e5d92 7E/6709: CE44 20 05 1A1014090A090A0C10010E02060C021802FE010101010C060A1502010615100900 "YOSHIHIKO MAEKAWA<\n> KEITA ETOH[END]" ; referenced at 7e5d9b 7E/672E: CE44 20 02 010101140215101316011514160B0AFE01090A0506151014090A010C061B160C0200 " SATORU TSUJI<\n> HIDETOSHI KEZUKA[END]" ; referenced at 7e5da1 7E/6754: 5244 24 06 2132212A30012C281D2A2A212E00 "event planner[END]" ; referenced at 7e5da4 7E/6766: CE44 20 06 01011514160C0214020107160B0A1502FE0C060A14160C06010E021514160902130200 " TSUKASA FUJITA<\n>KEISUKE MATSUHARA[END]" ; referenced at 7e5daa 7E/678D: 4E44 24 06 212222211F30012C2E2B232E1D2929212E00 "effect programmer[END]" ; referenced at 7e5dad 7E/67A3: D244 20 06 090A131014090A01090213021502FE1402151014090A01100802150200 "HIROSHI HARATA<\n>SATOSHI OGATA[END]" ; referenced at 7e5db3 7E/67C4: 4E44 24 05 1E1D30302821012C2E2B232E1D2929212E00 "battle programmer[END]" ; referenced at 7e5db6 7E/67DA: CE44 20 05 020C0A090A1310011A020E02081604090A00 "AKIHIRO YAMAGUCHI[END]" ; referenced at 7e5dbc 7E/67F0: 5044 24 03 2F2B312A20012C2E2B232E1D2929212E00 "sound programmer[END]" ; referenced at 7e5dbf 7E/6805: D444 20 03 0E0A0F10131601020C021000 "MINORU AKAO[END]" ; referenced at 7e5dc5 7E/6815: 4844 24 02 212222211F3001232E1D2C24251F0120212F25232A212E00 "effect graphic designer[END]" ; referenced at 7e5dc8 7E/6831: D044 20 02 090A13100C0215141601140214020C0A00 "HIROKATSU SASAKI[END]" ; referenced at 7e5dce, 7e5dd7, 7e5de0 7E/6846: 4A44 24 04 222521282001232E1D2C24251F0120212F25232A212E00 "field graphic designer[END]" ; referenced at 7e5dd1 7E/6861: D044 20 03 15020C0209021316010E0215141610FE01011A1614160C06010F02101302FE010F1003161A160C0A010A0C06050200 "TAKAHARU MATSUO<\n> YUSUKE NAORA<\n> NOBUYUKI IKEDA[END]" ; referenced at 7e5dda 7E/6894: CE44 20 07 010115100E1006010A0F021B021802FE0101010C0210130A0115020F020C02FE15020C020E0A04090A0114090A03161A0200 " TOMOE INAZAWA<\n> KAORI TANAKA<\n>TAKAMICHI SHIBUYA[END]" ; referenced at 7e5de3 7E/68CA: CC44 20 01 14090A0F0A04090A1310160109020E0214020C02FE0101020C0A1A1014090A010E021416050200 "SHINICHIROU HAMASAKA<\n> AKIYOSHI MASUDA[END]" ; referenced at 7e5de9 7E/68F5: 4844 24 00 292B2A2F30212E01232E1D2C24251F0120212F25232A212E00 "monster graphic designer[END]" ; referenced at 7e5dec 7E/6912: D244 20 00 090A151014090A01140214020C0A00 "HITOSHI SASAKI[END]" ; referenced at 7e5df2 7E/6925: 4644 24 05 2B1E26211F3001232E1D2C24251F0120212F25232A212E00 "object graphic designer[END]" ; referenced at 7e5df5 7E/6941: CE44 20 05 0C021B16090A13100110090C02180200 "KAZUHIRO OHKAWA[END]" ; referenced at 7e5dfb 7E/6955: 5244 24 03 2F2B312A2001212A23252A21212E00 "sound engineer[END]" ; referenced at 7e5dfe 7E/6968: D244 20 03 060A0B0A010F020C020E16130200 "EIJI NAKAMURA[END]" ; referenced at 7e5e04 7E/697A: 5244 24 03 2E21291D2721012C281D2A2A212E00 "remake planner[END]" ; referenced at 7e5e07 7E/698D: D644 20 03 18060A0E0A0F010D0AFE01020A0C10010A151000 "WEIMIN LI<\n> AIKO ITO[END]" ; referenced at 7e5e0d 7E/69A5: 5844 24 03 302E1D2A2F281D302B2E00 "translator[END]" ; referenced at 7e5e10 7E/69B4: D644 20 03 150605011810100D14061A00 "TED WOOLSEY[END]"
; used by: floating island ; called by: 7e5006 7E/69C4: 08 PHP 7E/69C5: C230 REP #$30 7E/69C7: 48 PHA 7E/69C8: DA PHX 7E/69C9: 5A PHY 7E/69CA: 8B PHB 7E/69CB: 0B PHD 7E/69CC: 202F50 JSR $502F ; set data bank to #$7e, direct page to #$0000, $00 to #$0000, then register IRQ handlers 7E/69CF: 20E169 JSR $69E1 7E/69D2: 20106A JSR $6A10 7E/69D5: 204E50 JSR $504E ; set screen brightness, disable NMI, IRQ, DMA, HDMA 7E/69D8: C230 REP #$30 7E/69DA: 2B PLD 7E/69DB: AB PLB 7E/69DC: 7A PLY 7E/69DD: FA PLX 7E/69DE: 68 PLA 7E/69DF: 28 PLP 7E/69E0: 6B RTL
; used by: floating island ; called by: 7e69cf 7E/69E1: 201177 JSR $7711 ; common initialization of special registers 7E/69E4: 20F469 JSR $69F4 ; override default special register values for floating island 7E/69E7: 201578 JSR $7815 ; initialize values to be passed to special registers 7E/69EA: 204F78 JSR $784F ; write #$00 to VRAM $0000 - $8000 7E/69ED: 208574 JSR $7485 ; initialize more memory 7E/69F0: 20E56B JSR $6BE5 7E/69F3: 60 RTS
; override default special register values for floating island ; used by: floating island ; called by: 7e69e4 7E/69F4: 8B PHB 7E/69F5: A900 LDA #$00 7E/69F7: 48 PHA 7E/69F8: AB PLB 7E/69F9: A903 LDA #$03 7E/69FB: 8D0121 STA $2101 ; Object Size and Chr Address 7E/69FE: A600 LDX $00 7E/6A00: 8E0221 STX $2102 ; OAM Address low + high bytes 7E/6A03: A907 LDA #$07 7E/6A05: 8D0521 STA $2105 ; BG Mode and Character Size 7E/6A08: 7B TDC 7E/6A09: A980 LDA #$80 7E/6A0B: 8D1A21 STA $211A ; Mode 7 Settings 7E/6A0E: AB PLB 7E/6A0F: 60 RTS
; used by: floating island ; called by: 7e69d2, 7e6a20 7E/6A10: 7B TDC 7E/6A11: A519 LDA $19 ; jump table index for current routine 7E/6A13: 300D BMI $6A22 7E/6A15: 0A ASL A 7E/6A16: AA TAX 7E/6A17: FC3C6A JSR ($6A3C,X) 7E/6A1A: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/6A1D: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/6A20: 80EE BRA $6A10 ; called by: 7e6a13 7E/6A22: A00F00 LDY #$000F 7E/6A25: 8415 STY $15 7E/6A27: A900 LDA #$00 7E/6A29: A0A055 LDY #$55A0 7E/6A2C: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines ; called by: 7e6a39 7E/6A2F: A415 LDY $15 7E/6A31: F008 BEQ $6A3B 7E/6A33: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/6A36: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/6A39: 80F4 BRA $6A2F ; called by: 7e6a31 7E/6A3B: 60 RTS
; used by: floating island ; jump table for 7e6a17 7E/6A3C: 486A 7E/6A3E: 876A 7E/6A40: 9E6A 7E/6A42: AD6A 7E/6A44: BC6A 7E/6A46: C66A
; used by: floating island ; called by: 7e6a17 (X = #$00) 7E/6A48: 20C36B JSR $6BC3 7E/6A4B: A20031 LDX #$3100 7E/6A4E: A06574 LDY #$7465 7E/6A51: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/6A54: A20030 LDX #$3000 7E/6A57: A06574 LDY #$7465 7E/6A5A: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/6A5D: A20031 LDX #$3100 7E/6A60: A0D26C LDY #$6CD2 7E/6A63: A902 LDA #$02 7E/6A65: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/6A68: A20030 LDX #$3000 7E/6A6B: A0D26C LDY #$6CD2 7E/6A6E: A902 LDA #$02 7E/6A70: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/6A73: A900 LDA #$00 7E/6A75: A08C6B LDY #$6B8C 7E/6A78: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/6A7B: E619 INC $19 ; jump table index for current routine 7E/6A7D: A90F LDA #$0F 7E/6A7F: 8532 STA $32 ; screen brightness 7E/6A81: A01000 LDY #$0010 7E/6A84: 8415 STY $15 7E/6A86: 60 RTS
; used by: floating island ; called by: 7e6a17 (X = #$02) 7E/6A87: A415 LDY $15 7E/6A89: D00F BNE $6A9A 7E/6A8B: E619 INC $19 ; jump table index for current routine 7E/6A8D: A05802 LDY #$0258 7E/6A90: 8415 STY $15 7E/6A92: A900 LDA #$00 7E/6A94: A0186B LDY #$6B18 7E/6A97: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines ; called by: 7e6a89 7E/6A9A: 20CF6A JSR $6ACF 7E/6A9D: 60 RTS
; used by: floating island ; called by: 7e6a17 (X = #$04) 7E/6A9E: A415 LDY $15 7E/6AA0: D007 BNE $6AA9 7E/6AA2: E619 INC $19 ; jump table index for current routine 7E/6AA4: A03C00 LDY #$003C 7E/6AA7: 8415 STY $15 ; called by: 7e6aa0 7E/6AA9: 20CF6A JSR $6ACF 7E/6AAC: 60 RTS
; used by: floating island ; called by: 7e6a17 (X = #$06) 7E/6AAD: A415 LDY $15 7E/6AAF: D007 BNE $6AB8 7E/6AB1: E619 INC $19 ; jump table index for current routine 7E/6AB3: A00100 LDY #$0001 7E/6AB6: 8415 STY $15 ; called by: 7e6aaf 7E/6AB8: 20CF6A JSR $6ACF 7E/6ABB: 60 RTS
; used by: floating island ; called by: 7e6a17 (X = #$08) 7E/6ABC: A415 LDY $15 7E/6ABE: D002 BNE $6AC2 7E/6AC0: E619 INC $19 ; jump table index for current routine ; called by: 7e6abe 7E/6AC2: 20CF6A JSR $6ACF 7E/6AC5: 60 RTS
; used by: floating island ; called by: 7e6a17 (X = #$0a) 7E/6AC6: A9FF LDA #$FF 7E/6AC8: 8519 STA $19 ; jump table index for current routine 7E/6ACA: 7B TDC 7E/6ACB: 8D0002 STA $0200 7E/6ACE: 60 RTS
; used by: floating island ; called by: 7e6a9a, 7e6aa9, 7e6ab8, 7e6ac2 7E/6ACF: A53F LDA $3F 7E/6AD1: 8F1F2100 STA $00211F ; Mode 7 Center X 7E/6AD5: A540 LDA $40 7E/6AD7: 8F1F2100 STA $00211F ; Mode 7 Center X 7E/6ADB: A541 LDA $41 7E/6ADD: 8F202100 STA $002120 ; Mode 7 Center Y 7E/6AE1: A542 LDA $42 7E/6AE3: 8F202100 STA $002120 ; Mode 7 Center Y 7E/6AE7: A544 LDA $44 7E/6AE9: 8F1B2100 STA $00211B ; Mode 7 Matrix A 7E/6AED: A545 LDA $45 7E/6AEF: 8F1B2100 STA $00211B ; Mode 7 Matrix A 7E/6AF3: A546 LDA $46 7E/6AF5: 8F1C2100 STA $00211C ; Mode 7 Matrix B 7E/6AF9: A547 LDA $47 7E/6AFB: 8F1C2100 STA $00211C ; Mode 7 Matrix B 7E/6AFF: A548 LDA $48 7E/6B01: 8F1D2100 STA $00211D ; Mode 7 Matrix C 7E/6B05: A549 LDA $49 7E/6B07: 8F1D2100 STA $00211D ; Mode 7 Matrix C 7E/6B0B: A54A LDA $4A 7E/6B0D: 8F1E2100 STA $00211E ; Mode 7 Matrix D 7E/6B11: A54B LDA $4B 7E/6B13: 8F1E2100 STA $00211E ; Mode 7 Matrix D 7E/6B17: 60 RTS
; used by: floating island ; called by: 7e755c ; written to routine array by 7e6a94 7E/6B18: AA TAX 7E/6B19: 7C1C6B JMP ($6B1C,X)
; used by: floating island ; jump table for 7e6b19 7E/6B1C: 206B 7E/6B1E: 516B
; used by: floating island ; called by: 7e6b19 (X = #$00) 7E/6B20: A61D LDX $1D 7E/6B22: FE003A INC $3A00,X 7E/6B25: A980 LDA #$80 7E/6B27: 8F302100 STA $002130 ; Color Addition Select (clip inside window only, allow math) 7E/6B2B: A957 LDA #$57 7E/6B2D: 8F312100 STA $002131 ; Color math designation (add colors, half math, enable BG 1, 2, 3, and OBJ) 7E/6B31: A917 LDA #$17 7E/6B33: 8F2C2100 STA $00212C ; Main Screen Designation (enable BG1, 2, 3 and OBJ) 7E/6B37: A917 LDA #$17 7E/6B39: 8F2D2100 STA $00212D ; Subscreen Designation (enable BG1, 2, 3, and OBJ) 7E/6B3D: A988 LDA #$88 7E/6B3F: 9D0133 STA $3301,X 7E/6B42: A920 LDA #$20 7E/6B44: 9D0233 STA $3302,X 7E/6B47: A942 LDA #$42 7E/6B49: 9D0134 STA $3401,X 7E/6B4C: A920 LDA #$20 7E/6B4E: 9D0036 STA $3600,X ; used by: floating island ; called by: 7e6b19 (X = #$02) 7E/6B51: A61D LDX $1D 7E/6B53: BD0036 LDA $3600,X 7E/6B56: D02F BNE $6B87 7E/6B58: BD0133 LDA $3301,X 7E/6B5B: C997 CMP #$97 7E/6B5D: B007 BCS $6B66 7E/6B5F: 8F322100 STA $002132 ; Fixed Color Data 7E/6B63: FE0133 INC $3301,X ; called by: 7e6b5d 7E/6B66: BD0233 LDA $3302,X 7E/6B69: C98F CMP #$8F 7E/6B6B: B007 BCS $6B74 7E/6B6D: 8F322100 STA $002132 ; Fixed Color Data 7E/6B71: FE0233 INC $3302,X ; called by: 7e6b6b 7E/6B74: BD0134 LDA $3401,X 7E/6B77: C991 CMP #$91 7E/6B79: B007 BCS $6B82 7E/6B7B: 8F322100 STA $002132 ; Fixed Color Data 7E/6B7F: FE0134 INC $3401,X ; called by: 7e6b79 7E/6B82: A920 LDA #$20 7E/6B84: 9D0036 STA $3600,X ; called by: 7e6b56 7E/6B87: DE0036 DEC $3600,X 7E/6B8A: 38 SEC 7E/6B8B: 60 RTS
; used by: floating island ; called by: 7e755c ; written to routine array by 7e6a75 7E/6B8C: 209D6B JSR $6B9D 7E/6B8F: A518 LDA $18 ; number of IRQs processed? 7E/6B91: 2907 AND #$07 7E/6B93: D006 BNE $6B9B 7E/6B95: C220 REP #$20 7E/6B97: E627 INC $27 7E/6B99: E220 SEP #$20 ; called by: 7e6b93 7E/6B9B: 38 SEC 7E/6B9C: 60 RTS
; used by: floating island ; called by: 7e6b8c 7E/6B9D: A519 LDA $19 ; jump table index for current routine 7E/6B9F: C903 CMP #$03 7E/6BA1: F00A BEQ $6BAD 7E/6BA3: C904 CMP #$04 7E/6BA5: F00F BEQ $6BB6 7E/6BA7: A518 LDA $18 ; number of IRQs processed? 7E/6BA9: 2901 AND #$01 7E/6BAB: D008 BNE $6BB5 ; called by: 7e6ba1 7E/6BAD: C220 REP #$20 7E/6BAF: E644 INC $44 7E/6BB1: E64A INC $4A 7E/6BB3: E220 SEP #$20 ; called by: 7e6bab 7E/6BB5: 60 RTS ; called by: 7e6ba5 7E/6BB6: C220 REP #$20 7E/6BB8: E644 INC $44 7E/6BBA: E644 INC $44 7E/6BBC: E64A INC $4A 7E/6BBE: E64A INC $4A 7E/6BC0: E220 SEP #$20 7E/6BC2: 60 RTS
; used by: floating island ; called by: 7e6a48 7E/6BC3: A04000 LDY #$0040 7E/6BC6: 843F STY $3F 7E/6BC8: A02000 LDY #$0020 7E/6BCB: 8441 STY $41 7E/6BCD: A0A0FF LDY #$FFA0 7E/6BD0: 8425 STY $25 7E/6BD2: A0C0FF LDY #$FFC0 7E/6BD5: 8427 STY $27 7E/6BD7: 7B TDC 7E/6BD8: A8 TAY 7E/6BD9: 8446 STY $46 7E/6BDB: 8448 STY $48 7E/6BDD: A00100 LDY #$0001 7E/6BE0: 8444 STY $44 7E/6BE2: 844A STY $4A 7E/6BE4: 60 RTS
; used by: floating island ; called by: 7e69f0 7E/6BE5: A0964E LDY #$4E96 7E/6BE8: 84F3 STY $F3 7E/6BEA: A9D9 LDA #$D9 7E/6BEC: 85F5 STA $F5 7E/6BEE: A00000 LDY #$0000 7E/6BF1: 84F6 STY $F6 7E/6BF3: A97F LDA #$7F 7E/6BF5: 85F8 STA $F8 7E/6BF7: 226DFFC2 JSL $C2FF6D 7E/6BFB: A00000 LDY #$0000 7E/6BFE: 84E7 STY $E7 7E/6C00: A97F LDA #$7F 7E/6C02: 85E9 STA $E9 7E/6C04: A00098 LDY #$9800 7E/6C07: 84EB STY $EB 7E/6C09: A97F LDA #$7F 7E/6C0B: 85ED STA $ED 7E/6C0D: A0C007 LDY #$07C0 7E/6C10: 84EF STY $EF 7E/6C12: 20CC62 JSR $62CC ; copy $ef bytes from [$e7] to [$eb] 7E/6C15: A940 LDA #$40 7E/6C17: 85ED STA $ED 7E/6C19: A20098 LDX #$9800 7E/6C1C: A97F LDA #$7F 7E/6C1E: 207A6C JSR $6C7A 7E/6C21: 203D6C JSR $6C3D 7E/6C24: A000B8 LDY #$B800 7E/6C27: 84E7 STY $E7 7E/6C29: A97F LDA #$7F 7E/6C2B: 85E9 STA $E9 7E/6C2D: 64ED STZ $ED 7E/6C2F: 64EE STZ $EE 7E/6C31: A00020 LDY #$2000 7E/6C34: 84EB STY $EB 7E/6C36: A00000 LDY #$0000 7E/6C39: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/6C3C: 60 RTS
; used by: floating island ; called by: 7e6c21 7E/6C3D: 8B PHB 7E/6C3E: A97F LDA #$7F 7E/6C40: 48 PHA 7E/6C41: AB PLB 7E/6C42: 7B TDC 7E/6C43: AA TAX ; called by: 7e6c4c 7E/6C44: 9D00B8 STA $B800,X 7E/6C47: E8 INX 7E/6C48: E8 INX 7E/6C49: E00020 CPX #$2000 7E/6C4C: D0F6 BNE $6C44 7E/6C4E: 7B TDC 7E/6C4F: A8 TAY 7E/6C50: 84E7 STY $E7 7E/6C52: A90A LDA #$0A 7E/6C54: 85E0 STA $E0 ; called by: 7e6c76 7E/6C56: A920 LDA #$20 7E/6C58: 85E1 STA $E1 7E/6C5A: A6E7 LDX $E7 ; called by: 7e6c67 7E/6C5C: B9C007 LDA $07C0,Y 7E/6C5F: 9D00B8 STA $B800,X 7E/6C62: C8 INY 7E/6C63: E8 INX 7E/6C64: E8 INX 7E/6C65: C6E1 DEC $E1 7E/6C67: D0F3 BNE $6C5C 7E/6C69: C221 REP #$21 7E/6C6B: A5E7 LDA $E7 7E/6C6D: 690001 ADC #$0100 7E/6C70: 85E7 STA $E7 7E/6C72: E220 SEP #$20 7E/6C74: C6E0 DEC $E0 7E/6C76: D0DE BNE $6C56 7E/6C78: AB PLB 7E/6C79: 60 RTS
; used by: floating island ; called by: 7e6c1e 7E/6C7A: 85E9 STA $E9 7E/6C7C: 86E7 STX $E7 7E/6C7E: 8B PHB 7E/6C7F: A97F LDA #$7F 7E/6C81: 48 PHA 7E/6C82: AB PLB 7E/6C83: 7B TDC 7E/6C84: AA TAX ; called by: 7e6cce 7E/6C85: A908 LDA #$08 7E/6C87: 85E6 STA $E6 ; called by: 7e6cbd 7E/6C89: C220 REP #$20 7E/6C8B: A01000 LDY #$0010 7E/6C8E: A7E7 LDA [$E7] 7E/6C90: 85F1 STA $F1 7E/6C92: B7E7 LDA [$E7],Y 7E/6C94: 85EF STA $EF 7E/6C96: 7B TDC 7E/6C97: E220 SEP #$20 7E/6C99: A00800 LDY #$0008 ; called by: 7e6cb3 7E/6C9C: 7B TDC 7E/6C9D: 06F0 ASL $F0 7E/6C9F: 2A ROL A 7E/6CA0: 06EF ASL $EF 7E/6CA2: 2A ROL A 7E/6CA3: 06F2 ASL $F2 7E/6CA5: 2A ROL A 7E/6CA6: 06F1 ASL $F1 7E/6CA8: 2A ROL A 7E/6CA9: 290F AND #$0F 7E/6CAB: F000 BEQ $6CAD ; called by: 7e6cab 7E/6CAD: 9D01B8 STA $B801,X 7E/6CB0: E8 INX 7E/6CB1: E8 INX 7E/6CB2: 88 DEY 7E/6CB3: D0E7 BNE $6C9C 7E/6CB5: A4E7 LDY $E7 7E/6CB7: C8 INY 7E/6CB8: C8 INY 7E/6CB9: 84E7 STY $E7 7E/6CBB: C6E6 DEC $E6 7E/6CBD: D0CA BNE $6C89 7E/6CBF: C220 REP #$20 7E/6CC1: A5E7 LDA $E7 7E/6CC3: 18 CLC 7E/6CC4: 691000 ADC #$0010 7E/6CC7: 85E7 STA $E7 7E/6CC9: 7B TDC 7E/6CCA: E220 SEP #$20 7E/6CCC: C6ED DEC $ED 7E/6CCE: D0B5 BNE $6C85 7E/6CD0: AB PLB 7E/6CD1: 60 RTS
; data for 7e735a ; used by: floating island ; referenced at 7e6a60, 7e6a6b 7E/6CD2: 2F5E 7E/6CD4: 763E 7E/6CD6: 8E29 7E/6CD8: 0A21 7E/6CDA: C81C 7E/6CDC: 8614 7E/6CDE: 6414 7E/6CE0: 4310 7E/6CE2: 230C 7E/6CE4: 2204 7E/6CE6: 0000 7E/6CE8: 0000 7E/6CEA: 0000 7E/6CEC: 0000 7E/6CEE: 0000 7E/6CF0: A418
; used by: world tearing apart ; called by: 7e5009 7E/6CF2: 08 PHP 7E/6CF3: C230 REP #$30 7E/6CF5: 48 PHA 7E/6CF6: DA PHX 7E/6CF7: 5A PHY 7E/6CF8: 8B PHB 7E/6CF9: 0B PHD 7E/6CFA: 202F50 JSR $502F ; set data bank to #$7e, direct page to #$0000, $00 to #$0000, then register IRQ handlers 7E/6CFD: 200F6D JSR $6D0F 7E/6D00: 20476D JSR $6D47 7E/6D03: 204E50 JSR $504E ; set screen brightness, disable NMI, IRQ, DMA, HDMA 7E/6D06: C230 REP #$30 7E/6D08: 2B PLD 7E/6D09: AB PLB 7E/6D0A: 7A PLY 7E/6D0B: FA PLX 7E/6D0C: 68 PLA 7E/6D0D: 28 PLP 7E/6D0E: 6B RTL
; used by: world tearing apart ; called by: 7e6cfd 7E/6D0F: 201177 JSR $7711 ; common initialization of special registers 7E/6D12: 20226D JSR $6D22 ; override default special register values for world tearing apart 7E/6D15: 201578 JSR $7815 ; initialize values to be passed to special registers 7E/6D18: 204F78 JSR $784F ; write #$00 to VRAM $0000 - $8000 7E/6D1B: 208574 JSR $7485 ; initialize more memory 7E/6D1E: 20FB6F JSR $6FFB 7E/6D21: 60 RTS
; override default special register values for world tearing apart ; used by: world tearing apart ; called by: 7e6d12 7E/6D22: 8B PHB 7E/6D23: A900 LDA #$00 7E/6D25: 48 PHA 7E/6D26: AB PLB 7E/6D27: A903 LDA #$03 7E/6D29: 8D0121 STA $2101 ; Object Size and Chr Address 7E/6D2C: A982 LDA #$82 7E/6D2E: 8D3021 STA $2130 ; Color Addition Select (clip inside window only, allow math, add subscreen) 7E/6D31: A950 LDA #$50 7E/6D33: 8D3121 STA $2131 ; Color math designation (add colors, half math, enable OBJ) 7E/6D36: A917 LDA #$17 7E/6D38: 8D2C21 STA $212C ; Main Screen Designation (enable BG1, 2, 3 and OBJ) 7E/6D3B: A901 LDA #$01 7E/6D3D: 8D2D21 STA $212D ; Subscreen Designation (enable only BG1) 7E/6D40: A9E0 LDA #$E0 7E/6D42: 8D3221 STA $2132 ; Fixed Color Data 7E/6D45: AB PLB 7E/6D46: 60 RTS
; used by: world tearing apart ; called by: 7e6d00, 7e6d57 7E/6D47: 7B TDC 7E/6D48: A519 LDA $19 ; jump table index for current routine 7E/6D4A: 300D BMI $6D59 7E/6D4C: 0A ASL A 7E/6D4D: AA TAX 7E/6D4E: FC736D JSR ($6D73,X) 7E/6D51: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/6D54: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/6D57: 80EE BRA $6D47 ; called by: 7e6d4a 7E/6D59: A00F00 LDY #$000F 7E/6D5C: 8415 STY $15 7E/6D5E: A900 LDA #$00 7E/6D60: A0A055 LDY #$55A0 7E/6D63: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines ; called by: 7e6d70 7E/6D66: A415 LDY $15 7E/6D68: F008 BEQ $6D72 7E/6D6A: 200F75 JSR $750F ; execute routines in array at $3200-$32ff 7E/6D6D: 20FD71 JSR $71FD ; do NMI, IRQ, screen brightness, HDMA, and controller read 7E/6D70: 80F4 BRA $6D66 ; called by: 7e6d68 7E/6D72: 60 RTS
; used by: world tearing apart ; jump table for 7e6d4e 7E/6D73: 7D6D 7E/6D75: 276E 7E/6D77: 416E 7E/6D79: 746E 7E/6D7B: 816E
; used by: world tearing apart ; called by: 7e6d4e (X = #$00) 7E/6D7D: 6434 STZ $34 7E/6D7F: A980 LDA #$80 7E/6D81: 8535 STA $35 7E/6D83: A20030 LDX #$3000 7E/6D86: A06574 LDY #$7465 7E/6D89: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/6D8C: A28031 LDX #$3180 7E/6D8F: A06574 LDY #$7465 7E/6D92: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/6D95: A2A031 LDX #$31A0 7E/6D98: A06574 LDY #$7465 7E/6D9B: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/6D9E: A20030 LDX #$3000 7E/6DA1: A07D71 LDY #$717D 7E/6DA4: A904 LDA #$04 7E/6DA6: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/6DA9: A28031 LDX #$3180 7E/6DAC: A0BD71 LDY #$71BD 7E/6DAF: A904 LDA #$04 7E/6DB1: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/6DB4: A2A031 LDX #$31A0 7E/6DB7: A0DD71 LDY #$71DD 7E/6DBA: A904 LDA #$04 7E/6DBC: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/6DBF: A902 LDA #$02 7E/6DC1: A0FD6E LDY #$6EFD 7E/6DC4: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/6DC7: C220 REP #$20 7E/6DC9: A97A70 LDA #$707A 7E/6DCC: 9D0035 STA $3500,X 7E/6DCF: A9FCFF LDA #$FFFC 7E/6DD2: 9D0038 STA $3800,X 7E/6DD5: A90400 LDA #$0004 7E/6DD8: 9D0037 STA $3700,X 7E/6DDB: A96801 LDA #$0168 7E/6DDE: 9D0036 STA $3600,X 7E/6DE1: E220 SEP #$20 7E/6DE3: A972 LDA #$72 7E/6DE5: 9D0133 STA $3301,X 7E/6DE8: A980 LDA #$80 7E/6DEA: 9D0134 STA $3401,X 7E/6DED: A902 LDA #$02 7E/6DEF: A0FD6E LDY #$6EFD 7E/6DF2: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/6DF5: C220 REP #$20 7E/6DF7: A9A670 LDA #$70A6 7E/6DFA: 9D0035 STA $3500,X 7E/6DFD: A90400 LDA #$0004 7E/6E00: 9D0038 STA $3800,X 7E/6E03: A9FEFF LDA #$FFFE 7E/6E06: 9D0037 STA $3700,X 7E/6E09: A96801 LDA #$0168 7E/6E0C: 9D0036 STA $3600,X 7E/6E0F: E220 SEP #$20 7E/6E11: A950 LDA #$50 7E/6E13: 9D0133 STA $3301,X 7E/6E16: A9A0 LDA #$A0 7E/6E18: 9D0134 STA $3401,X 7E/6E1B: E619 INC $19 ; jump table index for current routine 7E/6E1D: A90F LDA #$0F 7E/6E1F: 8532 STA $32 ; screen brightness 7E/6E21: A0B400 LDY #$00B4 7E/6E24: 8415 STY $15 7E/6E26: 60 RTS
; used by: world tearing apart ; called by: 7e6d4e (X = #$02) 7E/6E27: A415 LDY $15 7E/6E29: D00F BNE $6E3A 7E/6E2B: E619 INC $19 ; jump table index for current routine 7E/6E2D: A03804 LDY #$0438 7E/6E30: 8415 STY $15 7E/6E32: A900 LDA #$00 7E/6E34: A08A6E LDY #$6E8A 7E/6E37: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines ; called by: 7e6e29 7E/6E3A: 20976F JSR $6F97 7E/6E3D: 204C6F JSR $6F4C 7E/6E40: 60 RTS
; used by: world tearing apart ; called by: 7e6d4e (X = #$04) 7E/6E41: A415 LDY $15 7E/6E43: D028 BNE $6E6D 7E/6E45: E619 INC $19 ; jump table index for current routine 7E/6E47: A0B400 LDY #$00B4 7E/6E4A: 8415 STY $15 7E/6E4C: A20030 LDX #$3000 7E/6E4F: A06574 LDY #$7465 7E/6E52: A908 LDA #$08 7E/6E54: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/6E57: A28031 LDX #$3180 7E/6E5A: A06574 LDY #$7465 7E/6E5D: A908 LDA #$08 7E/6E5F: 203A73 JSR $733A ; add $735a to array of routines and store its arguments 7E/6E62: A2A031 LDX #$31A0 7E/6E65: A06574 LDY #$7465 7E/6E68: A908 LDA #$08 7E/6E6A: 203A73 JSR $733A ; add $735a to array of routines and store its arguments ; called by: 7e6e43 7E/6E6D: 20976F JSR $6F97 7E/6E70: 204C6F JSR $6F4C 7E/6E73: 60 RTS
; used by: world tearing apart ; called by: 7e6d4e (X = #$06) 7E/6E74: A415 LDY $15 7E/6E76: D002 BNE $6E7A 7E/6E78: E619 INC $19 ; jump table index for current routine ; called by: 7e6e76 7E/6E7A: 20976F JSR $6F97 7E/6E7D: 204C6F JSR $6F4C 7E/6E80: 60 RTS
; used by: world tearing apart ; called by: 7e6d4e (X = #$08) 7E/6E81: A9FF LDA #$FF 7E/6E83: 8519 STA $19 ; jump table index for current routine 7E/6E85: 7B TDC 7E/6E86: 8D0002 STA $0200 7E/6E89: 60 RTS
; used by: world tearing apart ; called by: 7e755c ; written to routine array by 7e6e34 7E/6E8A: AA TAX 7E/6E8B: 7C8E6E JMP ($6E8E,X)
; used by: world tearing apart ; jump table for 7e6e8b 7E/6E8E: 926E 7E/6E90: 976E
; used by: world tearing apart ; called by: 7e6e8b (X = #$00) 7E/6E92: A61D LDX $1D 7E/6E94: FE003A INC $3A00,X ; used by: world tearing apart ; called by: 7e6e8b (X = #$02) 7E/6E97: A61D LDX $1D 7E/6E99: BD0036 LDA $3600,X 7E/6E9C: D039 BNE $6ED7 7E/6E9E: BC0039 LDY $3900,X 7E/6EA1: 5A PHY 7E/6EA2: A900 LDA #$00 7E/6EA4: A0DB76 LDY #$76DB 7E/6EA7: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/6EAA: 7A PLY 7E/6EAB: C220 REP #$20 7E/6EAD: A91971 LDA #$7119 7E/6EB0: 9D0035 STA $3500,X 7E/6EB3: E220 SEP #$20 7E/6EB5: B9E96E LDA $6EE9,Y 7E/6EB8: 9D0133 STA $3301,X 7E/6EBB: C8 INY 7E/6EBC: B9E96E LDA $6EE9,Y 7E/6EBF: 9D0134 STA $3401,X 7E/6EC2: C8 INY 7E/6EC3: C01400 CPY #$0014 7E/6EC6: F016 BEQ $6EDE 7E/6EC8: A61D LDX $1D 7E/6ECA: C220 REP #$20 7E/6ECC: 98 TYA 7E/6ECD: 9D0039 STA $3900,X 7E/6ED0: E220 SEP #$20 7E/6ED2: A910 LDA #$10 7E/6ED4: 9D0036 STA $3600,X ; called by: 7e6e9c 7E/6ED7: A61D LDX $1D 7E/6ED9: DE0036 DEC $3600,X 7E/6EDC: 38 SEC 7E/6EDD: 60 RTS ; called by: 7e6ec6 7E/6EDE: A28031 LDX #$3180 7E/6EE1: A09D71 LDY #$719D 7E/6EE4: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/6EE7: 18 CLC 7E/6EE8: 60 RTS
; data for 7e6eb5 and 7e6ebc (1 byte each) 7E/6EE9: 709D 7E/6EEB: 74A0 7E/6EED: 789E 7E/6EEF: 7C9D 7E/6EF1: 809C 7E/6EF3: 849F 7E/6EF5: 88A0 7E/6EF7: 8C9F 7E/6EF9: 90A4 7E/6EFB: 94A5
; used by: world tearing apart ; called by: 7e755c ; written to routine array by 7e6dc1, 7e6def 7E/6EFD: AA TAX 7E/6EFE: 7C016F JMP ($6F01,X)
; used by: world tearing apart ; jump table for 7e6efe 7E/6F01: 056F 7E/6F03: 156F
; used by: world tearing apart ; called by: 7e6efe (X = #$00) 7E/6F05: A61D LDX $1D 7E/6F07: FE003A INC $3A00,X 7E/6F0A: 205F75 JSR $755F ; stz to our $3b00, copy our $3500 to $eb, copy ($eb),#$2 to our $3b01 7E/6F0D: C220 REP #$20 7E/6F0F: A99402 LDA #$0294 7E/6F12: 9D0039 STA $3900,X ; used by: world tearing apart ; called by: 7e6efe (X = #$02) 7E/6F15: A61D LDX $1D 7E/6F17: BC0039 LDY $3900,X 7E/6F1A: F02B BEQ $6F47 7E/6F1C: BC0036 LDY $3600,X 7E/6F1F: D017 BNE $6F38 7E/6F21: C221 REP #$21 7E/6F23: BD0033 LDA $3300,X 7E/6F26: 7D0037 ADC $3700,X 7E/6F29: 9D0033 STA $3300,X 7E/6F2C: BD0034 LDA $3400,X 7E/6F2F: 18 CLC 7E/6F30: 7D0038 ADC $3800,X 7E/6F33: 9D0034 STA $3400,X 7E/6F36: E220 SEP #$20 ; called by: 7e6f1f 7E/6F38: C220 REP #$20 7E/6F3A: DE0039 DEC $3900,X 7E/6F3D: BD0036 LDA $3600,X 7E/6F40: F003 BEQ $6F45 7E/6F42: DE0036 DEC $3600,X ; called by: 7e6f40 7E/6F45: E220 SEP #$20 ; called by: 7e6f1a 7E/6F47: 208D75 JSR $758D 7E/6F4A: 38 SEC 7E/6F4B: 60 RTS
; used by: world tearing apart ; called by: 7e6e3d, 7e6e70, 7e6e7d 7E/6F4C: 20836F JSR $6F83 7E/6F4F: 291F AND #$1F 7E/6F51: D027 BNE $6F7A 7E/6F53: A900 LDA #$00 7E/6F55: A05A70 LDY #$705A 7E/6F58: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/6F5B: C220 REP #$20 7E/6F5D: A9F670 LDA #$70F6 7E/6F60: 9D0035 STA $3500,X 7E/6F63: E220 SEP #$20 7E/6F65: DA PHX 7E/6F66: 20836F JSR $6F83 7E/6F69: 2903 AND #$03 7E/6F6B: 0A ASL A 7E/6F6C: A8 TAY 7E/6F6D: FA PLX 7E/6F6E: B97B6F LDA $6F7B,Y 7E/6F71: 9D0133 STA $3301,X 7E/6F74: B97C6F LDA $6F7C,Y 7E/6F77: 9D0134 STA $3401,X ; called by: 7e6f51 7E/6F7A: 60 RTS
; data for 7e6f6e and 7e6f74 (1 byte each) 7E/6F7B: 729A 7E/6F7D: 7A92 7E/6F7F: 62AA 7E/6F81: 52BA
; used by: world tearing apart ; called by: 7e6f4c, 7e6f66, 7e6f97, 7e6fb1, 7e6fbd, 7e6fc9, 7e6fe3, 7e6fef 7E/6F83: 7B TDC 7E/6F84: E634 INC $34 7E/6F86: A534 LDA $34 7E/6F88: AA TAX 7E/6F89: BF00FDC0 LDA $C0FD00,X 7E/6F8D: 8535 STA $35 7E/6F8F: AA TAX 7E/6F90: BF00FDC0 LDA $C0FD00,X 7E/6F94: 6535 ADC $35 7E/6F96: 60 RTS
; used by: world tearing apart ; called by: 7e6e3a, 7e6e6d, 7e6e7a 7E/6F97: 20836F JSR $6F83 7E/6F9A: 2907 AND #$07 7E/6F9C: D02A BNE $6FC8 7E/6F9E: A900 LDA #$00 7E/6FA0: A05A70 LDY #$705A 7E/6FA3: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/6FA6: C220 REP #$20 7E/6FA8: A9DA70 LDA #$70DA 7E/6FAB: 9D0035 STA $3500,X 7E/6FAE: E220 SEP #$20 7E/6FB0: DA PHX 7E/6FB1: 20836F JSR $6F83 7E/6FB4: FA PLX 7E/6FB5: 293F AND #$3F 7E/6FB7: 6968 ADC #$68 7E/6FB9: 9D0133 STA $3301,X 7E/6FBC: DA PHX 7E/6FBD: 20836F JSR $6F83 7E/6FC0: FA PLX 7E/6FC1: 293F AND #$3F 7E/6FC3: 6998 ADC #$98 7E/6FC5: 9D0134 STA $3401,X ; called by: 7e6f9c 7E/6FC8: 60 RTS
; unknown - never actually executed? 7E/6FC9: 20836F JSR $6F83 7E/6FCC: 290F AND #$0F 7E/6FCE: D02A BNE $6FFA 7E/6FD0: A900 LDA #$00 7E/6FD2: A05A70 LDY #$705A 7E/6FD5: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines 7E/6FD8: C220 REP #$20 7E/6FDA: A94271 LDA #$7142 7E/6FDD: 9D0035 STA $3500,X 7E/6FE0: E220 SEP #$20 7E/6FE2: DA PHX 7E/6FE3: 20836F JSR $6F83 7E/6FE6: FA PLX 7E/6FE7: 291F AND #$1F 7E/6FE9: 6968 ADC #$68 7E/6FEB: 9D0133 STA $3301,X 7E/6FEE: DA PHX 7E/6FEF: 20836F JSR $6F83 7E/6FF2: FA PLX 7E/6FF3: 291F AND #$1F 7E/6FF5: 6998 ADC #$98 7E/6FF7: 9D0134 STA $3401,X ; called by: 7e6fce 7E/6FFA: 60 RTS
; used by: world tearing apart ; called by: 7e6d1e 7E/6FFB: A000E9 LDY #$E900 7E/6FFE: 84F3 STY $F3 7E/7000: A9EC LDA #$EC 7E/7002: 85F5 STA $F5 7E/7004: A00000 LDY #$0000 7E/7007: 84F6 STY $F6 7E/7009: A97F LDA #$7F 7E/700B: 85F8 STA $F8 7E/700D: 226DFFC2 JSL $C2FF6D 7E/7011: A00000 LDY #$0000 7E/7014: 84E7 STY $E7 7E/7016: A97F LDA #$7F 7E/7018: 85E9 STA $E9 7E/701A: 64ED STZ $ED 7E/701C: 64EE STZ $EE 7E/701E: A0E00F LDY #$0FE0 7E/7021: 84EB STY $EB 7E/7023: A00030 LDY #$3000 7E/7026: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/7029: A0E00F LDY #$0FE0 7E/702C: 84E7 STY $E7 7E/702E: A97F LDA #$7F 7E/7030: 85E9 STA $E9 7E/7032: 64ED STZ $ED 7E/7034: 64EE STZ $EE 7E/7036: A00007 LDY #$0700 7E/7039: 84EB STY $EB 7E/703B: A00000 LDY #$0000 7E/703E: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/7041: A0E016 LDY #$16E0 7E/7044: 84E7 STY $E7 7E/7046: A97F LDA #$7F 7E/7048: 85E9 STA $E9 7E/704A: 64ED STZ $ED 7E/704C: 64EE STZ $EE 7E/704E: A0E00D LDY #$0DE0 7E/7051: 84EB STY $EB 7E/7053: A00060 LDY #$6000 7E/7056: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/7059: 60 RTS
; used by: world tearing apart ; called by: 7e755c ; written to routine array by 7e6f55, 7e6fa0, 7e6fd2 7E/705A: AA TAX 7E/705B: 7C5E70 JMP ($705E,X)
; used by: world tearing apart ; jump table for 7e705b 7E/705E: 6270 7E/7060: 6A70
; used by: world tearing apart ; called by: 7e705b (X = #$00) 7E/7062: A61D LDX $1D 7E/7064: FE003A INC $3A00,X 7E/7067: 205F75 JSR $755F ; stz to our $3b00, copy our $3500 to $eb, copy ($eb),#$2 to our $3b01 ; used by: world tearing apart ; called by: 7e705b (X = #$02) 7E/706A: A61D LDX $1D 7E/706C: BD013B LDA $3B01,X 7E/706F: C9FE CMP #$FE 7E/7071: F005 BEQ $7078 7E/7073: 208D75 JSR $758D 7E/7076: 38 SEC 7E/7077: 60 RTS
; called by: 7e7071 7E/7078: 18 CLC 7E/7079: 60 RTS
; data for $3500,x ; used by: world tearing apart ; dereferenced from 7e5b45 7E/707A: 7D70FE
; probably dereferenced from 7e707a 7E/707D: 0A 7E/707E: 90 7E/707F: 00 7E/7080: 12 7E/7081: 38 7E/7082: A0 7E/7083: 00 7E/7084: 14 7E/7085: 38 7E/7086: B0 7E/7087: 00 7E/7088: 16 7E/7089: 38 7E/708A: 80 7E/708B: 10 7E/708C: 30 7E/708D: 38 7E/708E: 90 7E/708F: 10 7E/7090: 32 7E/7091: 38 7E/7092: A0 7E/7093: 10 7E/7094: 34 7E/7095: 38 7E/7096: B0 7E/7097: 10 7E/7098: 36 7E/7099: 38 7E/709A: 80 7E/709B: 20 7E/709C: 50 7E/709D: 38 7E/709E: 90 7E/709F: 20 7E/70A0: 52 7E/70A1: 38 7E/70A2: A0 7E/70A3: 20 7E/70A4: 54 7E/70A5: 38
; data for $3500,x ; used by: world tearing apart ; dereferenced from 7e6df7 7E/70A6: A970FE
; probably dereferenced from 7e70a6 7E/70A9: 0C 7E/70AA: 80 7E/70AB: 18 7E/70AC: 10 7E/70AD: 38 7E/70AE: 90 7E/70AF: 00 7E/70B0: 18 7E/70B1: 38 7E/70B2: A0 7E/70B3: 00 7E/70B4: 1A 7E/70B5: 38 7E/70B6: B0 7E/70B7: 00 7E/70B8: 1C 7E/70B9: 38 7E/70BA: C0 7E/70BB: 00 7E/70BC: 1E 7E/70BD: 38 7E/70BE: 90 7E/70BF: 10 7E/70C0: 38 7E/70C1: 38 7E/70C2: A0 7E/70C3: 10 7E/70C4: 3A 7E/70C5: 38 7E/70C6: B0 7E/70C7: 10 7E/70C8: 3C 7E/70C9: 38 7E/70CA: C0 7E/70CB: 10 7E/70CC: 3E 7E/70CD: 38 7E/70CE: A0 7E/70CF: 20 7E/70D0: 5A 7E/70D1: 38 7E/70D2: B0 7E/70D3: 20 7E/70D4: 5C 7E/70D5: 38 7E/70D6: C0 7E/70D7: 20 7E/70D8: 5E 7E/70D9: 38
; data for $3500,x ; used by: world tearing apart ; dereferenced from 7e6fa8 7E/70DA: E77008 7E/70DD: EC7008 7E/70E0: F17008 7E/70E3: E670FE
; probably dereferenced from 7e70e3 7E/70E6: 00 ; probably dereferenced from 7e70da 7E/70E7: 01 7E/70E8: 00 7E/70E9: 00 7E/70EA: 00 7E/70EB: 3A ; probably dereferenced from 7e70dd 7E/70EC: 01 7E/70ED: 00 7E/70EE: 00 7E/70EF: 01 7E/70F0: 3A ; probably dereferenced from 7e70e0 7E/70F1: 01 7E/70F2: 00 7E/70F3: 00 7E/70F4: 02 7E/70F5: 3A
; data for $3500,x ; used by: world tearing apart ; dereferenced from 7e6f5d 7E/70F6: 027108 7E/70F9: 077108 7E/70FC: 0C7108 7E/70FF: 0C71FE
; probably dereferenced from 7e70f6 7E/7102: 01 7E/7103: 04 7E/7104: 04 7E/7105: 03 7E/7106: 3A
; probably dereferenced from 7e70f9 7E/7107: 01 7E/7108: 02 7E/7109: 02 7E/710A: 04 7E/710B: 3A
; probably dereferenced from 7e70fc, 7e70ff 7E/710C: 03 7E/710D: 00 7E/710E: 00 7E/710F: 05 7E/7110: 3A 7E/7111: 08 7E/7112: 00 7E/7113: 06 7E/7114: 3A 7E/7115: 00 7E/7116: 08 7E/7117: 07 7E/7118: 3A
; data for $3500,x ; used by: world tearing apart ; dereferenced from 7e6ead 7E/7119: 2E7108 7E/711C: 337108 7E/711F: 387108 7E/7122: 3D7108 7E/7125: 387108 7E/7128: 337108 7E/712B: 2E71FF
; probably dereferenced from 7e7119, 7e712b 7E/712E: 01 7E/712F: 00 7E/7130: 00 7E/7131: 08 7E/7132: 3A
; probably dereferenced from 7e711c, 7e7128 7E/7133: 01 7E/7134: 00 7E/7135: 00 7E/7136: 09 7E/7137: 3A
; probably dereferenced from 7e711f, 7e7125 7E/7138: 01 7E/7139: 00 7E/713A: 00 7E/713B: 0A 7E/713C: 3A
; probably dereferenced from 7e7122 7E/713D: 01 7E/713E: 00 7E/713F: 00 7E/7140: 0B 7E/7141: 3A
; data for $3500,x ; used by: nothing? ; dereferenced from 7e6fda 7E/7142: 517108 7E/7145: 567108 7E/7148: 5F7108 7E/714B: 6C7108 7E/714E: 6C71FE
; used by: nothing? ; probably dereferenced from 7e7142 7E/7151: 01 7E/7152: 00 7E/7153: 00 7E/7154: 0C 7E/7155: 3A ; used by: nothing? ; probably dereferenced from 7e7145 7E/7156: 02 7E/7157: 00 7E/7158: 00 7E/7159: 0C 7E/715A: 3A 7E/715B: 08 7E/715C: 00 7E/715D: 0D 7E/715E: 3A ; used by: nothing? ; probably dereferenced from 7e7148 7E/715F: 03 7E/7160: 00 7E/7161: 00 7E/7162: 0C 7E/7163: 3A 7E/7164: 08 7E/7165: 00 7E/7166: 0D 7E/7167: 3A 7E/7168: 10 7E/7169: 00 7E/716A: 0E 7E/716B: 3A ; used by: nothing? ; probably dereferenced from 7e714b, 7e714e 7E/716C: 03 7E/716D: 00 7E/716E: 00 7E/716F: 0C 7E/7170: 3A 7E/7171: 08 7E/7172: 00 7E/7173: 0D 7E/7174: 3A 7E/7175: 10 7E/7176: 00 7E/7177: 0E 7E/7178: 3A
; unknown 7E/7179: 18 7E/717A: 00 7E/717B: 0F 7E/717C: 3A
; data for $3500,x ; used by: world tearing apart ; dereferenced from 7e6da1 7E/717D: E71C 7E/717F: BD7B 7E/7181: 7A77 7E/7183: 5877 7E/7185: 1773 7E/7187: D46E 7E/7189: 8F66 7E/718B: 4D62 7E/718D: E859 7E/718F: 864D 7E/7191: 253D 7E/7193: E330 7E/7195: A324 7E/7197: 821C 7E/7199: 6218 7E/719B: 4210
; used by: world tearing apart ; data for 7e6ee1 7E/719D: 00 7E/719E: 00 7E/719F: BF 7E/71A0: 26 7E/71A1: FF 7E/71A2: 01 7E/71A3: 95 7E/71A4: 42 7E/71A5: 32 7E/71A6: 36 7E/71A7: 11 7E/71A8: 32 7E/71A9: F0 7E/71AA: 2D 7E/71AB: CF 7E/71AC: 29 7E/71AD: AE 7E/71AE: 21 7E/71AF: 8D 7E/71B0: 1D 7E/71B1: 4B 7E/71B2: 19 7E/71B3: 09 7E/71B4: 15 7E/71B5: C8 7E/71B6: 10 7E/71B7: A6 7E/71B8: 0C 7E/71B9: 59 7E/71BA: 01 7E/71BB: B2 7E/71BC: 00
; data for $3500,x ; used by: world tearing apart ; dereferenced from 7e6dac 7E/71BD: 0000 7E/71BF: CF29 7E/71C1: AE21 7E/71C3: 9542 7E/71C5: 3236 7E/71C7: 1132 7E/71C9: F02D 7E/71CB: CF29 7E/71CD: AE21 7E/71CF: 8D1D 7E/71D1: 4B19 7E/71D3: 0915 7E/71D5: C810 7E/71D7: A60C 7E/71D9: CF29 7E/71DB: AE21
; data for $3500,x ; used by: world tearing apart ; dereferenced from 7e6db7 7E/71DD: 0000 7E/71DF: 7F47 7E/71E1: BF26 7E/71E3: FF01 7E/71E5: 5901 7E/71E7: B200 7E/71E9: 0000 7E/71EB: 0000 7E/71ED: 0000 7E/71EF: 0000 7E/71F1: 0000 7E/71F3: 0000 7E/71F5: 0000 7E/71F7: 0000 7E/71F9: 0000 7E/71FB: 0000
; used by: title screen, opening credits, floating island, world tearing apart ; we're done for now; let NMI and IRQ do their things, update screen brightness, do HDMA, read controller data ; called by: 7e50bb, 7e50d9, 7e5104, 7e511d, 7e5885, 7e58a3, 7e5a3f, 7e6a1d, 7e6a36, 7e6d54, 7e6d6d 7E/71FD: A981 LDA #$81 7E/71FF: 8F004200 STA $004200 ; enable NMI and auto-joypad read 7E/7203: 8517 STA $17 ; IRQ status 7E/7205: 58 CLI ; re-enable IRQ ; called by: 7e7208 7E/7206: A517 LDA $17 ; IRQ status 7E/7208: D0FC BNE $7206 ; wait until $17 becomes #$00 7E/720A: 78 SEI ; disable IRQ 7E/720B: A532 LDA $32 ; screen brightness 7E/720D: 8F002100 STA $002100 ; set screen brightness to $32 7E/7211: A531 LDA $31 ; which channels to use for HDMA 7E/7213: 8F0C4200 STA $00420C ; enable/disable HDMA channels 7E/7217: 201B72 JSR $721B ; check for new button presses 7E/721A: 60 RTS
; check for new button presses ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e7217 7E/721B: C220 REP #$20 7E/721D: A508 LDA $08 ; Controller Port 1 Data1 from second most recent read 7E/721F: 49FFFF EOR #$FFFF ; A now contains which buttons were *not* pressed 7E/7222: 2504 AND $04 ; logical AND with data from most recent read tells us which buttons are pressed from most recent read that were not pressed during second most recent read 7E/7224: 8506 STA $06 ; new button presses 7E/7226: A404 LDY $04 ; load Controller Port 1 Data1 from most recent read 7E/7228: 8408 STY $08 ; store to Controller Port 1 Data1 from second most recent read 7E/722A: AF184200 LDA $004218 ; read Controller Port 1 Data1 Register low + high bytes 7E/722E: 8504 STA $04 ; Controller Port 1 Data1 from most recent read 7E/7230: E220 SEP #$20 7E/7232: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; IRQ handler for updating screen ; installed by 7e5062 7E/7233: 08 PHP 7E/7234: C230 REP #$30 7E/7236: 48 PHA 7E/7237: DA PHX 7E/7238: 5A PHY 7E/7239: 8B PHB 7E/723A: 0B PHD 7E/723B: E220 SEP #$20 7E/723D: AD1042 LDA $4210 ; read on $4210 also clears it 7E/7240: A900 LDA #$00 7E/7242: 48 PHA 7E/7243: AB PLB 7E/7244: A20000 LDX #$0000 7E/7247: DA PHX 7E/7248: 2B PLD 7E/7249: A517 LDA $17 ; IRQ status 7E/724B: F00C BEQ $7259 7E/724D: 206572 JSR $7265 ; BG, OAM, CGRAM, VRAM updates 7E/7250: A415 LDY $15 ; not sure what $15 means 7E/7252: F003 BEQ $7257 7E/7254: 88 DEY 7E/7255: 8415 STY $15 ; called by: 7e7252 7E/7257: E618 INC $18 ; number of IRQs processed? ; called by: 7e724b 7E/7259: 6417 STZ $17 ; IRQ status - 7e7208 waits for this to be #$00 7E/725B: C230 REP #$30 7E/725D: 2B PLD 7E/725E: AB PLB 7E/725F: 7A PLY 7E/7260: FA PLX 7E/7261: 68 PLA 7E/7262: 28 PLP 7E/7263: 40 RTI
; IRQ handler for doing nothing ; used by: title screen, opening credits, floating island, world tearing apart ; installed by 7e5062 7E/7264: 40 RTI
; happens during IRQ; 8-bit A, 16-bit X, Y ; do BG, OAM, CGRAM, VRAM updates ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e724d 7E/7265: 9C0C42 STZ $420C ; disable HDMA 7E/7268: 9C0B42 STZ $420B ; disable DMA 7E/726B: A525 LDA $25 ; BG1HOFS low byte 7E/726D: 8D0D21 STA $210D 7E/7270: A526 LDA $26 ; BG1HOFS high byte 7E/7272: 8D0D21 STA $210D 7E/7275: A527 LDA $27 ; BG1VOFS low byte 7E/7277: 8D0E21 STA $210E 7E/727A: A528 LDA $28 ; BG1VOFS high byte 7E/727C: 8D0E21 STA $210E 7E/727F: A529 LDA $29 ; BG2HOFS low byte 7E/7281: 8D0F21 STA $210F 7E/7284: A52A LDA $2A ; BG2HOFS high byte 7E/7286: 8D0F21 STA $210F 7E/7289: A52B LDA $2B ; BG2VOFS low byte 7E/728B: 8D1021 STA $2110 7E/728E: A52C LDA $2C ; BG2VOFS high byte 7E/7290: 8D1021 STA $2110 7E/7293: A52D LDA $2D ; BG3HOFS low byte 7E/7295: 8D1121 STA $2111 7E/7298: A52E LDA $2E ; BG3HOFS high byte 7E/729A: 8D1121 STA $2111 7E/729D: A52F LDA $2F ; BG3VOFS low byte 7E/729F: 8D1221 STA $2112 7E/72A2: A530 LDA $30 ; BG3VOFS high byte 7E/72A4: 8D1221 STA $2112 7E/72A7: 20B072 JSR $72B0 ; do OAM DMA 7E/72AA: 20FE72 JSR $72FE ; do palette DMA 7E/72AD: 4CD572 JMP $72D5 ; do VRAM DMA, ends with rts
; OAM DMA ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e72a7 7E/72B0: A600 LDX $00 7E/72B2: 8E0221 STX $2102 ; set OAM address and priority to $00 7E/72B5: 8A TXA 7E/72B6: 8D0443 STA $4304 ; DMA channel 0: from bank $00 7E/72B9: A902 LDA #$02 7E/72BB: 8D0043 STA $4300 ; DMA channel 0: CPU -> PPU, auto-increment, 1 register write twice 7E/72BE: A904 LDA #$04 7E/72C0: 8D0143 STA $4301 ; DMA channel 0: to $002104 (OAM data) 7E/72C3: A00003 LDY #$0300 7E/72C6: 8C0243 STY $4302 ; DMA channel 0: from $0300 7E/72C9: A02002 LDY #$0220 7E/72CC: 8C0543 STY $4305 ; DMA channel 0: copy #$220 bytes 7E/72CF: A901 LDA #$01 7E/72D1: 8D0B42 STA $420B ; do DMA channel 0 7E/72D4: 60 RTS
; VRAM DMA ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e72ad 7E/72D5: A410 LDY $10 ; VRAM address 7E/72D7: C0FFFF CPY #$FFFF ; if $10 is #$ffff, then skip VRAM DMA 7E/72DA: F021 BEQ $72FD 7E/72DC: 8C1621 STY $2116 ; set VRAM address to $10 7E/72DF: A901 LDA #$01 7E/72E1: 8D0043 STA $4300 ; DMA channel 0: CPU -> PPU, auto-increment, 2 registers write once 7E/72E4: A918 LDA #$18 7E/72E6: 8D0143 STA $4301 ; DMA channel 0: to $002118 (VRAM data) 7E/72E9: A412 LDY $12 7E/72EB: 8C0243 STY $4302 ; DMA Source Address for Channel 0 low/high bytes: from $12 7E/72EE: A514 LDA $14 7E/72F0: 8D0443 STA $4304 ; DMA Source Address for Channel 0 bank byte: from bank $14 7E/72F3: A40E LDY $0E 7E/72F5: 8C0543 STY $4305 ; DMA channel 0: copy $0e bytes 7E/72F8: A901 LDA #$01 7E/72FA: 8D0B42 STA $420B ; do DMA channel 0 ; called by: 7e72da 7E/72FD: 60 RTS
; CGRAM (palette) DMA ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e72aa 7E/72FE: A500 LDA $00 7E/7300: 8D2121 STA $2121 ; set palette address to $00 7E/7303: A902 LDA #$02 7E/7305: 8D0043 STA $4300 ; DMA channel 0: CPU -> PPU, auto-increment, 1 register write twice 7E/7308: A922 LDA #$22 7E/730A: 8D0143 STA $4301 ; DMA channel 0: to $002122 (palette data) 7E/730D: A00030 LDY #$3000 7E/7310: 8C0243 STY $4302 ; DMA channel 0: from $3000 7E/7313: A97E LDA #$7E 7E/7315: 8D0443 STA $4304 ; DMA channel 0: from bank $7e 7E/7318: A00002 LDY #$0200 7E/731B: 8C0543 STY $4305 ; DMA channel 0: copy #$200 bytes 7E/731E: A901 LDA #$01 7E/7320: 8D0B42 STA $420B ; do DMA channel 0 7E/7323: 60 RTS
; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e515e, 7e5167, 7e5170, 7e51b4, 7e51bd, 7e51c6, 7e51cf, 7e51d8, 7e51e1, 7e51ea, 7e51f3, 7e51fc, 7e58d5, 7e58de, 7e58e7, 7e58f0, 7e58f9, 7e5902, 7e590b, 7e5914, 7e591d, 7e5926, 7e5cd2, 7e5cdd, 7e6a51, 7e6a5a, 7e6d89, 7e6d92, 7e6d9b, 7e6ee4, 7e7589 7E/7324: 86E7 STX $E7 7E/7326: 84EB STY $EB 7E/7328: A400 LDY $00 7E/732A: C220 REP #$20 ; 16-bit accumulator ; called by: 7e7335 7E/732C: B1EB LDA ($EB),Y 7E/732E: 91E7 STA ($E7),Y 7E/7330: C8 INY 7E/7331: C8 INY 7E/7332: C02000 CPY #$0020 7E/7335: D0F5 BNE $732C 7E/7337: E220 SEP #$20 ; 8-bit accumulator 7E/7339: 60 RTS
; add $735a to array of routines and store its arguments ; store X to $37, Y to $eb ; add $735a to array of routines ; store 8-bit A (jump table index) to $3901 + routine array index, X to $3300 + routine array index, Y to $3400 + routine array index ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e517b, 7e5186, 7e5191, 7e5207, 7e5212, 7e521d, 7e5228, 7e5233, 7e52ca, 7e52d5, 7e5302, 7e5352, 7e535d, 7e5368, 7e5373, 7e596c, 7e5977, 7e5982, 7e598d, 7e5998, 7e59a3, 7e59ae, 7e59b9, 7e59c4, 7e5d0d, 7e5d21, 7e6a65, 7e6a70, 7e6da6, 7e6db1, 7e6dbc, 7e6e54, 7e6e5f, 7e6e6a 7E/733A: 48 PHA 7E/733B: 86E7 STX $E7 7E/733D: 84EB STY $EB 7E/733F: A900 LDA #$00 7E/7341: A05A73 LDY #$735A 7E/7344: 20DC74 JSR $74DC ; add 16-bit address in Y to array of routines (does not change values of $e7 or $eb) 7E/7347: 68 PLA 7E/7348: 9D0139 STA $3901,X 7E/734B: C220 REP #$20 7E/734D: A5E7 LDA $E7 7E/734F: 9D0033 STA $3300,X 7E/7352: A5EB LDA $EB 7E/7354: 9D0034 STA $3400,X 7E/7357: E220 SEP #$20 7E/7359: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e755c ; written to routine array by 7e7341 7E/735A: AA TAX 7E/735B: 7C5E73 JMP ($735E,X)
; used by: title screen, opening credits, floating island, world tearing apart ; jump table for 7e735b 7E/735E: 6273 7E/7360: 7173
; store #$001f to $3600 + routine array index and increment our jump index ; used by: title screen, opening credits, floating island, world tearing apart ; called by: $7e735b (X = #$00) 7E/7362: A61D LDX $1D ; routine array index 7E/7364: A91F LDA #$1F 7E/7366: 9D0036 STA $3600,X 7E/7369: 9E0136 STZ $3601,X 7E/736C: FE003A INC $3A00,X ; increment our jump index 7E/736F: 38 SEC 7E/7370: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; called by: $7e735b (X = #$02) 7E/7371: A61D LDX $1D ; routine array index 7E/7373: BD0039 LDA $3900,X 7E/7376: D02B BNE $73A3 7E/7378: BD0139 LDA $3901,X 7E/737B: 9D0039 STA $3900,X 7E/737E: C220 REP #$20 ; 16-bit accumulator 7E/7380: BD0033 LDA $3300,X 7E/7383: 85E0 STA $E0 7E/7385: BD0034 LDA $3400,X 7E/7388: 85E3 STA $E3 7E/738A: BD0036 LDA $3600,X 7E/738D: 85F1 STA $F1 7E/738F: 20A873 JSR $73A8 7E/7392: E220 SEP #$20 ; 8-bit accumulator 7E/7394: AE1D00 LDX $001D ; routine array index - save a byte by ldx $1d? 7E/7397: BD0036 LDA $3600,X 7E/739A: F005 BEQ $73A1 7E/739C: DE0036 DEC $3600,X 7E/739F: D002 BNE $73A3 ; called by: 7e739a 7E/73A1: 18 CLC 7E/73A2: 60 RTS ; called by: 7e7376, 7e739f 7E/73A3: DE0039 DEC $3900,X 7E/73A6: 38 SEC 7E/73A7: 60 RTS
; copy ($e0),y to $e7, ($e3),y to $e9, jsr, copy the new $e7 to ($e0),y and repeat #$10 times ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e738f 7E/73A8: A21000 LDX #$0010 7E/73AB: A400 LDY $00 ; called by: 7e73bf 7E/73AD: B1E0 LDA ($E0),Y 7E/73AF: 85E7 STA $E7 7E/73B1: B1E3 LDA ($E3),Y 7E/73B3: 85E9 STA $E9 7E/73B5: 20C273 JSR $73C2 7E/73B8: A5E7 LDA $E7 7E/73BA: 91E0 STA ($E0),Y 7E/73BC: C8 INY 7E/73BD: C8 INY 7E/73BE: CA DEX 7E/73BF: D0EC BNE $73AD 7E/73C1: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e73b5 7E/73C2: A5E7 LDA $E7 7E/73C4: 291F00 AND #$001F 7E/73C7: 85EB STA $EB 7E/73C9: A5E9 LDA $E9 7E/73CB: 291F00 AND #$001F 7E/73CE: 38 SEC 7E/73CF: E5EB SBC $EB 7E/73D1: F00C BEQ $73DF 7E/73D3: 9008 BCC $73DD 7E/73D5: C5F1 CMP $F1 7E/73D7: 9006 BCC $73DF 7E/73D9: E6EB INC $EB 7E/73DB: 8002 BRA $73DF ; called by: 7e73d3 7E/73DD: C6EB DEC $EB ; called by: 7e73d1, 7e73d7, 7e73db 7E/73DF: A5E7 LDA $E7 7E/73E1: 29E003 AND #$03E0 7E/73E4: 85ED STA $ED 7E/73E6: A5E9 LDA $E9 7E/73E8: 29E003 AND #$03E0 7E/73EB: 38 SEC 7E/73EC: E5ED SBC $ED 7E/73EE: F01C BEQ $740C 7E/73F0: 9012 BCC $7404 7E/73F2: 0A ASL A 7E/73F3: 0A ASL A 7E/73F4: 0A ASL A 7E/73F5: EB XBA 7E/73F6: C5F1 CMP $F1 7E/73F8: 9012 BCC $740C 7E/73FA: 18 CLC 7E/73FB: A5ED LDA $ED 7E/73FD: 692000 ADC #$0020 7E/7400: 85ED STA $ED 7E/7402: 8008 BRA $740C ; called by: 7e73f0 7E/7404: A5ED LDA $ED 7E/7406: 38 SEC 7E/7407: E92000 SBC #$0020 7E/740A: 85ED STA $ED ; called by: 7e73ee, 7e73f8, 7e7402 7E/740C: A5E7 LDA $E7 7E/740E: 29007C AND #$7C00 7E/7411: 85EF STA $EF 7E/7413: A5E9 LDA $E9 7E/7415: 29007C AND #$7C00 7E/7418: 38 SEC 7E/7419: E5EF SBC $EF 7E/741B: F01F BEQ $743C 7E/741D: 9015 BCC $7434 7E/741F: E220 SEP #$20 7E/7421: EB XBA 7E/7422: 4A LSR A 7E/7423: 4A LSR A 7E/7424: C220 REP #$20 7E/7426: C5F1 CMP $F1 7E/7428: 9012 BCC $743C 7E/742A: 18 CLC 7E/742B: A5EF LDA $EF 7E/742D: 690004 ADC #$0400 7E/7430: 85EF STA $EF 7E/7432: 8008 BRA $743C ; called by: 7e741d 7E/7434: A5EF LDA $EF 7E/7436: 38 SEC 7E/7437: E90004 SBC #$0400 7E/743A: 85EF STA $EF ; called by: 7e741b, 7e7428, 7e7432 7E/743C: A5EB LDA $EB 7E/743E: 05ED ORA $ED 7E/7440: 05EF ORA $EF 7E/7442: 85E7 STA $E7 7E/7444: 60 RTS
; data for 7e735a ; used by: title screen ; referenced at 7e5181 7E/7445: 0000 7E/7447: FF7F 7E/7449: FF7F 7E/744B: FF7F 7E/744D: FF7F 7E/744F: FF7F 7E/7451: FF7F 7E/7453: FF7F 7E/7455: FF7F 7E/7457: FF7F 7E/7459: FF7F 7E/745B: FF7F 7E/745D: FF7F 7E/745F: FF7F 7E/7461: FF7F 7E/7463: FF7F
; data for 7e735a ; used by: title screen, opening credits, floating island, world tearing apart ; referenced at 7e515b, 7e5164, 7e516d, 7e51c3, 7e51d5, 7e51de, 7e51e7, 7e51f0, 7e51f9, 7e58d2, 7e58db, 7e58e4, 7e58ed, 7e58f6, 7e58ff, 7e5908, 7e5911, 7e591a, 7e5923, 7e5d1c, 7e6a4e, 7e6a57, 7e6d86, 7e6d8f, 7e6d98, 7e6e4f, 7e6e5a, 7e6e65 7E/7465: 0000 7E/7467: 0000 7E/7469: 0000 7E/746B: 0000 7E/746D: 0000 7E/746F: 0000 7E/7471: 0000 7E/7473: 0000 7E/7475: 0000 7E/7477: 0000 7E/7479: 0000 7E/747B: 0000 7E/747D: 0000 7E/747F: 0000 7E/7481: 0000 7E/7483: 0000
; used by: title screen, opening credits, floating island, world tearing apart ; initialize more memory ; stz $1d, $1f ; initialize $0300 - $051f ; stz $3200 - $34ff, $3700 - $3aff, $3c00 - $3cff ; called by: 7e508c, 7e512a, 7e5835, 7e58cc, 7e69ed, 7e6d1b 7E/7485: A600 LDX $00 7E/7487: 861D STX $1D 7E/7489: 861F STX $1F 7E/748B: C220 REP #$20 7E/748D: 20B774 JSR $74B7 ; initialize $0300 - $051f 7E/7490: E210 SEP #$10 7E/7492: 7B TDC 7E/7493: AA TAX ; called by: 7e74b0 7E/7494: 9E0032 STZ $3200,X 7E/7497: 9E003A STZ $3A00,X 7E/749A: 9E003C STZ $3C00,X 7E/749D: 9E0033 STZ $3300,X 7E/74A0: 9E0034 STZ $3400,X 7E/74A3: 9E0037 STZ $3700,X 7E/74A6: 9E0038 STZ $3800,X 7E/74A9: 9E0039 STZ $3900,X 7E/74AC: E8 INX 7E/74AD: E8 INX 7E/74AE: E000 CPX #$00 7E/74B0: D0E2 BNE $7494 7E/74B2: E220 SEP #$20 7E/74B4: C210 REP #$10 7E/74B6: 60 RTS
; used by: title screen, opening credits, world tearing apart ; initialize $0300 - $051f ; store #$e0010001 to $0300 - $04ff ; store $00 to $0500 - $051f ; called by: 7e748d 7E/74B7: 7B TDC 7E/74B8: AA TAX ; called by: 7e74cc 7E/74B9: A901E0 LDA #$E001 7E/74BC: 9D0003 STA $0300,X 7E/74BF: E8 INX 7E/74C0: E8 INX 7E/74C1: A90100 LDA #$0001 7E/74C4: 9D0003 STA $0300,X 7E/74C7: E8 INX 7E/74C8: E8 INX 7E/74C9: E00002 CPX #$0200 7E/74CC: D0EB BNE $74B9 7E/74CE: A400 LDY $00 7E/74D0: 98 TYA ; called by: 7e74d9 7E/74D1: 990005 STA $0500,Y 7E/74D4: C8 INY 7E/74D5: C8 INY 7E/74D6: C02000 CPY #$0020 7E/74D9: D0F6 BNE $74D1 7E/74DB: 60 RTS
; add 16-bit address in Y to array of routines ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e50cf, 7e5113, 7e523b, 7e524e, 7e5260, 7e5272, 7e52af, 7e52b7, 7e52bf, 7e530b, 7e5327, 7e5602, 7e5899, 7e5953, 7e59cc, 7e59d4, 7e59dc, 7e59fc, 7e5a1d, 7e5a5c, 7e5b17, 7e5cc2, 7e5f36, 7e6a2c, 7e6a78, 7e6a97, 7e6d63, 7e6dc4, 7e6df2, 7e6e37, 7e6ea7, 7e6f58, 7e6fa3, 7e6fd5, 7e7344 7E/74DC: 20E974 JSR $74E9 ; add 16-bit routine address in Y to array of routines 7E/74DF: E220 SEP #$20 ; 8-bit accumulator 7E/74E1: A51D LDA $1D ; routine array index 7E/74E3: 9D013C STA $3C01,X 7E/74E6: E61F INC $1F ; increment number of routines in array 7E/74E8: 60 RTS
; find first empty routine array index and store 16-bit address from Y there ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e74dc 7E/74E9: EB XBA 7E/74EA: A900 LDA #$00 7E/74EC: EB XBA ; was there a point to that, given that we're about to asl 5 times? 7E/74ED: 0A ASL A 7E/74EE: 0A ASL A 7E/74EF: 0A ASL A 7E/74F0: 0A ASL A 7E/74F1: 0A ASL A 7E/74F2: C220 REP #$20 ; 16-bit accumulator 7E/74F4: AA TAX ; called by: 7e7504 7E/74F5: BD0032 LDA $3200,X ; loop through $7e3200 - $7e3300 (array of subroutines) until we find a $0000, then store Y there 7E/74F8: D005 BNE $74FF 7E/74FA: 98 TYA 7E/74FB: 9D0032 STA $3200,X 7E/74FE: 60 RTS ; called by: 7e74f8 7E/74FF: E8 INX 7E/7500: E8 INX 7E/7501: E00001 CPX #$0100 ; is the array full? 7E/7504: D0EF BNE $74F5 ; if no, keep going ; never actually executed, which is a good thing since it creates an infinite loop! 7E/7506: CA DEX 7E/7507: CA DEX 7E/7508: 98 TYA 7E/7509: 9D0032 STA $3200,X ; called by: 7e750c 7E/750C: 80FE BRA $750C ; infinite loop 7E/750E: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; execute routines in array at $3200-$32ff ; called by: 7e50b8, 7e50d6, 7e5101, 7e511a, 7e5882, 7e58a0, 7e6a1a, 7e6a33, 7e6d51, 7e6d6a 7E/750F: A20003 LDX #$0300 7E/7512: 860A STX $0A 7E/7514: A20005 LDX #$0500 7E/7517: 860C STX $0C 7E/7519: A903 LDA #$03 7E/751B: 8523 STA $23 7E/751D: 6424 STZ $24 7E/751F: A28000 LDX #$0080 7E/7522: 8621 STX $21 7E/7524: A600 LDX $00 7E/7526: C220 REP #$20 ; called by: 7e7554 7E/7528: BD0032 LDA $3200,X ; check array of routines 7E/752B: F022 BEQ $754F ; is there a routine to execute? 7E/752D: 861D STX $1D ; yes there is! store routine array index to $1d 7E/752F: DA PHX ; and push to stack for good measure 7E/7530: 851B STA $1B ; store routine addr to $1b 7E/7532: E220 SEP #$20 ; set 8-bit accumulator 7E/7534: 7B TDC ; zero accumulator 7E/7535: BD003A LDA $3A00,X ; load 8-bit jump table index 7E/7538: 0A ASL A ; multiply by 2 since we have 2-byte addresses 7E/7539: 205C75 JSR $755C ; execute routine in $1b, which will set carry if it wants to stay in the array 7E/753C: C220 REP #$20 ; set 16-bit accumulator 7E/753E: FA PLX ; pull routine array index from stack 7E/753F: B00E BCS $754F ; if carry not set, clean some stuff up 7E/7541: 9E0032 STZ $3200,X ; clear routine array index 7E/7544: 9E003A STZ $3A00,X ; and corresponding jump table index 7E/7547: 9E003C STZ $3C00,X ; and whatever this is 7E/754A: 9E0039 STZ $3900,X ; and whatever this is 7E/754D: C61F DEC $1F ; dec number of routines in array ; called by: 7e752b, 7e753f 7E/754F: E8 INX ; move to next slot 7E/7550: E8 INX 7E/7551: E00001 CPX #$0100 ; are we at the end of the array of routines? 7E/7554: D0D2 BNE $7528 ; if not, go back and check the next slot 7E/7556: 208F76 JSR $768F ; otherwise, we're all done here, so go store #$e001 every 4 bytes $21 times ending at $04fc 7E/7559: E220 SEP #$20 7E/755B: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e7539 7E/755C: 6C1B00 JMP ($001B) ; execute routine from array
; stz to our $3b00, copy our $3500 to $eb, copy ($eb),#$2 to our $3b01 ; 8-bit accumulator, 16-bit index, X contains position of current routine in array (probably $1d) ; used by: title screen, opening credits, world tearing apart ; called by: 7e55e6, 7e5733, 7e5cf9, 7e5f8b, 7e6f0a, 7e7067, 7e76e8 7E/755F: 7B TDC 7E/7560: 9D003B STA $3B00,X ; position in pointer table? 7E/7563: C220 REP #$20 7E/7565: BD0035 LDA $3500,X 7E/7568: 85EB STA $EB 7E/756A: E220 SEP #$20 7E/756C: A00200 LDY #$0002 7E/756F: B1EB LDA ($EB),Y 7E/7571: 9D013B STA $3B01,X 7E/7574: 60 RTS
; used by: title screen ; called by: 7e561b 7E/7575: DA PHX 7E/7576: 209375 JSR $7593 7E/7579: E210 SEP #$10 7E/757B: BD003B LDA $3B00,X 7E/757E: A8 TAY 7E/757F: C220 REP #$20 7E/7581: B1EB LDA ($EB),Y 7E/7583: C210 REP #$10 7E/7585: A8 TAY 7E/7586: E220 SEP #$20 7E/7588: FA PLX 7E/7589: 202473 JSR $7324 ; store X to $e7, Y to $eb, and copy #$20 bytes of data from (Y) to (X) 7E/758C: 60 RTS
; used by: title screen, opening credits, world tearing apart ; called by: 7e573f, 7e5fbb, 7e6f47, 7e7073, 7e770a 7E/758D: 209375 JSR $7593 7E/7590: 4CDA75 JMP $75DA
; used by: title screen, opening credits, world tearing apart ; called by: 7e5d2d, 7e7576, 7e758d 7E/7593: A61D LDX $1D ; routine array index 7E/7595: A400 LDY $00 7E/7597: C220 REP #$20 7E/7599: BD0035 LDA $3500,X ; pointer address 7E/759C: 85EB STA $EB 7E/759E: E220 SEP #$20 ; called by: 7e75b1, 7e75c4 7E/75A0: BD013B LDA $3B01,X ; extra byte 7E/75A3: C9FE CMP #$FE 7E/75A5: F022 BEQ $75C9 ; if it's #$fe, we're done 7E/75A7: C9FF CMP #$FF 7E/75A9: D008 BNE $75B3 ; if it's #$ff... 7E/75AB: 9E003B STZ $3B00,X ; position in pointer table? 7E/75AE: 20CA75 JSR $75CA 7E/75B1: 80ED BRA $75A0 ; called by: 7e75a9 7E/75B3: BD013B LDA $3B01,X ; extra byte 7E/75B6: D00E BNE $75C6 ; if it's #$00... 7E/75B8: BD003B LDA $3B00,X ; position in pointer table 7E/75BB: 18 CLC 7E/75BC: 6903 ADC #$03 ; pointers are 3 bytes wide 7E/75BE: 9D003B STA $3B00,X ; position in pointer table 7E/75C1: 20CA75 JSR $75CA 7E/75C4: 80DA BRA $75A0 ; called by: 7e75b6 7E/75C6: DE013B DEC $3B01,X ; dec extra byte ; called by: 7e75a5 7E/75C9: 60 RTS
; used by: title screen, opening credits, world tearing apart ; called by: 7e75ae, 7e75c1 7E/75CA: E210 SEP #$10 7E/75CC: BD003B LDA $3B00,X ; position in pointer table? 7E/75CF: A8 TAY 7E/75D0: C8 INY 7E/75D1: C8 INY 7E/75D2: B1EB LDA ($EB),Y 7E/75D4: 9D013B STA $3B01,X 7E/75D7: C210 REP #$10 7E/75D9: 60 RTS
; used by: title screen, opening credits, world tearing apart ; called by: 7e7590 7E/75DA: E210 SEP #$10 7E/75DC: BD003B LDA $3B00,X ; position in pointer table? 7E/75DF: A8 TAY 7E/75E0: C220 REP #$20 7E/75E2: B1EB LDA ($EB),Y 7E/75E4: 85E7 STA $E7 7E/75E6: C8 INY 7E/75E7: C8 INY 7E/75E8: E220 SEP #$20 7E/75EA: C210 REP #$10 7E/75EC: A400 LDY $00 7E/75EE: A521 LDA $21 7E/75F0: F06A BEQ $765C 7E/75F2: B1E7 LDA ($E7),Y 7E/75F4: 85E6 STA $E6 7E/75F6: F064 BEQ $765C 7E/75F8: C8 INY ; called by: 7e765a 7E/75F9: B1E7 LDA ($E7),Y 7E/75FB: 85E0 STA $E0 7E/75FD: 1012 BPL $7611 7E/75FF: 7B TDC 7E/7600: A523 LDA $23 7E/7602: AA TAX 7E/7603: BD8B76 LDA $768B,X 7E/7606: 18 CLC 7E/7607: 6524 ADC $24 7E/7609: 8524 STA $24 7E/760B: 920C STA ($0C) 7E/760D: A61D LDX $1D ; routine array index 7E/760F: 8004 BRA $7615 ; called by: 7e75fd 7E/7611: A524 LDA $24 7E/7613: 920C STA ($0C) ; called by: 7e760f 7E/7615: A5E0 LDA $E0 7E/7617: 297F AND #$7F 7E/7619: 85E0 STA $E0 7E/761B: BD013A LDA $3A01,X 7E/761E: 8901 BIT #$01 7E/7620: F00D BEQ $762F 7E/7622: 64E1 STZ $E1 7E/7624: C220 REP #$20 7E/7626: A5E0 LDA $E0 7E/7628: 38 SEC 7E/7629: E525 SBC $25 7E/762B: 85E0 STA $E0 7E/762D: E220 SEP #$20 ; called by: 7e7620 7E/762F: 205D76 JSR $765D 7E/7632: C623 DEC $23 7E/7634: 100A BPL $7640 7E/7636: A903 LDA #$03 7E/7638: 8523 STA $23 7E/763A: 6424 STZ $24 7E/763C: C220 REP #$20 7E/763E: E60C INC $0C ; called by: 7e7634 7E/7640: C220 REP #$20 7E/7642: A5E0 LDA $E0 7E/7644: 920A STA ($0A) 7E/7646: E60A INC $0A 7E/7648: E60A INC $0A 7E/764A: A5E2 LDA $E2 7E/764C: 920A STA ($0A) 7E/764E: E60A INC $0A 7E/7650: E60A INC $0A 7E/7652: E220 SEP #$20 7E/7654: C621 DEC $21 7E/7656: F004 BEQ $765C 7E/7658: C6E6 DEC $E6 7E/765A: D09D BNE $75F9 ; called by: 7e75f0, 7e75f6, 7e7656 7E/765C: 60 RTS
; used by: title screen, opening credits, world tearing apart ; called by: 7e762f 7E/765D: A5E0 LDA $E0 7E/765F: 18 CLC 7E/7660: 7D0133 ADC $3301,X 7E/7663: 85E0 STA $E0 7E/7665: C8 INY 7E/7666: B1E7 LDA ($E7),Y 7E/7668: 18 CLC 7E/7669: 7D0134 ADC $3401,X 7E/766C: 85E1 STA $E1 7E/766E: C8 INY 7E/766F: B1E7 LDA ($E7),Y 7E/7671: 85E2 STA $E2 7E/7673: C8 INY 7E/7674: BD013A LDA $3A01,X 7E/7677: 8902 BIT #$02 7E/7679: F006 BEQ $7681 7E/767B: B1E7 LDA ($E7),Y 7E/767D: 0940 ORA #$40 7E/767F: 8002 BRA $7683 ; called by: 7e7679 7E/7681: B1E7 LDA ($E7),Y ; called by: 7e767f 7E/7683: 18 CLC 7E/7684: 7D003C ADC $3C00,X 7E/7687: 85E3 STA $E3 7E/7689: C8 INY 7E/768A: 60 RTS
; data for 7e7603 (1 byte each) 7E/768B: 80 7E/768C: 20 7E/768D: 08 7E/768E: 02
; store #$e001 every 4 bytes $21 times ending at $04fc ; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e7556 7E/768F: A421 LDY $21 7E/7691: F010 BEQ $76A3 ; is $21 #$00? 7E/7693: A2FC01 LDX #$01FC 7E/7696: A901E0 LDA #$E001 ; called by: 7e76a1 7E/7699: 9D0003 STA $0300,X 7E/769C: CA DEX 7E/769D: CA DEX 7E/769E: CA DEX 7E/769F: CA DEX 7E/76A0: 88 DEY 7E/76A1: D0F6 BNE $7699 ; called by: 7e7691 7E/76A3: 60 RTS
; unused code? 7E/76A4: A61D LDX $1D 7E/76A6: A400 LDY $00 7E/76A8: C220 REP #$20 7E/76AA: BD0035 LDA $3500,X 7E/76AD: 85EB STA $EB 7E/76AF: E220 SEP #$20 7E/76B1: BD013B LDA $3B01,X 7E/76B4: C9FE CMP #$FE 7E/76B6: F022 BEQ $76DA 7E/76B8: C9FF CMP #$FF 7E/76BA: D008 BNE $76C4 7E/76BC: 9E003B STZ $3B00,X 7E/76BF: 20CA75 JSR $75CA 7E/76C2: 80ED BRA $76B1 7E/76C4: BD013B LDA $3B01,X 7E/76C7: D00E BNE $76D7 7E/76C9: BD003B LDA $3B00,X 7E/76CC: 18 CLC 7E/76CD: 6903 ADC #$03 7E/76CF: 9D003B STA $3B00,X 7E/76D2: 20CA75 JSR $75CA 7E/76D5: 80DA BRA $76B1 7E/76D7: DE013B DEC $3B01,X 7E/76DA: 60 RTS
; used by: title screen, opening credits, world tearing apart ; called by: 7e755c ; written to routine array by 7e5308, 7e5324, 7e5f33, 7e6ea4 7E/76DB: AA TAX 7E/76DC: 7CDF76 JMP ($76DF,X)
; used by: title screen, opening credits, world tearing apart ; jump table for 7e76dc 7E/76DF: E376 7E/76E1: EB76
; used by: title screen, opening credits, world tearing apart ; called by: 7e76dc (X = #$00) 7E/76E3: A61D LDX $1D ; routine array index 7E/76E5: FE003A INC $3A00,X 7E/76E8: 205F75 JSR $755F ; stz to our $3b00, copy our $3500 to $eb, copy ($eb),#$2 to our $3b01 ; used by: title screen, opening credits, world tearing apart ; called by: 7e76dc (X = #$02) 7E/76EB: A533 LDA $33 7E/76ED: 8940 BIT #$40 7E/76EF: D01E BNE $770F 7E/76F1: A61D LDX $1D ; routine array index 7E/76F3: C221 REP #$21 7E/76F5: BD0033 LDA $3300,X 7E/76F8: 7D0037 ADC $3700,X 7E/76FB: 9D0033 STA $3300,X 7E/76FE: BD0034 LDA $3400,X 7E/7701: 18 CLC 7E/7702: 7D0038 ADC $3800,X 7E/7705: 9D0034 STA $3400,X 7E/7708: E220 SEP #$20 7E/770A: 208D75 JSR $758D 7E/770D: 38 SEC 7E/770E: 60 RTS
; called by: 7e76ef 7E/770F: 18 CLC 7E/7710: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; common initialization of special registers ; called by: 7e507f, 7e5813, 7e69e1, 7e6d0f 7E/7711: 8B PHB 7E/7712: A900 LDA #$00 7E/7714: 48 PHA 7E/7715: AB PLB 7E/7716: 7B TDC 7E/7717: A8 TAY 7E/7718: 8C8121 STY $2181 ; WRAM Address low + high bytes 7E/771B: 8C0221 STY $2102 ; OAM Address low + high bytes 7E/771E: 8D0421 STA $2104 ; OAM data 7E/7721: 8D0421 STA $2104 ; OAM data 7E/7724: 8D0621 STA $2106 ; MOSAIC 7E/7727: 8D0C42 STA $420C ; HDMA Enable (disable) 7E/772A: 8D0B42 STA $420B ; DMA Enable (disable) 7E/772D: 8D0D21 STA $210D ; BG1 Horizontal Scroll / Mode 7 BG Horizontal Scroll low byte 7E/7730: 8D0D21 STA $210D ; BG1 Horizontal Scroll / Mode 7 BG Horizontal Scroll high byte 7E/7733: 8D0E21 STA $210E ; BG1 Vertical Scroll / Mode 7 BG Vertical Scroll low byte 7E/7736: 8D0E21 STA $210E ; BG1 Vertical Scroll / Mode 7 BG Vertical Scroll high byte 7E/7739: 8D0F21 STA $210F ; BG2 Horizontal Scroll low byte 7E/773C: 8D0F21 STA $210F ; BG2 Horizontal Scroll high byte 7E/773F: 8D1021 STA $2110 ; BG2 Vertical Scroll low byte 7E/7742: 8D1021 STA $2110 ; BG2 Vertical Scroll high byte 7E/7745: 8D1121 STA $2111 ; BG3 Horizontal Scroll low byte 7E/7748: 8D1121 STA $2111 ; BG3 Horizontal Scroll high byte 7E/774B: 8D1221 STA $2112 ; BG3 Vertical Scroll low byte 7E/774E: 8D1221 STA $2112 ; BG3 Vertical Scroll high byte 7E/7751: 8D1321 STA $2113 ; BG4 Horizontal Scroll low byte 7E/7754: 8D1321 STA $2113 ; BG4 Horizontal Scroll high byte 7E/7757: 8D1421 STA $2114 ; BG4 Vertical Scroll low byte 7E/775A: 8D1421 STA $2114 ; BG4 Vertical Scroll high byte 7E/775D: 8C1621 STY $2116 ; VRAM Address low + high bytes 7E/7760: 8C1821 STY $2118 ; VRAM Data Write low + high bytes 7E/7763: 8D1A21 STA $211A ; Mode 7 Settings 7E/7766: 8D2121 STA $2121 ; CGRAM Address 7E/7769: 8D2221 STA $2122 ; CGRAM Data 7E/776C: 8D2221 STA $2122 ; CGRAM Data 7E/776F: 8D2321 STA $2123 ; Window Mask Settings for BG1 and BG2 7E/7772: 8D2421 STA $2124 ; Window Mask Settings for BG3 and BG4 7E/7775: 8D2521 STA $2125 ; Window Mask Settings for OBJ and Color Window 7E/7778: 8D2621 STA $2126 ; Window 1 Left Position 7E/777B: 8D2821 STA $2128 ; Window 2 Left Position 7E/777E: 8D2721 STA $2127 ; Window 1 Right Position 7E/7781: 8D2921 STA $2129 ; Window 2 Right Position 7E/7784: 8D2A21 STA $212A ; Window mask logic for BGs 7E/7787: 8D2B21 STA $212B ; Window mask logic for OBJs and Color Window 7E/778A: 8D2E21 STA $212E ; Window Mask Designation for the Main Screen 7E/778D: 8D2F21 STA $212F ; Window Mask Designation for the Subscreen 7E/7790: 8D3321 STA $2133 ; Screen Mode/Video Select 7E/7793: 8D0042 STA $4200 ; Interrupt Enable Flags (no NMI, IRQ, or auto joypad read) 7E/7796: 8D0242 STA $4202 ; Multiplicand A 7E/7799: 8D0342 STA $4203 ; Multiplicand B 7E/779C: 8D0442 STA $4204 ; Dividend C low byte 7E/779F: 8D0442 STA $4204 ; why twice? 7E/77A2: 8D0542 STA $4205 ; Dividend C high byte 7E/77A5: 8D0642 STA $4206 ; Divisor B 7E/77A8: 8D0742 STA $4207 ; H Timer low byte 7E/77AB: 8D0742 STA $4207 ; why twice? 7E/77AE: 8D0842 STA $4208 ; H Timer high byte 7E/77B1: 8D0942 STA $4209 ; V Timer low byte 7E/77B4: 8D0942 STA $4209 ; why twice? 7E/77B7: 8D0A42 STA $420A ; V Timer high byte 7E/77BA: 8D0B42 STA $420B ; DMA Enable (already disabled by 7e772a) 7E/77BD: 8D0C42 STA $420C ; HDMA Enable (already disabled by 7e7727) 7E/77C0: A963 LDA #$63 7E/77C2: 8D0121 STA $2101 ; Object Size and Chr Address 7E/77C5: A600 LDX $00 7E/77C7: 8E0221 STX $2102 ; OAM Address low + high bytes (previously set by 7e771b) 7E/77CA: A901 LDA #$01 7E/77CC: 8D0521 STA $2105 ; BG Mode and Character Size 7E/77CF: A903 LDA #$03 7E/77D1: 8D0721 STA $2107 ; BG1 Tilemap Address and Size 7E/77D4: A911 LDA #$11 7E/77D6: 8D0821 STA $2108 ; BG2 Tilemap Address and Size 7E/77D9: A919 LDA #$19 7E/77DB: 8D0921 STA $2109 ; BG3 Tilemap Address and Size 7E/77DE: 8D0A21 STA $210A ; BG4 Tilemap Address and Size 7E/77E1: A923 LDA #$23 7E/77E3: 8D0B21 STA $210B ; BG1 and 2 Chr Address 7E/77E6: A922 LDA #$22 7E/77E8: 8D0C21 STA $210C ; BG3 and 4 Chr Address 7E/77EB: A980 LDA #$80 7E/77ED: 8D1521 STA $2115 ; Video Port Control 7E/77F0: A9FF LDA #$FF 7E/77F2: 8D0142 STA $4201 ; Programmable I/O port (out-port) 7E/77F5: A97E LDA #$7E 7E/77F7: 8D8321 STA $2183 ; WRAM Address high bit 7E/77FA: A91F LDA #$1F 7E/77FC: 8D2C21 STA $212C ; Main Screen Designation (enable BG1-4 and OBJ) 7E/77FF: A904 LDA #$04 7E/7801: 8D2D21 STA $212D ; Subscreen Designation (enable only BG4) 7E/7804: A902 LDA #$02 7E/7806: 8D3021 STA $2130 ; Color Addition Select (no clip, allow math, add subscreen) 7E/7809: A942 LDA #$42 7E/780B: 8D3121 STA $2131 ; Color math designation (add colors, half math, enable BG 2) 7E/780E: A9E0 LDA #$E0 7E/7810: 8D3221 STA $2132 ; Fixed Color Data 7E/7813: AB PLB 7E/7814: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; initialize values to be passed to special registers ; jsr for more initialization ; called by: 7e5086, 7e582f, 7e69e7, 7e6d15 7E/7815: 7B TDC 7E/7816: A8 TAY 7E/7817: 8425 STY $25 ; BG1HOFS 7E/7819: 8427 STY $27 ; BG1VOFS 7E/781B: 8429 STY $29 ; BG2HOFS 7E/781D: 842B STY $2B ; BG2VOFS 7E/781F: 842D STY $2D ; BG3HOFS 7E/7821: 842F STY $2F ; BG3VOFS 7E/7823: 8415 STY $15 7E/7825: 8404 STY $04 ; Controller Port 1 Data1 from most recent read 7E/7827: 8406 STY $06 ; new Controller Port 1 Data1 7E/7829: 8408 STY $08 ; Controller Port 1 Data1 from second most recent read 7E/782B: 8533 STA $33 7E/782D: 8518 STA $18 ; number of IRQs processed? 7E/782F: 8519 STA $19 ; jump table index for current routine 7E/7831: 851A STA $1A 7E/7833: 8517 STA $17 ; IRQ status 7E/7835: 8531 STA $31 ; which channels to use for HDMA 7E/7837: 8532 STA $32 ; screen brightness 7E/7839: 8536 STA $36 7E/783B: 8412 STY $12 ; DMA Source Address for Channel 0 low/high bytes 7E/783D: 840E STY $0E ; DMA channel 0: number of bytes to copy 7E/783F: A97E LDA #$7E 7E/7841: 8514 STA $14 ; DMA Source Address for Channel 0 bank byte 7E/7843: A0FFFF LDY #$FFFF 7E/7846: 8410 STY $10 ; VRAM address (skip VRAM update) 7E/7848: 206478 JSR $7864 ; stz $3d00 - $477f 7E/784B: 207078 JSR $7870 ; store #$011f and #$0100 to some locations 7E/784E: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; write #$00 to VRAM $0000 - $8000 ; called by: 7e5089, 7e5832, 7e69ea, 7e6d18 7E/784F: C220 REP #$20 7E/7851: 7B TDC 7E/7852: 8F162100 STA $002116 ; VRAM Address low + high bytes 7E/7856: A8 TAY ; called by: 7e785f 7E/7857: 8F182100 STA $002118 ; VRAM Data Write low + high bytes 7E/785B: C8 INY 7E/785C: C00080 CPY #$8000 7E/785F: D0F6 BNE $7857 7E/7861: E220 SEP #$20 7E/7863: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e7848 ; stz $3d00 - $477f 7E/7864: 7B TDC 7E/7865: AA TAX ; called by: 7e786d 7E/7866: 9E003D STZ $3D00,X 7E/7869: E8 INX 7E/786A: E0800A CPX #$0A80 7E/786D: D0F7 BNE $7866 7E/786F: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; called by: 7e784b ; store #$011f every 4 bytes from $3d02 to $4081 (7e7864 has already set other bytes in this range to #$0000) ; store #$0100 every 4 bytes from $3dfc to $3f00 (7e7864 has already set other bytes in this range to #$0000) 7E/7870: C220 REP #$20 7E/7872: 7B TDC 7E/7873: AA TAX 7E/7874: A91F01 LDA #$011F ; called by: 7e7881 7E/7877: 9D023D STA $3D02,X 7E/787A: E8 INX 7E/787B: E8 INX 7E/787C: E8 INX 7E/787D: E8 INX 7E/787E: E08003 CPX #$0380 7E/7881: D0F4 BNE $7877 7E/7883: 7B TDC 7E/7884: AA TAX 7E/7885: A90001 LDA #$0100 ; called by: 7e7892 7E/7888: 9DFC3D STA $3DFC,X 7E/788B: E8 INX 7E/788C: E8 INX 7E/788D: E8 INX 7E/788E: E8 INX 7E/788F: E00401 CPX #$0104 7E/7892: D0F4 BNE $7888 7E/7894: E220 SEP #$20 7E/7896: 60 RTS
; used by: title screen ; called by: 7e529b 7E/7897: 8B PHB 7E/7898: A900 LDA #$00 7E/789A: 48 PHA 7E/789B: AB PLB 7E/789C: A943 LDA #$43 7E/789E: 8D2043 STA $4320 ; DMA Control for Channel 2 (PPU -> CPU, auto-increment, 2 registers write twice each) 7E/78A1: 8D3043 STA $4330 ; DMA Control for Channel 3 (PPU -> CPU, auto-increment, 2 registers write twice each) 7E/78A4: 8D4043 STA $4340 ; DMA Control for Channel 4 (PPU -> CPU, auto-increment, 2 registers write twice each) 7E/78A7: A97E LDA #$7E 7E/78A9: 8D2443 STA $4324 ; DMA Source Address for Channel 2 bank byte 7E/78AC: 8D3443 STA $4334 ; DMA Source Address for Channel 3 bank byte 7E/78AF: 8D4443 STA $4344 ; DMA Source Address for Channel 4 bank byte 7E/78B2: A97E LDA #$7E 7E/78B4: 8D2743 STA $4327 ; HDMA Indirect Address for Channel 2 bank byte 7E/78B7: 8D3743 STA $4337 ; HDMA Indirect Address for Channel 3 bank byte 7E/78BA: 8D4743 STA $4347 ; HDMA Indirect Address for Channel 4 bank byte 7E/78BD: A90D LDA #$0D 7E/78BF: 8D2143 STA $4321 ; DMA Destination Register for Channel 2 ($00210d, BG1 Horizontal Scroll) 7E/78C2: A0E478 LDY #$78E4 7E/78C5: 8C2243 STY $4322 ; DMA Source Address for Channel 2 low + high bytes 7E/78C8: A90F LDA #$0F 7E/78CA: 8D3143 STA $4331 ; DMA Destination Register for Channel 3 ($00210f, BG2 Horizontal Scroll) 7E/78CD: A0EB78 LDY #$78EB 7E/78D0: 8C3243 STY $4332 ; DMA Source Address for Channel 3 low + high bytes 7E/78D3: A911 LDA #$11 7E/78D5: 8D4143 STA $4341 ; DMA Destination Register for Channel 4 ($002111, BG3 Horizontal Scroll) 7E/78D8: A0F278 LDY #$78F2 7E/78DB: 8C4243 STY $4342 ; DMA Source Address for Channel 4 low + high bytes 7E/78DE: A91C LDA #$1C 7E/78E0: 0431 TSB $31 ; which channels to use for HDMA (enable 2-4, don't touch 0-1 and 5-7) 7E/78E2: AB PLB 7E/78E3: 60 RTS
; BG1 Horizontal Scroll ; used by: title screen ; referenced at 7e78c2 7E/78E4: E4 7E/78E5: 00 7E/78E6: 3D 7E/78E7: FB 7E/78E8: 90 7E/78E9: 3E 7E/78EA: 00
; BG2 Horizontal Scroll ; used by: title screen ; referenced at 7e78cd 7E/78EB: E4 7E/78EC: 80 7E/78ED: 40 7E/78EE: FB 7E/78EF: 10 7E/78F0: 42 7E/78F1: 00
; BG3 Horizontal Scroll ; used by: title screen ; referenced at 7e78d8 7E/78F2: E4 7E/78F3: 00 7E/78F4: 44 7E/78F5: FB 7E/78F6: 90 7E/78F7: 45 7E/78F8: 00 7E/78F9: 68
; used by: title screen ; called by: 7e508f 7E/78FA: 20017A JSR $7A01 ; decompress $d8f000 to $7f0000 7E/78FD: A03079 LDY #$7930 7E/7900: 84E7 STY $E7 7E/7902: A97F LDA #$7F 7E/7904: 85E9 STA $E9 7E/7906: A00002 LDY #$0200 7E/7909: 84EB STY $EB 7E/790B: A00014 LDY #$1400 7E/790E: 84ED STY $ED 7E/7910: A00019 LDY #$1900 7E/7913: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/7916: A0307B LDY #$7B30 7E/7919: 84E7 STY $E7 7E/791B: A97F LDA #$7F 7E/791D: 85E9 STA $E9 7E/791F: A0B006 LDY #$06B0 7E/7922: 84EB STY $EB 7E/7924: 64ED STZ $ED 7E/7926: 64EE STZ $EE 7E/7928: A00020 LDY #$2000 7E/792B: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/792E: A0E081 LDY #$81E0 7E/7931: 84E7 STY $E7 7E/7933: A97F LDA #$7F 7E/7935: 85E9 STA $E9 7E/7937: A00002 LDY #$0200 7E/793A: 84EB STY $EB 7E/793C: A08000 LDY #$0080 7E/793F: 84ED STY $ED 7E/7941: A00011 LDY #$1100 7E/7944: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/7947: A0C01B LDY #$1BC0 7E/794A: 84E7 STY $E7 7E/794C: A97F LDA #$7F 7E/794E: 85E9 STA $E9 7E/7950: A00018 LDY #$1800 7E/7953: 84EB STY $EB 7E/7955: 64ED STZ $ED 7E/7957: 64EE STZ $EE 7E/7959: A00000 LDY #$0000 7E/795C: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/795F: A0C033 LDY #$33C0 7E/7962: 84E7 STY $E7 7E/7964: A97F LDA #$7F 7E/7966: 85E9 STA $E9 7E/7968: A00042 LDY #$4200 7E/796B: 84EB STY $EB 7E/796D: 64ED STZ $ED 7E/796F: 64EE STZ $EE 7E/7971: A00040 LDY #$4000 7E/7974: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/7977: 7B TDC 7E/7978: AA TAX 7E/7979: C220 REP #$20 7E/797B: BFE1DADF LDA $DFDAE1,X 7E/797F: 18 CLC 7E/7980: 6900DB ADC #$DB00 7E/7983: 85E7 STA $E7 7E/7985: E8 INX 7E/7986: E8 INX 7E/7987: E220 SEP #$20 7E/7989: BFE1DADF LDA $DFDAE1,X 7E/798D: 69DF ADC #$DF 7E/798F: 85E9 STA $E9 7E/7991: A00020 LDY #$2000 7E/7994: 84EB STY $EB 7E/7996: 64ED STZ $ED 7E/7998: 64EE STZ $EE 7E/799A: A00030 LDY #$3000 7E/799D: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/79A0: A0E083 LDY #$83E0 7E/79A3: 84E7 STY $E7 7E/79A5: A97F LDA #$7F 7E/79A7: 85E9 STA $E9 7E/79A9: A00008 LDY #$0800 7E/79AC: 84EB STY $EB 7E/79AE: 64ED STZ $ED 7E/79B0: 64EE STZ $EE 7E/79B2: A00028 LDY #$2800 7E/79B5: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/79B8: 20337A JSR $7A33 ; write #$0777 to $0400 - $07ff and $0c00 - $0fff 7E/79BB: A0E08B LDY #$8BE0 7E/79BE: 84E7 STY $E7 7E/79C0: A97F LDA #$7F 7E/79C2: 85E9 STA $E9 7E/79C4: A00002 LDY #$0200 7E/79C7: 84EB STY $EB 7E/79C9: A07707 LDY #$0777 7E/79CC: 84ED STY $ED 7E/79CE: A00005 LDY #$0500 7E/79D1: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/79D4: A0E08D LDY #$8DE0 7E/79D7: 84E7 STY $E7 7E/79D9: A97F LDA #$7F 7E/79DB: 85E9 STA $E9 7E/79DD: A01011 LDY #$1110 7E/79E0: 84EB STY $EB 7E/79E2: 64ED STZ $ED 7E/79E4: 64EE STZ $EE 7E/79E6: A07067 LDY #$6770 7E/79E9: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/79EC: A0F09E LDY #$9EF0 7E/79EF: 84E7 STY $E7 7E/79F1: A97F LDA #$7F 7E/79F3: 85E9 STA $E9 7E/79F5: A0B80F LDY #$0FB8 7E/79F8: 84EB STY $EB 7E/79FA: A00070 LDY #$7000 7E/79FD: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$ bytes from $ to VRAM $, adding #$) 7E/7A00: 60 RTS
; used by: title screen, opening credits ; decompress $d8f000 to $7f0000 ; called by: 7e78fa, 7e7aa8 7E/7A01: A000F0 LDY #$F000 7E/7A04: 84F3 STY $F3 7E/7A06: A9D8 LDA #$D8 7E/7A08: 85F5 STA $F5 7E/7A0A: A00000 LDY #$0000 7E/7A0D: 84F6 STY $F6 7E/7A0F: A97F LDA #$7F 7E/7A11: 85F8 STA $F8 7E/7A13: 226DFFC2 JSL $C2FF6D 7E/7A17: 60 RTS
; used by: title screen, opening credits, floating island, world tearing apart ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes ; called by: 7e629c, 7e62c8, 7e6c39, 7e7026, 7e703e, 7e7056, 7e7913, 7e792b, 7e7944, 7e795c, 7e7974, 7e799d, 7e79b5, 7e79d1, 7e79e9, 7e79fd, 7e7ada, 7e7af2, 7e7b0b, 7e7b26 7E/7A18: C220 REP #$20 7E/7A1A: 98 TYA 7E/7A1B: 8F162100 STA $002116 ; VRAM Address low + high bytes 7E/7A1F: 7B TDC 7E/7A20: A8 TAY ; called by: 7e7a2e 7E/7A21: B7E7 LDA [$E7],Y 7E/7A23: 18 CLC 7E/7A24: 65ED ADC $ED 7E/7A26: 8F182100 STA $002118 ; VRAM Data Write low + high bytes 7E/7A2A: C8 INY 7E/7A2B: C8 INY 7E/7A2C: C4EB CPY $EB 7E/7A2E: D0F1 BNE $7A21 7E/7A30: E220 SEP #$20 7E/7A32: 60 RTS
; used by: title screen ; write #$0777 to $0400 - $07ff and $0c00 - $0fff ; called by: 7e79b8 7E/7A33: C220 REP #$20 7E/7A35: A90004 LDA #$0400 7E/7A38: 8F162100 STA $002116 ; VRAM Address low + high bytes 7E/7A3C: 204C7A JSR $7A4C ; write #$0777 to VRAM #$3ff times 7E/7A3F: A9000C LDA #$0C00 7E/7A42: 8F162100 STA $002116 ; VRAM Address low + high bytes 7E/7A46: 204C7A JSR $7A4C ; write #$0777 to VRAM #$3ff times 7E/7A49: E220 SEP #$20 7E/7A4B: 60 RTS
; used by: title screen ; write #$0777 to VRAM #$3ff times ; called by: 7e7a3c, 7e7a46 7E/7A4C: 7B TDC 7E/7A4D: A8 TAY 7E/7A4E: A97707 LDA #$0777 ; called by: 7e7a59 7E/7A51: 8F182100 STA $002118 ; VRAM Data Write low + high bytes 7E/7A55: C8 INY 7E/7A56: C00004 CPY #$0400 7E/7A59: D0F6 BNE $7A51 7E/7A5B: 60 RTS
; data for $3500,x ; used by: title screen ; referenced at 7e5310 7E/7A5C: 627AFE
; data for $3500,x ; used by: title screen ; referenced at 7e532c 7E/7A5F: 977AFE
; used by: title screen ; dereferenced from 7e7a5c 7E/7A62: 0D 7E/7A63: 00 7E/7A64: 00 7E/7A65: 00 7E/7A66: 33 7E/7A67: 10 7E/7A68: 00 7E/7A69: 02 7E/7A6A: 33 7E/7A6B: 20 7E/7A6C: 00 7E/7A6D: 04 7E/7A6E: 33 7E/7A6F: 30 7E/7A70: 00 7E/7A71: 06 7E/7A72: 33 7E/7A73: 40 7E/7A74: 00 7E/7A75: 08 7E/7A76: 33 7E/7A77: 58 7E/7A78: 00 7E/7A79: 2A 7E/7A7A: 33 7E/7A7B: 68 7E/7A7C: 00 7E/7A7D: 2C 7E/7A7E: 33 7E/7A7F: 78 7E/7A80: 00 7E/7A81: 2E 7E/7A82: 33 7E/7A83: 00 7E/7A84: 10 7E/7A85: 20 7E/7A86: 33 7E/7A87: 10 7E/7A88: 10 7E/7A89: 22 7E/7A8A: 33 7E/7A8B: 20 7E/7A8C: 10 7E/7A8D: 24 7E/7A8E: 33 7E/7A8F: 30 7E/7A90: 10 7E/7A91: 26 7E/7A92: 33 7E/7A93: 40 7E/7A94: 10 7E/7A95: 28 7E/7A96: 33
; used by: title screen ; dereferenced from 7e7a5f 7E/7A97: 04 7E/7A98: 00 7E/7A99: 10 7E/7A9A: 40 7E/7A9B: 33 7E/7A9C: 10 7E/7A9D: 10 7E/7A9E: 42 7E/7A9F: 33 7E/7AA0: 20 7E/7AA1: 10 7E/7AA2: 44 7E/7AA3: 33 7E/7AA4: 30 7E/7AA5: 10 7E/7AA6: 46 7E/7AA7: 33
; used by: opening credits ; decompress $d8f000 to $7f0000, copy parts of it around, and write stuff to VRAM ; called by: 7e61ff 7E/7AA8: 20017A JSR $7A01 ; decompress $d8f000 to $7f0000 7E/7AAB: A04009 LDY #$0940 7E/7AAE: 84E7 STY $E7 7E/7AB0: A97F LDA #$7F 7E/7AB2: 85E9 STA $E9 7E/7AB4: A000B0 LDY #$B000 7E/7AB7: 84EB STY $EB 7E/7AB9: A97F LDA #$7F 7E/7ABB: 85ED STA $ED 7E/7ABD: A00004 LDY #$0400 7E/7AC0: 84EF STY $EF 7E/7AC2: 20CC62 JSR $62CC ; copy $ef bytes from [$e7] to [$eb] (#$0400 from $7f0940 to $7fb000) 7E/7AC5: A00000 LDY #$0000 7E/7AC8: 84E7 STY $E7 7E/7ACA: A97F LDA #$7F 7E/7ACC: 85E9 STA $E9 7E/7ACE: A04009 LDY #$0940 7E/7AD1: 84EB STY $EB 7E/7AD3: 64ED STZ $ED 7E/7AD5: 64EE STZ $EE 7E/7AD7: A00064 LDY #$6400 7E/7ADA: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$0940 bytes from $7f0000 to VRAM $6400, adding #$0000) 7E/7ADD: A0C053 LDY #$53C0 7E/7AE0: 84E7 STY $E7 7E/7AE2: A97F LDA #$7F 7E/7AE4: 85E9 STA $E9 ; $e9 is still #$7f... 7E/7AE6: A00022 LDY #$2200 7E/7AE9: 84EB STY $EB 7E/7AEB: 64ED STZ $ED 7E/7AED: 64EE STZ $EE 7E/7AEF: A00040 LDY #$4000 7E/7AF2: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$2200 bytes from $7f53c0 to VRAM $4000, adding #$0000) 7E/7AF5: A0C023 LDY #$23C0 7E/7AF8: 84E7 STY $E7 7E/7AFA: A97F LDA #$7F 7E/7AFC: 85E9 STA $E9 ; $e9 is still #$7f... 7E/7AFE: A00008 LDY #$0800 7E/7B01: 84EB STY $EB 7E/7B03: A00020 LDY #$2000 7E/7B06: 84ED STY $ED 7E/7B08: A0007C LDY #$7C00 7E/7B0B: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$0800 bytes from $7f23c0 to VRAM $7c00, adding #$2000) 7E/7B0E: 202A7B JSR $7B2A 7E/7B11: A0C075 LDY #$75C0 7E/7B14: 84E7 STY $E7 7E/7B16: A97F LDA #$7F 7E/7B18: 85E9 STA $E9 ; $e9 is still #$7f... 7E/7B1A: A07003 LDY #$0370 7E/7B1D: 84EB STY $EB 7E/7B1F: 64ED STZ $ED 7E/7B21: 64EE STZ $EE 7E/7B23: A00070 LDY #$7000 7E/7B26: 20187A JSR $7A18 ; write $eb bytes (2 at a time) from [$e7] to VRAM address in Y, adding $ed to each pair of bytes (#$0370 bytes from $7f75c0 to VRAM $7000, adding #$0000) 7E/7B29: 60 RTS
; called by: 7e7b0e 7E/7B2A: C220 REP #$20 7E/7B2C: A9007C LDA #$7C00 7E/7B2F: 8F162100 STA $002116 ; VRAM Address low + high bytes 7E/7B33: A22002 LDX #$0220 7E/7B36: A9873E LDA #$3E87 ; called by: 7e7b3e 7E/7B39: 8F182100 STA $002118 ; VRAM Data Write low + high bytes 7E/7B3D: CA DEX 7E/7B3E: D0F9 BNE $7B39 7E/7B40: E220 SEP #$20 7E/7B42: 60 RTS
; data for 7e735a ; used by: title screen ; referenced at 7e5176, 7e51ba, 7e52fd 7E/7B43: 0000 7E/7B45: 0000 7E/7B47: E824 7E/7B49: 8620 7E/7B4B: 6310 7E/7B4D: BD77 7E/7B4F: 5C4B 7E/7B51: FA2A 7E/7B53: 0000 7E/7B55: 7626 7E/7B57: D421 7E/7B59: B215 7E/7B5B: 0000 7E/7B5D: EB0C 7E/7B5F: 8810 7E/7B61: 6310
; data for 7e735a ; used by: title screen ; referenced at 7e51b1, 7e534d, 7e5358, 7e5363, 7e536e 7E/7B63: 6310 7E/7B65: 6310 7E/7B67: 6310 7E/7B69: 6310 7E/7B6B: 6310 7E/7B6D: 6310 7E/7B6F: 6310 7E/7B71: 6310 7E/7B73: 6310 7E/7B75: 6310 7E/7B77: 6310 7E/7B79: 6310 7E/7B7B: 6310 7E/7B7D: 6310 7E/7B7F: 6310 7E/7B81: 6310
; data for 7e735a ; used by: title screen ; referenced at 7e52c5 7E/7B83: 6310 7E/7B85: 9F6F 7E/7B87: 5F57 7E/7B89: FF46 7E/7B8B: 7E36 7E/7B8D: 1E26 7E/7B8F: 1932 7E/7B91: BB21 7E/7B93: 9B15 7E/7B95: 761D 7E/7B97: 3611 7E/7B99: F110 7E/7B9B: B008 7E/7B9D: AD08 7E/7B9F: 8B08 7E/7BA1: 5000
; data for 7e735a ; used by: title screen ; referenced at 7e52d0 7E/7BA3: 0000 7E/7BA5: 6310 7E/7BA7: BD77 7E/7BA9: 0000 7E/7BAB: 0000 7E/7BAD: 1E26 7E/7BAF: 9B15 7E/7BB1: F110 7E/7BB3: 0000 7E/7BB5: 0000 7E/7BB7: 0000 7E/7BB9: 0000 7E/7BBB: 0000 7E/7BBD: 0000 7E/7BBF: 0000 7E/7BC1: 0000
; data ; used by: title screen ; referenced at 7e51cc 7E/7BC3: 0821 7E/7BC5: 6310 7E/7BC7: 6310 7E/7BC9: 6310 7E/7BCB: 0000 7E/7BCD: 1E26 7E/7BCF: 9B15 7E/7BD1: F110 7E/7BD3: 0000 7E/7BD5: 0000 7E/7BD7: 0000 7E/7BD9: 0000 7E/7BDB: 0000 7E/7BDD: 0000 7E/7BDF: 0000 7E/7BE1: 0000
; data for 7e735a ; used by: title screen ; referenced at 7e522e 7E/7BE3: 0000 7E/7BE5: C61C 7E/7BE7: A51C 7E/7BE9: 851C 7E/7BEB: 8418 7E/7BED: 6414 7E/7BEF: 6310 7E/7BF1: 0000 7E/7BF3: 6310 7E/7BF5: 0000 7E/7BF7: 1E26 7E/7BF9: 9B15 7E/7BFB: F110 7E/7BFD: 5B56 7E/7BFF: B445 7E/7C01: 2E35
; data for 7e735a ; used by: title screen ; referenced at 7e5202 7E/7C03: 0000 7E/7C05: DE66 7E/7C07: 5B56 7E/7C09: B445 7E/7C0B: 2E35 7E/7C0D: 0831 7E/7C0F: E82C 7E/7C11: C728 7E/7C13: A624 7E/7C15: A51C 7E/7C17: 8418 7E/7C19: 6414 7E/7C1B: 6310 7E/7C1D: BB21 7E/7C1F: 3611 7E/7C21: 7F73
; data for 7e735a ; used by: title screen ; referenced at 7e520d, 7e5218 ; dereferenced from $3500,x via 7e563e 7E/7C23: 0000 7E/7C25: DE66 7E/7C27: 5B56 7E/7C29: B445 7E/7C2B: 2E35 7E/7C2D: 0831 7E/7C2F: E82C 7E/7C31: C728 7E/7C33: A624 7E/7C35: A51C 7E/7C37: 8418 7E/7C39: 6414 7E/7C3B: 6310 7E/7C3D: 7F73 7E/7C3F: 7F73 7E/7C41: 7F73
; data for 7e735a ; used by: title screen, opening credits ; referenced at 7e5223, 7e59bf, 7e5ccf 7E/7C43: 0000 7E/7C45: 7E36 7E/7C47: 3611 7E/7C49: 420C 7E/7C4B: 4108 7E/7C4D: CD45 7E/7C4F: 6A3D 7E/7C51: 2835 7E/7C53: 2825 7E/7C55: E72C 7E/7C57: E624 7E/7C59: C520 7E/7C5B: C518 7E/7C5D: A318 7E/7C5F: 8314 7E/7C61: 6310