PM-Collision mit Multigrafik in ACTION


PM-Collision mit Multigrafik in ACTION

von atarineuling » Do 5. Sep 2013, 19:24
Hmm..., 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

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

Re: PM-Collision mit Multigrafik.

von dl7ukk » Do 5. Sep 2013, 23:21
Hallo,

Dein mulbi.bmp.atr lässt sich nicht laden - hat ja auch nur 45KB ....

Re: PM-Collision mit Multigrafik.

von atarineuling » Fr 6. Sep 2013, 00:14
Hmmm...., das "multi.bmp.atr" ist das BMP-Bild "multi.bmp", dieses "atr" muss entfernt werden.
Eine BMP kann man hier sonst nicht laden. Es ist das Musterbild, welches ich in die "multi.bin" umgewandelt habe.
Habe es jetzt wieder entfernt, es kommen sonst irrtümer auf.

Du brauchts nur die "act.atr" da ist alles fertige drin.
Disk einlegen und im Monitor von ACtion : R"SPRCOL3.ACT" ein geben.



Gruss