mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-25 05:29:34 +00:00
appleiibot: star nonsense
This commit is contained in:
parent
1614d35d1e
commit
ffc852641f
@ -11,9 +11,10 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS \
|
||||
RASTER4.BAS RASTER5.BAS PUMPKIN.BAS PUMPKIN_SMALL.BAS LADY.BAS \
|
||||
A2.BAS FOURAM.BAS FLOPPY.BAS QR.BAS A2_4EVER.BAS RLE.BAS RLE2.BAS \
|
||||
RLEASM.BAS HORIZON.BAS FLYER.BAS STAR.BAS HYPER.BAS FASTAR.BAS \
|
||||
FASTAR2.BAS
|
||||
FASTAR2.BAS FASTAR2
|
||||
cp empty.dsk appleiibot.dsk
|
||||
$(DOS33) -y appleiibot.dsk BSAVE -a 0x0300 LOAD
|
||||
$(DOS33) -y appleiibot.dsk BSAVE -a 0x0C00 FASTAR2
|
||||
$(DOS33) -y appleiibot.dsk SAVE A E2.BAS
|
||||
$(DOS33) -y appleiibot.dsk SAVE A FLAME.BAS
|
||||
$(DOS33) -y appleiibot.dsk SAVE A FLAME2.BAS
|
||||
@ -91,6 +92,15 @@ LOAD: load.o
|
||||
load.o: load.s
|
||||
ca65 -o load.o load.s -l load.lst
|
||||
|
||||
###
|
||||
|
||||
FASTAR2: fastar2.o
|
||||
ld65 -o FASTAR2 fastar2.o -C ../linker_scripts/apple2_c00.inc
|
||||
|
||||
fastar2.o: fastar2.s
|
||||
ca65 -o fastar2.o fastar2.s -l fastar2.lst
|
||||
|
||||
|
||||
####
|
||||
|
||||
QKUMBA2.BAS: qkumba_seasons.bas
|
||||
|
@ -1,8 +1,6 @@
|
||||
0 DIMX(8,20),Y(8,20)
|
||||
1FORJ=1TO20:FORI=1TO8:A=X(I,J-1):B=Y(I,J-1):C=Z(I)*.1:X(I,J)=A+(A-140)*C:Y(I,J)=B+(B-96)*C:Z(I)=Z(I)+.1
|
||||
2IFX(I,J)<1ORX(I,J)>279ORY(I,J)<1ORY(I,J)>191THENX(I,J)=RND(1)*280:Y(I,J)=RND(1)*192:Z(I)=0
|
||||
3NEXTI,J
|
||||
4HGR:HGR2:HCOLOR=3
|
||||
5FORJ=1TO20:POKE230,32+32*P:P=NOTP:POKE49236+P,0:CALL-3086
|
||||
6FORI=1TO8:HPLOTX(I,J-1),Y(I,J-1)TOX(I,J),Y(I,J)
|
||||
8NEXTI,J:GOTO5
|
||||
0R=191:DIMX(R),Y(R):FORI=1TOR:C=Z*.1:A=A+(A-140)*C:B=B+(B-96)*C:Z=Z+.1
|
||||
2IFA<1ORA>279ORB<1ORB>RTHENI=I+1:A=RND(1)*280:B=RND(1)*R:Z=0
|
||||
3X(I)=A:Y(I)=B:NEXT:HGR2
|
||||
5FORJ=1TOR:POKE230,32+32*P:P=NOTP:POKE49236+P,0:CALL-3086
|
||||
6A=X(J-1):IFAANDX(J)THENHPLOTA,Y(J-1)TOX(J),Y(J)
|
||||
8NEXT:GOTO5
|
||||
|
239
appleiibot/fastar2.s
Normal file
239
appleiibot/fastar2.s
Normal file
@ -0,0 +1,239 @@
|
||||
DRAW_PAGE = $E6
|
||||
ZL = $06
|
||||
ZH = $07
|
||||
SEEDLO = $4E
|
||||
SEEDHI = $4F
|
||||
|
||||
NUM1 = $F0
|
||||
NUM1L = $F1
|
||||
NUM2 = $F2
|
||||
NUM2L = $F3
|
||||
RESULT = $F4
|
||||
RESULT2 = $F5
|
||||
RESULT3 = $F6
|
||||
RESULT4 = $F7
|
||||
XL = $F8
|
||||
XH = $F9
|
||||
YL = $FA
|
||||
YH = $FB
|
||||
MINUS = $FC
|
||||
Z = $FD
|
||||
|
||||
HGR2 = $F3D8
|
||||
HPLOT0 = $F457 ; plot (Y,X), (A)
|
||||
HGLIN = $F53A ; plot to (A,X), (Y)
|
||||
HCLEAR0 = $F3F2 ; clear current hgr page to blackh
|
||||
HCOLOR = $F6F0 ; color in X (must be 0..7)
|
||||
|
||||
|
||||
lda #$ff
|
||||
sta XH
|
||||
|
||||
ldx #0
|
||||
populate_loop:
|
||||
; Z = XXYY YYYY
|
||||
; C=Z*.125
|
||||
; A=A+(A-64)*C
|
||||
; B=B+(B-64)*C
|
||||
|
||||
; check to see if out of bounds
|
||||
|
||||
lda XH
|
||||
bmi redo_point
|
||||
lda YH
|
||||
bpl all_good
|
||||
|
||||
redo_point:
|
||||
; store a break in the lines
|
||||
lda #0
|
||||
sta $1000,X
|
||||
sta $1100,X
|
||||
sta Z ; needed?
|
||||
inx
|
||||
|
||||
jsr rand16
|
||||
sta XH
|
||||
jsr rand16
|
||||
sta YH
|
||||
|
||||
all_good:
|
||||
|
||||
; X is in NUM1 for this
|
||||
|
||||
lda #0
|
||||
sta MINUS
|
||||
|
||||
sec
|
||||
lda XH
|
||||
sbc #64
|
||||
bpl no_minus
|
||||
set_minus:
|
||||
inc MINUS
|
||||
|
||||
sec
|
||||
lda #0
|
||||
sbc XL
|
||||
sta NUM1
|
||||
lda #0
|
||||
sbc XH
|
||||
sta NUM1+1
|
||||
jmp do_mult
|
||||
|
||||
no_minus:
|
||||
sta NUM1+1
|
||||
lda XL
|
||||
sta NUM1
|
||||
|
||||
do_mult:
|
||||
lda #0
|
||||
sta NUM2+1
|
||||
lda Z
|
||||
sta NUM2
|
||||
|
||||
txa
|
||||
pha
|
||||
|
||||
jsr mult16
|
||||
|
||||
pla
|
||||
tax
|
||||
|
||||
; result has result but due to our fixed point
|
||||
; we want to shift the whole thing left by 2
|
||||
; then grab RESULT+2 as high and RESULT+1 as low
|
||||
|
||||
rol RESULT+1
|
||||
rol RESULT+2
|
||||
ror RESULT+1
|
||||
lda RESULT+2
|
||||
|
||||
lda RESULT+1 ; low
|
||||
sta NUM1
|
||||
lda RESULT+2 ; hight
|
||||
sta NUM1+1
|
||||
|
||||
; add to AA
|
||||
clc
|
||||
lda XL
|
||||
adc NUM1
|
||||
sta XL
|
||||
lda XH
|
||||
adc NUM1+1
|
||||
sta XH
|
||||
|
||||
; Z=Z+.125
|
||||
|
||||
clc
|
||||
lda Z
|
||||
adc #$8
|
||||
sta Z
|
||||
|
||||
; write out
|
||||
|
||||
lda XH
|
||||
sta $1000,X
|
||||
lda YH
|
||||
sta $1100,X
|
||||
|
||||
inx
|
||||
beq done_pop
|
||||
jmp populate_loop
|
||||
done_pop:
|
||||
;=========================
|
||||
;=========================
|
||||
;=========================
|
||||
|
||||
jsr HGR2
|
||||
ldx #3
|
||||
jsr HCOLOR
|
||||
|
||||
ldx #0
|
||||
star_loop:
|
||||
txa
|
||||
and #$1
|
||||
beq page2
|
||||
page1: ; draw page1, show page2
|
||||
bit $C055
|
||||
lda #$20
|
||||
bne adjust_page
|
||||
page2:
|
||||
bit $C054
|
||||
lda #$40
|
||||
adjust_page:
|
||||
sta DRAW_PAGE
|
||||
|
||||
; clear background
|
||||
jsr HCLEAR0
|
||||
|
||||
txa
|
||||
pha
|
||||
|
||||
lda $1100,X ; ycoord
|
||||
beq skip_draw
|
||||
pha
|
||||
ldy $1000,X ; xcoord
|
||||
tya
|
||||
tax
|
||||
ldy #0
|
||||
pla
|
||||
|
||||
jsr HPLOT0 ; plot (Y,X), (A)
|
||||
|
||||
skip_draw:
|
||||
|
||||
pla
|
||||
tax
|
||||
|
||||
inx
|
||||
jmp star_loop
|
||||
|
||||
|
||||
; make sure seed isn't 0000
|
||||
rand16:
|
||||
; batari rand16
|
||||
lda SEEDHI
|
||||
lsr
|
||||
rol SEEDLO
|
||||
bcc noeor
|
||||
eor #$B4
|
||||
noeor:
|
||||
sta SEEDHI
|
||||
eor SEEDLO
|
||||
|
||||
; we only want 127 bits
|
||||
and #$7f
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;=====================
|
||||
;=====================
|
||||
; 16x16 -> 32 multiply
|
||||
;=====================
|
||||
;=====================
|
||||
; destroys NUM2
|
||||
mult16:
|
||||
lda #0 ; Initialize RESULT to 0
|
||||
sta RESULT+2
|
||||
ldx #16 ; There are 16 bits in NUM2
|
||||
L1:
|
||||
lsr NUM2+1 ; top part of 16 bit shift right
|
||||
ror NUM2
|
||||
bcc L2 ; 0 or 1?
|
||||
tay ; If 1, add NUM1 (hi byte of RESULT is in A)
|
||||
clc
|
||||
lda NUM1
|
||||
adc RESULT+2
|
||||
sta RESULT+2
|
||||
tya
|
||||
adc NUM1+1
|
||||
L2:
|
||||
ror ; "Stairstep" shift
|
||||
ror RESULT+2
|
||||
ror RESULT+1
|
||||
ror RESULT
|
||||
dex
|
||||
bne L1
|
||||
sta RESULT+3
|
||||
|
||||
rts
|
32
appleiibot/mul16_slow.s
Normal file
32
appleiibot/mul16_slow.s
Normal file
@ -0,0 +1,32 @@
|
||||
; from http://nparker.llx.com/a2/mult.html
|
||||
|
||||
;=====================
|
||||
;=====================
|
||||
; 16x16 -> 32 multiply
|
||||
;=====================
|
||||
;=====================
|
||||
mul16_slow:
|
||||
lda #0 ; Initialize RESULT to 0
|
||||
sta RESULT+2
|
||||
ldx #16 ; There are 16 bits in NUM2
|
||||
L1:
|
||||
lsr NUM2+1 ; Get low bit of NUM2 into C
|
||||
ror NUM2
|
||||
bcc L2 ; 0 or 1?
|
||||
tay ; If 1, add NUM1 (hi byte of RESULT is in A)
|
||||
clc
|
||||
lda NUM1
|
||||
adc RESULT+2
|
||||
sta RESULT+2
|
||||
tya
|
||||
adc NUM1+1
|
||||
L2:
|
||||
ror ; "Stairstep" shift
|
||||
ror RESULT+2
|
||||
ror RESULT+1
|
||||
ror RESULT
|
||||
dex
|
||||
bne L1
|
||||
sta RESULT+3
|
||||
|
||||
rts
|
@ -1,44 +1,50 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define SIZE 10
|
||||
#define REPEAT 100
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
int i,j;
|
||||
double a,b,c;
|
||||
double x[SIZE],y[SIZE],z[SIZE];
|
||||
double speed=0.1;
|
||||
|
||||
double outputx[SIZE][REPEAT];
|
||||
double outputy[SIZE][REPEAT];
|
||||
|
||||
for(j=1;j<REPEAT;j++) {
|
||||
for(i=1;i<SIZE;i++) {
|
||||
a=x[i];
|
||||
b=y[i];
|
||||
c=z[i]*speed;
|
||||
x[i]=a+(a-140)*c;
|
||||
y[i]=b+(b-96)*c;
|
||||
z[i]=z[i]+speed;
|
||||
|
||||
if ((x[i]<0) || (x[i]>279) || (y[i]<0) || (y[i]>191)) {
|
||||
x[i]=rand()%279;
|
||||
y[i]=rand()%191;
|
||||
z[i]=0;
|
||||
}
|
||||
else {
|
||||
outputx[i][j]=x[i];
|
||||
outputy[i][j]=y[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(i=1;i<SIZE;i++) {
|
||||
for(j=1;j<REPEAT;j++) {
|
||||
printf("%i:%i: %.1f %.1f\n",i,j,outputx[i][j],outputy[i][j]);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define SIZE 10
|
||||
#define REPEAT 100
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
int i,j;
|
||||
double a,b,c;
|
||||
double x[SIZE],y[SIZE],z[SIZE];
|
||||
double speed=0.1;
|
||||
|
||||
double outputx[SIZE][REPEAT];
|
||||
double outputy[SIZE][REPEAT];
|
||||
|
||||
for(i=1;i<SIZE;i++) {
|
||||
for(j=1;j<REPEAT;j++) {
|
||||
a=x[i];
|
||||
b=y[i];
|
||||
c=z[i]*speed;
|
||||
x[i]=a+(a-140)*c;
|
||||
y[i]=b+(b-96)*c;
|
||||
z[i]=z[i]+speed;
|
||||
|
||||
if ((x[i]<0) || (x[i]>279) || (y[i]<0) || (y[i]>191)) {
|
||||
x[i]=0;
|
||||
y[i]=0;
|
||||
i++;
|
||||
x[i]=rand()%279;
|
||||
y[i]=rand()%191;
|
||||
z[i]=0;
|
||||
}
|
||||
else {
|
||||
// outputx[i][j]=x[i];
|
||||
// outputy[i][j]=y[i];
|
||||
//
|
||||
}
|
||||
printf("%i:%i: %.1f %.1f %.2f\n",i,j,x[i],y[i],z[i]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// for(i=1;i<SIZE;i++) {
|
||||
// for(j=1;j<REPEAT;j++) {
|
||||
// printf("%i:%i: %.1f %.1f\n",i,j,outputx[i][j],outputy[i][j]);
|
||||
// }
|
||||
// }
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user