PM-Collision mit Multigrafik in ACTION
von atarineuling » Do 5. Sep 2013, 19:24Hmm..., klappt wunderbar dieses ACtion.
Habe hier mal ein Programm erstellt mit PM-Collison und eigener Displaylist.
Die PM-Routinen habe ich hier aus dem Forum.
Der Hintergrund ist eine umgewandelte BMP-Grafik 160x96.
Auf der Disk ist das Programm und das umgewandelte Bild "multi.bin"
Programm starten im Monitor mit : R"sprcol3.act" und mit dem Joy das PM steuern.
Die Adressenlage des Act-Programm ist mir noch nicht klar.
Ich habe die Adressen einfach errechnet und gehofft das kein Konflikt in irgendeiner Weise mit dem PM-Speicher und der Grafik entsteht. Glücksache ???
Gruss
Habe hier mal ein Programm erstellt mit PM-Collison und eigener Displaylist.
Die PM-Routinen habe ich hier aus dem Forum.
Der Hintergrund ist eine umgewandelte BMP-Grafik 160x96.
Auf der Disk ist das Programm und das umgewandelte Bild "multi.bin"
Programm starten im Monitor mit : R"sprcol3.act" und mit dem Joy das PM steuern.
Die Adressenlage des Act-Programm ist mir noch nicht klar.
Ich habe die Adressen einfach errechnet und gehofft das kein Konflikt in irgendeiner Weise mit dem PM-Speicher und der Grafik entsteht. Glücksache ???
Gruss
- Code: Alles auswählen
module
byte cio_status, joy0, x,y, u, testxy
byte ramtop=$6A
byte gprior=$26F
byte sdmctl=$22F
byte gractl=$D01D
byte pmbase=$D407
byte p0pf=$D004
byte hitclr=$D01E
byte array hpos=$D000
byte array ps=$D008
byte array pcol=$2C0
card pmadr=$2D5
card adr,i,shape, ramadr
byte array data =
[ 255 129 129 129 129 129 255 ]
byte array dlist =
[
$70 $70 $70
$4D $00 $00
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D $0D $0D $0D $0D $0D
$0D $0D $0D $0D $0D
$41 $00 $00
]
proc pm_init ()
gprior=1
ramtop==-16
sdmctl==%$1C
pmadr=ramtop*$100+$400
pmbase=ramtop
gractl=3
zero (ramtop*$100,$800)
return
proc p_pos (byte num,xpos,ypos,card shape,byte len)
adr=pmadr
adr==+num*$100+ypos
moveblock (adr,shape,len)
moveblock (adr+11,shape,len)
moveblock (adr+22,shape,len)
hpos(num)=xpos
return
proc p_size (byte num,size)
ps(num)=size
return
proc pm_col (byte num,hue,lum)
pcol (num)=hue*$10+lum
return
proc m_pos (byte num,xpos,ypos,card shape,len)
adr=pmadr-$100
adr==+ypos
moveblock (adr,shape,len)
hpos=xpos
return
proc p_clear (byte num)
zero (pmadr+num*$100,$100)
return
proc pm_restore ()
for u=0 to 8
do
hpos(u)=0
od
return
char func cioq=*(byte dev, card addr, size, byte cmd, aux1, aux2)
[$29$F$85$A0$86$A1$A$A$A$A$AA$A5$A5
$9D$342$A5$A3$9D$348$A5$A4$9D$349
$A5$A6$F0$8$9D$34A$A5$A7$9D$34B$98
$9D$345$A5$A1$9D$344$20$E456
$8C cio_status$C0$88$D0$6$98$A4$A0
$99 eof$A085$60]
card func bget=*(byte dev, card addr, size)
[$48$A9$7$85$A5$A9$0$85$A6$A5$A3$5$A4
$D0$6$85$A0$85$A1$68$60$68$20 cioq
$BD$348$85$A0$BD$349$85$A1$60]
proc bput=*(byte dev, card addr, size)
[$48$A9$B$85$A5$A9$0$85$A6$A5$A3$5$A4
$D0$2$68$60$68$4C cioq]
proc delay(card z)
for i=0 to z
do
od
return
proc main()
pm_init ()
ramtop==-15
ramadr=ramtop*$100
zero(ramadr,3840)
shape=data
pm_col (0,7,0)
pokec(dlist+4,ramadr)
pokec(dlist+102,dlist)
pokec(560,dlist)
poke(708,55)
poke(709,199)
poke(710,135)
poke(712,12)
close (1)
open(1,"D:mulbi.bin",4)
bget (1,ramadr,3840)
close (1)
x=50
y=50
p_clear (0)
p_pos (0,x,y,shape,7)
do
joy0=stick(0)
delay(500)
if joy0=14 then
testxy=1
y=y-1
p_clear (0)
p_pos (0,x,y,shape,7)
elseif joy0=13 then
testxy=2
y=y+1
p_clear (0)
p_pos (0,x,y,shape,7)
elseif joy0=7 then
testxy=3
x=x+1
p_clear (0)
p_pos (0,x,y,shape,7)
elseif joy0=11 then
testxy=4
x=x-1
p_clear (0)
p_pos (0,x,y,shape,7)
fi
if p0pf > 0 then
if testxy=1 then
y=y+2
p_clear (0)
p_pos (0,x,y,shape,7)
elseif testxy=2 then
y=y-2
p_clear (0)
p_pos (0,x,y,shape,7)
elseif testxy=3 then
x=x-2
p_clear (0)
p_pos (0,x,y,shape,7)
elseif testxy=4 then
x=x+2
p_clear (0)
p_pos (0,x,y,shape,7)
fi
testxy=0
hitclr=1
fi
od
return