;A0-HI dla zapisu PPU,A1-LO dla zapisu PPU,A2-Odlicza ile odczyta do koca lini,A3-LO dla zapisu Atryb,A4-Ile lini ma odczytac,zanim zwikszy HI PPU,A5-ODczytuje bajt mapy
Wczytuj_Zestawy_Zwieksz_HI:
 inc addrHI
 jmp Wczytuj_Zest_Sprawdz_Y

TableA0:
 lda #$80
 sta $2000
 lda #$00
 sta $2001
 sta Tymczasowa_Kolizje2

 stx $a0

 lda #$02
 sta $A4

 ldx #$0
 stx $A1
 stx $A5
 lda Numer_Lev
 asl A
 TAX
 lda Typy_Zestawow+0
 sta addrLO
 Lda Typy_Zestawow+1              ; start out at 0
 sta addrHI

 lda #$C0
 sta $A3

Wczytuj_Zest_PRE_START:
 lda #$8
 sta $A2

Wczytuj_Zest_START
 lda $A5
 TAY

 jsr Ustal_ID_Mapy_ADV	;Trzeba da Jsr,bo nie mieci si w zasigu...

 LDA [addrLO2], y	;Odczytuje ID bloku

 jsr Podmiana.Zest

 TAX

Wczytuj_Zest2:
 cpx #$00
 beq bloki
Wczytuj_Zest_UstawY:
 ldy #$11

Wczytuj_Zest:				;Sprawdza czyAddrLO=00,i zwieksza HI o 1
 dey
 inc addrLO
 lda addrLO
 beq Wczytuj_Zestawy_Zwieksz_HI

Wczytuj_Zest_Sprawdz_Y:
 cpy #$00
 bne Wczytuj_Zest

 dex 
 bne Wczytuj_Zest_UstawY

bloki:
 ldx #4
bleach:
 lda $A0
 STa $2006             ; W X powinno by podane do ktrej name table zapisa
 LDA $A1
 STA $2006             ; write the low byte of $2000 address

 ldy #$00
Czysc_NameB:
 LDA [addrLO], y

 sta $2007

 iny 
 cpy #$04
 bne Czysc_NameB

 jsr Zwieksz_AddrLO	;Ostatnie sprawdzanie lini nie mieci si w zasigu...dajc jsr oszczdza si miejsce..
				;midzy sprawdzeniem a odesaniem.
 dex
 bne bleach

 jsr Wczytaj_Atryb

 dec $A2
 bne Wczytuj_Zest_START		;Skoczyo wczytywac lini zestaww...
 
 lda $A1
 clc
 adc #$60			;Ustaw procesor na nastepn lini...
 sta $A1

 lda $A0
 cmp #$23
 beq Wczytaj_OStatni_Blok
 cmp #$27
 beq Wczytaj_OStatni_Blok
Wczytaj_OStatni_Blok2:
 dec $A4
 bne Wczytuj_Zest_PRE_START	;Skoczyo wczytywa 2 lini blokw...

 lda #$02
 sta $A4
 inc $A0
 lda $A0
 cmp #$24
 bne Wczytuj_Zest_PRE_START
 cmp #$28
 bne Wczytuj_Zest_PRE_START

 lda #$00
 sta $2006
 sta $2006
 rts
Wczytaj_OStatni_Blok:
 lda $A1
 cmp #$80
 bne Wczytaj_OStatni_Blok2

 lda Numer_Lev
 beq Bez.Ryba	;Jeli title to bez ryby dawaj

 jsr GFX.Ryba

Bez.Ryba:
 JSR CZYSC_PPU

 rts 
Zwieksz_AddrLO:
 lda $A1
 clc
 adc #$20
 sta $A1

 inc addrLO
 inc addrLO
 inc addrLO
 inc addrLO

 lda addrLO
 cmp #$04
 bcc Zwieksz_AddrLO_HI	;Zwiksz HI jeli trzeba(ta funkcja si wykonuje po wyrysowanie 1 lini zestawu)
 rts

Zwieksz_AddrLO_HI:
 inc addrHI
 rts

Wczytaj_Atryb:
 LDA $2002             ; read PPU status to reset the high/low latch
 lda $A0
 cmp #$24
 bcc Wczytaj_Atryb1
 lda #$27
 jmp Wczytaj_Atryb3
Wczytaj_Atryb1:
 lda #$23
Wczytaj_Atryb3:
 STa $2006             ; W X powinno by podane do ktrej name table zapisa
 LDA $A3
 STA $2006             ; write the low byte of $2000 address

 dec addrLO
 dec addrLO
 dec addrLO
 dec addrLO

 lda addrLO
 cmp #$FC
 bcs Atryb_DEC	;Zmniejsz HI jeli atryb tego wymaga

Wczytaj_Atryb2:
 LDA [addrLO], y
 sta $2007


 inc $A3		;Zwiksza ID Atrybutu
 
 lda $A1
 sec
 sbc #$7C			;Cofa procesor do miejca w ktrym trzeba wpisywac nastpny blok
 sta $A1
 
 inc $A5

 lda Typy_Zestawow+0		;Resetuje LO Zestawu
 sta addrLO
 lda Typy_Zestawow+1		;Resetuje LO Zestawu
 sta addrHI
 
 rts

Atryb_DEC:
 dec addrHI
 jmp Wczytaj_Atryb2

Ustal_ID_Mapy_ADV:
 lda Numer_Lev
 asl A
 TAX
 lda MoveMapTable+0,x
 sta addrLO2
 lda MoveMapTable+1,x
 sta addrHI2
 rts

Kolizje.ToRAM:	;Uwaga! W pliku kolizji 1 bajt oznacza kolizje dla 8 patternw w grze(ograniczenie..)
 LSR A
 LSR A
 LSR A		;Uzyskaj z ID tilesa id kolizji

 sta Tymczasowa_Kolizje1		;zabezpiecz A

 lda Tymczasowa_Kolizje2
 cmp #$20
 beq Kolizje.ToRAM.RTS

 TXA
 PHA		;Zabezpiecz X

 TYA
 PHA		;Zabezpiecz Y

 lda Tymczasowa_Kolizje1		;Odzyskaj A

 TAX
 lda DZF,x				;odczytaj bajt kolizji...
 ldy Tymczasowa_Kolizje2		;Trzyma Y dla pozycji odczytu z pliku kolizji
 sta Kolizje_Array,y
 inc Tymczasowa_Kolizje2

 PLA
 TAY		;Odzyskaj Y

 PLA
 TAX		;Odzyskaj X

Kolizje.ToRAM.RTS:
 rts

Podmiana.Zest:		;przy wywoaniu w Y jest ktry blok wczytuje
 PHA
 ldx #$0

Podmiana.Zest.Loop:
 lda Podmiana.Mapa,x
 cmp Numer_Lev
 bne Podmiana.Zest.RTS

 TYA
 cmp Podmiana.X,x
 bne Podmiana.Zest.RTS

 PLA
 lda Podmiana.ID,x
 rts

Podmiana.Zest.RTS:
 inx
 cpx #$10
 bne Podmiana.Zest.Loop
 PLA
 rts

DZF: .incbin "kol.dat"

MoveMapTable:
 .dw Map00,Map01,Map02,Map03,Map04,Map05,Map06,Map07,Map08,Map09
 .dw Map0A,Map0B,Map0C,Map0D,Map0E,Map0F
 .dw Map10,Map11,Map12,Map13,Map14,MapEX,Map15,Map16,Map17,Map18,Map19
 .dw Map1A,Map1B,Map1C,Map1D,Map1E,Map1F
 .dw Map20,Map21,Map22,Map23,Map24,Map25,Map26

Typy_Zestawow:
 .dw Zestawy

Map00: .incbin "Mapy\Mapy\00.dat"
Map01: .incbin "Mapy\Mapy\01.dat"
Map02: .incbin "Mapy\Mapy\02.dat"
Map03: .incbin "Mapy\Mapy\03.dat"
Map04: .incbin "Mapy\Mapy\04.dat"
Map05: .incbin "Mapy\Mapy\05.dat"
Map06: .incbin "Mapy\Mapy\06.dat"
Map07: .incbin "Mapy\Mapy\07.dat"
Map08: .incbin "Mapy\Mapy\08.dat"
Map09: .incbin "Mapy\Mapy\09.dat"
Map0A: .incbin "Mapy\Mapy\0A.dat"
Map0B: .incbin "Mapy\Mapy\0B.dat"
Map0C: .incbin "Mapy\Mapy\0C.dat"
Map0D: .incbin "Mapy\Mapy\0D.dat"
Map0E: .incbin "Mapy\Mapy\0E.dat"
Map0F: .incbin "Mapy\Mapy\0F.dat"
Map10: .incbin "Mapy\Mapy\10.dat"
Map11: .incbin "Mapy\Mapy\11.dat"
Map12: .incbin "Mapy\Mapy\12.dat"
Map13: .incbin "Mapy\Mapy\13.dat"
Map14: .incbin "Mapy\Mapy\14.dat"
Map15: .incbin "Mapy\Mapy\15.dat"
Map16: .incbin "Mapy\Mapy\16.dat"
Map17: .incbin "Mapy\Mapy\17.dat"
Map18: .incbin "Mapy\Mapy\18.dat"
Map19: .incbin "Mapy\Mapy\19.dat"
Map1A: .incbin "Mapy\Mapy\1a.dat"
Map1B: .incbin "Mapy\Mapy\1b.dat"
Map1C: .incbin "Mapy\Mapy\1c.dat"
Map1D: .incbin "Mapy\Mapy\1d.dat"
Map1E: .incbin "Mapy\Mapy\1e.dat"
Map1F: .incbin "Mapy\Mapy\1f.dat"
Map20: .incbin "Mapy\Mapy\20.dat"
Map21: .incbin "Mapy\Mapy\21.dat"
Map22: .incbin "Mapy\Mapy\22.dat"
Map23: .incbin "Mapy\Mapy\23.dat"
Map24: .incbin "Mapy\Mapy\24.dat"
Map25: .incbin "Mapy\Mapy\25.dat"
Map26: .incbin "Mapy\Mapy\26.dat"
MapEX: .incbin "Mapy\Mapy\ex.dat"

Zestawy: .incbin "Mapy\Zestawy\Lesny.dat"
