Author Topic: Little retro intro styley thing!  (Read 5137 times)

0 Members and 1 Guest are viewing this topic.

Offline GrahamK

  • Atari ST
  • ***
  • Posts: 118
  • Karma: 17
    • View Profile
Little retro intro styley thing!
« on: January 23, 2007 »
Quick demo I threw together, decided to tinker with the paletted mode...
Drop Cobra.png (attached) into the same directory.

Code: [Select]
program
  uses pure2d,keyset
 
var
  img:element
  spr:array[6] of element               
  i,x,y,dx:integer
  bar:array[3] of element       
             
data positions [ 100,100,  0,250, 500,400, 500,100, 100, 400, 266,250  ,533,250] 
 
procedure Remap(dx,dy:integer)
var
    x,y:integer
begin
    for x = 0 to 127
        for y = 0 to 127
            if Pixel((x+dx) mod 127, (y+dy) mod 127,img) <> ToRGBA(0,0,0) then
                Pixelp(x,y,y*2,spr[0])
            else
                Pixelp(x,y,0,spr[0])
            endif
        next
    next
    Pal2Bmp(spr[0])
end 

procedure MakeBars
var
    i,j,c:integer
    r:real
begin
    for i = 0 to 2
        bar[i]= CreateSprite(1,128)
        SpriteWidth(bar[i],800)     
        SpriteY(bar[i],(600*i)/4+100)
        for j = 0 to 127
            r = sin((180.0/127.0)*j)*255
           
            case i of
              0: c = ToRGBA(r,0,0)
              1: c = ToRGBA(0,r,0)
              2: c = ToRGBA(0,0,r)
              3: c = ToRGBA(r,0,r)
            endcase
            Pixel(0,j,c,bar[i])               
        next
    next
end

procedure MakeGold
var
    j:integer
    r:real
begin
    for j = 0 to 255
        r = sin((180.0/255.0)*j)*255
        Palette(j,ToRGBA(r,r,0,r),spr[0])
    next
    Palette(0,ToRGBA(0,0,0,0),spr[0])
end

 
begin
  openscreen                   
 
  makebars
 
  img = LoadImage('cobra.png')
  spr[0] = CreateSprite(128,128)           
  PositionSprite(spr[0],readdata(positions),readdata(positions))
  for i = 1 to 6
    spr[i]=CreateSharedSprite(spr[0])
    PositionSprite(spr[i],readdata(positions),readdata(positions))
  next

  makegold
   
  y = 0
  x = 0
  while not keydown(vk_escape)
    y=(y+1) mod 127
    remap(0,y) 
       
    x = (x + 1) mod 359
    for i = 0 to 6
        dx =(Sin(x)*5)+SpriteX(spr[i])
        if dx > 800 then dx = dx - 928
        if dx < -128 then dx = dx + 928
        SpriteX(spr[i],dx)   
    next
     
    flip
  wend
 
  closescreen
end

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17409
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Little retro intro styley thing!
« Reply #1 on: January 23, 2007 »
Looks real Amiga - Ish Graham :) Reminded me of those Ackerlight demos all those years ago!
This would look even better if there was just a little bit of sine distortion as the bitmap wend over the bars, it would make it look like it was really wrapping around them :)

Btw, I will be able to have a proper play with Cobra soon.. Pay day is coming! I wonder how fast it goes....
Shockwave ^ Codigos
Challenge Trophies Won:

Offline Clyde

  • A Little Fuzzy Wuzzy
  • DBF Aficionado
  • ******
  • Posts: 7271
  • Karma: 71
    • View Profile
Re: Little retro intro styley thing!
« Reply #2 on: January 23, 2007 »
Cool snippet & proggie Graham dude.
Still Putting The IT Into Gravy
If Only I Knew Then What I Know Now.

Challenge Trophies Won:

Offline GrahamK

  • Atari ST
  • ***
  • Posts: 118
  • Karma: 17
    • View Profile
Re: Little retro intro styley thing!
« Reply #3 on: January 23, 2007 »
Looks real Amiga - Ish Graham :) Reminded me of those Ackerlight demos all those years ago!
Yeah, I spent faaaaaaar to much time on the miggy....

This would look even better if there was just a little bit of sine distortion as the bitmap wend over the bars, it would make it look like it was really wrapping around them :)

No sooner suggested as done ;)
Code: [Select]
program
  uses pure2d,keyset
 
var
  img:element
  spr:array[6] of element               
  i,x,y,dx:integer
  bar:array[3] of element       
             
data positions [ 100,100,  0,250, 500,400, 500,100, 100, 400, 310,250  ,620,250] 
 
procedure Remap(dy:integer)
var
    x,y:integer           
    dx,ya:real
    sf:real   
begin
    sf=65.0/90.0
    CLSP(0,spr[0])
    for y = 0 to 127
        ya = toreal(y)*0.75+16
        for x = -90 to 90
            // convert x point to new coordinate on source image         
            dx = toreal(x)/Sin((100.0/127)*ya+40+180)
            dx = (dx * sf)+63
            if (dx >=0) and (dx<127) then           
              if Pixel(dx , (y+dy) mod 127,img) <> ToRGBA(0,0,0) then
                  Pixelp(x+91,y,y*2,spr[0])
              endif
            endif
        next
    next
    Pal2Bmp(spr[0])
end 

procedure MakeBars
var
    i,j,c:integer
    r:real
begin
    for i = 0 to 2
        bar[i]= CreateSprite(1,128)
        SpriteWidth(bar[i],800)     
        SpriteY(bar[i],(600*i)/4+100)
        for j = 0 to 127
            r = sin((180.0/127.0)*j)*255
           
            case i of
              0: c = ToRGBA(r,0,0)
              1: c = ToRGBA(0,r,0)
              2: c = ToRGBA(0,0,r)
              3: c = ToRGBA(r,0,r)
            endcase
            Pixel(0,j,c,bar[i])               
        next
    next
end

procedure MakeGold
var
    j:integer
    r:real
begin
    for j = 0 to 255
        r = sin((180.0/255.0)*j)*255
        Palette(j,ToRGBA(r,r,0,r),spr[0])
    next
    Palette(0,ToRGBA(0,0,0,0),spr[0])
end

 
begin
  openscreen                   
 
  makebars
 
  img = LoadImage('cobra.png')
  spr[0] = CreateSprite(181,181)           
  PositionSprite(spr[0],readdata(positions),readdata(positions))
  for i = 1 to 6
    spr[i]=CreateSharedSprite(spr[0])
    PositionSprite(spr[i],readdata(positions),readdata(positions))
  next

  makegold
   
  y = 0
  x = 0
  while not keydown(vk_escape)
    y=(y+1) mod 127
    remap(y) 
       
     
    flip
  wend
 
  closescreen
end
« Last Edit: January 23, 2007 by GrahamK »

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17409
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Little retro intro styley thing!
« Reply #4 on: January 23, 2007 »
Sweet! :) Have some Karma.
Shockwave ^ Codigos
Challenge Trophies Won:

Offline Ghost^BHT

  • Clueless and Happy
  • ^GVY
  • Pentium
  • ******
  • Posts: 931
  • Karma: 49
  • BYTE ME!
    • View Profile
Re: Little retro intro styley thing!
« Reply #5 on: January 24, 2007 »
It's 1988 all over again! :)  Looks like the An Old Wild Copper demo very nice   :clap: