- 1677341-___sfc.jpg (49.25 KiB) 22161 mal betrachtet
Normale Spielansicht
BG1 - Map - Vordergrund
BG2 - Map - Böden
BG3 - Menü/Lifebar/Textbox
Dialog/Shop:
BG1 - deaktiviert
BG2 - Porträt
BG3 - Textbox
ROM:
Code: Alles auswählen
$00/81D9 OAM-Update
$00/824D VRAM-Update via DMA
$01/B175 Positionskalkulation(?)Code: Alles auswählen
7E0003-7E0004 - Temp Store(?) der globalen X-Position ($0097 + $0504)
7E0009-7E000A - Temp Store(?) der globalen Y-Position ($0099 + $0502)
7E0015-7E0017 - Standardmäßiger Speicherplatz für Adressen (bei indirekter Adressierung)
7E001C-7E001D - Pointer zum nächsten DMA-Pipeline-Slot (=#$18x0), siehe $00/824D)
7E006F - Vergleichswert für Blickrichtung = Backup Blickrichtung im letzten Frame?
7E0097-7E0098 - X Scroll Value
7E0099-7E009A - Y Scroll Value
7E009B-7E009C - X Scroll Value (Backup?)
7E009D-7E009E - Y Scroll Value (Backup?)
7E009F - Breite der Map in 8x8px Tiles
7E00A1 - Höhe der Map in 8x8px Tiles
7E00C8-7E00E7 - Werte für animierte BG1-Tiles - Gerader Byte: #$00 Animation an, sonst Animation aus / Ungerader Byte: Animationsschritt
7E0502-7E0503 - Y-Pos auf dem Bildschirm
7E0504-7E0505 - X-Pos auf dem Bildschirm
7E0506 - Blickrichtung (1=r, 2=l, 4=runter, 8=hoch, [10=r, 20=unsichtb., 40=glitch, 80=unsichtb.])
7E0515 - Breite der Hitbox in 8px-Schritten
7E0530 - Y-Koordinate des Tiles, auf dem man steht(?)
7E0531 - X-Koordinate des Tiles, auf dem man steht(?)
7E1800-7E18xF - VRAM-DMA-Register Buffer:
(Es werden wohl max. nur 3 Slots gleichzeitig genutzt, siehe $01/90AA)
7E18x0 - $2115 Value (Ohne MSB; $FF = inaktiv)
7E18x1 - $2116 Value / VRAM Adresse Lo Byte
7E18x2 - $2117 Value / VRAM Adresse Hi Byte
7E18x3 - $43x2 Value / WRAM Adresse Lo Byte
7E18x4 - $43x3 Value / WRAM Adresse Lo Byte
7E18x5 - $43x4 Value / WRAM Bank
7E18x6 - $43x5 Value / Data Counter Lo
7E18x7 - $43x6 Value / Data Counter Hi
7E1A00-7E1A3F - CGRAM-Buffer - Menüs (scheinen fix zu sein)
7E1A40-7E1AFF - CGRAM-Buffer - Maps / Porträts
7E1B00-7E1BFF - CGRAM-Buffer - Sprites
7E1D00 - OAM-Buffer
7E2000-7E2xxx - Map (16x16-Tiles) für BG2
7E3000-7E3xxx - Map (16x16-Tiles) für BG1
7E4000-7E4xxx - Collision Map ($80=nicht betretbar, $40=schädlich, $00=Betretbar)
7E7000-7E77FF - Je 4 x 2 Byte adressen für "Baupläne", welche 4 8x8-Tiles ein 16x16 BG-Tile ergeben
High Byte (ungerade Adresse) Bits für Collision Map: #$C2 = #%1100.0010
7E7800-7E78xx - Animierte BG1-Grafiken: Tile-Adressen der einzelnen Animationsschritte
7E7A00-7E7BFF - Buffer für animinerte BG1-Grafiken
7E9000-7E9... - Start Buffer BG2VRAM:
Map Tiles (Bg1/2) ab 2000
Dialog-Porträt ab 3000
Helden-Sprites ab 3600 (immer(?))
Animierte BG1-Tiles (z.B. Kirchenglocke) 3F00-3FFF
Textbox-Inhalt ab 4F00
Commendierter Kot:
versteckter Inhalt:
Code: Alles auswählen
; Abarbeiten der VRAM-DMA-Pipeline
$00/824D A2 00 18 LDX #$1800
$00/8250 86 1C STX $1C [$00:001C] ; Resette den Pointer für den nächsten Freien Slot
$00/8252 B5 00 LDA $00,x [$00:1800] ; Lade $43x0-Register Buffer
$00/8254 30 36 BMI $36 [$828C] ; Beende den Loop, wenn negativ
$00/8256 09 80 ORA #$80 ; Setz Bit für 16-bit-VRAM-Transfer
$00/8258 8D 15 21 STA $2115 [$00:2115]
$00/825B B4 01 LDY $01,x [$00:1801]
$00/825D 8C 16 21 STY $2116 [$00:2116] ; $18x1/2 = VRAM Adresse
$00/8260 A9 01 LDA #$01
$00/8262 8D 00 43 STA $4300 [$00:4300] ; Standard 16bit transfer
$00/8265 A9 18 LDA #$18
$00/8267 8D 01 43 STA $4301 [$00:4301] ; Ziel: $2118 - VRAM
$00/826A B4 03 LDY $03,x [$00:1803] ; DMA Adresse
$00/826C 8C 02 43 STY $4302 [$00:4302]
$00/826F B5 05 LDA $05,x [$00:1805] ; DMA Bank (HDMA wird nicht von dieser Funktion abgedeckt(?))
$00/8271 8D 04 43 STA $4304 [$00:4304]
$00/8274 B4 06 LDY $06,x [$00:1806] ; Anzahl Bytes
$00/8276 8C 05 43 STY $4305 [$00:4305]
$00/8279 A9 01 LDA #$01
$00/827B 8D 0B 42 STA $420B [$00:420B] ; Aktivier DMA
$00/827E A9 FF LDA #$FF
$00/8280 95 00 STA $00,x [$00:1800] ; Erledigten DMA-Slot als Frei markieren
$00/8282 E8 INX
$00/8283 E8 INX
$00/8284 E8 INX
$00/8285 E8 INX
$00/8286 E8 INX
$00/8287 E8 INX
$00/8288 E8 INX
$00/8289 E8 INX ; Inkrementier X für die Adresse des nächsten DMA-Slots
$00/828A 80 C6 BRA $C6 [$8252] ; Loop und nächsten DMA-Slot prüfen/ggf. durchführen
; Lade neue Map: Transfer der 16x16-Tile-Baupläne + Animierten BG1-Tiles
$01/869F AB PLB A:FFFF X:4000 Y:0000 P:eNvmxdIzc
$01/86A0 A0 03 00 LDY #$0003 A:FFFF X:4000 Y:0000 P:envmxdIZc
$01/86A3 B1 00 LDA ($00),y[$00:90C3] ; Lade Paletten-Adresse
$01/86A5 85 15 STA $15 [$00:0015] ; Setz Temp Adresse in $15 auf
$01/86A7 E2 20 SEP #$20
$01/86A9 A0 05 00 LDY #$0005
$01/86AC B1 00 LDA ($00),y[$00:90C5] ; Lade Palettenbank
$01/86AE 85 17 STA $17 [$00:0017] ; Setz Temp Adresse in $15 auf, Teil zwo
; Transferiere Paletten in den CGRAM-Buffer
$01/86B0 A0 BF 00 LDY #$00BF ; Counter-Setup
$01/86B3 B7 15 LDA [$15],y[$19:F773] ; Lade Farbe
$01/86B5 99 40 1A STA $1A40,y[$00:1AFF] ; Speicher in CGRAM-Buffer
$01/86B8 88 DEY ; Dekrementiere Counter
$01/86B9 10 F8 BPL $F8 [$86B3] ; Loop
$01/86BB C2 20 REP #$20 A:F600 X:4000 Y:FFFF P:eNvMxdIzc
$01/86BD A0 06 00 LDY #$0006 A:F600 X:4000 Y:FFFF P:eNvmxdIzc
$01/86C0 B1 00 LDA ($00),y[$00:90C6] A:F600 X:4000 Y:0006 P:envmxdIzc
$01/86C2 85 15 STA $15 [$00:0015] A:9AAE X:4000 Y:0006 P:eNvmxdIzc
$01/86C4 C8 INY A:9AAE X:4000 Y:0006 P:eNvmxdIzc
$01/86C5 B1 00 LDA ($00),y[$00:90C7] A:9AAE X:4000 Y:0007 P:envmxdIzc
$01/86C7 85 16 STA $16 [$00:0016] A:1E9A X:4000 Y:0007 P:envmxdIzc
$01/86C9 E2 20 SEP #$20 A:1E9A X:4000 Y:0007 P:envmxdIzc
$01/86CB 8B PHB ; Bewahre aktuelle Bank auf
$01/86CC F4 00 7E PEA $7E00 ; Setze Direct Bank auf $7E
$01/86CF AB PLB
$01/86D0 AB PLB
$01/86D1 A0 FF 08 LDY #$08FF ; Anzahl an Bytes / von $7E78FF bis $7E7000
;Datentransfer Loop
$01/86D4 B7 15 LDA [$15],y[$1E:A3AD] A:1E9A X:4000 Y:08FF P:envMxdIzc
$01/86D6 99 00 70 STA $7000,y[$7E:78FF] A:1E00 X:4000 Y:08FF P:envMxdIZc
$01/86D9 88 DEY A:1E00 X:4000 Y:08FF P:envMxdIZc
$01/86DA B7 15 LDA [$15],y[$1E:A3AC] A:1E00 X:4000 Y:08FE P:envMxdIzc
$01/86DC 99 00 70 STA $7000,y[$7E:78FE] A:1E00 X:4000 Y:08FE P:envMxdIZc
$01/86DF 88 DEY A:1E00 X:4000 Y:08FE P:envMxdIZc
$01/86E0 10 F2 BPL $F2 [$86D4] A:1E00 X:4000 Y:08FD P:envMxdIzc
;???
$01/86E2 AB PLB A:1E00 X:4000 Y:FFFF P:eNvMxdIzc
$01/86E3 C2 20 REP #$20 A:1E00 X:4000 Y:FFFF P:envMxdIZc
$01/86E5 A0 09 00 LDY #$0009 A:1E00 X:4000 Y:FFFF P:envmxdIZc
$01/86E8 B1 00 LDA ($00),y[$00:90C9] A:1E00 X:4000 Y:0009 P:envmxdIzc
$01/86EA 85 15 STA $15 [$00:0015] A:8745 X:4000 Y:0009 P:eNvmxdIzc
$01/86EC C8 INY A:8745 X:4000 Y:0009 P:eNvmxdIzc
$01/86ED B1 00 LDA ($00),y[$00:90CA] A:8745 X:4000 Y:000A P:envmxdIzc
$01/86EF 85 16 STA $16 [$00:0016] A:1C87 X:4000 Y:000A P:envmxdIzc
$01/86F1 20 C6 84 JSR $84C6 [$01:84C6] A:1C87 X:4000 Y:000A P:envmxdIzc
;???
$01/86F4 E2 20 SEP #$20 A:1C87 X:4000 Y:000A P:envmxdIzc
$01/86F6 A0 00 00 LDY #$0000 A:1C87 X:4000 Y:000A P:envMxdIzc
$01/86F9 84 15 STY $15 [$00:0015] A:1C87 X:4000 Y:0000 P:envMxdIZc
$01/86FB A9 7F LDA #$7F A:1C87 X:4000 Y:0000 P:envMxdIZc
$01/86FD 85 17 STA $17 [$00:0017] A:1C7F X:4000 Y:0000 P:envMxdIzc
$01/86FF C2 20 REP #$20 A:1C7F X:4000 Y:0000 P:envMxdIzc
$01/8701 A7 15 LDA [$15] [$7F:0000] A:1C7F X:4000 Y:0000 P:envmxdIzc
$01/8703 85 9F STA $9F [$00:009F] A:0020 X:4000 Y:0000 P:envmxdIzc
$01/8705 A0 02 00 LDY #$0002 A:0020 X:4000 Y:0000 P:envmxdIzc
$01/8708 B7 15 LDA [$15],y[$7F:0002] A:0020 X:4000 Y:0002 P:envmxdIzc
$01/870A 85 A1 STA $A1 [$00:00A1] A:0030 X:4000 Y:0002 P:envmxdIzc
$01/870C A0 04 00 LDY #$0004 A:0030 X:4000 Y:0002 P:envmxdIzc
$01/870F B7 15 LDA [$15],y[$7F:0004] A:0030 X:4000 Y:0004 P:envmxdIzc
$01/8711 85 A3 STA $A3 [$00:00A3] A:0000 X:4000 Y:0004 P:envmxdIZc
$01/8713 A0 06 00 LDY #$0006 A:0000 X:4000 Y:0004 P:envmxdIZc
$01/8716 B7 15 LDA [$15],y[$7F:0006] A:0000 X:4000 Y:0006 P:envmxdIzc
$01/8718 85 A5 STA $A5 [$00:00A5] A:00C0 X:4000 Y:0006 P:envmxdIzc
$01/871A A0 08 00 LDY #$0008 A:00C0 X:4000 Y:0006 P:envmxdIzc
$01/871D B7 15 LDA [$15],y[$7F:0008] A:00C0 X:4000 Y:0008 P:envmxdIzc
$01/871F 4A LSR A A:0300 X:4000 Y:0008 P:envmxdIzc
$01/8720 3A DEC A A:0180 X:4000 Y:0008 P:envmxdIzc
$01/8721 85 06 STA $06 [$00:0006] A:017F X:4000 Y:0008 P:envmxdIzc
$01/8723 A0 0F 00 LDY #$000F A:017F X:4000 Y:0008 P:envmxdIzc
$01/8726 B7 15 LDA [$15],y[$7F:000F] A:017F X:4000 Y:000F P:envmxdIzc
$01/8728 29 FF 00 AND #$00FF A:DB00 X:4000 Y:000F P:eNvmxdIzc
$01/872B 85 95 STA $95 [$00:0095] A:0000 X:4000 Y:000F P:envmxdIZc
$01/872D A5 06 LDA $06 [$00:0006] A:0000 X:4000 Y:000F P:envmxdIZc
$01/872F A2 10 00 LDX #$0010 A:017F X:4000 Y:000F P:envmxdIzc
$01/8732 A0 00 20 LDY #$2000 A:017F X:0010 Y:000F P:envmxdIzc
$01/8735 54 7E 7F MVN 7F 7E A:017F X:0010 Y:2000 P:envmxdIzc
$01/8738 A5 06 LDA $06 [$00:0006] A:FFFF X:0190 Y:2180 P:envmxdIzc
$01/873A A0 00 30 LDY #$3000 A:017F X:0190 Y:2180 P:envmxdIzc
$01/873D 54 7E 7F MVN 7F 7E A:017F X:0190 Y:3000 P:envmxdIzc
$01/8740 E2 20 SEP #$20 A:FFFF X:0310 Y:3180 P:envmxdIzc
$01/8742 A2 00 70 LDX #$7000 A:FFFF X:0310 Y:3180 P:envMxdIzc
$01/8745 86 00 STX $00 [$00:0000] A:FFFF X:7000 Y:3180 P:envMxdIzc
$01/8747 A0 FF 07 LDY #$07FF A:FFFF X:7000 Y:3180 P:envMxdIzc
$01/874A B1 00 LDA ($00),y[$7E:77FF] A:FFFF X:7000 Y:07FF P:envMxdIzc
$01/874C 29 81 AND #$81 A:FF08 X:7000 Y:07FF P:envMxdIzc
$01/874E 85 03 STA $03 [$00:0003] A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8750 B1 00 LDA ($00),y[$7E:77FF] A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8752 29 10 AND #$10 A:FF08 X:7000 Y:07FF P:envMxdIzc
$01/8754 0A ASL A A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8755 0A ASL A A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8756 04 03 TSB $03 [$00:0003] A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8758 B1 00 LDA ($00),y[$7E:77FF] A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/875A 29 20 AND #$20 A:FF08 X:7000 Y:07FF P:envMxdIzc
$01/875C 4A LSR A A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/875D 4A LSR A A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/875E 4A LSR A A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/875F 4A LSR A A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8760 04 03 TSB $03 [$00:0003] A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8762 B1 00 LDA ($00),y[$7E:77FF] A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8764 29 0E AND #$0E A:FF08 X:7000 Y:07FF P:envMxdIzc
$01/8766 0A ASL A A:FF08 X:7000 Y:07FF P:envMxdIzc
$01/8767 04 03 TSB $03 [$00:0003] A:FF10 X:7000 Y:07FF P:envMxdIzc
$01/8769 B1 00 LDA ($00),y[$7E:77FF] A:FF10 X:7000 Y:07FF P:envMxdIZc
$01/876B 29 40 AND #$40 A:FF08 X:7000 Y:07FF P:envMxdIzc
$01/876D 4A LSR A A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/876E 05 03 ORA $03 [$00:0003] A:FF00 X:7000 Y:07FF P:envMxdIZc
$01/8770 91 00 STA ($00),y[$7E:77FF] A:FF10 X:7000 Y:07FF P:envMxdIzc
$01/8772 88 DEY A:FF10 X:7000 Y:07FF P:envMxdIzc
$01/8773 88 DEY A:FF10 X:7000 Y:07FE P:envMxdIzc
$01/8774 10 D4 BPL $D4 [$874A] A:FF10 X:7000 Y:07FD P:envMxdIzc
; Bau die Collision Map
$01/8776 C2 20 REP #$20 ; A = 16bit
$01/8778 A5 9F LDA $9F [$00:009F] ; Lade Breite der Map (Anzahl 8x8 Tiles)
$01/877A 4A LSR A ; geteilt durch 2 (anzahl 16x16 Tiles)
$01/877B 85 06 STA $06 [$00:0006] ; Speicher in $06
$01/877D A5 A1 LDA $A1 [$00:00A1] ; Lade Höhe der Map (Anzahl 8x8 Tiles)
$01/877F 4A LSR A ; geteilt durch 2 (anzahl 16x16 Tiles)
$01/8780 EB XBA ; Ein bisschen Getrickse, faktisch wird jetzt nur diese Anzahl in
$07 gespeichert
$01/8781 05 06 ORA $06
$01/8783 85 06 STA $06
$01/8785 E2 20 SEP #$20 ; A=8bit
$01/8787 A0 00 20 LDY #$2000 ; Setze BG2-16x16-Tile-Map-Adresse in $00 auf
$01/878A 84 00 STY $00 [$00:0000]
$01/878C A0 00 30 LDY #$3000 ; Setze BG1-16x16-Tile-Map-Adresse in $03 auf
$01/878F 84 03 STY $03 [$00:0003]
$01/8791 A0 00 40 LDY #$4000 ; Setze Collision-Map-Adresse in $18 auf
$01/8794 84 18 STY $18 [$00:0018]
;Setup für eine neue Reihe
$01/8796 A6 06 LDX $06 [$00:0006] ; X = Höhe/Breite der Map
$01/8798 DA PHX ; Auf den Stack geschmissen
$01/8799 A6 18 LDX $18 [$00:0018] ; Aktuelle Zeile in der
$01/879B DA PHX ; Auf den Stack geschmissen
;Loop für eine Reihe Tiles
$01/879C C2 20 REP #$20 ; A=16bit
$01/879E B2 00 LDA ($00) [$7E:2000] ; Lade BG2-Map-16x16-Tile
$01/87A0 29 FF 00 AND #$00FF ; Stelle den entspr. Byte frei
$01/87A3 0A ASL A ; mal 8
$01/87A4 0A ASL A
$01/87A5 0A ASL A
$01/87A6 18 CLC
$01/87A7 69 00 70 ADC #$7000 ; Addresse des Tile-Bauplans in der Bauplanliste ab $7E7000
$01/87AA 1A INC A ; +1 (für den entsprechenden High Byte)
$01/87AB 85 09 STA $09 [$00:0009] ; Speicher in $09
$01/87AD B2 03 LDA ($03) [$7E:3000] ; Lade BG1-Map-16x16-Tile
$01/87AF 29 FF 00 AND #$00FF ; Stelle den entspr. Byte frei
$01/87B2 0A ASL A ; mal 8
$01/87B3 0A ASL A
$01/87B4 0A ASL A
$01/87B5 18 CLC
$01/87B6 69 00 70 ADC #$7000 ; Addresse des Tile-Bauplans in der Bauplanliste ab $7E7000
$01/87B9 1A INC A ; +1 (für den entsprechenden High Byte)
$01/87BA 85 0C STA $0C [$00:000C] ; Speicher in $09
$01/87BC E2 20 SEP #$20 ; A=8bit
$01/87BE A5 95 LDA $95 [$00:0095] A:7179 X:4000 Y:4000 P:envMxdIzc
$01/87C0 D0 33 BNE $33 [$87F5] A:7100 X:4000 Y:4000 P:envMxdIZc
$01/87C2 B2 09 LDA ($09) [$7E:76D9] ; Lade BG2-Tile (mit Collision-Map Flags)
$01/87C4 12 0C ORA ($0C) [$7E:7179] ; Hau BG1-Tile (mit dessen Collision-Map Flags) obendrauf
$01/87C6 29 C2 AND #$C2 ; Entferne alles außer den Collision Map Flags
$01/87C8 92 18 STA ($18) [$7E:4000] ; Speicher in die Collision Map (l-o 8x8)
$01/87CA A0 02 00 LDY #$0002 ; Y=2, für zweites Tile im Bauplan
$01/87CD B1 09 LDA ($09),y[$7E:76DB] ; Lade BG2-Tile (mit Collision-Map Flags)
$01/87CF 11 0C ORA ($0C),y[$7E:717B] ; Hau BG1-Tile (mit dessen Collision-Map Flags) obendrauf
$01/87D1 29 C2 AND #$C2 ; Entferne alles außer den Collision Map Flags
$01/87D3 A0 01 00 LDY #$0001 ; Rechts oben = +1
$01/87D6 91 18 STA ($18),y[$7E:4001] ; Speicher in die Collision Map (r-o 8x8)
$01/87D8 A0 04 00 LDY #$0004 ; Y=4, für drittes Tile im Bauplan
$01/87DB B1 09 LDA ($09),y[$7E:76DD] ; Lade BG2-Tile (mit Collision-Map Flags)
$01/87DD 11 0C ORA ($0C),y[$7E:717D] ; Hau BG1-Tile (mit dessen Collision-Map Flags) obendrauf
$01/87DF 29 C2 AND #$C2 ; Entferne alles außer den Collision Map Flags
$01/87E1 A4 9F LDY $9F [$00:009F] ; Lade "Verschieber" für nächste Reihe (#$20)
$01/87E3 91 18 STA ($18),y[$7E:4020] ; Speicher in die Collision Map (l-u 8x8)
$01/87E5 A0 06 00 LDY #$0006 ; Y=6, für viertes Tile im Bauplan
$01/87E8 B1 09 LDA ($09),y[$7E:76DF] ; Lade BG2-Tile (mit Collision-Map Flags)
$01/87EA 11 0C ORA ($0C),y[$7E:717F] ; Hau BG1-Tile (mit dessen Collision-Map Flags) obendrauf
$01/87EC 29 C2 AND #$C2 ; Entferne alles außer den Collision Map Flags
$01/87EE A4 9F LDY $9F [$00:009F] ; Lade "Verschieber" für nächste Reihe (#$20)
$01/87F0 C8 INY ; +1, um das Tile rechts vom dritten anzusprechen
$01/87F1 91 18 STA ($18),y[$7E:4021] ; Speicher in die Collision Map (r-u 8x8)
$01/87F3 80 29 BRA $29 [$881E] ; Jump zur Inkrement-Automatik
; Nächstes Tile
$01/881E C2 20 REP #$20 ; A=16bit
$01/8820 E6 00 INC $00 [$00:0000] ; Erhöhe BG2-16x16-Tile-Map-Adresse
$01/8822 E6 03 INC $03 [$00:0003] ; Erhöhe BG1-16x16-Tile-Map-Adresse
$01/8824 E6 18 INC $18 [$00:0018] ; Erhöhe Collision-Map-Adresse
$01/8826 E6 18 INC $18 [$00:0018]
$01/8828 E2 20 SEP #$20 ; A=8bit
$01/882A C6 06 DEC $06 [$00:0006] ; Dekrementiere die Anzahl an zu-erledigenden Tiles für diese Reihe
$01/882C F0 03 BEQ $03 [$8831] ; Springe, wenn Reihe fertig
$01/882E 82 6B FF BRL $FF6B [$879C] ; Ansonsten: Loop
;Neue Zeile
$01/8831 C2 20 REP #$20 ; A=16bit
$01/8833 68 PLA ; Hol Adresse der aktuellen Collision-Map-Zeile vom Stack
$01/8834 18 CLC
$01/8835 65 9F ADC $9F [$00:009F] ; Hau zweimal die Mapbreite drauf
$01/8837 65 9F ADC $9F [$00:009F] ; (D. h. man hat den Anfangspunkt der nächsten Zeile)
$01/8839 85 18 STA $18 [$00:0018] ; Speicher als neue Collision-Map-Speicheradresse
$01/883B E2 20 SEP #$20 ; A=8bit
$01/883D FA PLX ; Hol Höhe/Breite der Map vom Stack
$01/883E 86 06 STX $06 ; Speicher in $06/$07
$01/8840 C6 07 DEC $07 [$00:0007] ; Verringere Höhe um 1 (weil eine Zeile erledigt wurde)
$01/8842 F0 03 BEQ $03 [$8847] ; Spring, wenn alle Zeilen fertig sind
$01/8844 4C 96 87 JMP $8796 [$01:8796] ; Sonst: Loop
; Animierte BG1-Tiles (Setup beim Kartenwechsel?)
$01/902E 48 PHA ; Akku, Index-Register, Direct Bank, Direct Page aufn Stack
$01/902F DA PHX
$01/9030 5A PHY
$01/9031 8B PHB
$01/9032 08 PHP
$01/9033 F4 00 7E PEA $7E00 ; Setze Direct Bank auf $7E
$01/9036 AB PLB
$01/9037 AB PLB
$01/9038 A2 00 7A LDX #$7A00 ; Adresse des Buffers für animierte BG1-Tile
$01/903B 86 18 STX $18 [$00:0018] ; Speicher Buffer-Adresse in $18
$01/903D A2 00 00 LDX #$0000 ; Animations-Index-Setup
$01/9040 A0 00 78 LDY #$7800 ; Tile-Animationslistensetup
$01/9043 A9 10 LDA #$10 ; Maximum an möglichen Animation
$01/9045 85 06 STA $06 [$00:0006] ; Setup als Counter in $06
$01/9047 B5 C8 LDA $C8,x [$00:00C8] ; Ist eine Animation aktiviert? (=#$00)
$01/9049 D0 41 BNE $41 [$908C] ; Spring, wenn nicht (!=#$00)
; Animierte BG1-Tiles(?)
$01/904B B9 00 00 LDA $0000,y[$7E:7800] A:0100 X:0000 Y:7800 P:envMxdIZC
$01/904E F0 3C BEQ $3C [$908C] A:0110 X:0000 Y:7800 P:envMxdIzC
$01/9050 95 C8 STA $C8,x [$00:00C8] A:0110 X:0000 Y:7800 P:envMxdIzC
$01/9052 A9 01 LDA #$01 A:0110 X:0000 Y:7800 P:envMxdIzC
$01/9054 04 C7 TSB $C7 [$00:00C7] A:0101 X:0000 Y:7800 P:envMxdIzC
$01/9056 F6 C9 INC $C9,x [$00:00C9] ; Erhöhe Animationsschritt
$01/9058 B5 C9 LDA $C9,x [$00:00C9] ; Lade Animationsschritt-Nummer
$01/905A C2 20 REP #$20 ; A=16bit
$01/905C 29 FF 00 AND #$00FF ; Entferne, was noch im Akku-High-Byte rumgammelte
$01/905F C9 07 00 CMP #$0007 ; Bei 7 angekommen?
$01/9062 F0 08 BEQ $08 [$906C] ; Wenn ja, Spring zum Animationsschritt-Nummer-Resetten
$01/9064 1A INC A ; (Animationsnummer + 1) * 2
$01/9065 0A ASL A
$01/9066 85 00 STA $00 [$00:0000] ; ... als Index für die Adresse, wo die nächste Tilegrafik geladen
werden soll
$01/9068 B1 00 LDA ($00),y[$7E:780E] ; Wenn die geladene Animationstile-Adresse #$0000 ist,
$01/906A D0 0A BNE $0A [$9076] ; ist das hier das Zeichen, dass die Animation hier gecycled wird
;Animations-Cycling
$01/906C B5 C8 LDA $C8,x [$00:00C8] ; Wieder doof verpackt, aber faktisch wird der Animationsschritt
resettet
$01/906E 29 FF 00 AND #$00FF ; Nämlich hier: Der High Byte ($C9,x) wird gecleart
$01/9071 95 C8 STA $C8,x [$00:00C8] ; Und alles wird wieder zurückkgespeichert
$01/9073 B9 02 00 LDA $0002,y[$7E:7802] ; Lade die Adresse vom ersten Tile der Animation und übertrag das
in den VRAM
;Verschiebe Tile-Graphik(?)-Daten im WRAM
$01/9076 DA PHX ; Konservier X & Y
$01/9077 5A PHY
$01/9078 0A ASL A ; A * $20
$01/9079 0A ASL A
$01/907A 0A ASL A
$01/907B 0A ASL A
$01/907C 0A ASL A
$01/907D 18 CLC A:0600 X:0000 Y:7800 P:envmxdIzc
$01/907E 69 00 C0 ADC #$C000 A:0600 X:0000 Y:7800 P:envmxdIzc
$01/9081 AA TAX A:C600 X:0000 Y:7800 P:eNvmxdIzc
$01/9082 A4 18 LDY $18 [$00:0018] A:C600 X:C600 Y:7800 P:eNvmxdIzc
$01/9084 A9 1F 00 LDA #$001F ; $20 Bytes
$01/9087 54 7E 7E MVN 7E 7E ; VERSCHIEBE DATEN
$01/908A 7A PLY ; Wiederherstellen von X & Y
$01/908B FA PLX
$01/908C C2 20 REP #$20 ; A16bit
$01/908E A5 18 LDA $18 [$00:0018] ; Lade Buffer-Adresse der Animierten BG1-Tiles
$01/9090 18 CLC
$01/9091 69 20 00 ADC #$0020 ; +#$20 (Adresse nächstes Tiles)
$01/9094 85 18 STA $18 [$00:0018] ; Speicher zurück
$01/9096 98 TYA ; Erhöhe die "anvisierte" Tabelle von Animationstiles
$01/9097 18 CLC
$01/9098 69 10 00 ADC #$0010
$01/909B A8 TAY
$01/909C E2 20 SEP #$20 A:7810 X:0000 Y:7810 P:envmxdIzc
$01/909E D6 C8 DEC $C8,x [$00:00C8] A:7810 X:0000 Y:7810 P:envMxdIzc
$01/90A0 E8 INX A:7810 X:0000 Y:7810 P:envMxdIzc
$01/90A1 E8 INX A:7810 X:0001 Y:7810 P:envMxdIzc
$01/90A2 C6 06 DEC $06 [$00:0006] A:7810 X:0002 Y:7810 P:envMxdIzc
$01/90A4 D0 A1 BNE $A1 [$9047] A:7810 X:0002 Y:7810 P:envMxdIzc
$01/90A6 A5 C7 LDA $C7 [$00:00C7] A:7900 X:0020 Y:7900 P:envMxdIZc
$01/90A8 F0 29 BEQ $29 [$90D3] A:7900 X:0020 Y:7900 P:envMxdIZc
; Setz einen WRAM-nach-VRAM-DMA in der Pipeline für die animierten Tile-Grafiken auf
$01/90AA A6 1C LDX $1C [$00:001C] ; Lade Pointer für nächsten freien VRAM-DMA-Slot
$01/90AC E0 20 18 CPX #$1820
$01/90AF B0 22 BCS $22 [$90D3] ; Überspring das, wenn alle (3) Slots voll sind(?)
$01/90B1 A9 01 LDA #$01 A:7901 X:1800 Y:7900 P:eNvMxdIzc
$01/90B3 14 C7 TRB $C7 [$00:00C7] A:7901 X:1800 Y:7900 P:envMxdIzc
$01/90B5 A0 00 3F LDY #$3F00 ; VRAM-Zieladresse: $3F00
$01/90B8 94 01 STY $01,x [$00:1801]
$01/90BA A0 00 7A LDY #$7A00 ; Daten-Buffer ist bei 7E:7A00
$01/90BD 94 03 STY $03,x [$00:1803]
$01/90BF A9 7E LDA #$7E
$01/90C1 95 05 STA $05,x [$00:1805]
$01/90C3 A0 00 02 LDY #$0200 ; $200 Byte per DMA übertragen
$01/90C6 94 06 STY $06,x [$00:1806]
$01/90C8 74 00 STZ $00,x [$00:1800]
$01/90CA C2 20 REP #$20 ; A =16bit
$01/90CC 8A TXA ; Stelle Adresse des nächsten freien DMA-Slots her
$01/90CD 18 CLC
$01/90CE 69 08 00 ADC #$0008
$01/90D1 85 1C STA $1C [$00:001C] ; Speicher sie in $1C (wie gehabt)
; Stell alles wieder her und Exit
$01/90D3 28 PLP
$01/90D4 AB PLB
$01/90D5 7A PLY
$01/90D6 FA PLX
$01/90D7 68 PLA
$01/90D8 60 RTS
; Aus der Funktion: "Ich lade einen neuen Tile-Streifen, weil der Held die Map Scrollt"
$01/9447 C2 20 REP #$20 A:00D0 X:00DE Y:0500 P:eNvmxdIzc
$01/9449 A5 A7 LDA $A7 [$00:00A7] A:00D0 X:00DE Y:0500 P:eNvmxdIzc
$01/944B 10 62 BPL $62 [$94AF] A:0002 X:00DE Y:0500 P:envmxdIzc
$01/94AF E6 87 INC $87 [$00:0087] A:0002 X:00DE Y:0500 P:envmxdIzc
$01/94B1 A5 87 LDA $87 [$00:0087] A:0002 X:00DE Y:0500 P:envmxdIzc
$01/94B3 18 CLC A:32CE X:00DE Y:0500 P:envmxdIzc
$01/94B4 69 10 00 ADC #$0010 A:32CE X:00DE Y:0500 P:envmxdIzc
$01/94B7 85 18 STA $18 [$00:0018] A:32DE X:00DE Y:0500 P:envmxdIzc
$01/94B9 A5 83 LDA $83 [$00:0083] A:32DE X:00DE Y:0500 P:envmxdIzc
$01/94BB 29 1E 00 AND #$001E A:0106 X:00DE Y:0500 P:envmxdIzc
$01/94BE C9 1E 00 CMP #$001E A:0006 X:00DE Y:0500 P:envmxdIzc
$01/94C1 D0 0B BNE $0B [$94CE] A:0006 X:00DE Y:0500 P:eNvmxdIzc
$01/94CE A5 83 LDA $83 [$00:0083] A:0006 X:00DE Y:0500 P:eNvmxdIzc
$01/94D0 1A INC A A:0106 X:00DE Y:0500 P:envmxdIzc
$01/94D1 1A INC A A:0107 X:00DE Y:0500 P:envmxdIzc
$01/94D2 85 83 STA $83 [$00:0083] A:0108 X:00DE Y:0500 P:envmxdIzc
$01/94D4 49 00 04 EOR #$0400 A:0108 X:00DE Y:0500 P:envmxdIzc
$01/94D7 85 12 STA $12 [$00:0012] A:0508 X:00DE Y:0500 P:envmxdIzc
$01/94D9 A5 95 LDA $95 [$00:0095] A:0508 X:00DE Y:0500 P:envmxdIzc
$01/94DB F0 25 BEQ $25 [$9502] A:0000 X:00DE Y:0500 P:envmxdIZc
$01/9502 A5 97 LDA $97 [$00:0097] A:0000 X:00DE Y:0500 P:envmxdIZc
$01/9504 85 9B STA $9B [$00:009B] A:00E0 X:00DE Y:0500 P:envmxdIzc
$01/9506 E6 8A INC $8A [$00:008A] A:00E0 X:00DE Y:0500 P:envmxdIzc
$01/9508 A5 8A LDA $8A [$00:008A] A:00E0 X:00DE Y:0500 P:envmxdIzc
$01/950A 18 CLC A:22CE X:00DE Y:0500 P:envmxdIzc
$01/950B 69 10 00 ADC #$0010 A:22CE X:00DE Y:0500 P:envmxdIzc
$01/950E 85 15 STA $15 [$00:0015] A:22DE X:00DE Y:0500 P:envmxdIzc
$01/9510 A5 85 LDA $85 [$00:0085] A:22DE X:00DE Y:0500 P:envmxdIzc
$01/9512 29 1E 00 AND #$001E A:0106 X:00DE Y:0500 P:envmxdIzc
$01/9515 C9 1E 00 CMP #$001E A:0006 X:00DE Y:0500 P:envmxdIzc
$01/9518 D0 0B BNE $0B [$9525] A:0006 X:00DE Y:0500 P:eNvmxdIzc
$01/9525 A5 85 LDA $85 [$00:0085] A:0006 X:00DE Y:0500 P:eNvmxdIzc
$01/9527 1A INC A A:0106 X:00DE Y:0500 P:envmxdIzc
$01/9528 1A INC A A:0107 X:00DE Y:0500 P:envmxdIzc
$01/9529 85 85 STA $85 [$00:0085] A:0108 X:00DE Y:0500 P:envmxdIzc
$01/952B 49 00 04 EOR #$0400 A:0108 X:00DE Y:0500 P:envmxdIzc
$01/952E 85 0F STA $0F [$00:000F] A:0508 X:00DE Y:0500 P:envmxdIzc
$01/9530 08 PHP A:0508 X:00DE Y:0500 P:envmxdIzc
$01/9531 8B PHB ; Sichere aktuelle Direct Bank auf dem Stack
$01/9532 F4 00 7E PEA $7E00 ; Setze $7E als Direct Bank
$01/9535 AB PLB
$01/9536 AB PLB
$01/9537 A5 0F LDA $0F [$00:000F] A:0508 X:00DE Y:0500 P:envmxdIzc
$01/9539 0A ASL A ; Mal zwei
$01/953A 85 03 STA $03 [$00:0003] ; Zwischenspeicherdas als Speicher-Index im BG2-Buffer
$01/953C 29 C0 07 AND #$07C0 ; #%0000.0edc.ba00.0000
$01/953F 0A ASL A ; #%0000.edcb.a000.0000
$01/9540 EB XBA ; #%a000.0000.0000.edcb
$01/9541 29 FF 00 AND #$00FF ; #%0000.0000.0000.edcb
$01/9544 85 06 STA $06 [$00:0006] A:0004 X:00DE Y:0500 P:envmxdIzc
$01/9546 A9 10 00 LDA #$0010 A:0004 X:00DE Y:0500 P:envmxdIzc
$01/9549 38 SEC A:0010 X:00DE Y:0500 P:envmxdIzc
$01/954A E5 06 SBC $06 [$00:0006] A:0010 X:00DE Y:0500 P:envmxdIzC
$01/954C 85 06 STA $06 [$00:0006] A:000C X:00DE Y:0500 P:envmxdIzC
$01/954E 48 PHA A:000C X:00DE Y:0500 P:envmxdIzC
; Bau die neuen 16x16-Tiles gemäß Tilemap im Buffer zusammen.
$01/954F B2 15 LDA ($15) [$7E:22DE] ; Lade BG2 16x16-Tilenummer
$01/9551 29 FF 00 AND #$00FF ; Entferne unnötig vollgeladenen High Byte
$01/9554 0A ASL A ; mal 8 (jeder Eintrag hat 8 Byte Länge)
$01/9555 0A ASL A
$01/9556 0A ASL A
$01/9557 AA TAX ; Transferier in X als Lade-Index
$01/9558 A4 03 LDY $03 [$00:0003] ; Lade Speicher-Index in Y
$01/955A BD 00 70 LDA $7000,x[$7E:7640] ; Lade 1., l-o 8x8-Tile für 16x16 Tile
$01/955D 29 FF 3D AND #$3DFF ; %0011.1101.1111.1111
$01/9560 99 00 90 STA $9000,y[$7E:9A10] ; Speicher in den BG2-Buffer
$01/9563 BD 02 70 LDA $7002,x[$7E:7642] ; Lade 2., r-o 8x8-Tile für 16x16 Tile
$01/9566 29 FF 3D AND #$3DFF
$01/9569 99 02 90 STA $9002,y[$7E:9A12] ; Speicher in den BG2-Buffer (rechts daneben)
$01/956C BD 04 70 LDA $7004,x[$7E:7644] ; Lade 3., l-u 8x8-Tile für 16x16 Tile
$01/956F 29 FF 3D AND #$3DFF
$01/9572 99 40 90 STA $9040,y[$7E:9A50] ; Speicher in den BG2-Buffer (+#$40 = Eine Reihe tiefer)
$01/9575 BD 06 70 LDA $7006,x[$7E:7646] ; Lade 4., r-u 8x8-Tile für 16x16 Tile
$01/9578 29 FF 3D AND #$3DFF
$01/957B 99 42 90 STA $9042,y[$7E:9A52] ; Speicher in den BG2-Buffer (rechts daneben)
$01/957E 98 TYA ; Erhöhe den Speicherindex um #$80 (zwei 8x8px-Reihen tiefer -
nächstes 16x16 Tile)
$01/957F 18 CLC
$01/9580 69 80 00 ADC #$0080
$01/9583 85 03 STA $03 [$00:0003] ; Speicher den Speicher-Index wieder in $03
$01/9585 A5 9F LDA $9F [$00:009F] A:0A90 X:0640 Y:0A10 P:envmxdIzc
$01/9587 4A LSR A A:0080 X:0640 Y:0A10 P:envmxdIzc
$01/9588 18 CLC A:0040 X:0640 Y:0A10 P:envmxdIzc
$01/B175 AD 0C 05 LDA $050C [$00:050C] A:7901 X:04D0 Y:0500 P:envMxdIzC
$01/B178 0D 0D 05 ORA $050D [$00:050D] A:7914 X:04D0 Y:0500 P:envMxdIzC
$01/B17B D0 02 BNE $02 [$B17F] (Überspringt ein Exit?)
$01/B17F A9 E0 LDA #$E0 A:7914 X:04D0 Y:0500 P:envMxdIzC
$01/B181 1C FF 17 TRB $17FF [$00:17FF] A:79E0 X:04D0 Y:0500 P:eNvMxdIzC
$01/B184 A9 40 LDA #$40 A:79E0 X:04D0 Y:0500 P:eNvMxdIZC
$01/B186 14 61 TRB $61 [$00:0061] A:7940 X:04D0 Y:0500 P:envMxdIzC
$01/B188 A9 FF LDA #$FF A:7940 X:04D0 Y:0500 P:envMxdIZC
$01/B18A 85 79 STA $79 [$00:0079] A:79FF X:04D0 Y:0500 P:eNvMxdIzC
$01/B18C C2 20 REP #$20
$01/B18E AD 04 05 LDA $0504 [$00:0504] ; X-Pos aufm Bildschirm
$01/B191 18 CLC
$01/B192 65 97 ADC $97 [$00:0097] ; Plus Scrollwert
$01/B194 85 03 STA $03 [$00:0003] ; Globale X-Position in $03
$01/B196 4A LSR A
$01/B197 4A LSR A
$01/B198 4A LSR A ; Geteilt durch 8
$01/B199 E2 20 SEP #$20 ; A = 8 Bit
$01/B19B 8D 31 05 STA $0531 [$00:0531] ; = $0531 X-Koord des Tiles(?) auf dem man steht(?)
$01/B19E C2 20 REP #$20
$01/B1A0 AD 02 05 LDA $0502 [$00:0502] ; Y-Pos aufm Bildschirm
$01/B1A3 18 CLC
$01/B1A4 65 99 ADC $99 [$00:0099] ; Plus Scrollwert
$01/B1A6 85 09 STA $09 [$00:0009] ; Globale Y-Position in $09
$01/B1A8 4A LSR A
$01/B1A9 4A LSR A
$01/B1AA 4A LSR A ; Geteilt durch 8
$01/B1AB E2 20 SEP #$20 ; A = 8 Bit
$01/B1AD 8D 30 05 STA $0530 [$00:0530] ; = $0530 Y-Koord des Tiles(?) auf dem man steht(?)
$01/B1B0 AD 31 05 LDA $0531 [$00:0531] A:0022 X:04D0 Y:0500 P:envMxdIzc
$01/B1B3 8D 76 05 STA $0576 [$00:0576] A:002B X:04D0 Y:0500 P:envMxdIzc
$01/B1B6 A9 0C LDA #$0C A:002B X:04D0 Y:0500 P:envMxdIzc
$01/B1B8 2D 06 05 AND $0506 [$00:0506] ; Abgleich mit Blickrichtungs-Flagregister
$01/B1BB F0 22 BEQ $22 [$B1DF] ; Wenn nicht = #$40, dann spring
$01/B1DF AD 30 05 LDA $0530 [$00:0530] A:0000 X:04D0 Y:0500 P:envMxdIZc
$01/B1E2 8D 75 05 STA $0575 [$00:0575] A:0022 X:04D0 Y:0500 P:envMxdIzc
$01/B1E5 AD 06 05 LDA $0506 [$00:0506] ; Blickrichtung
$01/B1E8 C9 02 CMP #$02 ; Blickrichtung nach links?
$01/B1EA F0 0C BEQ $0C [$B1F8] ; Spring wenn ja
$01/B1EC AD 31 05 LDA $0531 [$00:0531] ; Lade X-Koordinate des aktuellen 8x8-Tiles
$01/B1EF 18 CLC
$01/B1F0 6D 15 05 ADC $0515 [$00:0515] ; Plus Spritebreite in 8px-Schritten
$01/B1F3 8D 76 05 STA $0576 [$00:0576] ; $576= Koordinate "Ziel-Tile"; das, was als nächstes betreten wird
$01/B1F6 80 07 BRA $07 [$B1FF] A:002D X:04D0 Y:0500 P:envMxdIzc
$01/B1FF A5 6F LDA $6F [$00:006F] A:002D X:04D0 Y:0500 P:envMxdIzc
$01/B201 D0 03 BNE $03 [$B206] A:0001 X:04D0 Y:0500 P:envMxdIzc
$01/B206 CD 06 05 CMP $0506 [$00:0506] ; Vergleiche mit Blickrichtung
$01/B209 F0 03 BEQ $03 [$B20E] A:0001 X:04D0 Y:0500 P:envMxdIZC
;Wird neues 8x8 Tile betreten?
$01/B20E A9 06 LDA #$06 ; Endet die aktuelle Gesamtposition auf #$06/#$0C? D.h., wird...
$01/B210 25 03 AND $03 [$00:0003] ; ... ein neues 8x8-Tile betreten?
$01/B212 D0 2C BNE $2C [$B240] ; spring, wenn nicht
$01/B214 A9 02 LDA #$02 A:0000 X:04D0 Y:0500 P:envMxdIZC
$01/B216 24 6F BIT $6F [$00:006F] A:0002 X:04D0 Y:0500 P:envMxdIzC
$01/B218 F0 10 BEQ $10 [$B22A] A:0002 X:04D0 Y:0500 P:envMxdIZC
$01/B22A A9 01 LDA #$01 A:0002 X:04D0 Y:0500 P:envMxdIZC
$01/B22C 24 6F BIT $6F [$00:006F] A:0001 X:04D0 Y:0500 P:envMxdIzC
$01/B22E F0 10 BEQ $10 [$B240] A:0001 X:04D0 Y:0500 P:envMxdIzC
$01/B230 C2 20 REP #$20 A:0001 X:04D0 Y:0500 P:envMxdIzC
$01/B232 A0 08 00 LDY #$0008 A:0001 X:04D0 Y:0500 P:envmxdIzC
$01/B235 B7 69 LDA [$69],y[$05:801E] A:0001 X:04D0 Y:0008 P:envmxdIzC
$01/B237 A8 TAY A:0000 X:04D0 Y:0008 P:envmxdIZC
$01/B238 E2 20 SEP #$20 A:0000 X:04D0 Y:0000 P:envmxdIZC
$01/B23A 20 80 B2 JSR $B280 [$01:B280] A:0000 X:04D0 Y:0000 P:envMxdIZC
$01/B240 A9 06 LDA #$06 A:0004 X:04D0 Y:0500 P:envMxdIzC
$01/B242 25 09 AND $09 [$00:0009] A:0006 X:04D0 Y:0500 P:envMxdIzC
$01/B244 D0 2C BNE $2C [$B272] A:0002 X:04D0 Y:0500 P:envMxdIzC
$01/B272 C2 20 REP #$20 A:0002 X:04D0 Y:0500 P:envMxdIzC
$01/B274 A0 0E 00 LDY #$000E A:0002 X:04D0 Y:0500 P:envmxdIzC
$01/B277 B7 69 LDA [$69],y[$05:8024] A:0002 X:04D0 Y:000E P:envmxdIzC
$01/B279 A8 TAY A:80AD X:04D0 Y:000E P:eNvmxdIzC
$01/B27A E2 20 SEP #$20 A:80AD X:04D0 Y:80AD P:eNvmxdIzC
$01/B27C A9 10 LDA #$10 A:80AD X:04D0 Y:80AD P:eNvMxdIzC
$01/B27E 04 75 TSB $75 [$00:0075] A:8010 X:04D0 Y:80AD P:envMxdIzC
$01/B280 C0 01 00 CPY #$0001 A:8010 X:04D0 Y:80AD P:envMxdIZC
$01/B283 B0 01 BCS $01 [$B286] A:8010 X:04D0 Y:80AD P:eNvMxdIzC
$01/B286 84 6C STY $6C [$00:006C] A:8010 X:04D0 Y:80AD P:eNvMxdIzC
$01/B288 A5 6B LDA $6B [$00:006B] A:8010 X:04D0 Y:80AD P:eNvMxdIzC
$01/B28A 85 6E STA $6E [$00:006E] A:8005 X:04D0 Y:80AD P:envMxdIzC
$01/B28C A0 00 00 LDY #$0000 A:8005 X:04D0 Y:80AD P:envMxdIzC
$01/B28F 80 16 BRA $16 [$B2A7] A:8005 X:04D0 Y:0000 P:envMxdIZC
$01/B2A7 C8 INY A:8005 X:04D0 Y:0000 P:envMxdIZC
$01/B2A8 B7 6C LDA [$6C],y[$05:80AE] A:8005 X:04D0 Y:0001 P:envMxdIzC
$01/B2AA C8 INY A:8001 X:04D0 Y:0001 P:envMxdIzC
$01/B2AB 0A ASL A A:8001 X:04D0 Y:0002 P:envMxdIzC
$01/B2AC D0 03 BNE $03 [$B2B1] A:8002 X:04D0 Y:0002 P:envMxdIzc
$01/B2B1 C9 0E CMP #$0E A:8002 X:04D0 Y:0002 P:envMxdIzc
$01/B2B3 90 03 BCC $03 [$B2B8] A:8002 X:04D0 Y:0002 P:eNvMxdIzc
$01/B2B8 85 00 STA $00 [$00:0000] A:8002 X:04D0 Y:0002 P:eNvMxdIzc
$01/B2BA 64 01 STZ $01 [$00:0001] A:8002 X:04D0 Y:0002 P:eNvMxdIzc
$01/B2BC A6 00 LDX $00 [$00:0000] A:8002 X:04D0 Y:0002 P:eNvMxdIzc
$01/B2BE A9 02 LDA #$02 A:8002 X:0002 Y:0002 P:envMxdIzc
$01/B2C0 04 75 TSB $75 [$00:0075] A:8002 X:0002 Y:0002 P:envMxdIzc
$01/B2C2 7C BB E3 JMP ($E3BB,x)[$01:B2C5] A:8002 X:0002 Y:0002 P:envMxdIZc
$01/B2C5 C2 20 REP #$20 A:8002 X:0002 Y:0002 P:envMxdIZc
$01/B2C7 B7 6C LDA [$6C],y[$05:80AF] A:8002 X:0002 Y:0002 P:envmxdIZc
$01/B2C9 C8 INY A:0514 X:0002 Y:0002 P:envmxdIzc
$01/B2CA C8 INY A:0514 X:0002 Y:0003 P:envmxdIzc
$01/B2CB 85 00 STA $00 [$00:0000] A:0514 X:0002 Y:0004 P:envmxdIzc
$01/B2CD E2 20 SEP #$20 A:0514 X:0002 Y:0004 P:envmxdIzc
$01/B2CF A9 7E LDA #$7E A:0514 X:0002 Y:0004 P:envMxdIzc
$01/B2D1 85 02 STA $02 [$00:0002] A:057E X:0002 Y:0004 P:envMxdIzc
$01/B2D3 B7 6C LDA [$6C],y[$05:80B1] A:057E X:0002 Y:0004 P:envMxdIzc
$01/B2D5 C8 INY A:05F0 X:0002 Y:0004 P:eNvMxdIzc
$01/B2D6 8D 0B 0F STA $0F0B [$00:0F0B] A:05F0 X:0002 Y:0005 P:envMxdIzc
$01/B2D9 4C 04 0F JMP $0F04 [$01:0F04] A:05F0 X:0002 Y:0005 P:envMxdIzc
$01/0F04 A7 00 LDA [$00] [$7E:0514] A:05F0 X:0002 Y:0005 P:envMxdIzc
$01/0F06 D7 6C CMP [$6C],y[$05:80B2] A:05FF X:0002 Y:0005 P:eNvMxdIzc
$01/0F08 08 PHP A:05FF X:0002 Y:0005 P:eNvMxdIzC
$01/0F09 C8 INY A:05FF X:0002 Y:0005 P:eNvMxdIzC
$01/0F0A 28 PLP A:05FF X:0002 Y:0006 P:envMxdIzC
$01/0F0B F0 03 BEQ $03 [$0F10] A:05FF X:0002 Y:0006 P:eNvMxdIzC
$01/0F0D 4C 91 B2 JMP $B291 [$01:B291] A:05FF X:0002 Y:0006 P:eNvMxdIzC
$01/B291 C2 20 REP #$20 A:05FF X:0002 Y:0006 P:eNvMxdIzC
$01/B293 A0 00 00 LDY #$0000 A:05FF X:0002 Y:0006 P:eNvmxdIzC
$01/B296 A7 6C LDA [$6C] [$05:80AD] A:05FF X:0002 Y:0000 P:envmxdIZC
$01/B298 29 FF 00 AND #$00FF A:010B X:0002 Y:0000 P:envmxdIzC
$01/B29B D0 03 BNE $03 [$B2A0] A:000B X:0002 Y:0000 P:envmxdIzC
$01/B2A0 18 CLC A:000B X:0002 Y:0000 P:envmxdIzC
$01/B2A1 65 6C ADC $6C [$00:006C] A:000B X:0002 Y:0000 P:envmxdIzc
$01/B2A3 85 6C STA $6C [$00:006C] A:80B8 X:0002 Y:0000 P:eNvmxdIzc
$01/B2A5 E2 20 SEP #$20 A:80B8 X:0002 Y:0000 P:eNvmxdIzc
$01/B29D 82 97 00 BRL $0097 [$B337] A:0000 X:0002 Y:0000 P:envmxdIZC
$01/B337 E2 20 SEP #$20 A:0000 X:0002 Y:0000 P:envmxdIZC
$01/B339 AD FF 17 LDA $17FF [$00:17FF] A:0000 X:0002 Y:0000 P:envMxdIZC
$01/B33C 0A ASL A A:0001 X:0002 Y:0000 P:envMxdIzC
$01/B33D 90 0D BCC $0D [$B34C] A:0002 X:0002 Y:0000 P:envMxdIzc
$01/B34C A9 20 LDA #$20 A:0002 X:0002 Y:0000 P:envMxdIzc
$01/B34E 2C FF 17 BIT $17FF [$00:17FF] A:0020 X:0002 Y:0000 P:envMxdIzc
$01/B351 F0 0A BEQ $0A [$B35D] A:0020 X:0002 Y:0000 P:envMxdIZc
$01/B35D 08 PHP A:0020 X:0002 Y:0000 P:envMxdIZc
$01/B35E A9 40 LDA #$40 A:0020 X:0002 Y:0000 P:envMxdIZc
$01/B360 24 75 BIT $75 [$00:0075] A:0040 X:0002 Y:0000 P:envMxdIzc
$01/B362 F0 17 BEQ $17 [$B37B] A:0040 X:0002 Y:0000 P:envMxdIZc
$01/B37B A9 20 LDA #$20 A:0040 X:0002 Y:0000 P:envMxdIZc
$01/B37D 24 75 BIT $75 [$00:0075] A:0020 X:0002 Y:0000 P:envMxdIzc
$01/B37F F0 03 BEQ $03 [$B384] A:0020 X:0002 Y:0000 P:envMxdIZc
$01/B384 A9 01 LDA #$01 A:0020 X:0002 Y:0000 P:envMxdIZc
$01/B386 24 75 BIT $75 [$00:0075] A:0001 X:0002 Y:0000 P:envMxdIzc
$01/B388 F0 30 BEQ $30 [$B3BA] A:0001 X:0002 Y:0000 P:envMxdIZc
$01/B3BA A9 80 LDA #$80 A:0001 X:0002 Y:0000 P:envMxdIZc
$01/B3BC 24 75 BIT $75 [$00:0075] A:0080 X:0002 Y:0000 P:eNvMxdIzc
$01/B3BE F0 03 BEQ $03 [$B3C3] A:0080 X:0002 Y:0000 P:envMxdIZc
$01/B3C3 7B TDC A:0080 X:0002 Y:0000 P:envMxdIZc
$01/B3C4 AD 42 05 LDA $0542 [$00:0542] A:0000 X:0002 Y:0000 P:envMxdIZc
$01/B3C7 C9 FF CMP #$FF A:00FF X:0002 Y:0000 P:eNvMxdIzc
$01/B3C9 F0 0B BEQ $0B [$B3D6] A:00FF X:0002 Y:0000 P:envMxdIZC
$01/B3D6 A9 F3 LDA #$F3 A:00FF X:0002 Y:0000 P:envMxdIZC
$01/B3D8 14 75 TRB $75 [$00:0075] A:00F3 X:0002 Y:0000 P:eNvMxdIzC
$01/B3DA 28 PLP A:00F3 X:0002 Y:0000 P:eNvMxdIzC
$01/B3DB 60 RTS A:00F3 X:0002 Y:0000 P:envMxdIZc
