diff --git a/examples/LICENSES.md b/examples/LICENSES.md index 8992b88..6f0bb8b 100644 --- a/examples/LICENSES.md +++ b/examples/LICENSES.md @@ -7,4 +7,9 @@ https://commons.wikimedia.org/wiki/File:Ara-Zoo-Muenster-2013.jpg https://commons.wikimedia.org/wiki/File:Snow_leopard_portrait.jpg * shinkansen.pict: 投稿者が撮影, CC BY-SA 3.0 , via Wikimedia Commons https://commons.wikimedia.org/wiki/File:0key22-86.JPG - +* Toco_Toucan.pict: Bernard DUPONT, CC BY-SA 2.0 , via Wikimedia Commons +https://commons.wikimedia.org/wiki/File:Toco_Toucan_(Ramphastos_toco)_-_48153967707.jpg +* 1911_Detroit_Electric.pict: Cullen328, CC BY-SA 3.0 , via Wikimedia Commons +https://commons.wikimedia.org/wiki/File:1911_Detroit_Electric.jpg +* ADDS-Envoy-620.pict: ADDS Envoy-1.jpg from terminals-wiki.org, CC-BY-SA 3.0 +https://terminals-wiki.org/wiki/index.php/File:ADDS_Envoy-1.jpg diff --git a/examples/Toco_Toucan.pict b/examples/Toco_Toucan.pict new file mode 100644 index 0000000..341f692 Binary files /dev/null and b/examples/Toco_Toucan.pict differ diff --git a/examples/animate.pas b/examples/animate.pas index 2869c46..0e4bb73 100644 --- a/examples/animate.pas +++ b/examples/animate.pas @@ -24,6 +24,7 @@ var pic:PictData; infile:file; ch:char; stickMan:Sprite; + rocket:Sprite; procedure WaitVSync; external; @@ -80,6 +81,12 @@ begin aSprite.y := aSprite.y + aSprite.ydelta; if aSprite.x > 608 then aSprite.x := 0; + + if aSprite.y < 0 then + begin + aSprite.y := 200; + aSprite.x := 0; + end; end; aSprite.frameLeft := frameLeft; end; @@ -87,6 +94,7 @@ end; procedure animLoop; var i:integer; oldX,oldY:integer; + roldX,roldY:integer; begin stickMan.x := 0; stickMan.y := 310; @@ -96,26 +104,39 @@ begin stickMan.xdelta := 2; stickMan.ydelta := 0; - oldX := stickMan.x; - oldY := stickMan.y; + + rocket.x := 0; + rocket.y := 200; + rocket.frameTime := 1; + rocket.frameLeft := rocket.frameTime; + rocket.curFrame := 0; + rocket.xdelta := 2; + rocket.ydelta := -1; while not ConAvail do begin oldX := stickMan.x; oldY := stickMan.y; - + + roldX := rocket.x; + roldY := rocket.y; + + PutSprite(roldX, roldY, rocket.frame[rocket.curFrame]); PutSprite(oldX, oldY, stickMan.frame[stickMan.curFrame]); + animateSprite(rocket); animateSprite(stickMan); - Delay(10); + + {Delay(1);} WaitVSync; UndrawSprite(oldX, oldY, pic.pixeldata); + UndrawSprite(roldX, roldY, pic.pixeldata); end; end; begin - filename := 'grey.pict'; + filename := 'background.pict'; open(infile, filename, ModeReadonly); read(infile, pic); close(infile); @@ -125,12 +146,19 @@ begin loadPalette(pic); showPic(pic); - open(infile, 'Walking.sprt', ModeReadOnly); + open(infile, 'walking.sprt', ModeReadOnly); loadSpriteFrame(stickMan, 0, infile, 0); loadSpriteFrame(stickMan, 1, infile, 1); loadSpriteFrame(stickMan, 2, infile, 2); loadSpriteFrame(stickMan, 3, infile, 3); close(infile); + open(infile, 'rocket.sprt', ModeReadOnly); + loadSpriteFrame(rocket, 0, infile, 0); + loadSpriteFrame(rocket, 1, infile, 1); + loadSpriteFrame(rocket, 2, infile, 2); + loadSpriteFrame(rocket, 3, infile, 3); + close(infile); + animLoop; end. diff --git a/examples/background.pict b/examples/background.pict index 76b99f6..55e7a2c 100644 Binary files a/examples/background.pict and b/examples/background.pict differ diff --git a/examples/rocket.sprt b/examples/rocket.sprt new file mode 100644 index 0000000..3108b4a Binary files /dev/null and b/examples/rocket.sprt differ diff --git a/examples/shinkansen.pict b/examples/shinkansen.pict index 7b1ac55..e180d5b 100644 Binary files a/examples/shinkansen.pict and b/examples/shinkansen.pict differ diff --git a/examples/snow_leopard.pict b/examples/snow_leopard.pict index 8ea4ab8..91422f7 100644 Binary files a/examples/snow_leopard.pict and b/examples/snow_leopard.pict differ diff --git a/examples/xmas.pas b/examples/xmas.pas index 12b2da3..406e944 100644 --- a/examples/xmas.pas +++ b/examples/xmas.pas @@ -1,3 +1,7 @@ +(* This program does not work anymore, because + it uses the old sprite routines with 16x16 sprites. + It is only included for historical reasons. + *) program XmasAnimation; uses sprites; diff --git a/pcomp/Makefile b/pcomp/Makefile index 6cace65..e183f73 100644 --- a/pcomp/Makefile +++ b/pcomp/Makefile @@ -3,12 +3,17 @@ SASM=./sasm LSYMGEN=./lsymgen .SUFFIXES: -.SUFFIXES: .pas .o +.SUFFIXES: .pas .o .s .prog + +.pas.s: + $(PCOMP) $< +.s.prog: + $(SASM) $< .pas: fpc -Mobjfpc -gl $< -all: pcomp sasm sdis lsymgen shortgen +all: pcomp sasm sdis lsymgen shortgen nativeprogs libs: pcomp sasm lsymgen shortgen $(SASM) ../lib/coreloader.s @@ -17,33 +22,23 @@ libs: pcomp sasm lsymgen shortgen $(SASM) ../lib/stdlibwrap.s ../lib/stdlib.lib $(LSYMGEN) ../lib/stdlibwrap.sym ../lib/stdlib.lsym -nativecomp: pcomp sasm libs - $(PCOMP) sasm.pas - $(PCOMP) pcomp.pas - $(PCOMP) lsymgen.pas - $(PCOMP) shortgen.pas +test: sasm.s pcomp.s lsymgen.s shortgen.s -nativeprogs: nativecomp - $(PCOMP) ../progs/shell.pas - $(PCOMP) ../progs/editor.pas - $(PCOMP) ../progs/reclaim.pas - $(PCOMP) ../progs/dumpdir.pas - $(PCOMP) ../progs/partmgr.pas - $(PCOMP) ../progs/xfer.pas - $(PCOMP) ../progs/recover.pas - $(PCOMP) ../progs/changemem.pas +testprgs: sasm.prog pcomp.prog lsymgen.prog shortgen.prog + +nativecomp: libs pcomp.prog sasm.prog lsymgen.prog shortgen.prog + +nativeprogs: pcomp ../progs/shell.prog ../progs/editor.prog ../progs/reclaim.prog \ + ../progs/dumpdir.prog ../progs/partmgr.prog ../progs/xfer.prog \ + ../progs/recover.prog ../progs/changemem.prog $(SASM) ../lib/rommon.s $(SASM) -A ../lib/rommon.s ../lib/rom.mem -examples: nativecomp - $(PCOMP) ../tests/readtest.pas - $(PCOMP) ../tests/readchartest.pas - $(PCOMP) ../tests/timetest.pas - $(PCOMP) ../tests/test133.pas +examples: nativecomp ../tests/readtest.prog ../tests/readchartest.prog ../tests/timetest.prog \ + ../tests/test133.prog ../tests/cchangetest.prog ../tests/tree.prog -$(PCOMP) ../examples/chase.pas - $(PCOMP) ../tests/cchangetest.pas - $(PCOMP) ../tests/tree.pas + -$(SASM) ../examples/chase.s -$(MAKE) -C ../rogue -f Makefile.tridoracpu clean: - rm -f pcomp sasm sdis libgen lsymgen *.o *.s + rm -f pcomp sasm sdis libgen lsymgen *.o *.s *.prog diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index b0ba2bb..304490b 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -351,9 +351,7 @@ - - Vivado Synthesis Defaults - + @@ -373,9 +371,7 @@ - - Best predicted directive for place_design. - + diff --git a/tridoraemu/ADDS-Envoy-620.pict b/tridoraemu/ADDS-Envoy-620.pict new file mode 100644 index 0000000..7394d5d Binary files /dev/null and b/tridoraemu/ADDS-Envoy-620.pict differ diff --git a/utils/png2pict.py b/utils/png2pict.py index 840f32c..c261850 100644 --- a/utils/png2pict.py +++ b/utils/png2pict.py @@ -31,15 +31,22 @@ def process_pixdata(outfile, pixdata, frameindex = 0, pix_w=640, pix_h=400): x += 8 y += 1 +def write_palette_word(outfile, r, g, b): + r4 = r >> 4 + g4 = g >> 4 + b4 = b >> 4 + c12 = r4 << 8 | g4 << 4 | b4 + + outfile.write(c12.to_bytes(4, 'big')) + def process_palette(outfile, palette): - for r,g,b in palette: - r4 = r >> 4 - g4 = g >> 4 - b4 = b >> 4 - c12 = r4 << 8 | g4 << 4 | b4 - - outfile.write(c12.to_bytes(4, 'big')) + if len(palette[0]) == 4: + for r,g,b,a in palette: + write_palette_word(outfile, r, g, b) + else: + for r,g,b in palette: + write_palette_word(outfile, r, g, b) def write_header(outfile): diff --git a/utils/tdrimg.py b/utils/tdrimg.py index 1195649..6061a98 100644 --- a/utils/tdrimg.py +++ b/utils/tdrimg.py @@ -592,9 +592,6 @@ def create_image_with_stuff(imgfile): slotnr = putfile("../examples/rtpair.pas", None , f, part, partstart, slotnr) - slotnr = putfile("../examples/5cubes.pas", None , f, part, partstart, slotnr) - # slotnr = putfile("../examples/5cubes.prog", None , f, part, partstart, slotnr) - slotnr = putfile("../examples/3dcube.pas", None , f, part, partstart, slotnr) slotnr = putfile("../examples/conway.pas", None , f, part, partstart, slotnr) @@ -604,12 +601,19 @@ def create_image_with_stuff(imgfile): slotnr = putfile("../examples/lines.pas", None , f, part, partstart, slotnr) slotnr = putfile("../examples/pictviewer.pas", None , f, part, partstart, slotnr) - slotnr = putfile("../examples/ara.pict", "ara.pict" , f, part, partstart, slotnr) - slotnr = putfile("../examples/shinkansen.pict", "shinkansen.pict" , f, part, partstart, slotnr) - slotnr = putfile("../examples/snow_leopard.pict", "snow_leopard.pict" , f, part, partstart, slotnr) + slotnr = putfile("../examples/Toco_Toucan.pict", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/shinkansen.pict", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/snow_leopard.pict", None , f, part, partstart, slotnr) slotnr = putfile("../examples/benchmarks.pas", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/animate.pas", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/sprites.inc", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/sprites.s", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/background.pict", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/walking.sprt", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/rocket.sprt", None , f, part, partstart, slotnr) + listdir(f, part) part, partstart, slotnr = initfs(f, 5)