Zdarzenia_Adv:		;Wczytuje zdarzenia z adresw.

 lda MOE.Dialog
 bne Zdarzenia_Adv_END	;Jeli dialog waczony to wycz zdarzenia...

 lda Gracz.control
 AND #%00000100
 cmp #%00000100		;Sprawd czy  ustawi mier postaci...
 beq Zdarzenia_Adv_END

 ldy #$0A
 sty ID_Zdarzenie
Zdarzenia_Adv2:
 ldy ID_Zdarzenie
 iny
 lda Numer_Lev
 asl A
 tax

 lda pokoje2+0,x
 sta addrLO
 Lda pokoje2+1,x
 sta addrHI

 LDA [addrLO], y
 cmp #$FF
 beq Zdarzenia_Adv_END

 sta $B0
 iny
 LDA [addrLO], y
 sty ID_Zdarzenie
 sta $B1
 jmp [$B0]

Zdarzenia_Adv_END:

 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Use_Item:	;SPrawdza kolizje dla itemw
 stx Temp2	;Zachowaj X
 sta Temp1
 ASL A		;W A zapoda ID itemu...
 clc
 adc Temp1	;Liczba koordynatw jest nie parzysta...trzeba doda koordynat wejciowy
 sta Temp1	;Zapisz X w tablicy do Temp1
 
 TAX
 lda ItemID,x
 cmp Numer_Lev
 bne Use_Item_Fail

 lda Temp2
 sec
 sbc #$10		;10 a nie 8 bo jeszcze doliczy naley 8 z gfx itemu...
 cmp ItemX,x
 bcs Use_Item_Fail	;Jeli za daleko po lewej

 lda Temp2
 clc
 adc #$08
 cmp ItemX,x
 bcc Use_Item_Fail	;Jeli za daleko po prawej

 sty Temp2		;Y zdarzenia

 lda Temp2
 sec
 sbc #$08
 cmp ItemY,x
 bcs Use_Item_Fail	;Jeli za wysoko

 lda Temp2
 clc
 adc #$08
 cmp ItemY,x
 bcc Use_Item_Fail	;Jeli za nisko

 lda #$00
 rts

Use_Item_Fail:
 lda #$01	;Item nie nadzia si na kolizje z zdarzeniem
 rts		

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Manual:
 lda Flagi_Zadan2
 AND #%00000010
 cmp #%00000010
 beq Manual.RTS

 lda #$01
 sta Promien_Y
 lda #$10
 ldx #$60
 ldy #$08
 jsr Kolizje_Dizzy
 bne Manual.RTS
 
 lda Flagi_Zadan2
 EOR #%00000010
 sta Flagi_Zadan2

 lda #$1F
 jsr Dialog.START

Manual.RTS:
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Teleport:
 lda #$01
 sta Promien_Y
 lda #$10
 ldx #$65
 ldy #$87
 jsr Kolizje_Dizzy
 bne Arma

 lda Nacisn_guzik
 AND #%01000000
 cmp #%01000000
 bne Arma

 lda #$0A
 sta Numer_Lev
 jsr Czysc_Sprity

 jsr CZYSC_PPU

 ldx #$20
 jsr TableA0

 jsr PPU_ON

 lda #$66
 sta Hero_X
 lda #$46
 sta Hero_Y
Arma:
 jmp Zdarzenia_Adv2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Most:
 lda $FF
 beq mostxd

 lda #$12
 jsr Dialog.START

 lda #$00
 sta $FF
mostxd
 lda Flagi_Zadan
 AND #%00000001
 cmp #$01
 beq Arma	;Jeli tasak uyty

 lda #$08
 ldx #$86
 ldy #$98
 jsr Use_Item
 bne Arma

 lda #$0E
 sta $515

 lda #$2C
 sta $525

 lda #$00
 sta $535		;Podmiana blokw

 lda #$20
 jsr Dialog.START

 lda Flagi_Zadan
 ORA #%00000001
 sta Flagi_Zadan	;Wycz most

 lda #$00
 sta $7B8

 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Woda.GFX:		;Wczeniej wpisa Buffer LO i HI, W Y ile blokw 4x4 wyrysowywa
 lda #$01
 sta Buff.Enable	;Tryb natychmiastowy

 ldx #$00
 stx Buff.X

Woda.GFX.Loop:
 lda Global_Adv
 cmp #$80
 bcc Woda.GFX.1

 lda #$6E
 PHA
 lda #$6F
 PHA
 jmp Woda.GFXok

Woda.GFX.1: 
 lda #$6F
 PHA
 lda #$6E
 PHA

Woda.GFXok:
 PLA
 sta Buff.Text,x
 inx
 inx
 sta Buff.Text,x
 dex
 PLA
 sta Buff.Text,x
 inx
 inx
 sta Buff.Text,x
 inx

 inc $ed
 dey
 bne Woda.GFX.Loop

 lda #$FF
 sta Buff.Text,x
 rts

