Final Fantasy VI:7E5000 from C2686C

From Data Crystal
Revision as of 11:42, 13 February 2016 by Abw (talk | contribs) (Covering $7E5000 - $7E7C62 while code/data decompressed from $C2686C - $C28A60 is active)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
; 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