//------------------------------------------------------------------------
//	sprite bars by grzegorzsun@gmail.com
//  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
	