Woda.GFX.RTS:
 rts


Woda1:
 lda #$8C
 sta Buff.LO

 lda #$21
 sta Buff.HI

 ldy #$01

 jsr Woda.GFX

 lda #$10
 sta Promien_Y
 lda #$20
 ldx #$58
 ldy #$5a
 jsr Kolizje_Dizzy
 bne Woda1.RTS

 lda Slot1
 cmp #$02
 beq Woda1.OK

 lda Slot2
 cmp #$02
 beq Woda1.OK

 lda Slot3
 cmp #$02
 beq Woda1.OK

 lda Gracz.control
 ORA #%00000100
 sta Gracz.control

Woda1.RTS:
 rts

Woda1.OK:
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Woda1C:
 lda #$48
 sta Buff.LO

 lda #$22
 sta Buff.HI

 ldy #$04

 jsr Woda.GFX

 lda #$50
 sta Promien_Y
 lda #$80
 ldx #$40
 ldy #$88
 jsr Kolizje_Dizzy
 bne Woda1C.OK

 lda Slot1
 cmp #$02
 beq Woda1C.OK

 lda Slot2
 cmp #$02
 beq Woda1C.OK

 lda Slot3
 cmp #$02
 beq Woda1C.OK

 lda Gracz.control
 ORA #%00000100
 sta Gracz.control

Woda1C.OK:
 jmp Zdarzenia_Adv2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Machine.Draw:
 jsr Adres_Data_Glace	;Ustal adres danych

 lda #$00
 sta X_Zdarzenie
 lda #$00
 sta Y_Zdarzenie
 jsr Rys.Postac
 rts

Key.Machine:
 lda Winda.Enable
 AND #%10000000
 cmp #%10000000
 bne Key.Machine.Display.2

 lda #$0A
 jsr Machine.Draw

Key.Machine.Display.2:
 lda Winda.Enable
 AND #%01000000
 cmp #%01000000
 bne Key.Machine.Display.3

 lda #$0B
 jsr Machine.Draw

Key.Machine.Display.3:
 lda Winda.Enable
 AND #%00100000
 cmp #%00100000
 bne Key.Machine.NO.Display

 lda #$0C
 jsr Machine.Draw

Key.Machine.NO.Display:
 lda #$03	;ID itemu
 ldx #$66	;X uycia
 ldy #$70	;Y uycia
 jsr Use_Item
 bne Key.Machine.2

 lda #$00
 sta $7A9	;Wywal Klucz 1

 lda Winda.Enable
 ORA #%10000000
 sta Winda.Enable

Key.Machine.2:
 lda #$04	;ID itemu
 ldx #$66	;X uycia
 ldy #$70	;Y uycia
 jsr Use_Item
 bne Key.Machine.3

 lda #$00
 sta $7AC	;Wywal Klucz 1

 lda Winda.Enable
 ORA #%01000000
 sta Winda.Enable

Key.Machine.3:
 lda #$09	;ID itemu
 ldx #$66	;X uycia
 ldy #$70	;Y uycia
 jsr Use_Item
 bne Key.Machine.RTS

 lda #$00
 sta $7BB	;Wywal Klucz 1

 lda Winda.Enable
 ORA #%00100000
 sta Winda.Enable

Key.Machine.RTS:
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Grave:
 lda Flagi_Zadan
 AND #%00000100
 cmp #%00000100
 beq Grave.RTS

 jsr Grave.CHK

 lda Zdarzenie_Zmienna1
 bne Grave.Dialog

 lda #$01
 sta Promien_Y
 lda #$10
 ldx #$70
 ldy #$68
 jsr Kolizje_Dizzy
 bne Grave.RTS

 lda Nacisn_guzik
 AND #%01000000
 cmp #%01000000
 bne Grave.RTS

 lda Software
 bne Grave.RTS		;Sprawd czy podnosi item ktry jest na nagrobku

Grave.Dialog:
 lda #$10
 jsr Dialog.START
 rts

Grave.CHK:
 lda Zdarzenie_Zmienna1
 bne Grave.Cross.Dialog

Grave.Cross:
 lda #$07	;ID itemu
 ldx #$77	;X uycia
 ldy #$70	;Y uycia
 jsr Use_Item
 bne Grave.Water

 lda #$00
 sta $7B5	;Wyrzu krzy

 lda #$19
 sta $7C1	;Ustaw ID Dzidy

 lda #$70
 sta $7C3	;Ustaw Y Dzidy

Grave.Cross.Dialog:
 lda #$13
 jsr Dialog.START

 rts

