Dark Bit Factory & Gravity
ARCHIVE => Archive => Cobra => Topic started by: GrahamK on January 23, 2007
-
Quick demo I threw together, decided to tinker with the paletted mode...
Drop Cobra.png (attached) into the same directory.
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
-
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....
-
Cool snippet & proggie Graham dude.
-
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 ;)
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
-
Sweet! :) Have some Karma.
-
It's 1988 all over again! :) Looks like the An Old Wild Copper demo very nice :clap: