| ★ CODING ★ SOURCES ★ Stars Flying (4 src's) ★ |
| Stars Flying (4 src's sourcepack by HYPNOM '94) | Coding Sources |
; -** HORIZONTAL STAR FLYING **- by HYPNOM '94 Version 1 ; org &4000 loop: ld a,32 ld hl,(tab):ld (hl),a ld hl,(tab+2):ld (hl),a ld hl,(tab+4):ld (hl),a ld hl,(tab+6):ld (hl),a ld hl,(tab+8):ld (hl),a call &bb09 ret c call &bd19 ld hl,(tab):call check:ld (tab),hl ld hl,(tab+2):call check:ld (tab+2),hl ld hl,(tab+4):call check:ld (tab+4),hl ld hl,(tab+6):call check:ld (tab+6),hl ld hl,(tab+8):call check:ld (tab+8),hl jr loop check: ld (hl),0 inc hl ld a,h or l cp 0 ret nz ld hl,&c000 ret tab: dw &cf0f,&d1e0,&ec55,&f242,&caaa ; -** VERTICAL STAR FLYING **- by HYPNOM '94 Version 1 ; org &4000 loop ld b,32:ld c,0 ld hl,(tab):call check ld hl,(tab+2):call check ld hl,(tab+4):call check ld hl,(tab+6):call check ld hl,(tab+8):call check call &bb09 ret c call &bd19 ld b,0:ld c,32 ld hl,(tab):call check:call calc:ld (tab),hl ld hl,(tab+2):call check:call calc:ld (tab+2),hl ld hl,(tab+4):call check:call calc:ld (tab+4),hl ld hl,(tab+6):call check:call calc:ld (tab+6),hl ld hl,(tab+8):call check:call calc:ld (tab+8),hl jr loop check ld a,(hl) cp c ret nz ld (hl),b ret calc ld de,&800 sbc hl,de ld a,h cp &c0 ret nc cp &b7 jr nz,followme ld a,l cp &4f jr c,followme ld de,&4000 add hl,de ret followme ld de,8*&800-&50 add hl,de ret tab dw &cf0f,&d0e0,&ecac,&f242,&caaa ; -** HORIZONTAL STAR FLYING **- by HYPNOM '94 Version 2 ; org &4000 ld a,1 call &bc0e begin ld hl,(tab):ld (hl),32 ld hl,(tab+2):ld (hl),32 ld hl,(tab+4):ld (hl),32 ld hl,(tab+6):ld (hl),32 ld hl,(tab+8):ld (hl),32 ld hl,(tab1):ld (hl),32 ld hl,(tab1+2):ld (hl),32 ld hl,(tab1+4):ld (hl),32 ld hl,(tab1+6):ld (hl),32 ld hl,(tab1+8):ld (hl),32 call &bb09 ret c call &bd19 ld hl,(tab):ld (hl),0:call check:ld (tab),hl ld hl,(tab+2):ld (hl),0:call check:ld (tab+2),hl ld hl,(tab+4):ld (hl),0:call check:ld (tab+4),hl ld hl,(tab+6):ld (hl),0:call check:ld (tab+6),hl ld hl,(tab+8):ld (hl),0:call check:ld (tab+8),hl ld hl,(tab1):ld (hl),0:inc hl:call check:ld (tab1),hl ld hl,(tab1+2):ld (hl),0:inc hl:call check:ld (tab1+2),hl ld hl,(tab1+4):ld (hl),0:inc hl:call check:ld (tab1+4),hl ld hl,(tab1+6):ld (hl),0:inc hl:call check:ld (tab1+6),hl ld hl,(tab1+8):ld (hl),0:inc hl:call check:ld (tab1+8),hl jp begin check inc hl ld a,h cp 0 ret nz ld hl,&c000 ret tab dw &c000,&d4f6,&e973,&f1dd,&c904 tab1 dw &cfff,&e030,&eaaa,&c7aa,&f4fb ; -** HORIZONTAL STAR FLYING **- by HYPNOM '94 Version 3 ; org &4000 ; Sterne setzen: loop ld de,tab ; DE zeigt auf Anfang der Stern(screen)adressentabelle ld b,6 ; 6 Sterne, also 6 Durchlaeufe der Schleife, B ist Zaehler dafuer loop1 ld a,(de) ; nach A Highbyte der aktuellen Sternadresse ld l,a ; weitergeben nach L inc de ; Sternadressentabellenzeiger DE weiterruecken auf Lowbyte ld a,(de) ; dieses Lowbyte nach A schreiben ld h,a ; und weitergeben nach H ==> HL enthaelt nun Sternadresse ld a,(hl) ; Inhalt der Sternadresse vom Screen nach A cp 0 ; vergleichen mit 0, also, ob an der Screenstelle Grafik steht jr nz,continue ; wenn Screenadresseninhalt ungleich 0, dann => Label continue ld (hl),32 ; an Screenadresse (HL) Stern setzen (Wert 32) continue inc de ; DE auf Highbyte der naechsten Sternscreenaddy djnz loop1 ; B wird eins runtergezaehlt und nach Label loop1 ; gesprungen, solange B groesser 0 ist call &bb09 ; Taste gedrueckt? ret c ; wenn ja (Carry-Flag gesetzt), dann zurueck ins Basic call &bd19 ; Frame Fly Back, also abwarten, bis Elektronenstrahl den ; Screen fertig gezeichnet hat ; Sterne loeschen: xloop ld de,tab ; DE zeigt auf Anfang Sternscreenaddytabelle ld b,6 ; B als Schleifenzaehler wieder auf 6 xloop1 ld a,(de) ld l,a inc de ld a,(de) ld h,a ; bis hierhin wurde die Addy wieder nach HL geladen ld a,(hl) cp 32 ; Screeninhalt mit 32 (=Stern) vergleichen jr nz,xcontinue ; wenn kein Stern gesetzt, dann war da Grafik,=> Label xcontinue ld (hl),0 ; sonst Stern loeschen xcontinue inc hl ; Screenadresse erhoehen ld a,h or l cp 0 ; Vergleichsrouti, ob Adresse groesser als &FFFF, also &0000 jr nz,xcontinue1 ; wenn nein, dann weiter bei xcontinue1 ld hl,&c000 ; sonst Addy auf Screenanfang setzen xcontinue1 dec de ld a,l ld (de),a inc de ld a,h ld (de),a inc de ; neue Screenaddy in Tabelle setzen (Zeiger mu¦ dazu verschoben djnz xloop1 ; und B dekrementieren und naechster Stern werden) jr loop ; und alles von vorne tab dw &cf0f,&d5e0,&ed55,&f242,&caaa,&f000 |
|