Grave.Water:
 lda #$0A	;ID itemu
 ldx #$70	;X uycia
 ldy #$6E	;Y uycia
 jsr Use_Item
 bne Grave.RTS

 lda #$00
 sta $7BE	;Wyrzu wod

 lda #$19
 sta $7C1	;Ustaw ID Dzidy

 lda #$70
 sta $7C3	;Ustaw Y Dzidy

 lda #$13
 jsr Dialog.START

Grave.RTS:
 rts

Grave.OFF:
 lda Flagi_Zadan
 ORA #%00000100
 sta Flagi_Zadan

 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Woda.Screen:	;Woda na caym ekranie
 lda Slot1
 cmp #$02
 beq WodaScreen.OK

 lda Slot2
 cmp #$02
 beq WodaScreen.OK

 lda Slot3
 cmp #$02
 beq WodaScreen.OK

 lda Gracz.control
 ORA #%00000100
 sta Gracz.control
 jmp Zdarzenia_Adv2

WodaScreen.OK:
 jmp Zdarzenia_Adv2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dom1:
 lda Zdarzenie_Zmienna1
 bne Dom1.Dialog

 lda Flagi_Zadan2
 AND #%10000000
 cmp #%10000000
 bne Dom1.Klucz

 lda #$3
 sta Promien_Y
 lda #$10
 ldx #$80
 ldy #$88
 jsr Kolizje_Dizzy
 bne Dom1.RTS

 lda Nacisn_guzik
 AND #%01000000
 cmp #%01000000
 bne Dom1.RTS

 lda #$01	;ID ekranu
 ldx #$C6	;X na ekranie
 ldy #$A8	;Y na ekranie
 jsr Teleporty


Dom1.RTS:
 rts

Dom1.Klucz:
 lda #$06	;ID itemu
 ldx #$89	;X uycia
 ldy #$91	;Y uycia
 jsr Use_Item
 bne Dom1.RTS

 lda #$00
 sta $7B2	;Wyrzu Klucz do domu

 lda #$18
 sta $512
 lda #$24
 sta $522
 lda #$41	;Ustaw blok zestawu
 sta $532

 lda Flagi_Zadan2
 ORA #%10000000
 sta Flagi_Zadan2	;UStaw ze drzwi otwarte

 lda #$16
 jsr Dialog.START
 rts
Dom1.Dialog:
 inc $91
 lda #$16
 jsr Dialog.START

 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dom2:
 lda #$01
 sta Promien_Y
 lda #$10
 ldx #$C6
 ldy #$A8
 jsr Kolizje_Dizzy
 bne Dom2.RTS

 lda Nacisn_guzik
 AND #%01000000
 cmp #%01000000
 bne Dom2.RTS

 lda #$18	;ID ekranu
 ldx #$86	;X na ekranie
 ldy #$88	;Y na ekranie
 jsr Teleporty

Dom2.RTS:
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Duchy:
 lda Zdarzenie_Zmienna1
 beq Duchy.No.Init

 lda #$80
 sta X_Zdarzenie
 lda #$80
 sta Y_Zdarzenie
 inc Zdarzenie_Zmienna1

Duchy.No.Init:
 lda Flagi_Zadan
 AND #%00000010		;Nie wyczaj bitu 01
 cmp #%00000000		;Porwnaj czy jest wyczony
 bne Duch.RTS		;Jeli 1 to zakocz zdarzenie

 lda WindaX
 cmp Hero_X
 bcc Duch.NO.X1

 dec WindaX
 jmp Duch.NO.X2

Duch.NO.X1:
 inc WindaX

Duch.NO.X2:
 lda Hero_Y
 cmp WindaY
 bcc Duch.NO.Y1

 inc WindaY
 
 jmp Duch.NO.Y2

Duch.NO.Y1:
 dec WindaY

Duch.NO.Y2:
 lda #$0  ;Atryb
 sta $7F0

 ldy WindaY

 ldx WindaX

 lda #$87   ;ID
 jsr Rys3

Duch.Kolizje:
 lda #$08
 sta Promien_Y
 ldx WindaX
 lda WindaY
 clc
 adc #$08
 TAY
 lda #$0E
 jsr Kolizje_Dizzy
 bne Duch.RTS

 ldy #$00
Kill.Duch.CHK:
 lda Slot1,y
 cmp #$07	;czy trzyma krzy
 beq Kill.Duch
 cmp #$0A	;czy trzyma wod
 beq Kill.Duch
 iny
 cpy #$03
 bne Kill.Duch.CHK

 lda Gracz.control
 ORA #%00000100
 sta Gracz.control

Duch.RTS:
 rts


