examples/animate: tweak rocket movement, add audio
- fix duplicate symbol in sprites.s/pcmaudio.s
This commit is contained in:
parent
82749f2b7d
commit
819c808c50
2 changed files with 51 additions and 17 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
program animate;
|
program animate;
|
||||||
uses sprites;
|
uses sprites,pcmaudio;
|
||||||
|
|
||||||
type PictData = record
|
type PictData = record
|
||||||
magic,mode:integer;
|
magic,mode:integer;
|
||||||
|
|
@ -29,8 +29,33 @@ var pic:PictData;
|
||||||
rocket2:Sprite;
|
rocket2:Sprite;
|
||||||
rocket3:Sprite;
|
rocket3:Sprite;
|
||||||
|
|
||||||
|
buf:SndBufPtr;
|
||||||
|
|
||||||
|
|
||||||
procedure WaitVSync; external;
|
procedure WaitVSync; external;
|
||||||
|
|
||||||
|
function readAudioFile(fname:string):SndBufPtr;
|
||||||
|
var i,size:integer;
|
||||||
|
c:char;
|
||||||
|
buf:SndBufPtr;
|
||||||
|
f:file;
|
||||||
|
begin
|
||||||
|
open(f, fname, ModeReadOnly);
|
||||||
|
size := FileSize(f);
|
||||||
|
new(buf, size);
|
||||||
|
|
||||||
|
buf^ := '';
|
||||||
|
write('Reading ', size, ' bytes from ', fname);
|
||||||
|
for i := 1 to size do
|
||||||
|
begin
|
||||||
|
read(f,c);
|
||||||
|
AppendChar(buf^,c);
|
||||||
|
end;
|
||||||
|
writeln;
|
||||||
|
close(f);
|
||||||
|
readAudioFile := buf;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure loadPalette(var pic:PictData);
|
procedure loadPalette(var pic:PictData);
|
||||||
var i:integer;
|
var i:integer;
|
||||||
begin
|
begin
|
||||||
|
|
@ -87,10 +112,13 @@ begin
|
||||||
|
|
||||||
if aSprite.x > 608 then aSprite.x := 0;
|
if aSprite.x > 608 then aSprite.x := 0;
|
||||||
|
|
||||||
if aSprite.y < 0 then
|
if aSprite.ydelta <> 0 then
|
||||||
begin
|
begin
|
||||||
aSprite.y := 200;
|
if aSprite.y < 3 then
|
||||||
aSprite.x := 0;
|
aSprite.ydelta := -aSprite.ydelta
|
||||||
|
else
|
||||||
|
if aSprite.y > 130 then
|
||||||
|
aSprite.ydelta := -aSprite.yDelta;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -106,7 +134,7 @@ var i:integer;
|
||||||
r3oldX,r3oldY:integer;
|
r3oldX,r3oldY:integer;
|
||||||
begin
|
begin
|
||||||
stickMan.x := 0;
|
stickMan.x := 0;
|
||||||
stickMan.y := 322;
|
stickMan.y := 205;
|
||||||
stickMan.frameTime := 6;
|
stickMan.frameTime := 6;
|
||||||
stickMan.frameLeft := stickMan.frameTime;
|
stickMan.frameLeft := stickMan.frameTime;
|
||||||
stickMan.curFrame := 0;
|
stickMan.curFrame := 0;
|
||||||
|
|
@ -116,30 +144,30 @@ begin
|
||||||
stickman.moveLeft := stickMan.moveTime;
|
stickman.moveLeft := stickMan.moveTime;
|
||||||
|
|
||||||
rocket.x := 0;
|
rocket.x := 0;
|
||||||
rocket.y := 200;
|
rocket.y := 50;
|
||||||
rocket.frameTime := 5;
|
rocket.frameTime := 5;
|
||||||
rocket.frameLeft := rocket.frameTime;
|
rocket.frameLeft := rocket.frameTime;
|
||||||
rocket.curFrame := 0;
|
rocket.curFrame := 0;
|
||||||
rocket.xdelta := 3;
|
rocket.xdelta := 3;
|
||||||
rocket.ydelta := -1;
|
rocket.ydelta := 1;
|
||||||
rocket.moveTime := 1;
|
rocket.moveTime := 1;
|
||||||
rocket.moveLeft := rocket.moveTime;
|
rocket.moveLeft := rocket.moveTime;
|
||||||
|
|
||||||
rocket2.x := 50;
|
rocket2.x := 50;
|
||||||
rocket2.y := 100;
|
rocket2.y := 190;
|
||||||
rocket2.frameTime := 5;
|
rocket2.frameTime := 5;
|
||||||
rocket2.frameLeft := rocket2.frameTime;
|
rocket2.frameLeft := rocket2.frameTime;
|
||||||
rocket2.curFrame := 0;
|
rocket2.curFrame := 1;
|
||||||
rocket2.xdelta := 3;
|
rocket2.xdelta := 3;
|
||||||
rocket2.ydelta := -1;
|
rocket2.ydelta := 0;
|
||||||
rocket2.moveTime := 1;
|
rocket2.moveTime := 1;
|
||||||
rocket2.moveLeft := rocket2.moveTime;
|
rocket2.moveLeft := rocket2.moveTime;
|
||||||
|
|
||||||
rocket3.x :=100;
|
rocket3.x :=100;
|
||||||
rocket3.y := 50;
|
rocket3.y := 90;
|
||||||
rocket3.frameTime := 5;
|
rocket3.frameTime := 5;
|
||||||
rocket3.frameLeft := rocket3.frameTime;
|
rocket3.frameLeft := rocket3.frameTime;
|
||||||
rocket3.curFrame := 0;
|
rocket3.curFrame := 2;
|
||||||
rocket3.xdelta := 3;
|
rocket3.xdelta := 3;
|
||||||
rocket3.ydelta := -1;
|
rocket3.ydelta := -1;
|
||||||
rocket3.moveTime := 1;
|
rocket3.moveTime := 1;
|
||||||
|
|
@ -204,8 +232,14 @@ begin
|
||||||
loadSpriteFrame(rocket, 3, infile, 3);
|
loadSpriteFrame(rocket, 3, infile, 3);
|
||||||
close(infile);
|
close(infile);
|
||||||
|
|
||||||
rocket2 := rocket; rocket2.curFrame := 1;
|
rocket2 := rocket;
|
||||||
rocket3 := rocket; rocket3.curFrame := 2;
|
rocket3 := rocket;
|
||||||
|
|
||||||
|
buf := readAudioFile('footsteps.tdrau');
|
||||||
|
SampleQStart(buf, true, 16000);
|
||||||
|
|
||||||
animLoop;
|
animLoop;
|
||||||
|
|
||||||
|
SampleQStop;
|
||||||
|
dispose(buf);
|
||||||
end.
|
end.
|
||||||
|
|
|
||||||
|
|
@ -53,9 +53,9 @@ CALC_VMEM_ADDR:
|
||||||
.EQU PS_SPILL 24
|
.EQU PS_SPILL 24
|
||||||
.EQU PS_STRIPE_C 28
|
.EQU PS_STRIPE_C 28
|
||||||
.EQU PS_BPSAVE 32
|
.EQU PS_BPSAVE 32
|
||||||
.EQU PS_FS 36
|
.EQU PS_FS_ 36
|
||||||
PUTSPRITE:
|
PUTSPRITE:
|
||||||
FPADJ -PS_FS
|
FPADJ -PS_FS_
|
||||||
STORE PS_SPRITE_DATA
|
STORE PS_SPRITE_DATA
|
||||||
STORE PS_Y
|
STORE PS_Y
|
||||||
STORE PS_X
|
STORE PS_X
|
||||||
|
|
@ -175,7 +175,7 @@ PS_L_XT:
|
||||||
LOAD PS_BPSAVE
|
LOAD PS_BPSAVE
|
||||||
STOREREG BP
|
STOREREG BP
|
||||||
|
|
||||||
FPADJ PS_FS
|
FPADJ PS_FS_
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; undraw a sprite, i.e. draw background data
|
; undraw a sprite, i.e. draw background data
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue