//------------------------------------------------------------------------
//      sprite bars by [email protected]
//  LoveByte 2021
//------------------------------------------------------------------------

SDMCTL  equ $022f; $D400

WSYNC   equ $D40A
VCOUNT  equ $D40B

PPLAYER0 equ $D000 ; pozycja gracza 0
SPLAYER0 equ $D008 ; size player0
GPLAYER0 equ $D00D ; rejestr grafiki gracza 0
CPLAYER0 equ $D012 ; kolor gracza 0
HPOSP0          = $d000

consol = $d01f
RTCLOCK  equ $0012;
RANDOM  equ $D20A
sin_t  = $2000 ; <- adres tabicy sinusa (tablica zajmuje 1 stron� pami�ci)

  org  $80
;one line + dma for players
  lsr SDMCTL
  inx
  stx GPLAYER0;
  stx GPLAYER0+1;
loopb1 equ *
  LDA VCOUNT;
  STA WSYNC;
  ADC rtclock+2;
;   ADC RANDOM
  ASL RANDOM
  STA CPLAYER0;
  STA SPLAYER0;

  lda rtclock+2
  bne loopb1

;ef2
   inc rtclock+2;
   iny
   sty splayer0;
   sty splayer0+1;

ef2 ldy #$01
ef2loopb2       equ *
   lda vcount
       adc rtclock+2

; tez fajny z eor #$ff
       eor #$ff
       sta opcodb1+1

; cos dziwnego
       lda vcount;
; cos dziwnego 2
;       lda rtclock+2;  random
opcodb1 and #$00
       adc #$26
       eor ef2tab,y
       sta pplayer0,y
       lda vcount
       ora #$07
       sta cplayer0,y
       dey
       bpl ef2loopb2
       lda rtclock+2
       bne ef2

;ef3 sinus

;procka zajmuje 42b na ZP albo 45b poza ZP
;amplituda sinusa: $00-$ff
       ldy #$3f
       ldx #0
       ; txa ;nie ma przymusu zerowanie akumulatora (nie zauwa�y�em jakiego� wi�kszego wp�ywu na tworzon� tablic�)
loop
__1     adc #$00
       bcs __2
       inc __3+1
__2
       inc __1+1
       pha
__4     lda #0
       and #%11
       bne skp

__3     lda #$7f ;<- za pomoc� tego mo�na przes�wa� na inne �wiartki sinusa
       sta sin_t+$00,x
       sta sin_t+$40,y
       eor #$ff
       sta sin_t+$80,x
       sta sin_t+$c0,y
       inx
       dey
skp
       pla
       inc __4+1
       bne loop

;sinusiatka
   ldy #3;
   sty splayer0;
   sty splayer0+1;

vco ;jmp vco
   lda vcount
   bne vco
       tay

next_char

   lda font_offsets,y
   sta font_lo+1

colorloop
   dex
font_lo
       lda $e100
   sta wsync
       sta GPLAYER0
       sta GPLAYER0+1

       txa
;    sta $d01f;consol;

   eor #$ff
   sta CPLAYER0+1
   sta CPLAYER0

       and #%11110000
   sta wsync
       sta $d01a
   lda vcount
       adc 20
       tax
;zwykly sinus`
;    lda sin_t,x
;drzenie
       lda random
   and #$2
   adc sin_t,x
   sta consol
       sta HPOSP0
   eor #$ff
   sta HPOSP0+1

       inc font_lo+1
       lda font_lo+1
       and #7
       bne font_lo

       iny
       cpy #23; lost party #21
       bne next_char
;       bne colorloop
       beq vco



ef2tab equ *
   dta $00,$ff

font_offsets
; spacje
               dta $f6,$f6,$f6,$f6,$f6,$f6,$f6,$f6
; s i l l y
;               dta $98,$48,$60,$60,$c8,$f6,$f6
; v e n t u r e
;               dta $b0,$28,$70,$a0,$a8,$90,$28
;l o s t
       dta $60,$60+3*8,$98,$a0
;spacje
       dta $f6,$f6,$f6,$f6,$f6
;party
       dta $90-2*8,$28-4*8,$90,$a0,$c8,$f6