Kill.Duch:
 lda Flagi_Zadan
 EOR #%00000010
 sta Flagi_Zadan	;Wycz ducha

 lda #$FF
 sta Slot1,y		;Wywal trzymany przedmiot
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Teleporty:
 sta Numer_Lev
 stx Hero_X
 sty Hero_Y

 jsr Czysc_Sprity

 jsr CZYSC_PPU

 ldx #$20
 jsr TableA0

 lda #$00
 sta Nacisn_guzik

 jsr PPU_ON
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Kamien:
 lda #$00	;ID itemu
 ldx #$44	;X uycia
 ldy #$90	;Y uycia
 jsr Use_Item		;Czy kamie w odpowiednim miejscu?
 bne Kamien.Uzyty	;Jeli nie to sprawd czy ju nie uyty...

 lda #$00
 sta $7A0	;WYwal kamie

 lda #$1E
 jsr Dialog.START

 lda #$22
 sta $513
 sta $523
 lda #$1F	;Ustaw blok na mapie
 sta $533

 lda #$78
 sta Hero_Y

 lda Flagi_Zadan
 ORA #%00001000
 sta Flagi_Zadan	;Ustaw e kamie uyty

Kamien.Uzyty:
 lda Flagi_Zadan
 AND #%00001000
 cmp #%00001000
 bne Kamien.RTS		;Jeli kamie nie wczony

 lda #$0  ;Atryb
 sta $7F0

 ldy #$8F

 ldx #$40  ;X                              ;eb

 lda #$C0   ;ID
 jsr Rys3 

Kamien.RTS:
 rts

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Ladder:
 lda Zdarzenie_Zmienna1
 bne Ladder.Dialog
 
Ladder.Uzyta:
 lda #$05	;ID itemu
 ldx #$A7	;X uycia
 ldy #$70	;Y uycia
 jsr Use_Item		;Czy kamie w odpowiednim miejscu?
 bne Ladder.RTS	;Jeli nie to sprawd czy ju nie uyty...

 lda #$00
 sta $7AF	;Wywal drabin..

 lda #$1D
 sta $510
 sta $520
 lda #$4B	;Ustaw blok drabiny na mapie
 sta $530

 lda #$1D
 sta $514
 lda #$15
 sta $524
 lda #$45	;Ustaw blok na mapie
 sta $534

Ladder.Dialog:
 lda #$15
 jsr Dialog.START

 lda Flagi_Zadan
 EOR #%00010000
 sta Flagi_Zadan 

Ladder.RTS:
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Ryba:
 lda Flagi_Zadan
 AND #%00100000
 cmp #%00000000		;czy ryba yje
 bne Ryba.RTS

 lda Global_Adv
 AND #%00000001		;Dziki temu ryba pywa wolniej
 beq Rys.Ryba

 lda X_Ryba
 cmp #$A0
 bcs Zmien.TOLEFT	;Jeli X wiksze ni moliwe

 cmp #$50
 bcc Zmien.TORIGHT	;Jeli X mniejsze ni moliwe

 lda Kier.Ryba
 bne Ryba.Prawo	

 dec X_Ryba		;Zmniejsz X ryby

 jmp Rys.Ryba

Ryba.Prawo:
 inc X_Ryba

 jmp Rys.Ryba

Zmien.TORIGHT:
 lda #$01
 sta Kier.Ryba

 inc X_Ryba		;Bez tego ryba si zatrzyma zmieniajac kierunek

 jmp Rys.Ryba

Zmien.TOLEFT:
 lda #$00
 sta Kier.Ryba

 dec X_Ryba		;Bez tego ryba si zatrzyma zmieniajac kierunek

Rys.Ryba:
 lda #$01  ;Atryb
 sta $7F0	

 ldy #$A0

 ldx X_Ryba  ;X                              ;eb

 lda Kier.Ryba
 beq Rys.Ryba.Lewo
 
 lda #$50
 jmp Ryba.Rys.END

Rys.Ryba.Lewo:
 lda #$F8   ;ID
Ryba.Rys.END:
 jsr Rys3

Item.USE.Ryba:
 lda #$0B	;ID itemu
 ldx X_Ryba	;X uycia
 ldy #$A0	;Y uycia
 jsr Use_Item		;Czy wcznia w odpowiednim miejscu?
 bne Ryba.RTS

 lda Flagi_Zadan
 EOR #%00100000
 sta Flagi_Zadan	;Zakocz zdarzenie z ryb

 lda #$1C
 sta $7CA	;Ustaw ryb na mapie

 lda #$C1
 sta $7CC	;Ustaw Y Ryby

 lda $7C2	;Zapisz X Gungnira jako X ryby
 sta $7CB

 lda $7C3	;Zapisz Y Gungnira jako Y Ryby
 sta $7CC	

Ryba.RTS:
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Exit.Fix:	;Podmienia co trzeba itp
 lda Flagi_Zadan
 AND #%11000000
 cmp #%11000000
 bne Exit.Fix.RTS

 lda #$04
 sta $511
 lda #$2B
 sta $521
 lda #$41	;Ustaw blok zestawu
 sta $531

 lda #$18
 jsr Dialog.START
 
Exit.Fix.RTS:
 rts

Exit.OK:
 lda Zdarzenie_Zmienna1
 bne Exit.Dialog

 lda #$08
 sta Promien_Y
 lda #$10
 ldx #$66
 ldy #$A8
 jsr Kolizje_Dizzy
 bne Exit.Fix.RTS

 lda Nacisn_guzik
 AND #%01000000
 cmp #%01000000
 bne Exit.Fix.RTS

 LDA #$00
 STA $F1
Exit.Dialog:
 lda #$1b
 jsr Dialog.START
 
 inc $F0
 bne Exit.Dialog
 inc $F1
 lda $F1
 cmp #$20		;Niech doliczy do 20 zanim si wyczy
 bne Exit.Dialog

 JSR Dialog.OFF
Exit.Dialog2:
 lda #$1D
 jsr Dialog.START

 INC $91
 
 inc $F0
 bne Exit.Dialog2
 inc $F1
 lda $F1
 cmp #$40		;Niech doliczy do 20 zanim si wyczy
 bne Exit.Dialog2

 inc $7FF	;Resetuj gr

Exit.Dialog.RTS:
 rts

Exit:
 lda Flagi_Zadan
 AND #%11000000
 cmp #%11000000
 beq Exit.OK

 lda Flagi_Zadan
 AND #%01000000
 cmp #%01000000
 beq Exit.Item1.Draw

 lda #$0C	;ID itemu
 ldx #$6B	;X uycia
 ldy #$B0	;Y uycia
 jsr Use_Item		;Czy kamie w odpowiednim miejscu?
 bne Exit.Item2

 lda Flagi_Zadan
 EOR #%01000000
 sta Flagi_Zadan

 lda #$00
 sta $7C4	;Wywal item

 jsr Exit.Fix

Exit.Item1.Draw:
 lda #$01  ;Atryb
 sta $7F0

 ldy #$A7

 ldx #$68  ;X                             

 lda #$A6   ;ID
 jsr Rys1

 lda #$01  ;Atryb
 sta $7F0

 ldy #$AF

 ldx #$68  ;X                             

 lda #$A7   ;ID
 jsr Rys1

Exit.Item2:
 lda Flagi_Zadan
 AND #%10000000
 cmp #%10000000
 beq Exit.Item2.Draw

 lda #$0D	;ID itemu
 ldx #$6B	;X uycia
 ldy #$B0	;Y uycia
 jsr Use_Item		;Czy kamie w odpowiednim miejscu?
 bne Exit.RTS

 lda Flagi_Zadan
 EOR #%10000000
 sta Flagi_Zadan

 lda #$00
 sta $7C7	;Wywal item

 jsr Exit.Fix

Exit.Item2.Draw:
 lda #$01  ;Atryb
 sta $7F0

 ldy #$A7

 ldx #$68  ;X                              

 lda #$A8   ;ID
 jsr Rys3

Exit.RTS:
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Kot:
 lda Flagi_Zadan2
 AND #%01000000
 cmp #%01000000
 beq Kot.RTS

Kot.Draw:
 lda #$01  ;Atryb
 sta $7F0

 ldy #$4F

 ldx #$A4  ;X                              

 lda #$B0   ;ID
 jsr Rys3

 lda #$0E	;ID itemu
 ldx #$A3	;X uycia
 ldy #$51	;Y uycia
 jsr Use_Item		;Czy kamie w odpowiednim miejscu?
 bne Kot.RTS

 lda Flagi_Zadan2
 EOR #%01000000
 sta Flagi_Zadan2	;Wycz kota

 lda #$00
 sta $7CA		;Wywal Ryb
 
 lda #$14
 jsr Dialog.START

 lda #$09
 sta $7D3		;Ustaw ID memory item

 lda #$57
 sta $7DD		;Ustaw Y memory item

Kot.RTS:
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dola:
 lda Flagi_Zadan2
 AND #%00010000
 cmp #%00010000
 beq Dola2

 lda #$10
 jsr Adres_Data_Glace	;Ustal adres danych

 lda #$74
 sta X_Zdarzenie
 lda #$68
 sta Y_Zdarzenie
 jsr Rys.Postac

 lda #$53
 sta Promien_Y
 ldx #$90
 ldy #$60

 lda #$18
 jsr Kolizje_Dizzy
 bne Dola.RTS

 lda #$12
 jsr Dialog.START

 lda Flagi_Zadan2
 EOR #%00010000
 sta Flagi_Zadan2

Dola2:
 lda Flagi_Zadan2
 AND #%00001000
 cmp #%00001000
 beq Dola.RTS

 lda #$53
 sta Promien_Y
 ldx #$70
 ldy #$68

 lda #$18
 jsr Kolizje_Dizzy
 bne Dola.RTS

 lda #$1C
 jsr Dialog.START

 lda Flagi_Zadan2
 EOR #%00001000
 sta Flagi_Zadan2

Dola.RTS:
 jmp Zdarzenia_Adv2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Herring:
 lda Flagi_Zadan2
 AND #%00100000
 cmp #%00100000
 beq Herring.RTS

 lda Hero_X
 cmp #$A8
 bcs Herring.CHK

 lda Gracz.control
 ORA #%00000100
 sta Gracz.control
 rts

Herring.CHK:
 lda Global_Adv
 AND #%10000000
 cmp #%10000000
 bne Herring.CHK2

 lda #$00
 jmp Herring.Anim

Herring.CHK2:
 lda #$14 

Herring.Anim:
 ldy #$FF
 TAX
 dex
Herring.Anim.Loop:
 inx
 iny
 lda Herring.Anim1,x
 sta Buff.Enable,y
 cmp #$FF
 bne Herring.Anim.Loop

Herring.CHK.Item:
 lda #$0B	;ID itemu
 ldx #$C0	;X uycia
 ldy #$90	;Y uycia
 jsr Use_Item		;Czy kamie w odpowiednim miejscu?
 bne Herring.RTS

 jsr Herring.Bloki

 lda #$21
 jsr Dialog.START

 lda Flagi_Zadan2
 EOR #%00100000
 sta Flagi_Zadan2	;Wyacz herringa

 lda #$00
 sta Buff.Enable
Herring.RTS:
 rts

Herring.Bloki:
 jsr VblankWait

 lda #$1E
 sta $516

 lda #$1C
 sta $526

 lda #$3E
 sta $536		;Podmiana blokw

 lda #$1E
 sta $517

 lda #$1D
 sta $527

 lda #$3F
 sta $537		;Podmiana blokw

 lda #$1E
 sta $518

 lda #$24
 sta $528

 lda #$5E
 sta $538		;Podmiana blokw

 lda #$1E
 sta $519

 lda #$25
 sta $529

 lda #$5F
 sta $539		;Podmiana blokw
 rts

Herring.Anim1:
 .db $01
 .db $34,$22
 .db $00
 .db $B0,$B1,$B2
 .db $FE
 .db $22,$54
 .db $B3,$B4,$B5
 .db $FE
 .db $22,$74
 .db $B6,$B7,$B8
 .db $FF
Herring.Anim2:
 .db $01
 .db $34,$22
 .db $00
 .db $A0,$A1,$A2
 .db $FE
 .db $22,$54
 .db $A6,$A7,$4F
 .db $FE
 .db $22,$74
 .db $A9,$4F,$4F
 .db $FF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HTS.CLR:
 lda #$00
 sta $FF
 jmp HTS.CHK
HTS:
 lda Software
 bne Herring.RTS

 ldy #$FF
 sty $FD
HTS.CHK:
 ldy $FD
 cpy #$24
 beq HTS.RTS
 inc $FD
 lda HTS.Table,y
 cmp Numer_Lev
 bne HTS.CHK

 sty $FE

 lda #$08
 sta Promien_Y
 lda #$10
 iny
 lda HTS.Table,y
 TAX
 iny
 lda HTS.Table,y
 TAY
 jsr Kolizje_Dizzy
 bne HTS.CLR


 ldy $FE
 iny
 iny
 iny
 lda HTS.Table,y
 sta $F0
 iny
 lda HTS.Table,y
 sta $F1
 iny 
 lda HTS.Table,y
 sta $F2

 lda #$1
 sta $FF

 lda HTS.Mapa
 cmp Numer_Lev
 bne HTS.RTS

 jsr HTS.Display

 lda Nacisn_guzik
 AND #%00000100
 cmp #%00000100
 beq HTS.OFF

 lda Nacisn_guzik
 AND #%01000000
 cmp #%01000000
 bne HTS.RTS

 lda Software
 bne HTS.RTS		;Sprawd czy podnosi item ktry jest na zdarzeniu

 ldx $F1	;X na ekranie
 ldy $F2	;Y na ekranie
 
 lda $F0	;ID ekranu
 cmp Numer_Lev
 bne HTS.Flash	;jeli ma przenie na ten sam level, nie bykaj ekranem

 stx Hero_X
 sty Hero_Y

 lda #$01
 sta Software

HTS.RTS:
 rts

HTS.Flash:
 sta HTS.Mapa
 jsr Teleporty

 ;jsr DPCM_Play

 rts

HTS.OFF:
 lda Hero_Y
 clc
 adc #$08
 sta $7A5	;Ustaw Y HTS przy Kolo

 lda Hero_X
 clc
 adc #$04
 sta $7A4	;Ustaw X przy kolo

 lda Numer_Lev
 sta $7A3	;Ustaw HTS na tej samej mapie co kolo
 
 lda #$00
 sta HTS.Mapa	;Wyzeruj dziaajc map dla HTS
 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

HTS.Display:
 lda HTS.Mapa
 cmp Numer_Lev
 bne HTS.RTS

 ldy #$FC
HTS.Display2:
 cpy #$17
 beq HTS.RTS	;Jeli wyszo poza tablic.(Niby nie moe,ale na wszelki wypadek..)

 iny
 iny
 iny
HTS.Display3:
 iny
 lda HTS.Dis.Data,y
 cmp Numer_Lev
 bne HTS.Display2

 lda #$01  ;Atryb
 sta $7F0

 iny
 lda HTS.Dis.Data,y
 TAX

 iny
 TYA
 PHA

 lda HTS.Dis.Data,y
 TAY

 lda #$C4   ;ID
 jsr Rys3

 PLA
 TAY
 iny
 lda HTS.Dis.Data,y
 cmp #$FE
 beq HTS.Display3
 
 rts

HTS.Dis.Data:
 .db $1C,$28,$68,$FE,$1C,$C8,$68,$FF	;Ekran,X,Y i czy zakoczy(FE-nie,FF tak)
 .db $20,$48,$77,$FF
 .db $21,$88,$77,$FF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Title:
 lda #%10000011
 sta Gracz.control	;Gracz nie moze si ruszy,brak grawit.i nie widoczny

 lda #%00001000
 sta $2001

 jsr KEYPAD

 lda Nacisn_guzik
 AND #%00010000
 cmp #%00010000
 bne Title

 lda #$4A
 sta $60

 lda #$FF
 sta ID_Jezyk

 lda #$1A
 jsr Dialog.START

 lda #$1A
 sta Numer_Lev

 rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Winda.Display:
 lda #$02
 jsr Adres_Data_Glace	;Ustal adres danych

 lda WindaX
 sta X_Zdarzenie
 lda WindaY
 sta Y_Zdarzenie
 jsr Rys.Postac

 jsr Elevator_works
 jmp Zdarzenia_Adv2

Arma2:
 lda #$0  ;Atryb
 sta $7F0

 ldy #$BE

 ldx #$8A  ;X                              ;eb

 lda #$80   ;ID
 jsr Rys4
;------------------------------
 lda #$0  ;Atryb
 sta $7F0

 ldy #$CE

 ldx #$8A  ;X                              ;Spd

 lda #$82   ;ID
 jsr Rys5
;------------------------------
 lda #$61  ;Atryb
 sta $7F0

 ldy #$D1

 ldx #$92  ;X                              ;Noga1

 lda #$13   ;ID
 jsr Rys1
;------------------------------
 lda #$01  ;Atryb
 sta $7F0

 ldy #$D1

 ldx #$8A  ;X                              ;Noga2

 lda #$13   ;ID
 jsr Rys1
 rts

Elevator_works:
 lda WindaKier
 beq Elevator_works.SET
 lda WindaKier
 AND #%00000001
 cmp #%00000001
 beq Elevator_works.UP
 lda WindaKier
 AND #%00000010
 cmp #%00000010
 bne Elevator.End

 inc WindaY
 inc Hero_Y

 jsr Ele.Enable.CHK		;Jeli na tym levelu nie ma windy..

 iny
 iny
 lda Elevator.TBL,y 			;Odczytaj Y z tablicy
 cmp WindaY
 beq Elevator_works.OFF

 lda WindaY
 cmp #$DB
 bne Elevator_works.CHK

 lda #$00
 sta WindaY		;Jeli winda wysza za ekran ustaw ja na dole(dla nastpnego ekranu)
 rts

Elevator.End:
 rts

Elevator_works.SET
 jsr Ele.Enable.CHK

 iny
 lda Elevator.TBL+0,y
 sta WindaX

 iny
 lda Elevator.TBL+0,y
 sta WindaY

 jsr Elevator_works.Collision		;Sprawd czy poza wind...jeli tak
 beq Elevator_works.SET.RTS

 lda Gracz.control
 AND #%11111100		;Wyczy grawitacj i sterowno(e moe si ruszy)
 sta Gracz.control
 rts

Elevator_works.UP:
 dec WindaY
 
 jsr Ele.Enable.CHK		;Jeli na tym levelu nie ma windy..

 iny
 iny
 lda Elevator.TBL,y 			;Odczytaj Y z tablicy
 cmp WindaY
 beq Elevator_works.OFF

 
 lda WindaY
 cmp #$F9
 bne Elevator_works.CHK

 lda #$D8
 sta WindaY		;Jeli winda wysza za ekran ustaw ja na dole(dla nastpnego ekranu)
 rts

Elevator_works.SET.RTS:
 jsr CHK.ENB.Ele		;Sprawd czy winda wczona
 beq Elevator.inside		;Jeli tasak uyty

 lda Nacisn_guzik
 AND #%01000000
 cmp #%01000000
 bne Elevator.inside			;Czy nacisn B

 jsr Ele.Interior.Hitbox	;Funkcja ktra bada czy nacisn B w srodku windy
 bne Elevator_works.RTS				;Czyli nie wystaje p postaci poza wind

 jsr Ele.Enable.CHK

 iny
 iny
 iny
 lda Elevator.TBL,y
 sta WindaKier

Elevator.inside:
 lda WindaY
 clc
 adc #$05
 sta Hero_Y

 lda #$02
 sta Gracz.control
 rts

Elevator_works.OFF:
 lda #$00
 sta WindaKier

 lda Gracz.control
 AND #%11111110
 sta Gracz.control
 rts

Elevator_works.CHK:

 jsr Elevator_works.Collision
 bne Elevator_works.RTS

 lda Gracz.control
 ORA #%00000011		;Wycza stery i grawitacj
 sta Gracz.control

 lda WindaY
 clc
 adc #$05
 sta Hero_Y

Elevator_works.RTS:
 rts

Elevator_works.Collision	;Y naley zapoda przed wywoaniem
 lda #$03
 sta Promien_Y
 ldx WindaX
 lda WindaY
 clc
 adc #$10
 TAY
 lda #$18
 jsr Kolizje_Dizzy
 rts

Ele.Enable.CHK:		;Sprawdza czy winda jest na mapie.
 ldy #$FC
Ele.Enable.CHK2:
 cpy #$20
 beq Ele.Enable.CHK.RTS	;Jeli windy nie ma
 iny
 iny
 iny
 iny
 lda Elevator.TBL,y
 cmp Numer_Lev
 bne Ele.Enable.CHK2

Ele.Enable.CHK.RTS:
 rts

CHK.ENB.Ele:		;Czy winda wczona
 lda Numer_Lev
 cmp #$23
 bne CHK.ENB.Ele2

 lda Winda.Enable
 AND #%10000000
 cmp #%10000000
 bne CHK.ENB.Ele.NOT	;Winda nie wczona

 lda #$01
 rts

CHK.ENB.Ele2:
 cmp #$0D
 bne CHK.ENB.Ele3

 lda Winda.Enable
 AND #%01000000
 cmp #%01000000
 bne CHK.ENB.Ele.NOT	;Winda nie wczona

 lda #$01
 rts

CHK.ENB.Ele3:
 cmp #$0F
 bne CHK.ENB.Ele.OK

 lda Winda.Enable
 AND #%00100000
 cmp #%00100000
 bne CHK.ENB.Ele.NOT	;Winda nie wczona

CHK.ENB.Ele.OK: ;wszystkie inne windy poza powyszymi 3 chodz bez kluczy
 lda #$01
 rts

CHK.ENB.Ele.NOT:
 lda #$00
 rts

Ele.Interior.Hitbox:	;Wewntrzny Hitbox windy ktr wczasz...
 lda WindaY
 clc
 adc #$05
 sta Hero_Y		;Musi,jeli nacinie B poza mini boxem-spadnie 2 piksele w d

 lda #$03
 sta Promien_Y
 lda WindaX
 clc
 adc #$0E
 TAX
 lda WindaY
 clc
 adc #$10
 TAY
 lda #$01
 jsr Kolizje_Dizzy
 rts

Hooks.works
 ldy #$00

 lda HookGFX.TBL,y
 cmp Numer_Lev
 bne Hooks.RTS
 
 lda #$0  ;Atryb
 sta $7F0

 iny
 lda HookGFX.TBL,y
 TAX

 iny
 lda HookGFX.TBL,y
 TAY

 lda #$a5   ;ID
 ;jsr Rys1

Hooks.CHK.Item:
 lda #$01	;ID itemu
 ldx #$2D	;X uycia
 ldy #$81	;Y uycia
 jsr Use_Item		;Czy kamie w odpowiednim miejscu?
 bne Hooks.RTS

 lda #$0D
 jsr Adres_Data_Glace	;Ustal adres danych

 lda #$40
 sta X_Zdarzenie
 lda #$80
 sta Y_Zdarzenie
 jsr Rys.Postac

Hooks.RTS:
 rts

Elevator.TBL:
 .db $0F,$80,$7F,$01	;ID ekranu,X,Y,W ktr stron pojedzie
 .db $07,$80,$f0,$01
 .db $02,$80,$41,$02
 .db $0D,$80,$7F,$01
 .db $06,$80,$81,$02
 .db $23,$C0,$61,$02
 .db $26,$C0,$4F,$01

HookGFX.TBL:
 .db $1C,$40,$40	;ID ekranu,X,Y

Hook.TBL:
 .db $00,$2D,$81,00		;ID,X,Y i kierunek rzutu lin
 .db $00,$DD,$81,01
 .db $00

HTS.Table:
 .db $1C,$2B,$78
 .db $1C,$C8,$78
 .db $1C,$2B,$78
 .db $20,$48,$86
 .db $21,$8E,$86
 .db $20,$48,$86