├── .gitignore ├── fdemo ├── KIT.OVL ├── MODPLAY.H ├── PICS.DTF ├── MODPLAY.ASM ├── SAHARA.MOD ├── assets │ ├── can.bbm │ ├── fb1.bbm │ ├── fb2.bbm │ ├── fb3.bbm │ ├── fb4.bbm │ ├── fb5.bbm │ ├── fb6.bbm │ ├── red.bbm │ ├── apple1.bbm │ ├── apple2.bbm │ ├── apple3.bbm │ ├── apple4.bbm │ ├── ball1.bbm │ ├── ball2.bbm │ ├── ball3.bbm │ ├── ball4.bbm │ ├── ball5.bbm │ ├── bldg.bbm │ ├── blue.bbm │ ├── bushes.bbm │ ├── ceil1.bbm │ ├── ceil2.bbm │ ├── demo.bbm │ ├── dev1.bbm │ ├── dev2.bbm │ ├── dev3.bbm │ ├── dev4.bbm │ ├── dev5.bbm │ ├── devemp.bbm │ ├── door.bbm │ ├── fdemo.map │ ├── fence.bbm │ ├── floor.bbm │ ├── floor1.bbm │ ├── floor2.bbm │ ├── floor3.bbm │ ├── floor4.bbm │ ├── floor5.bbm │ ├── floor6.bbm │ ├── gpanel.bbm │ ├── green1.bbm │ ├── grey.bbm │ ├── gwall1.bbm │ ├── gwall2.bbm │ ├── gwall3.bbm │ ├── gwall4.bbm │ ├── gwall5.bbm │ ├── hand1.bbm │ ├── hand2.bbm │ ├── kit1.lbm │ ├── mach1.bbm │ ├── mach2.bbm │ ├── mach3.bbm │ ├── mach4.bbm │ ├── mach5.bbm │ ├── mach6.bbm │ ├── melt1.bbm │ ├── melt2.bbm │ ├── melt3.bbm │ ├── melt4.bbm │ ├── melt5.bbm │ ├── melt6.bbm │ ├── melt7.bbm │ ├── mine1.bbm │ ├── mine2.bbm │ ├── mine3.bbm │ ├── mine4.bbm │ ├── pict.bbm │ ├── pict2.bbm │ ├── plant1.bbm │ ├── rock.bbm │ ├── slsh1.bbm │ ├── slsh2.bbm │ ├── slsh3.bbm │ ├── steel.bbm │ ├── steel1.bbm │ ├── stone.bbm │ ├── stone1.bbm │ ├── stone3.bbm │ ├── stone4.bbm │ ├── stone5.bbm │ ├── stones.bbm │ ├── table.bbm │ ├── table1.bbm │ ├── test.gif │ ├── wall.bbm │ ├── wall3.bbm │ ├── wall3p.bbm │ ├── wallp.bbm │ ├── wallp1.bbm │ ├── wallp2.bbm │ ├── yellow.bbm │ ├── bluewall.bbm │ ├── brick-x.bbm │ ├── bricks2.bbm │ ├── bricks2a.bbm │ ├── bricks2b.bbm │ ├── bricks2c.bbm │ ├── bricks2d.bbm │ ├── bricks2e.bbm │ ├── bricks2f.bbm │ ├── brnwall.bbm │ ├── gpanel1.bbm │ ├── greywall.bbm │ ├── grnwall.bbm │ ├── icewall.bbm │ ├── icewall1.bbm │ ├── mntback2.lbm │ ├── slime1a.bbm │ ├── slime1b.bbm │ ├── slime2a.bbm │ ├── slime2b.bbm │ ├── slime3a.bbm │ ├── slime3b.bbm │ ├── slime4a.bbm │ ├── slime4b.bbm │ ├── slime5a.bbm │ ├── slime5b.bbm │ ├── slime6a.bbm │ ├── slime6b.bbm │ ├── slime7a.bbm │ ├── slime7b.bbm │ ├── slime8a.bbm │ ├── slime8b.bbm │ ├── steel3d.bbm │ ├── texture2.bbm │ ├── texture3.bbm │ ├── texture4.bbm │ ├── throw1a.bbm │ ├── throw1b.bbm │ ├── throw2a.bbm │ ├── throw2b.bbm │ ├── throw3a.bbm │ ├── throw3b.bbm │ ├── throw4a.bbm │ ├── throw4b.bbm │ ├── throw5a.bbm │ ├── throw5b.bbm │ ├── throw6a.bbm │ ├── throw6b.bbm │ ├── throw7a.bbm │ ├── throw7b.bbm │ ├── throw8a.bbm │ ├── throw8b.bbm │ ├── fdemo.pal │ ├── fdemo.dat │ └── fdemo.l01 ├── makefile ├── README.md ├── MOUSE.C └── KIT.H ├── mall ├── KIT.OVL ├── PICS.DTF ├── WALK.MOD ├── MODPLAY.H ├── MODPLAY.ASM ├── assets │ ├── food.bbm │ ├── mall.lbm │ ├── mall.map │ ├── pave.bbm │ ├── sale.bbm │ ├── wall.bbm │ ├── blwall.bbm │ ├── brkwall.bbm │ ├── brkwin.bbm │ ├── bushes.bbm │ ├── ceil1.bbm │ ├── ceil2.bbm │ ├── ceil3.bbm │ ├── diamond.bbm │ ├── grnbrk.bbm │ ├── grslant.bbm │ ├── hotdog.bbm │ ├── parking.bbm │ ├── pave1.bbm │ ├── pave10.bbm │ ├── pave2.bbm │ ├── pave3.bbm │ ├── pave4.bbm │ ├── pave5.bbm │ ├── pave6.bbm │ ├── pave7.bbm │ ├── pave8.bbm │ ├── pave9.bbm │ ├── plant1.bbm │ ├── redwall.bbm │ ├── redwin.bbm │ ├── redwin1.bbm │ ├── redwin2.bbm │ ├── redwin3.bbm │ ├── stone.bbm │ ├── stone1.bbm │ ├── stone2.bbm │ ├── stones.bbm │ ├── table.bbm │ ├── tiles.bbm │ ├── wall1.bbm │ ├── wall2.bbm │ ├── wall3.bbm │ ├── wallent.bbm │ ├── brnwall1.bbm │ ├── brnwall2.bbm │ ├── brnwall3.bbm │ ├── mntback2.lbm │ ├── parklite.bbm │ ├── pattern1.bbm │ ├── servdesk.bbm │ ├── mall.dat │ ├── mall.l01 │ └── mall.inf ├── makefile ├── README.md ├── MOUSE.C └── KIT.H ├── example ├── kit.ovl ├── assets │ ├── bars.pcx │ ├── bed.pcx │ ├── blue.pcx │ ├── can1.pcx │ ├── can2.pcx │ ├── can3.pcx │ ├── can4.pcx │ ├── diag.pcx │ ├── fern.pcx │ ├── g13.pcx │ ├── g9.pcx │ ├── grey.pcx │ ├── pave.pcx │ ├── safe.pcx │ ├── wall.pcx │ ├── brkwin.pcx │ ├── ceil1.pcx │ ├── ceil2.pcx │ ├── chisel.pcx │ ├── cons1.pcx │ ├── cons2.pcx │ ├── cons3.pcx │ ├── cons4.pcx │ ├── danger.pcx │ ├── fence.pcx │ ├── floor1.pcx │ ├── floor2.pcx │ ├── green1.pcx │ ├── melt1.pcx │ ├── melt2.pcx │ ├── melt3.pcx │ ├── melt4.pcx │ ├── melt5.pcx │ ├── melt6.pcx │ ├── melt7.pcx │ ├── mine1.pcx │ ├── mine2.pcx │ ├── mine4.pcx │ ├── plant1.pcx │ ├── redwin.pcx │ ├── scont.pcx │ ├── screw.pcx │ ├── sdoor1.pcx │ ├── sside.pcx │ ├── stars1.pcx │ ├── stone.pcx │ ├── stone1.pcx │ ├── stone2.pcx │ ├── table.pcx │ ├── table1.pcx │ ├── wall1.pcx │ ├── wall2.pcx │ ├── wallp2.pcx │ ├── bluewall.pcx │ ├── brkwall.pcx │ ├── brnwall2.pcx │ ├── ceillght.pcx │ ├── diamond.pcx │ ├── example.map │ ├── floorlgt.pcx │ ├── redwall.pcx │ ├── slime1a.pcx │ ├── slime1b.pcx │ ├── slime2a.pcx │ ├── slime2b.pcx │ ├── slime3a.pcx │ ├── slime3b.pcx │ ├── slime4a.pcx │ ├── slime4b.pcx │ ├── slime5a.pcx │ ├── slime5b.pcx │ ├── slime6a.pcx │ ├── slime6b.pcx │ ├── slime7a.pcx │ ├── slime7b.pcx │ ├── slime8a.pcx │ ├── slime8b.pcx │ ├── swall11.pcx │ ├── swall12.pcx │ ├── swall13.pcx │ ├── swall15.pcx │ ├── swall16.pcx │ ├── swall17.pcx │ ├── swall22.pcx │ ├── texture3.pcx │ ├── texture4.pcx │ ├── throw1a.pcx │ ├── throw1b.pcx │ ├── throw2a.pcx │ ├── throw2b.pcx │ ├── throw3a.pcx │ ├── throw3b.pcx │ ├── throw4a.pcx │ ├── throw4b.pcx │ ├── throw5a.pcx │ ├── throw5b.pcx │ ├── throw6a.pcx │ ├── throw6b.pcx │ ├── throw7a.pcx │ ├── throw7b.pcx │ ├── throw8a.pcx │ ├── throw8b.pcx │ ├── uiframe.pcx │ ├── example.pal │ ├── example.dat │ └── example.med ├── assets.h ├── makefile └── README.md ├── map_edit ├── m1.bbm ├── m12.bbm ├── m12d.lbm ├── m13d.lbm ├── m1sel.lbm ├── font6x9.bbm ├── slime1a.bbm ├── spfont.bbm ├── m1files.dat ├── prologue.mac ├── mapedit.h ├── makefile ├── measm.asm ├── README.md ├── mouse.c └── m1.h ├── ack_lib ├── ACKBKGD.C ├── ACKDOOR.C ├── ACKFLOOR.C ├── ACKINIT.C ├── ACKLDBMP.C ├── ACKOBJ.C ├── ACKOVER.C ├── ACKRTN.ASM ├── ACKUTIL.C ├── ACKVIEW.C ├── ACKWRAP.C ├── ACKRTN1.ASM ├── ACKRTN3.ASM ├── ACKRTN4.ASM ├── ACKRTN5.ASM ├── README.md ├── makefile ├── ACKRTN.INC ├── ACKENG.H ├── ACKDATA.C ├── IFF.H ├── ACKPCX.C ├── ACKEXT.H ├── ACKIFF.C └── ACKGIF.C ├── scrnshot ├── mall.gif ├── fdemo1.gif ├── fdemo2.gif ├── example1.gif ├── example2.gif ├── mapedit1.gif └── mapedit2.gif ├── bpic ├── makefile ├── README.md └── bpic.c └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.obj 2 | *.exe 3 | *.lib 4 | *.lbc 5 | *.lnk 6 | -------------------------------------------------------------------------------- /fdemo/KIT.OVL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/KIT.OVL -------------------------------------------------------------------------------- /mall/KIT.OVL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/KIT.OVL -------------------------------------------------------------------------------- /mall/PICS.DTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/PICS.DTF -------------------------------------------------------------------------------- /mall/WALK.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/WALK.MOD -------------------------------------------------------------------------------- /example/kit.ovl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/kit.ovl -------------------------------------------------------------------------------- /fdemo/MODPLAY.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/MODPLAY.H -------------------------------------------------------------------------------- /fdemo/PICS.DTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/PICS.DTF -------------------------------------------------------------------------------- /mall/MODPLAY.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/MODPLAY.H -------------------------------------------------------------------------------- /map_edit/m1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/map_edit/m1.bbm -------------------------------------------------------------------------------- /ack_lib/ACKBKGD.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKBKGD.C -------------------------------------------------------------------------------- /ack_lib/ACKDOOR.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKDOOR.C -------------------------------------------------------------------------------- /ack_lib/ACKFLOOR.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKFLOOR.C -------------------------------------------------------------------------------- /ack_lib/ACKINIT.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKINIT.C -------------------------------------------------------------------------------- /ack_lib/ACKLDBMP.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKLDBMP.C -------------------------------------------------------------------------------- /ack_lib/ACKOBJ.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKOBJ.C -------------------------------------------------------------------------------- /ack_lib/ACKOVER.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKOVER.C -------------------------------------------------------------------------------- /ack_lib/ACKRTN.ASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKRTN.ASM -------------------------------------------------------------------------------- /ack_lib/ACKUTIL.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKUTIL.C -------------------------------------------------------------------------------- /ack_lib/ACKVIEW.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKVIEW.C -------------------------------------------------------------------------------- /ack_lib/ACKWRAP.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKWRAP.C -------------------------------------------------------------------------------- /fdemo/MODPLAY.ASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/MODPLAY.ASM -------------------------------------------------------------------------------- /fdemo/SAHARA.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/SAHARA.MOD -------------------------------------------------------------------------------- /mall/MODPLAY.ASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/MODPLAY.ASM -------------------------------------------------------------------------------- /map_edit/m12.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/map_edit/m12.bbm -------------------------------------------------------------------------------- /map_edit/m12d.lbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/map_edit/m12d.lbm -------------------------------------------------------------------------------- /map_edit/m13d.lbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/map_edit/m13d.lbm -------------------------------------------------------------------------------- /map_edit/m1sel.lbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/map_edit/m1sel.lbm -------------------------------------------------------------------------------- /scrnshot/mall.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/scrnshot/mall.gif -------------------------------------------------------------------------------- /ack_lib/ACKRTN1.ASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKRTN1.ASM -------------------------------------------------------------------------------- /ack_lib/ACKRTN3.ASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKRTN3.ASM -------------------------------------------------------------------------------- /ack_lib/ACKRTN4.ASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKRTN4.ASM -------------------------------------------------------------------------------- /ack_lib/ACKRTN5.ASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/ack_lib/ACKRTN5.ASM -------------------------------------------------------------------------------- /fdemo/assets/can.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/can.bbm -------------------------------------------------------------------------------- /fdemo/assets/fb1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/fb1.bbm -------------------------------------------------------------------------------- /fdemo/assets/fb2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/fb2.bbm -------------------------------------------------------------------------------- /fdemo/assets/fb3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/fb3.bbm -------------------------------------------------------------------------------- /fdemo/assets/fb4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/fb4.bbm -------------------------------------------------------------------------------- /fdemo/assets/fb5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/fb5.bbm -------------------------------------------------------------------------------- /fdemo/assets/fb6.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/fb6.bbm -------------------------------------------------------------------------------- /fdemo/assets/red.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/red.bbm -------------------------------------------------------------------------------- /mall/assets/food.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/food.bbm -------------------------------------------------------------------------------- /mall/assets/mall.lbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/mall.lbm -------------------------------------------------------------------------------- /mall/assets/mall.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/mall.map -------------------------------------------------------------------------------- /mall/assets/pave.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave.bbm -------------------------------------------------------------------------------- /mall/assets/sale.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/sale.bbm -------------------------------------------------------------------------------- /mall/assets/wall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/wall.bbm -------------------------------------------------------------------------------- /map_edit/font6x9.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/map_edit/font6x9.bbm -------------------------------------------------------------------------------- /map_edit/slime1a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/map_edit/slime1a.bbm -------------------------------------------------------------------------------- /map_edit/spfont.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/map_edit/spfont.bbm -------------------------------------------------------------------------------- /scrnshot/fdemo1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/scrnshot/fdemo1.gif -------------------------------------------------------------------------------- /scrnshot/fdemo2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/scrnshot/fdemo2.gif -------------------------------------------------------------------------------- /example/assets/bars.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/bars.pcx -------------------------------------------------------------------------------- /example/assets/bed.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/bed.pcx -------------------------------------------------------------------------------- /example/assets/blue.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/blue.pcx -------------------------------------------------------------------------------- /example/assets/can1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/can1.pcx -------------------------------------------------------------------------------- /example/assets/can2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/can2.pcx -------------------------------------------------------------------------------- /example/assets/can3.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/can3.pcx -------------------------------------------------------------------------------- /example/assets/can4.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/can4.pcx -------------------------------------------------------------------------------- /example/assets/diag.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/diag.pcx -------------------------------------------------------------------------------- /example/assets/fern.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/fern.pcx -------------------------------------------------------------------------------- /example/assets/g13.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/g13.pcx -------------------------------------------------------------------------------- /example/assets/g9.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/g9.pcx -------------------------------------------------------------------------------- /example/assets/grey.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/grey.pcx -------------------------------------------------------------------------------- /example/assets/pave.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/pave.pcx -------------------------------------------------------------------------------- /example/assets/safe.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/safe.pcx -------------------------------------------------------------------------------- /example/assets/wall.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/wall.pcx -------------------------------------------------------------------------------- /fdemo/assets/apple1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/apple1.bbm -------------------------------------------------------------------------------- /fdemo/assets/apple2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/apple2.bbm -------------------------------------------------------------------------------- /fdemo/assets/apple3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/apple3.bbm -------------------------------------------------------------------------------- /fdemo/assets/apple4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/apple4.bbm -------------------------------------------------------------------------------- /fdemo/assets/ball1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/ball1.bbm -------------------------------------------------------------------------------- /fdemo/assets/ball2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/ball2.bbm -------------------------------------------------------------------------------- /fdemo/assets/ball3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/ball3.bbm -------------------------------------------------------------------------------- /fdemo/assets/ball4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/ball4.bbm -------------------------------------------------------------------------------- /fdemo/assets/ball5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/ball5.bbm -------------------------------------------------------------------------------- /fdemo/assets/bldg.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bldg.bbm -------------------------------------------------------------------------------- /fdemo/assets/blue.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/blue.bbm -------------------------------------------------------------------------------- /fdemo/assets/bushes.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bushes.bbm -------------------------------------------------------------------------------- /fdemo/assets/ceil1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/ceil1.bbm -------------------------------------------------------------------------------- /fdemo/assets/ceil2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/ceil2.bbm -------------------------------------------------------------------------------- /fdemo/assets/demo.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/demo.bbm -------------------------------------------------------------------------------- /fdemo/assets/dev1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/dev1.bbm -------------------------------------------------------------------------------- /fdemo/assets/dev2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/dev2.bbm -------------------------------------------------------------------------------- /fdemo/assets/dev3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/dev3.bbm -------------------------------------------------------------------------------- /fdemo/assets/dev4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/dev4.bbm -------------------------------------------------------------------------------- /fdemo/assets/dev5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/dev5.bbm -------------------------------------------------------------------------------- /fdemo/assets/devemp.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/devemp.bbm -------------------------------------------------------------------------------- /fdemo/assets/door.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/door.bbm -------------------------------------------------------------------------------- /fdemo/assets/fdemo.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/fdemo.map -------------------------------------------------------------------------------- /fdemo/assets/fence.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/fence.bbm -------------------------------------------------------------------------------- /fdemo/assets/floor.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/floor.bbm -------------------------------------------------------------------------------- /fdemo/assets/floor1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/floor1.bbm -------------------------------------------------------------------------------- /fdemo/assets/floor2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/floor2.bbm -------------------------------------------------------------------------------- /fdemo/assets/floor3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/floor3.bbm -------------------------------------------------------------------------------- /fdemo/assets/floor4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/floor4.bbm -------------------------------------------------------------------------------- /fdemo/assets/floor5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/floor5.bbm -------------------------------------------------------------------------------- /fdemo/assets/floor6.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/floor6.bbm -------------------------------------------------------------------------------- /fdemo/assets/gpanel.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/gpanel.bbm -------------------------------------------------------------------------------- /fdemo/assets/green1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/green1.bbm -------------------------------------------------------------------------------- /fdemo/assets/grey.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/grey.bbm -------------------------------------------------------------------------------- /fdemo/assets/gwall1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/gwall1.bbm -------------------------------------------------------------------------------- /fdemo/assets/gwall2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/gwall2.bbm -------------------------------------------------------------------------------- /fdemo/assets/gwall3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/gwall3.bbm -------------------------------------------------------------------------------- /fdemo/assets/gwall4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/gwall4.bbm -------------------------------------------------------------------------------- /fdemo/assets/gwall5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/gwall5.bbm -------------------------------------------------------------------------------- /fdemo/assets/hand1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/hand1.bbm -------------------------------------------------------------------------------- /fdemo/assets/hand2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/hand2.bbm -------------------------------------------------------------------------------- /fdemo/assets/kit1.lbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/kit1.lbm -------------------------------------------------------------------------------- /fdemo/assets/mach1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mach1.bbm -------------------------------------------------------------------------------- /fdemo/assets/mach2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mach2.bbm -------------------------------------------------------------------------------- /fdemo/assets/mach3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mach3.bbm -------------------------------------------------------------------------------- /fdemo/assets/mach4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mach4.bbm -------------------------------------------------------------------------------- /fdemo/assets/mach5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mach5.bbm -------------------------------------------------------------------------------- /fdemo/assets/mach6.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mach6.bbm -------------------------------------------------------------------------------- /fdemo/assets/melt1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/melt1.bbm -------------------------------------------------------------------------------- /fdemo/assets/melt2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/melt2.bbm -------------------------------------------------------------------------------- /fdemo/assets/melt3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/melt3.bbm -------------------------------------------------------------------------------- /fdemo/assets/melt4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/melt4.bbm -------------------------------------------------------------------------------- /fdemo/assets/melt5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/melt5.bbm -------------------------------------------------------------------------------- /fdemo/assets/melt6.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/melt6.bbm -------------------------------------------------------------------------------- /fdemo/assets/melt7.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/melt7.bbm -------------------------------------------------------------------------------- /fdemo/assets/mine1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mine1.bbm -------------------------------------------------------------------------------- /fdemo/assets/mine2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mine2.bbm -------------------------------------------------------------------------------- /fdemo/assets/mine3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mine3.bbm -------------------------------------------------------------------------------- /fdemo/assets/mine4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mine4.bbm -------------------------------------------------------------------------------- /fdemo/assets/pict.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/pict.bbm -------------------------------------------------------------------------------- /fdemo/assets/pict2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/pict2.bbm -------------------------------------------------------------------------------- /fdemo/assets/plant1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/plant1.bbm -------------------------------------------------------------------------------- /fdemo/assets/rock.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/rock.bbm -------------------------------------------------------------------------------- /fdemo/assets/slsh1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slsh1.bbm -------------------------------------------------------------------------------- /fdemo/assets/slsh2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slsh2.bbm -------------------------------------------------------------------------------- /fdemo/assets/slsh3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slsh3.bbm -------------------------------------------------------------------------------- /fdemo/assets/steel.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/steel.bbm -------------------------------------------------------------------------------- /fdemo/assets/steel1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/steel1.bbm -------------------------------------------------------------------------------- /fdemo/assets/stone.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/stone.bbm -------------------------------------------------------------------------------- /fdemo/assets/stone1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/stone1.bbm -------------------------------------------------------------------------------- /fdemo/assets/stone3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/stone3.bbm -------------------------------------------------------------------------------- /fdemo/assets/stone4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/stone4.bbm -------------------------------------------------------------------------------- /fdemo/assets/stone5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/stone5.bbm -------------------------------------------------------------------------------- /fdemo/assets/stones.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/stones.bbm -------------------------------------------------------------------------------- /fdemo/assets/table.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/table.bbm -------------------------------------------------------------------------------- /fdemo/assets/table1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/table1.bbm -------------------------------------------------------------------------------- /fdemo/assets/test.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/test.gif -------------------------------------------------------------------------------- /fdemo/assets/wall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/wall.bbm -------------------------------------------------------------------------------- /fdemo/assets/wall3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/wall3.bbm -------------------------------------------------------------------------------- /fdemo/assets/wall3p.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/wall3p.bbm -------------------------------------------------------------------------------- /fdemo/assets/wallp.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/wallp.bbm -------------------------------------------------------------------------------- /fdemo/assets/wallp1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/wallp1.bbm -------------------------------------------------------------------------------- /fdemo/assets/wallp2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/wallp2.bbm -------------------------------------------------------------------------------- /fdemo/assets/yellow.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/yellow.bbm -------------------------------------------------------------------------------- /mall/assets/blwall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/blwall.bbm -------------------------------------------------------------------------------- /mall/assets/brkwall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/brkwall.bbm -------------------------------------------------------------------------------- /mall/assets/brkwin.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/brkwin.bbm -------------------------------------------------------------------------------- /mall/assets/bushes.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/bushes.bbm -------------------------------------------------------------------------------- /mall/assets/ceil1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/ceil1.bbm -------------------------------------------------------------------------------- /mall/assets/ceil2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/ceil2.bbm -------------------------------------------------------------------------------- /mall/assets/ceil3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/ceil3.bbm -------------------------------------------------------------------------------- /mall/assets/diamond.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/diamond.bbm -------------------------------------------------------------------------------- /mall/assets/grnbrk.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/grnbrk.bbm -------------------------------------------------------------------------------- /mall/assets/grslant.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/grslant.bbm -------------------------------------------------------------------------------- /mall/assets/hotdog.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/hotdog.bbm -------------------------------------------------------------------------------- /mall/assets/parking.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/parking.bbm -------------------------------------------------------------------------------- /mall/assets/pave1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave1.bbm -------------------------------------------------------------------------------- /mall/assets/pave10.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave10.bbm -------------------------------------------------------------------------------- /mall/assets/pave2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave2.bbm -------------------------------------------------------------------------------- /mall/assets/pave3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave3.bbm -------------------------------------------------------------------------------- /mall/assets/pave4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave4.bbm -------------------------------------------------------------------------------- /mall/assets/pave5.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave5.bbm -------------------------------------------------------------------------------- /mall/assets/pave6.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave6.bbm -------------------------------------------------------------------------------- /mall/assets/pave7.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave7.bbm -------------------------------------------------------------------------------- /mall/assets/pave8.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave8.bbm -------------------------------------------------------------------------------- /mall/assets/pave9.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pave9.bbm -------------------------------------------------------------------------------- /mall/assets/plant1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/plant1.bbm -------------------------------------------------------------------------------- /mall/assets/redwall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/redwall.bbm -------------------------------------------------------------------------------- /mall/assets/redwin.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/redwin.bbm -------------------------------------------------------------------------------- /mall/assets/redwin1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/redwin1.bbm -------------------------------------------------------------------------------- /mall/assets/redwin2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/redwin2.bbm -------------------------------------------------------------------------------- /mall/assets/redwin3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/redwin3.bbm -------------------------------------------------------------------------------- /mall/assets/stone.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/stone.bbm -------------------------------------------------------------------------------- /mall/assets/stone1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/stone1.bbm -------------------------------------------------------------------------------- /mall/assets/stone2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/stone2.bbm -------------------------------------------------------------------------------- /mall/assets/stones.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/stones.bbm -------------------------------------------------------------------------------- /mall/assets/table.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/table.bbm -------------------------------------------------------------------------------- /mall/assets/tiles.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/tiles.bbm -------------------------------------------------------------------------------- /mall/assets/wall1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/wall1.bbm -------------------------------------------------------------------------------- /mall/assets/wall2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/wall2.bbm -------------------------------------------------------------------------------- /mall/assets/wall3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/wall3.bbm -------------------------------------------------------------------------------- /mall/assets/wallent.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/wallent.bbm -------------------------------------------------------------------------------- /scrnshot/example1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/scrnshot/example1.gif -------------------------------------------------------------------------------- /scrnshot/example2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/scrnshot/example2.gif -------------------------------------------------------------------------------- /scrnshot/mapedit1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/scrnshot/mapedit1.gif -------------------------------------------------------------------------------- /scrnshot/mapedit2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/scrnshot/mapedit2.gif -------------------------------------------------------------------------------- /example/assets/brkwin.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/brkwin.pcx -------------------------------------------------------------------------------- /example/assets/ceil1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/ceil1.pcx -------------------------------------------------------------------------------- /example/assets/ceil2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/ceil2.pcx -------------------------------------------------------------------------------- /example/assets/chisel.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/chisel.pcx -------------------------------------------------------------------------------- /example/assets/cons1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/cons1.pcx -------------------------------------------------------------------------------- /example/assets/cons2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/cons2.pcx -------------------------------------------------------------------------------- /example/assets/cons3.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/cons3.pcx -------------------------------------------------------------------------------- /example/assets/cons4.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/cons4.pcx -------------------------------------------------------------------------------- /example/assets/danger.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/danger.pcx -------------------------------------------------------------------------------- /example/assets/fence.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/fence.pcx -------------------------------------------------------------------------------- /example/assets/floor1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/floor1.pcx -------------------------------------------------------------------------------- /example/assets/floor2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/floor2.pcx -------------------------------------------------------------------------------- /example/assets/green1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/green1.pcx -------------------------------------------------------------------------------- /example/assets/melt1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/melt1.pcx -------------------------------------------------------------------------------- /example/assets/melt2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/melt2.pcx -------------------------------------------------------------------------------- /example/assets/melt3.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/melt3.pcx -------------------------------------------------------------------------------- /example/assets/melt4.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/melt4.pcx -------------------------------------------------------------------------------- /example/assets/melt5.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/melt5.pcx -------------------------------------------------------------------------------- /example/assets/melt6.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/melt6.pcx -------------------------------------------------------------------------------- /example/assets/melt7.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/melt7.pcx -------------------------------------------------------------------------------- /example/assets/mine1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/mine1.pcx -------------------------------------------------------------------------------- /example/assets/mine2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/mine2.pcx -------------------------------------------------------------------------------- /example/assets/mine4.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/mine4.pcx -------------------------------------------------------------------------------- /example/assets/plant1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/plant1.pcx -------------------------------------------------------------------------------- /example/assets/redwin.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/redwin.pcx -------------------------------------------------------------------------------- /example/assets/scont.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/scont.pcx -------------------------------------------------------------------------------- /example/assets/screw.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/screw.pcx -------------------------------------------------------------------------------- /example/assets/sdoor1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/sdoor1.pcx -------------------------------------------------------------------------------- /example/assets/sside.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/sside.pcx -------------------------------------------------------------------------------- /example/assets/stars1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/stars1.pcx -------------------------------------------------------------------------------- /example/assets/stone.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/stone.pcx -------------------------------------------------------------------------------- /example/assets/stone1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/stone1.pcx -------------------------------------------------------------------------------- /example/assets/stone2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/stone2.pcx -------------------------------------------------------------------------------- /example/assets/table.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/table.pcx -------------------------------------------------------------------------------- /example/assets/table1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/table1.pcx -------------------------------------------------------------------------------- /example/assets/wall1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/wall1.pcx -------------------------------------------------------------------------------- /example/assets/wall2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/wall2.pcx -------------------------------------------------------------------------------- /example/assets/wallp2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/wallp2.pcx -------------------------------------------------------------------------------- /fdemo/assets/bluewall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bluewall.bbm -------------------------------------------------------------------------------- /fdemo/assets/brick-x.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/brick-x.bbm -------------------------------------------------------------------------------- /fdemo/assets/bricks2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bricks2.bbm -------------------------------------------------------------------------------- /fdemo/assets/bricks2a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bricks2a.bbm -------------------------------------------------------------------------------- /fdemo/assets/bricks2b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bricks2b.bbm -------------------------------------------------------------------------------- /fdemo/assets/bricks2c.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bricks2c.bbm -------------------------------------------------------------------------------- /fdemo/assets/bricks2d.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bricks2d.bbm -------------------------------------------------------------------------------- /fdemo/assets/bricks2e.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bricks2e.bbm -------------------------------------------------------------------------------- /fdemo/assets/bricks2f.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/bricks2f.bbm -------------------------------------------------------------------------------- /fdemo/assets/brnwall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/brnwall.bbm -------------------------------------------------------------------------------- /fdemo/assets/gpanel1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/gpanel1.bbm -------------------------------------------------------------------------------- /fdemo/assets/greywall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/greywall.bbm -------------------------------------------------------------------------------- /fdemo/assets/grnwall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/grnwall.bbm -------------------------------------------------------------------------------- /fdemo/assets/icewall.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/icewall.bbm -------------------------------------------------------------------------------- /fdemo/assets/icewall1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/icewall1.bbm -------------------------------------------------------------------------------- /fdemo/assets/mntback2.lbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/mntback2.lbm -------------------------------------------------------------------------------- /fdemo/assets/slime1a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime1a.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime1b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime1b.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime2a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime2a.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime2b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime2b.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime3a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime3a.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime3b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime3b.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime4a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime4a.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime4b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime4b.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime5a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime5a.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime5b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime5b.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime6a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime6a.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime6b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime6b.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime7a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime7a.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime7b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime7b.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime8a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime8a.bbm -------------------------------------------------------------------------------- /fdemo/assets/slime8b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/slime8b.bbm -------------------------------------------------------------------------------- /fdemo/assets/steel3d.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/steel3d.bbm -------------------------------------------------------------------------------- /fdemo/assets/texture2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/texture2.bbm -------------------------------------------------------------------------------- /fdemo/assets/texture3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/texture3.bbm -------------------------------------------------------------------------------- /fdemo/assets/texture4.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/texture4.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw1a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw1a.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw1b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw1b.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw2a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw2a.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw2b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw2b.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw3a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw3a.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw3b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw3b.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw4a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw4a.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw4b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw4b.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw5a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw5a.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw5b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw5b.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw6a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw6a.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw6b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw6b.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw7a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw7a.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw7b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw7b.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw8a.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw8a.bbm -------------------------------------------------------------------------------- /fdemo/assets/throw8b.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/fdemo/assets/throw8b.bbm -------------------------------------------------------------------------------- /mall/assets/brnwall1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/brnwall1.bbm -------------------------------------------------------------------------------- /mall/assets/brnwall2.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/brnwall2.bbm -------------------------------------------------------------------------------- /mall/assets/brnwall3.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/brnwall3.bbm -------------------------------------------------------------------------------- /mall/assets/mntback2.lbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/mntback2.lbm -------------------------------------------------------------------------------- /mall/assets/parklite.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/parklite.bbm -------------------------------------------------------------------------------- /mall/assets/pattern1.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/pattern1.bbm -------------------------------------------------------------------------------- /mall/assets/servdesk.bbm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/mall/assets/servdesk.bbm -------------------------------------------------------------------------------- /example/assets/bluewall.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/bluewall.pcx -------------------------------------------------------------------------------- /example/assets/brkwall.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/brkwall.pcx -------------------------------------------------------------------------------- /example/assets/brnwall2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/brnwall2.pcx -------------------------------------------------------------------------------- /example/assets/ceillght.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/ceillght.pcx -------------------------------------------------------------------------------- /example/assets/diamond.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/diamond.pcx -------------------------------------------------------------------------------- /example/assets/example.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/example.map -------------------------------------------------------------------------------- /example/assets/floorlgt.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/floorlgt.pcx -------------------------------------------------------------------------------- /example/assets/redwall.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/redwall.pcx -------------------------------------------------------------------------------- /example/assets/slime1a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime1a.pcx -------------------------------------------------------------------------------- /example/assets/slime1b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime1b.pcx -------------------------------------------------------------------------------- /example/assets/slime2a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime2a.pcx -------------------------------------------------------------------------------- /example/assets/slime2b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime2b.pcx -------------------------------------------------------------------------------- /example/assets/slime3a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime3a.pcx -------------------------------------------------------------------------------- /example/assets/slime3b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime3b.pcx -------------------------------------------------------------------------------- /example/assets/slime4a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime4a.pcx -------------------------------------------------------------------------------- /example/assets/slime4b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime4b.pcx -------------------------------------------------------------------------------- /example/assets/slime5a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime5a.pcx -------------------------------------------------------------------------------- /example/assets/slime5b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime5b.pcx -------------------------------------------------------------------------------- /example/assets/slime6a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime6a.pcx -------------------------------------------------------------------------------- /example/assets/slime6b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime6b.pcx -------------------------------------------------------------------------------- /example/assets/slime7a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime7a.pcx -------------------------------------------------------------------------------- /example/assets/slime7b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime7b.pcx -------------------------------------------------------------------------------- /example/assets/slime8a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime8a.pcx -------------------------------------------------------------------------------- /example/assets/slime8b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/slime8b.pcx -------------------------------------------------------------------------------- /example/assets/swall11.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/swall11.pcx -------------------------------------------------------------------------------- /example/assets/swall12.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/swall12.pcx -------------------------------------------------------------------------------- /example/assets/swall13.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/swall13.pcx -------------------------------------------------------------------------------- /example/assets/swall15.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/swall15.pcx -------------------------------------------------------------------------------- /example/assets/swall16.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/swall16.pcx -------------------------------------------------------------------------------- /example/assets/swall17.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/swall17.pcx -------------------------------------------------------------------------------- /example/assets/swall22.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/swall22.pcx -------------------------------------------------------------------------------- /example/assets/texture3.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/texture3.pcx -------------------------------------------------------------------------------- /example/assets/texture4.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/texture4.pcx -------------------------------------------------------------------------------- /example/assets/throw1a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw1a.pcx -------------------------------------------------------------------------------- /example/assets/throw1b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw1b.pcx -------------------------------------------------------------------------------- /example/assets/throw2a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw2a.pcx -------------------------------------------------------------------------------- /example/assets/throw2b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw2b.pcx -------------------------------------------------------------------------------- /example/assets/throw3a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw3a.pcx -------------------------------------------------------------------------------- /example/assets/throw3b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw3b.pcx -------------------------------------------------------------------------------- /example/assets/throw4a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw4a.pcx -------------------------------------------------------------------------------- /example/assets/throw4b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw4b.pcx -------------------------------------------------------------------------------- /example/assets/throw5a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw5a.pcx -------------------------------------------------------------------------------- /example/assets/throw5b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw5b.pcx -------------------------------------------------------------------------------- /example/assets/throw6a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw6a.pcx -------------------------------------------------------------------------------- /example/assets/throw6b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw6b.pcx -------------------------------------------------------------------------------- /example/assets/throw7a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw7a.pcx -------------------------------------------------------------------------------- /example/assets/throw7b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw7b.pcx -------------------------------------------------------------------------------- /example/assets/throw8a.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw8a.pcx -------------------------------------------------------------------------------- /example/assets/throw8b.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/throw8b.pcx -------------------------------------------------------------------------------- /example/assets/uiframe.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gered/ack3d/HEAD/example/assets/uiframe.pcx -------------------------------------------------------------------------------- /map_edit/m1files.dat: -------------------------------------------------------------------------------- 1 | ; Resource files for ACK3D Map Editor 2 | SPFONT.BBM 3 | FONT6X9.BBM 4 | M12D.LBM 5 | M13D.LBM 6 | M1SEL.LBM 7 | 8 |  -------------------------------------------------------------------------------- /example/assets.h: -------------------------------------------------------------------------------- 1 | #ifndef ASSETS_H_INCLUDED 2 | #define ASSETS_H_INCLUDED 3 | 4 | #include "ack3d.h" 5 | 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | 10 | extern int LineNumber; 11 | extern char LineBuffer[]; 12 | 13 | extern int MapResource; 14 | extern int PalResource; 15 | extern int ResScreenBack; 16 | extern int ResScrollBack; 17 | 18 | UCHAR* LoadBitmap(UCHAR bitmapType, char *fName); 19 | UCHAR* LoadPalette(int resource); 20 | int LoadBackDrop(ACKENG *ae); 21 | int ProcessInfoFile(ACKENG *ae); 22 | 23 | #ifdef __cplusplus 24 | }; 25 | #endif 26 | 27 | #endif 28 | 29 | -------------------------------------------------------------------------------- /mall/assets/mall.dat: -------------------------------------------------------------------------------- 1 | mall.inf 2 | mall.map 3 | mall.lbm 4 | mntback2.lbm 5 | WALL1.BBM 6 | WALL.BBM 7 | WALL2.BBM 8 | WALL3.BBM 9 | STONES.BBM 10 | STONE.BBM 11 | STONE1.BBM 12 | STONE2.BBM 13 | BRKWIN.BBM 14 | BRKWALL.BBM 15 | TILES.BBM 16 | GRNBRK.BBM 17 | PAVE1.BBM 18 | PAVE.BBM 19 | PAVE2.BBM 20 | PAVE3.BBM 21 | PAVE4.BBM 22 | PAVE5.BBM 23 | PAVE6.BBM 24 | PAVE7.BBM 25 | BRNWALL1.BBM 26 | BLWALL.BBM 27 | GRSLANT.BBM 28 | DIAMOND.BBM 29 | REDWALL.BBM 30 | REDWIN.BBM 31 | REDWIN1.BBM 32 | REDWIN2.BBM 33 | REDWIN3.BBM 34 | WALLENT.BBM 35 | CEIL1.BBM 36 | CEIL2.BBM 37 | PLANT1.BBM 38 | BUSHES.BBM 39 | SERVDESK.BBM 40 | TABLE.BBM 41 | PAVE8.BBM 42 | PAVE9.BBM 43 | PAVE10.BBM 44 | CEIL3.BBM 45 | BRNWALL2.BBM 46 | BRNWALL3.BBM 47 | PATTERN1.BBM 48 | PARKING.BBM 49 | SALE.BBM 50 | FOOD.BBM 51 | HOTDOG.BBM 52 | PARKLITE.BBM 53 | F8X8.FNT 54 |  -------------------------------------------------------------------------------- /fdemo/assets/fdemo.pal: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | !!!###%%%''')))+++---///111333555777999;;;=== 5 | 6 | ?<8 5 1 . 7 | 8 | * '#  9 | 7.)4+&1($.&"+#(!%#   10 |  =:630-)&#    0-+(%#      11 | 9933--''!!'# 7812,,&&!!710+*%#  12 | /?)9 $4 .)#7"0*$  ($   13 |    $!:*"4%. (#  +?&9"2+% 14 | ,6-'0("*#%  1 %,!(#  596252/2/,/,),)%)&"%#"   :-+6*(3'&0%$,"!) &"  752/, ) & $ ! 15 |   58;258/25,/1),.&)+#&' "$! ??? -------------------------------------------------------------------------------- /example/assets/example.pal: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | !!!###%%%''')))+++---///111333555777999;;;=== 5 | 6 | ?<8 5 1 . 7 | 8 | * '#  9 | 7.)4+&1($.&"+#(!%#   10 |  =:630-)&#    0-+(%#      11 | 9933--''!!'# 7812,,&&!!710+*%#  12 | /?)9 $4 .)#7"0*$  ($   13 |    $!:*"4%. (#  +?&9"2+% 14 | ,6-'0("*#%  1 %,!(#  596252/2/,/,),)%)&"%#"   :-+6*(3'&0%$,"!) &"  752/, ) & $ ! 15 |   58;258/25,/1),.&)+#&' "$! ??? -------------------------------------------------------------------------------- /map_edit/prologue.mac: -------------------------------------------------------------------------------- 1 | P386 2 | 3 | 4 | Macro SETUPSEGMENT 5 | 6 | SEGMENT _TEXT PARA PUBLIC 'CODE' 7 | ASSUME CS:_TEXT 8 | 9 | Endm 10 | 11 | macro PENTER STORAGE 12 | ;; 17 - Enter a procedue with storage space 13 | ;; Procedure enter, uses the 286/386 ENTER opcode 14 | push ebp 15 | mov ebp,esp 16 | IF STORAGE 17 | sub esp,STORAGE 18 | ENDIF 19 | ENDIF 20 | endm 21 | 22 | macro PLEAVE 23 | ;; 18 - Exit a procedure with stack correction. 24 | mov esp,ebp 25 | pop ebp 26 | endm 27 | 28 | macro PushCREGS 29 | ;; 19 - Save registers for C 30 | push es 31 | push ds ;The Kernel is responsible for maintaining DS 32 | push esi 33 | push edi 34 | cld 35 | endm 36 | 37 | macro PopCREGS 38 | ;; 20 - Restore registers for C 39 | pop edi 40 | pop esi 41 | pop ds ;The Kernel is responsible for maintaining DS 42 | pop es 43 | endm 44 | 45 | -------------------------------------------------------------------------------- /ack_lib/README.md: -------------------------------------------------------------------------------- 1 | # ACK-3D Library 2 | 3 | Source code for the latest version of the ACK-3D library (at least, at the time of publishing of 4 | Lary Myer's book, "Amazing 3-D Games Adventure Set" in 1995) back-ported to DOS. Windows 5 | compatibility has not been kept. A Watcom `makefile` has been added, replacing a build script for 6 | Lary's custom `MK.EXE` build tool. 7 | 8 | ## Requirements 9 | 10 | To build, you will need Watcom C++ and Borland TASM. I used Watcom C++ 10.0a and Borland TASM 4.0, 11 | but you should be able to build with newer versions (maybe even _slightly_ older versions too). 12 | 13 | ## Building 14 | 15 | Within this directory, run 16 | 17 | ``` 18 | > wmake 19 | ``` 20 | 21 | This will build using the included `makefile` using a debug build settings. 22 | 23 | To build using a release configuration: 24 | 25 | ``` 26 | > wmake target_config=release 27 | ``` 28 | 29 | In either case, you should get an output artifact `ACKLIB.LIB` on successful build. 30 | 31 | ### Compiler Settings Note 32 | 33 | Of particular note is that `/zp1` is specified for both debug and release builds. This matches 34 | Lary's original build scripts but is also a requirement as some things in the code make 35 | assumptions that might not hold true for larger alignment settings (e.g. `/zp4`). Change this 36 | at your own risk! 37 | -------------------------------------------------------------------------------- /bpic/makefile: -------------------------------------------------------------------------------- 1 | target_config = debug 2 | 3 | test_dat_file = ..\example\assets\example.dat 4 | test_out_file = pics.dtf 5 | 6 | target_name = bpic 7 | 8 | object_files = bpic.obj 9 | 10 | 11 | cc_flags_debug = /d2 /zp1 /4r /fp3 /j 12 | cc_flags_release = /d1+ /zp1 /4r /fp3 /onetx /j 13 | cc_flags = /mf $(cc_flags_$(target_config)) 14 | 15 | link_flags_debug = debug all 16 | link_flags_release = debug all 17 | link_flags = $(link_flags_$(target_config)) 18 | 19 | .NOCHECK 20 | build : $(target_name).exe 21 | 22 | .c.obj: .AUTODEPEND 23 | wcc386 $[. /zq $(cc_flags) 24 | 25 | .asm.obj: .AUTODEPEND 26 | tasm $[. /t $(asm_flags) 27 | 28 | $(target_name).lnk: $(object_files) 29 | %create $^@ 30 | %append $^@ NAME $(target_name).exe 31 | %append $^@ SYSTEM DOS4G 32 | %append $^@ OPTION QUIET 33 | %append $^@ OPTION STACK=16k 34 | @for %i in ($(object_files)) do %append $^@ FILE %i 35 | 36 | $(target_name).exe: $(object_files) $(target_name).lnk 37 | wlink $(link_flags) @$(target_name).lnk 38 | 39 | clean : .SYMBOLIC 40 | del *.obj 41 | del *.err 42 | del $(target_name).exe 43 | del $(target_name).lnk 44 | 45 | .NOCHECK 46 | run : $(target_name).exe 47 | $(target_name).exe $(test_dat_file) $(test_out_file) 48 | 49 | .NOCHECK 50 | debug : $(target_name).exe 51 | wd /swap /trap=rsi $(target_name).exe $(test_dat_file) $(test_out_file) 52 | 53 | -------------------------------------------------------------------------------- /map_edit/mapedit.h: -------------------------------------------------------------------------------- 1 | /* Header file for ACK-3D Map Editor */ 2 | 3 | #ifndef MAPEDIT_H_INCLUDED 4 | #define MAPEDIT_H_INCLUDED 5 | 6 | #define CURRENT_SQUAREX 161 7 | #define CURRENT_SQUAREY 4 8 | 9 | #define PASS_X 243 10 | #define PASS_Y 2 11 | 12 | #define SCREEN_COLOR 20 13 | 14 | #define BLACK 0 15 | #define LIGHTBLUE 64 16 | #define BLUE 69 17 | #define LIGHTMAGENTA 112 18 | #define MAGENTA 119 19 | #define RED 40 20 | #define LIGHTRED 32 21 | #define GREEN 88 22 | #define LIGHTGREEN 80 23 | #define YELLOW 120 24 | 25 | typedef struct { 26 | short x; 27 | short y; 28 | short x1; 29 | short y1; 30 | } RECT; 31 | 32 | typedef struct { 33 | short BoxX; 34 | short BoxY; 35 | char *FileName; 36 | char DoBeep; 37 | short NumButtons; 38 | RECT ButtonCoords[4]; 39 | } BOXES; 40 | 41 | #define BOX_ALREADY_1_OBJECT 0 42 | #define BOX_NEW_WARNING 1 43 | #define BOX_MODIFIED_WARNING 2 44 | #define BOX_SAVED 3 45 | #define BOX_ALREADY_START_CODE 4 46 | #define BOX_MAX_SPECIAL_CODE 5 47 | 48 | /* Prototypes */ 49 | void SetVmode(short); 50 | void SetPalette(unsigned char *); 51 | char *AddExtent(char *,char *); 52 | unsigned short inkey(void); 53 | void SetVGAmode(void); 54 | void SetTextMode(void); 55 | 56 | #endif 57 | 58 | -------------------------------------------------------------------------------- /bpic/README.md: -------------------------------------------------------------------------------- 1 | # BPIC 2 | 3 | Source code for the `BPIC` utility, which is a resource file builder/compiler for the ACK-3D 4 | engine. A Watcom `makefile` has been added, replacing a build script for Lary's custom `MK.EXE` 5 | tool. 6 | 7 | This can be used to build the `pics.dtf`-type resource files used by all the demo/example projects. 8 | All the details regarding ACK-3D resource files can be found in Appendix A of the book. 9 | 10 | Unlike the version that shipped on the book's CD, this version has been updated so that it does 11 | not assume that files are located in the current working directory. Instead, files specified by 12 | the input `.DAT` file are assumed to be located beside that file, making it possible to do things 13 | like place `BPIC.EXE` somewhere on your PATH instead of needing to copy it around to all of your 14 | project asset directories. 15 | 16 | ## Requirements 17 | 18 | To build you will need Watcom C++. I used Watcom C++ 10.0a, but you should be able to build with 19 | a newer version (maybe even a _slightly_ older version too). 20 | 21 | ## Building 22 | 23 | Within this directory, run 24 | 25 | ``` 26 | > wmake 27 | ``` 28 | 29 | This will build using the included `makefile` using a debug build settings. 30 | 31 | To build using a release configuration: 32 | 33 | ``` 34 | > wmake target_config=release 35 | ``` 36 | 37 | In either case, you should get an output artifact `BPIC.EXE` on successful build. -------------------------------------------------------------------------------- /example/makefile: -------------------------------------------------------------------------------- 1 | target_config = debug 2 | 3 | target_name = example 4 | 5 | acklib_incdir = ..\ack_lib 6 | acklib_lib = ..\ack_lib\acklib.lib 7 | 8 | object_files = & 9 | example.obj & 10 | assets.obj 11 | 12 | cc_flags_debug = /d2 /zp1 /4r /fp3 /j 13 | cc_flags_release = /d1+ /zp1 /4r /fp3 /onetx /j 14 | cc_flags = /mf /i=$(acklib_incdir) $(cc_flags_$(target_config)) 15 | 16 | link_flags_debug = debug all 17 | link_flags_release = debug all 18 | link_flags = $(link_flags_$(target_config)) 19 | 20 | asm_flags_debug = /zi 21 | asm_flags_release = /zi 22 | asm_flags = /m /ml $(asm_flags_$(target_config)) 23 | 24 | .NOCHECK 25 | build : $(target_name).exe 26 | 27 | .c.obj: .AUTODEPEND 28 | wcc386 $[. /zq $(cc_flags) 29 | 30 | .asm.obj: .AUTODEPEND 31 | tasm $[. /t $(asm_flags) 32 | 33 | $(target_name).lnk: $(object_files) 34 | %create $^@ 35 | %append $^@ NAME $(target_name).exe 36 | %append $^@ SYSTEM DOS4G 37 | %append $^@ OPTION QUIET 38 | %append $^@ OPTION STACK=16k 39 | %append $^@ LIBRARY $(acklib_lib) 40 | @for %i in ($(object_files)) do %append $^@ FILE %i 41 | 42 | $(target_name).exe: $(object_files) $(target_name).lnk 43 | wlink $(link_flags) @$(target_name).lnk 44 | 45 | clean : .SYMBOLIC 46 | del *.obj 47 | del *.err 48 | del $(target_name).exe 49 | del $(target_name).lnk 50 | 51 | .NOCHECK 52 | run : $(target_name).exe 53 | $(target_name).exe 54 | 55 | .NOCHECK 56 | debug : $(target_name).exe 57 | wd /swap /trap=rsi $(target_name).exe 58 | 59 | -------------------------------------------------------------------------------- /fdemo/makefile: -------------------------------------------------------------------------------- 1 | target_config = debug 2 | 3 | target_name = fdemo 4 | 5 | acklib_incdir = ..\ack_lib 6 | acklib_lib = ..\ack_lib\acklib.lib 7 | 8 | object_files = & 9 | fdemo.obj & 10 | modplay.obj & 11 | mouse.obj 12 | 13 | cc_flags_debug = /d2 /zp1 /4r /fp3 /j 14 | cc_flags_release = /d1+ /zp1 /4r /fp3 /onetx /j 15 | cc_flags = /mf /i=$(acklib_incdir) $(cc_flags_$(target_config)) 16 | 17 | link_flags_debug = debug all 18 | link_flags_release = debug all 19 | link_flags = $(link_flags_$(target_config)) 20 | 21 | asm_flags_debug = /zi 22 | asm_flags_release = /zi 23 | asm_flags = /m /ml $(asm_flags_$(target_config)) 24 | 25 | .NOCHECK 26 | build : $(target_name).exe 27 | 28 | .c.obj: .AUTODEPEND 29 | wcc386 $[. /zq $(cc_flags) 30 | 31 | .asm.obj: .AUTODEPEND 32 | tasm $[. /t $(asm_flags) 33 | 34 | $(target_name).lnk: $(object_files) 35 | %create $^@ 36 | %append $^@ NAME $(target_name).exe 37 | %append $^@ SYSTEM DOS4G 38 | %append $^@ OPTION QUIET 39 | %append $^@ OPTION STACK=16k 40 | %append $^@ LIBRARY $(acklib_lib) 41 | @for %i in ($(object_files)) do %append $^@ FILE %i 42 | 43 | $(target_name).exe: $(object_files) $(target_name).lnk 44 | wlink $(link_flags) @$(target_name).lnk 45 | 46 | clean : .SYMBOLIC 47 | del *.obj 48 | del *.err 49 | del $(target_name).exe 50 | del $(target_name).lnk 51 | 52 | .NOCHECK 53 | run : $(target_name).exe 54 | $(target_name).exe 55 | 56 | .NOCHECK 57 | debug : $(target_name).exe 58 | wd /swap /trap=rsi $(target_name).exe 59 | 60 | -------------------------------------------------------------------------------- /mall/makefile: -------------------------------------------------------------------------------- 1 | target_config = debug 2 | 3 | target_name = mall 4 | 5 | acklib_incdir = ..\ack_lib 6 | acklib_lib = ..\ack_lib\acklib.lib 7 | 8 | object_files = & 9 | mall.obj & 10 | modplay.obj & 11 | mouse.obj 12 | 13 | cc_flags_debug = /d2 /zp1 /4r /fp3 /j 14 | cc_flags_release = /d1+ /zp1 /4r /fp3 /onetx /j 15 | cc_flags = /mf /i=$(acklib_incdir) $(cc_flags_$(target_config)) 16 | 17 | link_flags_debug = debug all 18 | link_flags_release = debug all 19 | link_flags = $(link_flags_$(target_config)) 20 | 21 | asm_flags_debug = /zi 22 | asm_flags_release = /zi 23 | asm_flags = /m /ml $(asm_flags_$(target_config)) 24 | 25 | .NOCHECK 26 | build : $(target_name).exe 27 | 28 | .c.obj: .AUTODEPEND 29 | wcc386 $[. /zq $(cc_flags) 30 | 31 | .asm.obj: .AUTODEPEND 32 | tasm $[. /t $(asm_flags) 33 | 34 | $(target_name).lnk: $(object_files) 35 | %create $^@ 36 | %append $^@ NAME $(target_name).exe 37 | %append $^@ SYSTEM DOS4G 38 | %append $^@ OPTION QUIET 39 | %append $^@ OPTION STACK=16k 40 | %append $^@ LIBRARY $(acklib_lib) 41 | @for %i in ($(object_files)) do %append $^@ FILE %i 42 | 43 | $(target_name).exe: $(object_files) $(target_name).lnk 44 | wlink $(link_flags) @$(target_name).lnk 45 | 46 | clean : .SYMBOLIC 47 | del *.obj 48 | del *.err 49 | del $(target_name).exe 50 | del $(target_name).lnk 51 | 52 | .NOCHECK 53 | run : $(target_name).exe 54 | $(target_name).exe 55 | 56 | .NOCHECK 57 | debug : $(target_name).exe 58 | wd /swap /trap=rsi $(target_name).exe 59 | 60 | -------------------------------------------------------------------------------- /ack_lib/makefile: -------------------------------------------------------------------------------- 1 | target_config = debug 2 | 3 | target_name = acklib 4 | 5 | object_files = & 6 | ackbkgd.obj & 7 | ackdata.obj & 8 | ackdoor.obj & 9 | ackfloor.obj & 10 | ackgif.obj & 11 | ackiff.obj & 12 | ackinit.obj & 13 | ackldbmp.obj & 14 | ackobj.obj & 15 | ackover.obj & 16 | ackpcx.obj & 17 | ackpov.obj & 18 | ackray.obj & 19 | ackrtn.obj & 20 | ackrtn1.obj & 21 | ackrtn3.obj & 22 | ackrtn4.obj & 23 | ackrtn5.obj & 24 | ackutil.obj & 25 | ackview.obj & 26 | ackwrap.obj & 27 | 28 | 29 | cc_flags_debug = /d2 /zp1 /4r /fp3 /j 30 | cc_flags_release = /d1+ /zp1 /4r /fp3 /onetx /j 31 | cc_flags = /mf $(cc_flags_$(target_config)) 32 | 33 | link_flags_debug = debug all 34 | link_flags_release = debug all 35 | link_flags = $(link_flags_$(target_config)) 36 | 37 | asm_flags_debug = /zi 38 | asm_flags_release = /zi 39 | asm_flags = /m /ml $(asm_flags_$(target_config)) 40 | 41 | 42 | .NOCHECK 43 | build : $(target_name).lib 44 | 45 | 46 | .c.obj: .AUTODEPEND 47 | wcc386 $[. /zq $(cc_flags) 48 | 49 | .asm.obj: .AUTODEPEND 50 | tasm $[. /t $(asm_flags) 51 | 52 | 53 | $(target_name).lbc: $(object_files) 54 | %create $^@ 55 | @for %i in ($(object_files)) do %append $^@ +%i 56 | 57 | $(target_name).lib: $(object_files) $(target_name).lbc 58 | wlib /n /q /b $(target_name).lib @$(target_name).lbc 59 | 60 | 61 | clean : .SYMBOLIC 62 | del *.obj 63 | del *.err 64 | del $(target_name).exe 65 | del $(target_name).lib 66 | del $(target_name).lnk 67 | del $(target_name).lbc 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /example/assets/example.dat: -------------------------------------------------------------------------------- 1 | example.inf 2 | example.map 3 | example.pal 4 | stars1.pcx 5 | uiframe.pcx 6 | bars.pcx 7 | blue.pcx 8 | bluewall.pcx 9 | brkwall.pcx 10 | brkwin.pcx 11 | brnwall2.pcx 12 | ceil1.pcx 13 | ceil2.pcx 14 | chisel.pcx 15 | diag.pcx 16 | diamond.pcx 17 | fence.pcx 18 | floor1.pcx 19 | floor2.pcx 20 | g13.pcx 21 | g9.pcx 22 | green1.pcx 23 | pave.pcx 24 | redwall.pcx 25 | redwin.pcx 26 | safe.pcx 27 | scont.pcx 28 | screw.pcx 29 | sdoor1.pcx 30 | sside.pcx 31 | stone.pcx 32 | stone1.pcx 33 | stone2.pcx 34 | swall11.pcx 35 | swall12.pcx 36 | swall13.pcx 37 | swall15.pcx 38 | swall16.pcx 39 | swall17.pcx 40 | swall22.pcx 41 | wall.pcx 42 | wall1.pcx 43 | wall2.pcx 44 | wallp2.pcx 45 | danger.pcx 46 | ceillght.pcx 47 | floorlgt.pcx 48 | grey.pcx 49 | mine1.pcx 50 | mine2.pcx 51 | mine4.pcx 52 | texture3.pcx 53 | texture4.pcx 54 | bed.pcx 55 | plant1.pcx 56 | table.pcx 57 | table1.pcx 58 | can1.pcx 59 | can2.pcx 60 | can3.pcx 61 | can4.pcx 62 | cons1.pcx 63 | cons2.pcx 64 | cons3.pcx 65 | cons4.pcx 66 | fern.pcx 67 | melt1.pcx 68 | melt2.pcx 69 | melt3.pcx 70 | melt4.pcx 71 | melt5.pcx 72 | melt6.pcx 73 | melt7.pcx 74 | slime1a.pcx 75 | slime1b.pcx 76 | slime2a.pcx 77 | slime2b.pcx 78 | slime3a.pcx 79 | slime3b.pcx 80 | slime4a.pcx 81 | slime4b.pcx 82 | slime5a.pcx 83 | slime5b.pcx 84 | slime6a.pcx 85 | slime6b.pcx 86 | slime7a.pcx 87 | slime7b.pcx 88 | slime8a.pcx 89 | slime8b.pcx 90 | throw1a.pcx 91 | throw1b.pcx 92 | throw2a.pcx 93 | throw2b.pcx 94 | throw3a.pcx 95 | throw3b.pcx 96 | throw4a.pcx 97 | throw4b.pcx 98 | throw5a.pcx 99 | throw5b.pcx 100 | throw6a.pcx 101 | throw6b.pcx 102 | throw7a.pcx 103 | throw7b.pcx 104 | throw8a.pcx 105 | throw8b.pcx 106 | 107 | -------------------------------------------------------------------------------- /map_edit/makefile: -------------------------------------------------------------------------------- 1 | target_config = debug 2 | 3 | test_map_file = ..\example\assets\example.med 4 | #test_map_file = ..\fdemo\assets\fdemo.l01 5 | #test_map_file = ..\mall\assets\mall.l01 6 | 7 | target_name = mapedit 8 | 9 | mapedit_dtf = medit.dtf 10 | bpic_exe = ..\bpic\bpic.exe 11 | acklib_incdir = ..\ack_lib 12 | acklib_lib = ..\ack_lib\acklib.lib 13 | 14 | object_files = & 15 | m1.obj & 16 | m1read.obj & 17 | m1util.obj & 18 | measm.obj & 19 | mouse.obj 20 | 21 | cc_flags_debug = /d2 /zp1 /4r /fp3 /j 22 | cc_flags_release = /d1+ /zp1 /4r /fp3 /onetx /j 23 | cc_flags = /mf /i=$(acklib_incdir) $(cc_flags_$(target_config)) 24 | 25 | link_flags_debug = debug all 26 | link_flags_release = debug all 27 | link_flags = $(link_flags_$(target_config)) 28 | 29 | asm_flags_debug = /zi 30 | asm_flags_release = /zi 31 | asm_flags = /m /ml $(asm_flags_$(target_config)) 32 | 33 | .NOCHECK 34 | build : $(target_name).exe 35 | 36 | .c.obj: .AUTODEPEND 37 | wcc386 $[. /zq $(cc_flags) 38 | 39 | .asm.obj: .AUTODEPEND 40 | tasm $[. /t $(asm_flags) 41 | 42 | $(mapedit_dtf): 43 | $(bpic_exe) m1files.dat $^. 44 | 45 | $(target_name).lnk: $(object_files) 46 | %create $^@ 47 | %append $^@ NAME $(target_name).exe 48 | %append $^@ SYSTEM DOS4G 49 | %append $^@ OPTION QUIET 50 | %append $^@ OPTION STACK=16k 51 | %append $^@ LIBRARY $(acklib_lib) 52 | @for %i in ($(object_files)) do %append $^@ FILE %i 53 | 54 | $(target_name).exe: $(object_files) $(target_name).lnk $(mapedit_dtf) 55 | wlink $(link_flags) @$(target_name).lnk 56 | 57 | clean : .SYMBOLIC 58 | del *.obj 59 | del *.err 60 | del $(mapedit_dtf) 61 | del $(target_name).exe 62 | del $(target_name).lnk 63 | 64 | .NOCHECK 65 | run : $(target_name).exe 66 | $(target_name).exe $(test_map_file) 67 | 68 | .NOCHECK 69 | debug : $(target_name).exe 70 | wd /swap /trap=rsi $(target_name).exe $(test_map_file) 71 | 72 | -------------------------------------------------------------------------------- /mall/assets/mall.l01: -------------------------------------------------------------------------------- 1 | ; Map Editor File for Mall Demo 2 | 3 | Walls: 4 | Files: 5 | 1 ,WALL1.BBM 6 | 2 ,WALL.BBM 7 | 3 ,WALL2.BBM 8 | 4 ,WALL3.BBM 9 | 5 ,STONES.BBM 10 | 6 ,STONE.BBM 11 | 7 ,STONE1.BBM 12 | 8 ,STONE2.BBM 13 | 9 ,BRKWIN.BBM 14 | 10,BRKWALL.BBM 15 | 11,TILES.BBM 16 | 12,GRNBRK.BBM 17 | 13,PAVE1.BBM 18 | 14,PAVE.BBM 19 | 15,PAVE2.BBM 20 | 16,PAVE3.BBM 21 | 17,PAVE4.BBM 22 | 18,PAVE5.BBM 23 | 19,PAVE6.BBM 24 | 20,PAVE7.BBM 25 | 21,BRNWALL1.BBM 26 | 22,BLWALL.BBM 27 | 23,GRSLANT.BBM 28 | 24,DIAMOND.BBM 29 | 25,REDWALL.BBM 30 | 26,REDWIN.BBM 31 | 27,REDWIN1.BBM 32 | 28,REDWIN2.BBM 33 | 29,REDWIN3.BBM 34 | 30,WALLENT.BBM 35 | 31,CEIL1.BBM 36 | 32,CEIL2.BBM 37 | 33,PAVE8.BBM 38 | 34,PAVE9.BBM 39 | 35,PAVE10.BBM 40 | 36,CEIL3.BBM 41 | 37,BRNWALL2.BBM 42 | 38,BRNWALL3.BBM 43 | 39,PATTERN1.BBM 44 | 40,FOOD.BBM 45 | 41,HOTDOG.BBM 46 | EndWalls: 47 | 48 | Objects: 49 | Files: 50 | 1,PLANT1.BBM 51 | 2,BUSHES.BBM 52 | 3,SERVDESK.BBM 53 | 4,TABLE.BBM 54 | 5,PARKING.BBM 55 | 6,SALE.BBM 56 | 7,PARKLITE.BBM 57 | EndFiles: 58 | 59 | Number: 1 60 | Bitmaps: 1 61 | 62 | Number: 2 63 | Bitmaps: 1 64 | 65 | Number: 3 66 | Bitmaps: 1 67 | 68 | Number: 4 69 | Bitmaps: 1 70 | 71 | Number: 5 72 | Bitmaps: 1 73 | 74 | Number: 6 75 | Bitmaps: 1 76 | 77 | Number: 7 78 | Bitmaps: 1 79 | 80 | Number: 8 81 | Bitmaps: 2 82 | 83 | Number: 9 84 | Bitmaps: 2 85 | 86 | Number: 10 87 | Bitmaps: 2 88 | 89 | Number: 11 90 | Bitmaps: 2 91 | 92 | Number: 12 93 | Bitmaps: 2 94 | 95 | Number: 13 96 | Bitmaps: 3 97 | 98 | Number: 14 99 | Bitmaps: 3 100 | 101 | Number: 15 102 | Bitmaps: 3 103 | 104 | Number: 16 105 | Bitmaps: 3 106 | 107 | Number: 17 108 | Bitmaps: 4 109 | 110 | Number: 18 111 | Bitmaps: 4 112 | 113 | Number: 19 114 | Bitmaps: 4 115 | 116 | Number: 20 117 | Bitmaps: 4 118 | 119 | Number: 21 120 | Bitmaps: 5 121 | 122 | Number: 22 123 | Bitmaps: 6 124 | 125 | Number: 23 126 | Bitmaps: 7 127 | 128 | Number: 24 129 | Bitmaps: 7 130 | 131 | EndObjects: 132 | 133 | MapFile: mall.map 134 | 135 | 136 |  -------------------------------------------------------------------------------- /ack_lib/ACKRTN.INC: -------------------------------------------------------------------------------- 1 | 2 | ;; Equates for SLICE struct 3 | sabMap equ 0 4 | samPtr equ 4 5 | sabNumber equ 8 6 | sabColumn equ 10 7 | saDist equ 12 8 | samPos equ 14 9 | saType equ 16 10 | saFnc equ 17 11 | saActive equ 21 12 | saPrev equ 22 13 | saNext equ 26 14 | saSize equ 30 ;size of SLICE structure 15 | 16 | ; Equates for upper byte of walls 17 | WALL_TYPE_UPPER equ 0200h 18 | WALL_TYPE_MULTI equ 0400h 19 | WALL_UPPER_MULTI equ 0600h 20 | WALL_TYPE_TRANS equ 0800h 21 | DOOR_TYPE_SECRET equ 8000h 22 | DOOR_LOCKED equ 4000h 23 | DOOR_TYPE_SLIDE equ 2000h 24 | DOOR_TYPE_SPLIT equ 1000h 25 | DOOR_WALL equ 3000h 26 | 27 | ; Equates for LightFlag 28 | SHADING_OFF equ 0 29 | SHADING_ON equ 1 30 | 31 | 32 | ST_WALL equ 1 33 | ST_OBJECT equ 2 34 | 35 | DOOR_XCODE equ 60 36 | DOOR_YCODE equ 62 37 | 38 | RES_LOW equ 1 39 | 40 | ;; Equates for SCOL struct 41 | Vid equ 0 42 | Wall equ 4 43 | Pal equ 8 44 | dst equ 12 45 | wht equ 14 46 | multi equ 16 47 | topht equ 18 48 | botht equ 20 49 | savwht equ 22 50 | mulcnt equ 24 51 | savVid equ 26 52 | bNum equ 30 53 | scLen equ 32 ; length of structure 54 | 55 | ; Equates for SysFlag 56 | SYS_SOLID_BACK equ 8000h ; On if solid color bkgd vs picture 57 | SYS_SOLID_FLOOR equ 4000h ; On if solid vs texture floor 58 | SYS_SOLID_CEIL equ 2000h ; On if solid vs texture ceiling 59 | SYS_NO_WALLS equ 1000h ; On if walls are NOT to display 60 | 61 | Color equ ebp-4 62 | retval equ ebp-6 63 | MapPosn equ ebp-8 64 | xBeg equ ebp-10 65 | ;xPos equ ebp-14 66 | ;xNext equ ebp-18 67 | ;yPos equ ebp-22 68 | ;yNext equ ebp-26 69 | xd equ ebp-30 70 | yd equ ebp-34 71 | yTemp equ ebp-38 72 | sy equ ebp-42 73 | sx equ ebp-46 74 | 75 | INT_ANGLE_32 equ 160 76 | INT_ANGLE_90 equ 450 77 | INT_ANGLE_135 equ 675 78 | INT_ANGLE_180 equ 900 79 | INT_ANGLE_225 equ 1125 80 | INT_ANGLE_270 equ 1350 81 | INT_ANGLE_360 equ 1800 82 | 83 | -------------------------------------------------------------------------------- /fdemo/assets/fdemo.dat: -------------------------------------------------------------------------------- 1 | fdemo.inf 2 | fdemo.map 3 | wall.bbm 4 | stone.bbm 5 | wall3.bbm 6 | bldg.bbm 7 | wall3.bbm 8 | wall3.bbm 9 | wall3.bbm 10 | mine1.bbm 11 | mine2.bbm 12 | bricks2a.bbm 13 | bricks2b.bbm 14 | bricks2c.bbm 15 | bricks2d.bbm 16 | bricks2e.bbm 17 | bricks2f.bbm 18 | stone1.bbm 19 | stone3.bbm 20 | texture2.bbm 21 | texture3.bbm 22 | brick-x.bbm 23 | mine3.bbm 24 | bricks2.bbm 25 | mine4.bbm 26 | stone4.bbm 27 | wall3.bbm 28 | wall3.bbm 29 | wall3.bbm 30 | floor.bbm 31 | floor1.bbm 32 | floor2.bbm 33 | kit1.lbm 34 | mntback2.lbm 35 | ball1.bbm 36 | ball2.bbm 37 | ball3.bbm 38 | ball4.bbm 39 | ball5.bbm 40 | slime1a.bbm 41 | slime1b.bbm 42 | melt1.bbm 43 | melt2.bbm 44 | melt3.bbm 45 | melt4.bbm 46 | melt5.bbm 47 | melt6.bbm 48 | melt7.bbm 49 | slime2a.bbm 50 | slime2b.bbm 51 | slime3a.bbm 52 | slime3b.bbm 53 | slime4a.bbm 54 | slime4b.bbm 55 | slime5a.bbm 56 | slime5b.bbm 57 | slime6a.bbm 58 | slime6b.bbm 59 | slime7a.bbm 60 | slime7b.bbm 61 | slime8a.bbm 62 | slime8b.bbm 63 | gwall1.bbm 64 | gwall2.bbm 65 | gwall3.bbm 66 | gwall4.bbm 67 | gwall5.bbm 68 | floor3.bbm 69 | stone5.bbm 70 | demo.bbm 71 | throw1a.bbm 72 | throw1b.bbm 73 | throw2a.bbm 74 | throw2b.bbm 75 | throw3a.bbm 76 | throw3b.bbm 77 | throw4a.bbm 78 | throw4b.bbm 79 | throw5a.bbm 80 | throw5b.bbm 81 | throw6a.bbm 82 | throw6b.bbm 83 | throw7a.bbm 84 | throw7b.bbm 85 | throw8a.bbm 86 | throw8b.bbm 87 | red.bbm 88 | grey.bbm 89 | texture4.bbm 90 | blue.bbm 91 | yellow.bbm 92 | green1.bbm 93 | bluewall.bbm 94 | greywall.bbm 95 | grnwall.bbm 96 | brnwall.bbm 97 | ceil1.bbm 98 | ceil2.bbm 99 | test.gif 100 | door.bbm 101 | table.bbm 102 | table1.bbm 103 | can.bbm 104 | mach1.bbm 105 | mach2.bbm 106 | mach3.bbm 107 | mach4.bbm 108 | mach5.bbm 109 | mach6.bbm 110 | pict.bbm 111 | pict2.bbm 112 | wallp.bbm 113 | floor4.bbm 114 | floor5.bbm 115 | floor6.bbm 116 | wallp1.bbm 117 | wallp2.bbm 118 | plant1.bbm 119 | table.bbm 120 | slsh1.bbm 121 | slsh2.bbm 122 | slsh3.bbm 123 | fb1.bbm 124 | fb2.bbm 125 | fb3.bbm 126 | fb4.bbm 127 | fb5.bbm 128 | fb6.bbm 129 | rock.bbm 130 | dev1.bbm 131 | dev2.bbm 132 | dev3.bbm 133 | dev4.bbm 134 | dev5.bbm 135 | devemp.bbm 136 | hand1.bbm 137 | hand2.bbm 138 | wall3p.bbm 139 | fence.bbm 140 | bushes.bbm 141 | gpanel.bbm 142 | gpanel1.bbm 143 | icewall.bbm 144 | icewall1.bbm 145 | apple1.bbm 146 | apple2.bbm 147 | apple3.bbm 148 | apple4.bbm 149 | 150 |  -------------------------------------------------------------------------------- /map_edit/measm.asm: -------------------------------------------------------------------------------- 1 | 2 | IDEAL 3 | JUMPS 4 | include "prologue.mac" 5 | P386 ; 386 specific opcodes and shit allowed. 6 | P387 ; Allow 386 processor 7 | 8 | model flat 9 | 10 | codeseg 11 | 12 | PUBLIC SetPalette2_ 13 | PUBLIC SetVGAmode_ 14 | PUBLIC SetTextMode_ 15 | PUBLIC inkey_ 16 | PUBLIC PutHex_ 17 | 18 | ;============================================================================== 19 | ; void SetPalette2(unsigned char *PalBuf,short count); 20 | ;============================================================================== 21 | 22 | Proc SetPalette2_ near 23 | push esi 24 | 25 | mov esi,eax 26 | mov cx,dx 27 | mov bx,0 28 | cld 29 | mov dx,3C8H 30 | sp210: 31 | mov al,bl 32 | out dx,al 33 | inc dx 34 | lodsb 35 | out dx,al 36 | lodsb 37 | out dx,al 38 | lodsb 39 | out dx,al 40 | dec dx 41 | inc bx 42 | loop sp210 43 | 44 | pop esi 45 | ret 46 | endp 47 | 48 | 49 | ;============================================================================== 50 | ; void SetVGAmode(void); 51 | ;============================================================================== 52 | Proc SetVGAmode_ near 53 | push ebp 54 | mov ax,13h 55 | int 10h ; Set 320x200x256 56 | pop ebp 57 | ret 58 | endp 59 | 60 | ;============================================================================== 61 | ; 62 | ;============================================================================== 63 | Proc SetTextMode_ near 64 | push ebp 65 | mov ax,3 66 | int 10h 67 | pop ebp 68 | ret 69 | endp 70 | 71 | ;============================================================================== 72 | ; 73 | ;============================================================================== 74 | Proc inkey_ near 75 | xor eax,eax 76 | mov ah,1 ;see if key available 77 | int 16h 78 | jz ink080 ;nope 79 | xor ax,ax 80 | int 16h 81 | jmp short ink090 82 | 83 | ink080: 84 | xor ax,ax 85 | ink090: 86 | ret 87 | endp 88 | 89 | ;============================================================================== 90 | ; 91 | ;============================================================================== 92 | Proc HexOut_ near 93 | and al,15 94 | cmp al,10 95 | jb short hex010 96 | add al,7 97 | 98 | hex010: 99 | add al,'0' 100 | stosb 101 | ret 102 | endp 103 | 104 | ;============================================================================== 105 | ; void PutHex(char *buf,UINT mCode); 106 | ;============================================================================== 107 | Proc PutHex_ near 108 | push edi 109 | mov edi,eax 110 | mov eax,edx 111 | shr al,4 112 | call HexOut_ 113 | mov eax,edx 114 | call HexOut_ 115 | xor al,al 116 | stosb 117 | pop edi 118 | ret 119 | endp 120 | 121 | end 122 | 123 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ACK-3D for DOS/Watcom 2 | 3 | This repository contains fixed up code and demo projects/assets for the ACK-3D engine that 4 | was included in the book, "Amazing 3-D Games Adventure Set" by Lary Myers, published in 1995. 5 | 6 | The CD included with that book contained multiple versions of the ACK-3D engine, two of which were 7 | for DOS (one for Watcom C++ 9.5 and the other Borland C++ 4.0/4.5) and another copy for Windows 8 | which was also the latest version of the ACK-3D engine at that time. The two DOS versions do not 9 | build out of the box without issues (crash bugs, etc). Additionally, the code for the DOS version 10 | of the map editor does not build as-is. 11 | 12 | In this repository, I have taken the Windows version included on the book's CD and back-ported it 13 | to DOS using Watcom C++ 10.0a. I have also fixed build issues with the DOS map editor and cleaned 14 | up the makefiles and build scripts for all included tools and projects. Lary used his own custom 15 | `MK.EXE` tool which kind of did stuff similar to a makefile, but it was his own custom tool that 16 | was limited. I have not really left Windows compatibility as that was not a goal of mine. Having 17 | said that, I don't think it would be super difficult to add that back if someone desired it. 18 | 19 | Some minor bugs and other improvements have been made, but nothing major. Many of the existing bugs 20 | that were present in ACK-3D remain (e.g. secret doors render strangely or not at all in many cases, 21 | and multi-height walls still can be seen through ceilings, etc.). I may try to fix some of these 22 | things in the future. 23 | 24 | Finally, I have included a somewhat simpler example project that has been thoroughly commented. 25 | This project I hope serves to demonstrate what Lary covered in chapter's 11 and 14 of the book, 26 | but instead focused on DOS only and without going overboard with extra things like the FDEMO 27 | and MALL projects both did. 28 | 29 | Also, I wrote two posts about this whole adventure [here](http://blarg.ca/amazing-3-d-games-adventure-set/) 30 | and [here](http://blarg.ca/rebuilding-ack-3d-for-dos/) if anyone is interested. 31 | 32 | ## Repository Layout 33 | 34 | ### `/ack_lib` 35 | 36 | The core ACK-3D library, based on the Windows version included on the book's CD. 37 | 38 | ### `/bpic` 39 | 40 | Source for the `BPIC` utility discussed in the book in Appendix A, used for constructing 41 | resource files. 42 | 43 | ### `/map_edit` 44 | 45 | Source and data files for the DOS version of the map editor. Unlike the Windows version 46 | "ACKEDIT" (not included in this repository), this does not work with resource files directly and 47 | so is not _quite_ as convenient to work with. 48 | 49 | ### `/fdemo` 50 | 51 | Source and assets for the "FDEMO" project discussed briefly in the book in Appendix C. 52 | 53 | ### `/mall` 54 | 55 | Source and assets for the "MALL" project also discussed briefly in the book in Appendix C. This 56 | project is very, very similar to the "FDEMO" project and really only differs by assets used. 57 | 58 | ### `/example` 59 | 60 | An example project I created from scratch (but using assets from the Station Escape, FDEMO and 61 | MALL projects from the book's CD). 62 | -------------------------------------------------------------------------------- /fdemo/README.md: -------------------------------------------------------------------------------- 1 | # FDEMO 2 | 3 | ![FDEMO1](https://github.com/gered/ack3d/raw/master/scrnshot/fdemo1.gif "FDEMO1") 4 | ![FDEMO2](https://github.com/gered/ack3d/raw/master/scrnshot/fdemo2.gif "FDEMO2") 5 | 6 | Source code and assets for the FDEMO project contained on the CD that was included on the book 7 | "Amazing 3-D Games Adventure Set" by Lary Myers, published in 1995. The source code has been 8 | fixed up a little bit. A Watcom `makefile` has been added, replacing a build script for Lary's 9 | custom `MK.EXE` build tool. 10 | 11 | ## Requirements 12 | 13 | To build you will need Watcom C++ and Borland TASM. I used Watcom C++ 10.0a and Borland TASM 4.0, 14 | but you should be able to build with newer versions (maybe even _slightly_ older versions too). 15 | 16 | You must build `ACKLIB.LIB` prior to building this project. Please check the `/ack_lib` directory 17 | at the root of this repository first. 18 | 19 | To hear the background music you will need a Sound Blaster compatible sound card. This project is 20 | hard coded to use address 220h, IRQ 5, DMA 1. However you can adjust these settings in the 21 | `StartBGmusic` function found in `fdemo.c`. 22 | 23 | ## Building 24 | 25 | Within this directory, run 26 | 27 | ``` 28 | > wmake 29 | ``` 30 | 31 | This will build using the included `makefile` using a debug build settings. 32 | 33 | To build using a release configuration: 34 | 35 | ``` 36 | > wmake target_config=release 37 | ``` 38 | 39 | In either case, you should get an output artifact `FDEMO.EXE` on successful build. 40 | 41 | ## Editing the Map 42 | 43 | You must build the DOS map editor. Please check the `/map_edit` directory at the root of this 44 | repository first. 45 | 46 | Once you have a working DOS map editor, run: 47 | 48 | ``` 49 | > \path\to\mapedit.exe \path\to\fdemo\assets\fdemo.l01 50 | ``` 51 | 52 | To try out your map alterations you will need to rebuild the `pics.dtf` resource file. 53 | 54 | To add/remove bitmaps you will need to edit the `fdemo.l01` file for the map editor. However, 55 | you **ALSO** need to modify the `fdemo.dat` and `fdemo.inf` files to successfully rebuild the 56 | `pics.dtf` resource file. See Appendix A and the last section of Chapter 15 in the book for more 57 | information on ACK-3D resource files and using the DOS map editor. Please make sure you are well 58 | familiar with these chapters, as getting all these files exactly right can be quite tricky! 59 | 60 | ## Rebuilding `pics.dtf` 61 | 62 | You must build the `BPIC` tool. Please check the `/bpic` directory at the root of this repository 63 | first. 64 | 65 | If you wish to make changes to the assets used by this project (bitmaps and/or map), make whatever 66 | changes you like to the `fdemo.dat` file (which just lists the files to be included in the 67 | resource file) and `fdemo.inf` file. Then to build a new `pics.dtf` run: 68 | 69 | ``` 70 | > \path\to\bpic.exe \path\to\fdemo\assets\fdemo.dat \path\to\fdemo\pics.dtf 71 | ``` 72 | 73 | See Appendix A and the last section of Chapter 15 in the book for more information on ACK-3D 74 | resource files and using the DOS map editor. Please make sure you are well familiar with these 75 | chapters, as getting all these files exactly right can be quite tricky! 76 | -------------------------------------------------------------------------------- /mall/README.md: -------------------------------------------------------------------------------- 1 | # MALL 2 | 3 | ![MALL](https://github.com/gered/ack3d/raw/master/scrnshot/mall.gif "MALL") 4 | 5 | Source code and assets for the MALL project contained on the CD that was included on the book 6 | "Amazing 3-D Games Adventure Set" by Lary Myers, published in 1995. The source code has been 7 | fixed up a little bit. A Watcom `makefile` has been added, replacing a build script for Lary's 8 | custom `MK.EXE` build tool. 9 | 10 | ## Requirements 11 | 12 | To build you will need Watcom C++ and Borland TASM. I used Watcom C++ 10.0a and Borland TASM 4.0, 13 | but you should be able to build with newer versions (maybe even _slightly_ older versions too). 14 | 15 | You must build `ACKLIB.LIB` prior to building this project. Please check the `/ack_lib` directory 16 | at the root of this repository first. 17 | 18 | To hear the background music you will need a Sound Blaster compatible sound card. This project 19 | attempts to read a config file `ack3d.cfg` to load sound card configuration, but such a file is 20 | not included in this repository. Either add this file or adjust the default settings found in 21 | `mall.c` within the `ReadConfigFile` function. But default, address 220h, IRQ 5, DMA 1 is used. 22 | 23 | ## Building 24 | 25 | Within this directory, run 26 | 27 | ``` 28 | > wmake 29 | ``` 30 | 31 | This will build using the included `makefile` using a debug build settings. 32 | 33 | To build using a release configuration: 34 | 35 | ``` 36 | > wmake target_config=release 37 | ``` 38 | 39 | In either case, you should get an output artifact `MALL.EXE` on successful build. 40 | 41 | ## Editing the Map 42 | 43 | You must build the DOS map editor. Please check the `/map_edit` directory at the root of this 44 | repository first. 45 | 46 | Once you have a working DOS map editor, run: 47 | 48 | ``` 49 | > \path\to\mapedit.exe \path\to\mall\assets\mall.l01 50 | ``` 51 | 52 | To try out your map alterations you will need to rebuild the `pics.dtf` resource file. 53 | 54 | To add/remove bitmaps you will need to edit the `mall.l01` file for the map editor. However, 55 | you **ALSO** need to modify the `mall.dat` and `mall.inf` files to successfully rebuild the 56 | `pics.dtf` resource file. See Appendix A and the last section of Chapter 15 in the book for more 57 | information on ACK-3D resource files and using the DOS map editor. Please make sure you are well 58 | familiar with these chapters, as getting all these files exactly right can be quite tricky! 59 | 60 | ## Rebuilding `pics.dtf` 61 | 62 | You must build the `BPIC` tool. Please check the `/bpic` directory at the root of this repository 63 | first. 64 | 65 | If you wish to make changes to the assets used by this project (bitmaps and/or map), make whatever 66 | changes you like to the `mall.dat` file (which just lists the files to be included in the 67 | resource file) and `mall.inf` file. Then to build a new `pics.dtf` run: 68 | 69 | ``` 70 | > \path\to\bpic.exe \path\to\mall\assets\mall.dat \path\to\mall\pics.dtf 71 | ``` 72 | 73 | See Appendix A and the last section of Chapter 15 in the book for more information on ACK-3D 74 | resource files and using the DOS map editor. Please make sure you are well familiar with these 75 | chapters, as getting all these files exactly right can be quite tricky! 76 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | # Example ACK-3D Application 2 | 3 | ![EXAMPLE1](https://github.com/gered/ack3d/raw/master/scrnshot/example1.gif "EXAMPLE1") 4 | ![EXAMPLE2](https://github.com/gered/ack3d/raw/master/scrnshot/example2.gif "EXAMPLE2") 5 | 6 | Source files and assets for a simple example project utilizing the ACK-3D engine. Uses art assets 7 | found on the CD included with the book "Amazing 3-D Games Adventure Set" by Lary Myers, published 8 | in 1995. 9 | 10 | The purpose of this project is to provide a very simple application that helps illustrate things 11 | discussed in detail in chapters 11 and 14 of the book. Chapter 14 in particular goes through the 12 | process of creating an ACK-3D application from scratch, but it is Windows-specific. This project 13 | aims to be somewhat of a DOS-equivalent of the project presented in that chapter. 14 | 15 | ## Requirements 16 | 17 | To build you will need Watcom C++. I used Watcom C++ 10.0a, but you should be able to build with 18 | a newer version (maybe even a _slightly_ older version too). 19 | 20 | You must build `ACKLIB.LIB` prior to building this project. Please check the `/ack_lib` directory 21 | at the root of this repository first. 22 | 23 | ## Building 24 | 25 | Within this directory, run 26 | 27 | ``` 28 | > wmake 29 | ``` 30 | 31 | This will build using the included `makefile` using a debug build settings. 32 | 33 | To build using a release configuration: 34 | 35 | ``` 36 | > wmake target_config=release 37 | ``` 38 | 39 | In either case, you should get an output artifact `EXAMPLE.EXE` on successful build. 40 | 41 | ## Editing the Map 42 | 43 | You must build the DOS map editor. Please check the `/map_edit` directory at the root of this 44 | repository first. 45 | 46 | Once you have a working DOS map editor, run: 47 | 48 | ``` 49 | > \path\to\mapedit.exe \path\to\example\assets\example.med 50 | ``` 51 | 52 | To try out your map alterations you will need to rebuild the `pics.dtf` resource file. 53 | 54 | To add/remove bitmaps you will need to edit the `example.med` file for the map editor. However, 55 | you **ALSO** need to modify the `example.dat` and `example.inf` files to successfully rebuild the 56 | `pics.dtf` resource file. See Appendix A and the last section of Chapter 15 in the book for more 57 | information on ACK-3D resource files and using the DOS map editor. Please make sure you are well 58 | familiar with these chapters, as getting all these files exactly right can be quite tricky! 59 | 60 | ## Rebuilding `pics.dtf` 61 | 62 | You must build the `BPIC` tool. Please check the `/bpic` directory at the root of this repository 63 | first. 64 | 65 | If you wish to make changes to the assets used by this project (bitmaps and/or map), make whatever 66 | changes you like to the `example.dat` file (which just lists the files to be included in the 67 | resource file) and `example.inf` file. Then to build a new `pics.dtf` run: 68 | 69 | ``` 70 | > \path\to\bpic.exe \path\to\example\assets\example.dat \path\to\example\pics.dtf 71 | ``` 72 | 73 | See Appendix A and the last section of Chapter 15 in the book for more information on ACK-3D 74 | resource files and using the DOS map editor. Please make sure you are well familiar with these 75 | chapters, as getting all these files exactly right can be quite tricky! 76 | -------------------------------------------------------------------------------- /ack_lib/ACKENG.H: -------------------------------------------------------------------------------- 1 | // ACKENG.H header file for supporting raycasting routines. 2 | // This file contains the main data structure named SLICE and definitions 3 | // required to support the raycasting routines. The data structures defined 4 | // in this file are not to be used directly by the programmer who is using 5 | // the functions in the ACK-3D library. To locate data structures for the 6 | // ACK-3D interface, see the file ACK3D.H. 7 | 8 | #ifndef ACKENG_H_INCLUDED 9 | #define ACKENG_H_INCLUDED 10 | 11 | #ifdef __cplusplus 12 | extern "C" { 13 | #endif 14 | 15 | #define TRANS_WALLS 0 16 | #define FLOOR_ACTIVE 1 17 | #define USE_XMS 0 // Set to 0 if XMS not desired 18 | 19 | #define MAX_RBA 500 // Number of rba's in resource header 20 | 21 | // Fixed point constants used to perform fixed point calculations. 22 | #define FP_SHIFT 16 23 | #define FP_MULT 65536 24 | #define FP_HALF 32768 25 | 26 | #define VIEW_WIDTH 320 // The number of columns in a view (screen) 27 | #define MAX_DISTANCE 2048 // The max distance from the POV to a wall slice 28 | 29 | #define TYPE_WALL 0 30 | #define TYPE_OBJECT 1 31 | #define TYPE_PALETTE 2 32 | 33 | #define MAX_HEIGHT 960 // Maximum height of a wall 34 | #define MIN_HEIGHT 8 // Minimum height of a wall 35 | 36 | #define MAX_UPDOWN 30 // Max up or down spots for each level 37 | 38 | #define MAP_STARTCODE 0xFC // Force player to this square 39 | #define MAP_UPCODE 0xFD // Go up to previous level 40 | #define MAP_DOWNCODE 0xFE // Go down to next level 41 | #define MAP_GOALCODE 0xFF // Finish line! 42 | 43 | #define ST_WALL 1 44 | #define ST_OBJECT 2 45 | 46 | #define COLS_PER_BYTE 1 // Use 1 for normal mode 13h, 4 for modeX 47 | #define BYTES_PER_ROW 320 // Use 320 for normal mode 13h, 80 for modeX 48 | #define DWORDS_PER_ROW (BYTES_PER_ROW / 4) 49 | #define SCREEN_SIZE 64000 50 | 51 | // Holds information for the current wall section found during the raycasting process. 52 | // During the raycasting process, ACK-3D casts out rays, looks for a wall at a 53 | // given screen column position, and if a wall (slice) is found, information about 54 | // the slice is stored in this structure. 55 | 56 | typedef struct _slicer { 57 | UCHAR **bMap; // Pointer to wall bitmap found while ray casting 58 | UCHAR *mPtr; // Grid pointer to reference multi-height wall data 59 | short bNumber; // Bitmap number of the wall found 60 | unsigned short bColumn; // Screen column location of the found slice 61 | short Distance; // Distance from the POV to the slice 62 | short mPos; // Position of the slice in the associated map 63 | unsigned char Type; // Indicates if the slice is a wall or object 64 | void (*Fnc)(void); // Pointer to a function to draw wall or object 65 | unsigned char Active; // Indicates last slice in listif a wall or object is displayable or not 66 | // The next two pointers are used if the current slice 67 | // is part of a transparent wall 68 | struct _slicer *Prev; // References the wall slice in front of current slice 69 | struct _slicer *Next; // References the wall slice behind the current slice 70 | } SLICE; 71 | 72 | #ifdef __cplusplus 73 | }; 74 | #endif 75 | 76 | #endif 77 | 78 | -------------------------------------------------------------------------------- /ack_lib/ACKDATA.C: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "ack3d.h" 4 | #include "ackeng.h" 5 | 6 | long scPtr; 7 | UCHAR *bmWall = NULL; 8 | 9 | long bmDistance; 10 | long BackDropRows; 11 | USHORT ScreenOffset; 12 | 13 | long xPglobal; 14 | long yPglobal; 15 | long xBegGlobal; 16 | long yBegGlobal; 17 | 18 | ACKENG *aeGlobal = NULL; 19 | USHORT *xGridGlobal = NULL; 20 | USHORT *yGridGlobal = NULL; 21 | long xPglobalHI; 22 | long yPglobalHI; 23 | ULONG *rbaTable = NULL; 24 | int rsHandle; 25 | 26 | long LastX1; 27 | long LastY1; 28 | long iLastX; 29 | long iLastY; 30 | 31 | long x_xPos; 32 | long x_yPos; 33 | long x_xNext; 34 | long x_yNext; 35 | long y_xPos; 36 | long y_yPos; 37 | long y_xNext; 38 | long y_yNext; 39 | 40 | short MaxDistance; 41 | short LightFlag; 42 | short ErrorCode; 43 | 44 | long xMapPosn; 45 | long yMapPosn; 46 | 47 | USHORT *Grid = NULL; 48 | USHORT *ObjGrid = NULL; 49 | SLICE Slice[VIEW_WIDTH]; 50 | SLICE *sPtr = NULL; 51 | 52 | short TotalSpecial; 53 | 54 | short DistanceTable[MAX_DISTANCE + 1]; 55 | long *AdjustTable = NULL; 56 | 57 | short xSecretmPos; 58 | short xSecretmPos1; 59 | short xSecretColumn; 60 | 61 | short ySecretmPos; 62 | short ySecretmPos1; 63 | short ySecretColumn; 64 | 65 | short TotalSecret; 66 | short ViewColumn; 67 | 68 | long *SinTable = NULL; 69 | long *CosTable = NULL; 70 | 71 | long *LongTanTable = NULL; 72 | long *LongInvTanTable = NULL; 73 | long InvCosTable[INT_ANGLE_360]; 74 | long InvSinTable[INT_ANGLE_360]; 75 | long *LongCosTable = NULL; 76 | long *ViewCosTable = NULL; 77 | 78 | long *xNextTable = NULL; 79 | long *yNextTable = NULL; 80 | 81 | short LastFloorAngle = -1; 82 | short LastFloorX; 83 | short LastFloorY; 84 | short LastMapPosn; 85 | short LastObjectHit; 86 | short TotalObjects; 87 | short FoundObjectCount; 88 | UCHAR ObjectsSeen[MAX_OBJECTS + 1]; 89 | short MoveObjectCount; 90 | UCHAR MoveObjectList[MAX_OBJECTS + 1]; 91 | UCHAR ObjNumber[MAX_OBJECTS + 1]; 92 | USHORT ObjRelDist[MAX_OBJECTS + 1]; 93 | short ObjColumn[MAX_OBJECTS + 1]; 94 | short ObjAngle[MAX_OBJECTS + 1]; 95 | short DirAngle[] = 96 | {INT_ANGLE_270, INT_ANGLE_315, 0, 97 | INT_ANGLE_45, INT_ANGLE_90, 98 | INT_ANGLE_135, INT_ANGLE_180, 99 | INT_ANGLE_225}; 100 | 101 | UCHAR WorkPalette[768]; 102 | UCHAR *BackArray[INT_ANGLE_360]; 103 | short Resolution; 104 | 105 | long Flooru; 106 | long Floorv; 107 | long Floordu; 108 | long Floordv; 109 | long Floorkx; 110 | long Floorky; 111 | long Floorku; 112 | long Floorkv; 113 | long Floorkdu; 114 | long Floorkdv; 115 | UCHAR *Floorbm = NULL; 116 | UCHAR *Floorscr = NULL; 117 | UCHAR *FloorscrTop = NULL; 118 | UCHAR *Floorptr2 = NULL; 119 | UCHAR *Floors1 = NULL; 120 | UCHAR *Floors2 = NULL; 121 | long Floorht; 122 | long Floorwt; 123 | short Floorvht; 124 | short Flooreht; 125 | long FloorLastbNum; 126 | long FloorLastbm; 127 | 128 | short ViewHeight = 31; 129 | short CeilingHeight = 31; 130 | short LastWallHeight; 131 | short PlayerAngle; 132 | short ViewAngle; 133 | USHORT SysFlags; 134 | UCHAR **WallbMaps = NULL; 135 | UCHAR *VidTop = NULL; 136 | UCHAR *VidBottom = NULL; 137 | short BotRowTable[320]; 138 | USHORT FloorMap[4096]; 139 | USHORT CeilMap[4096]; 140 | UCHAR HitMap[4096]; 141 | 142 | UINT *VidSeg = (UINT*)0xA0000; 143 | char *scantables[96]; 144 | volatile UCHAR AckKeys[128]; // Buffer for keystrokes 145 | volatile long AckTimerCounter; 146 | volatile short AckTmCount=0; 147 | volatile short AckTmDelay=0; 148 | volatile UCHAR KeyPressed; 149 | 150 | // **** End of Data **** 151 | 152 | -------------------------------------------------------------------------------- /ack_lib/IFF.H: -------------------------------------------------------------------------------- 1 | #ifndef IFF_H_INCLUDED 2 | #define IFF_H_INCLUDED 3 | 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | #ifndef NULL 9 | #define NULL 0 10 | #endif 11 | 12 | #ifndef FALSE 13 | #define FALSE 0 14 | #define TRUE 1 15 | #endif 16 | 17 | #define LONG unsigned long 18 | #define ULONG unsigned long 19 | #define UBYTE unsigned char 20 | #define UWORD unsigned short 21 | #define DWORD unsigned long 22 | 23 | long ByteFlipLong(long); 24 | UCHAR *Readiff(char *); /* this returns back a bitmap with a picture in it*/ 25 | 26 | typedef LONG ID; /* An ID is four printable ASCII chars like FORM or DPPV */ 27 | 28 | /* original 29 | #define MakeID(d,c,b,a) ((DWORD)(a)<<24 | (DWORD)(b)<<16 | (DWORD)(c)<<8 | (DWORD)(d) )*/ 30 | #define MakeID(d,c,b,a) (((DWORD)(a)<<24) | ((DWORD)(b)<<16) | ((DWORD)(c)<<8) | ((DWORD)(d))) 31 | 32 | #define FORM MakeID('F','O','R','M') 33 | #define PROP MakeID('P','R','O','P') 34 | #define LIST MakeID('L','I','S','T') 35 | #define CAT MakeID('C','A','T',' ') 36 | #define FILLER MakeID(' ',' ',' ',' ') 37 | 38 | typedef struct 39 | { 40 | ID type; 41 | long cksize; 42 | ID subtype; 43 | } form_chunk; 44 | 45 | typedef struct { 46 | ID ckID; 47 | LONG ckSize; 48 | } ChunkHeader; 49 | 50 | typedef struct { 51 | ID ckID; 52 | LONG ckSize; 53 | UBYTE ckData[ 1 /*REALLY: ckSize*/ ]; 54 | } Chunk; 55 | 56 | #define ID_PBM MakeID('P','B','M',' ') 57 | #define ID_ILBM MakeID('I','L','B','M') 58 | #define ID_BMHD MakeID('B','M','H','D') 59 | #define ID_CMAP MakeID('C','M','A','P') 60 | #define ID_GRAB MakeID('G','R','A','B') 61 | #define ID_DEST MakeID('D','E','S','T') 62 | #define ID_SPRT MakeID('S','P','R','T') 63 | #define ID_CAMG MakeID('C','A','M','G') 64 | #define ID_BODY MakeID('B','O','D','Y') 65 | 66 | /* ---------- BitMapHeader ---------------------------------------------*/ 67 | 68 | typedef UBYTE Masking; /* Choice of masking technique.*/ 69 | #define mskNone 0 70 | #define mskHasMask 1 71 | #define mskHasTransparentColor 2 72 | #define mskLasso 3 73 | 74 | #define cmpNone 0 75 | #define cmpByteRun1 1 76 | 77 | /* A BitMapHeader is stored in a BMHD chunk. */ 78 | typedef struct { 79 | UWORD w, h; /* raster width & height in pixels */ 80 | UWORD x, y; /* position for this image */ 81 | UBYTE nPlanes; /* # source bitplanes */ 82 | UBYTE masking; /* masking technique */ 83 | UBYTE compression; /* compression algoithm */ 84 | UBYTE pad1; /* UNUSED. For consistency, put 0 here.*/ 85 | UWORD transparentColor; /* transparent "color number" */ 86 | UBYTE xAspect, yAspect; /* aspect ratio, a rational number x/y */ 87 | UWORD pageWidth, pageHeight; /* source "page" size in pixels */ 88 | } BitMapHeader; 89 | /* RowBytes computes the number of bytes in a row, from the width in pixels.*/ 90 | #define RowBytes(w) (((w) + 15) >> 4 << 1) 91 | 92 | /* A CMAP chunk is a packed array of ColorRegisters (3 bytes each). */ 93 | typedef struct { 94 | UBYTE red, green, blue; /* MUST be UBYTEs so ">> 4" won't sign extend.*/ 95 | } ColorRegister; 96 | 97 | /* Use this constant instead of sizeof(ColorRegister). */ 98 | #define sizeofColorRegister 3 99 | 100 | long ByteFlipLong(long); 101 | void ByteFlipShort(short *); 102 | short iffswab(unsigned short); 103 | short swab(unsigned short); 104 | 105 | #ifdef __cplusplus 106 | }; 107 | #endif 108 | 109 | #endif 110 | 111 | -------------------------------------------------------------------------------- /map_edit/README.md: -------------------------------------------------------------------------------- 1 | # DOS Map Editor for ACK-3D 2 | 3 | ![MAPEDIT1](https://github.com/gered/ack3d/raw/master/scrnshot/mapedit1.gif "MAPEDIT1") 4 | ![MAPEDIT2](https://github.com/gered/ack3d/raw/master/scrnshot/mapedit2.gif "MAPEDIT2") 5 | 6 | Source code and assets for the DOS map editor contained on the CD that was included on the book 7 | "Amazing 3-D Games Adventure Set" by Lary Myers, published in 1995. The source code has been 8 | fixed up a little bit and sources/assets for a second, older version of this map editor have been 9 | removed. A Watcom `makefile` has been added, replacing a build script for Lary's custom `MK.EXE` 10 | build tool. 11 | 12 | Unlike the version that shipped on the book's CD, this version has been updated so that it does 13 | not assume that files are all located in the current working directory. Instead the following is 14 | what happens for path handling: 15 | 16 | * The `medit.dtf` file required by the map editor is assumed to be located in the same directory as `MAPEDIT.EXE` 17 | * Files specified by the map editor description file are assumed to be located in the same directory as that description file. 18 | 19 | These changes make it possible to do things like place `MAPEDIT.EXE` and `MEDIT.DTF` somewhere on 20 | your PATH instead of needing to copy them around to all of your project asset directories. 21 | 22 | ## Requirements 23 | 24 | To build you will need Watcom C++ and Borland TASM. I used Watcom C++ 10.0a and Borland TASM 4.0, 25 | but you should be able to build with newer versions (maybe even _slightly_ older versions too). 26 | 27 | You must build `ACKLIB.LIB` prior to building this project. Please check the `/ack_lib` directory 28 | at the root of this repository first. 29 | 30 | Because the DOS map editor requires it's own `medit.dtf` resource file, you must also build the 31 | `BPIC.EXE` tool prior to building this project, as the included `makefile` will attempt to build 32 | this resource file as part of a normal build. Please check the `/bpic` directory at the root of 33 | this repository first. 34 | 35 | ## Building 36 | 37 | Within this directory, run 38 | 39 | ``` 40 | > wmake 41 | ``` 42 | 43 | This will build using the included `makefile` using a debug build settings. 44 | 45 | To build using a release configuration: 46 | 47 | ``` 48 | > wmake target_config=release 49 | ``` 50 | 51 | In either case, you should get an output artifact `MAPEDIT.EXE` on successful build. 52 | 53 | ## How to Run 54 | 55 | To run the map editor, you must provide it with a text map description file or "configuration file" 56 | as it is referred to in the book. This file specifies what `.MAP` file to load, in addition to 57 | what bitmaps to load, what objects are available for placement and a bunch of other things. These 58 | are very similar to the `.INF` files used by ACK-3D resource files (e.g. `pics.dtf`) but do **NOT** 59 | confuse the two! They are not the same thing! 60 | 61 | This map editor does **NOT** read ACK-3D resource files like `pics.dtf`. It is only capable of 62 | producing `.MAP` files that are to be included in resource files. This is very much unlike the 63 | Windows version of the map editor that was included on the book's CD (which is not included in this 64 | repository). 65 | 66 | Please read the last section of Chapter 15 in the book for more information on using the DOS map 67 | editor and what needs to go in configuration files. Unfortunately, the book's description of 68 | configuration files is very light (only a single page), so you will also want to refer to the 69 | `/fdemo/assets/fdemo.l01`, `/mall/assets/mall.l01` and `/example/assets/example.med` configuration 70 | files found in this repository as examples to help you write your own. 71 | -------------------------------------------------------------------------------- /ack_lib/ACKPCX.C: -------------------------------------------------------------------------------- 1 | // This source file contains the functions needed to read in PCX files. 2 | // (c) 1995 ACK Software (Lary Myers) 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | //typedef unsigned short USHORT; 10 | 11 | #include "ack3d.h" // Main ACK-3D internal and interface data structures 12 | #include "ackeng.h" // Internal data structures and constants 13 | #include "ackext.h" // Defines external (global) variables 14 | 15 | typedef struct 16 | { 17 | char manufacturer; /* Always set to 0 */ 18 | char version; /* Always 5 for 256-color files */ 19 | char encoding; /* Always set to 1 */ 20 | char bits_per_pixel; /* Should be 8 for 256-color files */ 21 | short xmin,ymin; /* Coordinates for top left corner */ 22 | short xmax,ymax; /* Width and height of image */ 23 | short hres; /* Horizontal resolution of image */ 24 | short vres; /* Vertical resolution of image */ 25 | char palette16[48]; /* EGA palette; not used for 256-color files */ 26 | char reserved; /* Reserved for future use */ 27 | char color_planes; /* Color planes */ 28 | short bytes_per_line; /* Number of bytes in 1 line of pixels */ 29 | short palette_type; /* Should be 2 for color palette */ 30 | char filler[58]; /* Nothing but junk */ 31 | } PcxHeader; 32 | 33 | typedef struct 34 | { 35 | PcxHeader hdr; 36 | UCHAR *bitmap; 37 | UCHAR pal[768]; 38 | unsigned short imagebytes,width,height; 39 | } PcxFile; 40 | 41 | #define PCX_MAX_SIZE 64000L 42 | enum {PCX_OK,PCX_NOMEM,PCX_TOOBIG,PCX_NOFILE}; 43 | 44 | enum {NORMAL,RLE}; 45 | enum {FALSE,TRUE}; 46 | 47 | PcxFile pcxGlobal; // data structure for reading PCX files 48 | 49 | extern unsigned char colordat[]; 50 | 51 | // 52 | // This routine loads a 256 color PCX file. 53 | // 54 | unsigned char *AckReadPCX(char *filename) 55 | { 56 | long i; 57 | int mode=NORMAL,nbytes; 58 | UCHAR abyte,*p; 59 | FILE *f; 60 | PcxFile *pcx; 61 | 62 | pcx = &pcxGlobal; 63 | 64 | if (!rsHandle) 65 | { 66 | f=fopen(filename,"rb"); 67 | if (f==NULL) 68 | { 69 | ErrorCode = ERR_BADFILE; 70 | return NULL; 71 | } 72 | } 73 | else 74 | { 75 | f = fdopen (rsHandle, "rb"); 76 | if (f == NULL) 77 | { 78 | ErrorCode = ERR_BADPICNAME; 79 | return (0L); 80 | } 81 | 82 | fseek (f, rbaTable[(ULONG) filename], SEEK_SET); 83 | } 84 | 85 | 86 | fread(&pcx->hdr,sizeof(PcxHeader),1,f); 87 | pcx->width=1+pcx->hdr.xmax-pcx->hdr.xmin; 88 | pcx->height=1+pcx->hdr.ymax-pcx->hdr.ymin; 89 | pcx->imagebytes=(unsigned int)(pcx->width*pcx->height); 90 | 91 | if (pcx->imagebytes > PCX_MAX_SIZE) 92 | { 93 | if (!rsHandle) 94 | fclose(f); 95 | ErrorCode = ERR_INVALIDFORM; 96 | return(NULL); 97 | } 98 | 99 | pcx->bitmap=(UCHAR*)AckMalloc(pcx->imagebytes+4); 100 | 101 | if (pcx->bitmap == NULL) 102 | { 103 | if (!rsHandle) 104 | fclose(f); 105 | ErrorCode = ERR_NOMEMORY; 106 | return(NULL); 107 | } 108 | p=&pcx->bitmap[4]; 109 | 110 | for (i=0;iimagebytes;i++) 111 | { 112 | if(mode == NORMAL) 113 | { 114 | abyte=fgetc(f); 115 | if (abyte > 0xbf) 116 | { 117 | nbytes=abyte & 0x3f; 118 | abyte=fgetc(f); 119 | if (--nbytes > 0) 120 | mode=RLE; 121 | } 122 | } 123 | else if (--nbytes == 0) 124 | mode=NORMAL; 125 | *p++=abyte; 126 | } 127 | 128 | fseek(f,-768L,SEEK_END); // get palette from pcx file 129 | fread(colordat,768,1,f); 130 | p=colordat; 131 | for (i=0;i<768;i++) // bit shift palette 132 | *p++=*p >>2; 133 | 134 | if (!rsHandle) 135 | fclose(f); 136 | 137 | p = pcx->bitmap; 138 | (*(short *)p) = pcx->width; 139 | p += sizeof(short); 140 | (*(short *)p) = pcx->height; 141 | 142 | return(pcx->bitmap); // return success 143 | } 144 | 145 | // **** End of Source **** 146 | 147 | -------------------------------------------------------------------------------- /mall/assets/mall.inf: -------------------------------------------------------------------------------- 1 | ; Resource information file for Mall Demo 2 | ; Info file for each level 3 | ; This is the index to the map file to use 4 | MapFile: 1 5 | 6 | ; Initial coordinates of POV 7 | xPlayer: 192 8 | yPlayer: 640 9 | 10 | ; Initial angle of POV, if left out then a random angle will be given 11 | PlayerAngle: 0 12 | 13 | ; Colors for solid top and bottom 14 | TopColor: 0 15 | BottomColor: 24 16 | 17 | Shading: OFF 18 | Floors: ON 19 | Resolution: 2 20 | 21 | ; Full screen picture 22 | ScreenBack: 2 23 | 24 | ; Mountains in the background 25 | ScrollBack: 3 26 | 27 | ; This is a the start of the wall bitmap section 28 | Walls: 29 | 30 | ; This indicates wall bitmaps follow 31 | Bitmaps: 32 | 33 | ; Wall Number, Resource Number 34 | 1 ,4 35 | 2 ,5 36 | 3 ,6 37 | 4 ,7 38 | 5 ,8 39 | 6 ,9 40 | 7 ,10 41 | 8 ,11 42 | 9 ,12 43 | 10,13 44 | 11,14 45 | 12,15 46 | 13,16 47 | 14,17 48 | 15,18 49 | 16,19 50 | 17,20 51 | 18,21 52 | 19,22 53 | 20,23 54 | 21,24 55 | 22,25 56 | 23,26 57 | 24,27 58 | 25,28 59 | 26,29 60 | 27,30 61 | 28,31 62 | 29,32 63 | 30,33 64 | 31,34 65 | 32,35 66 | 33,40 67 | 34,41 68 | 35,42 69 | 36,43 70 | 37,44 71 | 38,45 72 | 39,46 73 | 40,49 74 | 41,50 75 | EndBitmaps: 76 | 77 | EndWalls: 78 | 79 | ; This is the start of the objects section 80 | Objects: 81 | 82 | ; This indicates object bitmaps follow 83 | Bitmaps: 84 | 85 | ; Bitmap number, Resource Number 86 | 1,36 87 | 2,37 88 | 3,38 89 | 4,39 90 | 5,47 91 | 6,48 92 | 7,51 93 | EndBitmaps: 94 | 95 | ; This indicates object descriptions follow 96 | ObjDesc: 97 | 98 | ; Number,Speed 99 | Number: 1,1 100 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 101 | Create: 0,1,1,1 102 | ; Number,Speed 103 | Number: 2,1 104 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 105 | Create: 0,1,1,1 106 | ; Number,Speed 107 | Number: 3,1 108 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 109 | Create: 0,1,1,1 110 | ; Number,Speed 111 | Number: 4,1 112 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 113 | Create: 0,1,1,1 114 | ; Number,Speed 115 | Number: 5,1 116 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 117 | Create: 0,1,1,1 118 | ; Number,Speed 119 | Number: 6,1 120 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 121 | Create: 0,1,1,1 122 | ; Number,Speed 123 | Number: 7,1 124 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 125 | Create: 0,1,1,1 126 | ; Number,Speed 127 | Number: 8,1 128 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 129 | Create: 0,1,1,2 130 | ; Number,Speed 131 | Number: 9,1 132 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 133 | Create: 0,1,1,2 134 | ; Number,Speed 135 | Number: 10,1 136 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 137 | Create: 0,1,1,2 138 | ; Number,Speed 139 | Number: 11,1 140 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 141 | Create: 0,1,1,2 142 | ; Number,Speed 143 | Number: 12,1 144 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 145 | Create: 0,1,1,2 146 | ; Number,Speed 147 | Number: 13,1 148 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 149 | Create: 0,1,1,3 150 | ; Number,Speed 151 | Number: 14,1 152 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 153 | Create: 0,1,1,3 154 | ; Number,Speed 155 | Number: 15,1 156 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 157 | Create: 0,1,1,3 158 | ; Number,Speed 159 | Number: 16,1 160 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 161 | Create: 0,1,1,3 162 | ; Number,Speed 163 | Number: 17,1 164 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 165 | Create: 0,1,1,4 166 | ; Number,Speed 167 | Number: 18,1 168 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 169 | Create: 0,1,1,4 170 | ; Number,Speed 171 | Number: 19,1 172 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 173 | Create: 0,1,1,4 174 | ; Number,Speed 175 | Number: 20,1 176 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 177 | Create: 0,1,1,4 178 | ; Number,Speed 179 | Number: 21,1 180 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 181 | Create: 0,1,1,5 182 | ; Number,Speed 183 | Number: 22,1 184 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 185 | Create: 0,1,1,6 186 | ; Number,Speed 187 | Number: 23,1 188 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 189 | Create: 0,1,1,7 190 | ; Number,Speed 191 | Number: 24,1 192 | ; Flags,Number of Views,Bitmaps per view,Bitmaps 193 | Create: 0,1,1,7 194 | 195 | EndDesc: 196 | EndObjects: 197 | 198 | ; This is a MANDATORY end statement 199 | End: 200 | 201 | 202 |  -------------------------------------------------------------------------------- /bpic/bpic.c: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #define MAX_RBA 500 11 | 12 | 13 | 14 | unsigned long rTable[MAX_RBA+1]; 15 | 16 | //============================================================================= 17 | // for dealing with paths 18 | //============================================================================= 19 | 20 | char dataPath[200] = ""; 21 | char tempFilename[200] = ""; 22 | 23 | void FindFilePaths(const char *dataFile) { 24 | char *end; 25 | 26 | if (dataFile) { 27 | end = strrchr(dataFile, '\\'); 28 | if (end) 29 | strncpy(dataPath, dataFile, ((end+1) - dataFile)); 30 | } 31 | } 32 | 33 | char* GetCombinedPath(const char *base, const char *file) { 34 | strncpy(tempFilename, base, 200); 35 | strncat(tempFilename, file, 200); 36 | return tempFilename; 37 | } 38 | 39 | 40 | /**************************************************************************** 41 | ** ** 42 | ****************************************************************************/ 43 | char *StripEndOfLine(char *s) 44 | { 45 | int len; 46 | char ch; 47 | 48 | len = strlen(s); 49 | 50 | while (--len >= 0) 51 | { 52 | ch = s[len]; 53 | if (ch != ' ' && ch != ';' && ch != '\t' && ch != 13 && ch != 10) 54 | break; 55 | 56 | s[len] = '\0'; 57 | } 58 | 59 | return(s); 60 | } 61 | 62 | 63 | 64 | /****************************************************************************** 65 | * * 66 | ******************************************************************************/ 67 | int main(int argc,char *argv[]) 68 | { 69 | int InHandle,OutHandle; 70 | int hNum; 71 | long rba; 72 | unsigned int hLen,len; 73 | unsigned char *xferbuf; 74 | FILE *fp; 75 | char dbuf[200]; 76 | 77 | printf("\nResource file builder Version 1.0\n"); 78 | printf("Copyright 1993 Lary Myers\n"); 79 | 80 | if (argc < 3) 81 | { 82 | printf("Syntax: BPIC datafile.ext outfile.ext\n"); 83 | printf(" Where: datafile.ext is an ASCII file containing filenames\n"); 84 | printf(" to be compiled into the outfile.ext resource file.\n"); 85 | return(1); 86 | } 87 | 88 | FindFilePaths(argv[1]); 89 | 90 | xferbuf = malloc(64000); 91 | if (xferbuf == NULL) 92 | { 93 | printf("Unable to get memory to run.\n"); 94 | return(1); 95 | } 96 | 97 | fp = fopen(argv[1],"rt"); 98 | if (fp == NULL) 99 | { 100 | printf("Unable to open datafile %s\n",argv[1]); 101 | return(1); 102 | } 103 | 104 | OutHandle = open(argv[2],O_RDWR|O_BINARY|O_CREAT|O_TRUNC,S_IREAD|S_IWRITE); 105 | if (OutHandle < 1) 106 | { 107 | printf("Error creating outfile %s\n",argv[2]); 108 | fclose(fp); 109 | return(1); 110 | } 111 | 112 | hLen = MAX_RBA * sizeof(long); 113 | memset(rTable,0,hLen); 114 | 115 | write(OutHandle,rTable,hLen); 116 | hNum = 0; 117 | rba = hLen; 118 | 119 | while (1) 120 | { 121 | if (feof(fp)) 122 | break; 123 | 124 | *dbuf = '\0'; 125 | fgets(dbuf,198,fp); 126 | if (*dbuf == ';') 127 | continue; 128 | 129 | StripEndOfLine(dbuf); 130 | 131 | if (!strlen(dbuf)) 132 | continue; 133 | 134 | printf("Processing....%s\n",dbuf); 135 | GetCombinedPath(dataPath, dbuf); 136 | InHandle = open(tempFilename,O_RDWR|O_BINARY); 137 | 138 | if (InHandle < 1) 139 | { 140 | printf("Error opening file %s - Number %d\n",dbuf,hNum); 141 | break; 142 | } 143 | 144 | rTable[hNum++] = rba; 145 | 146 | 147 | while (1) 148 | { 149 | len = read(InHandle,xferbuf,64000U); 150 | if (len) 151 | { 152 | if (write(OutHandle,xferbuf,len) != len) 153 | { 154 | printf("Error writing to resource file. Check disk space.\n"); 155 | break; 156 | } 157 | rba += len; 158 | } 159 | 160 | if (len < 64000) 161 | break; 162 | 163 | } 164 | 165 | close(InHandle); 166 | } 167 | 168 | rTable[hNum] = rba; 169 | 170 | lseek(OutHandle,0L,SEEK_SET); 171 | write(OutHandle,rTable,hLen); 172 | close(OutHandle); 173 | fclose(fp); 174 | 175 | printf("Processing complete.\n"); 176 | 177 | return(0); 178 | } 179 | 180 | -------------------------------------------------------------------------------- /ack_lib/ACKEXT.H: -------------------------------------------------------------------------------- 1 | /* ACK-3D ( Animation Construction Kit 3D ) */ 2 | 3 | #ifndef ACKEXT_H_INCLUDED 4 | #define ACKEXT_H_INCLUDED 5 | 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | 10 | extern UCHAR *BackArray[]; 11 | extern long xPglobal; 12 | extern long yPglobal; 13 | extern long xBegGlobal; 14 | extern long yBegGlobal; 15 | extern long BackDropRows; 16 | extern ACKENG *aeGlobal; 17 | extern USHORT *xGridGlobal; 18 | extern USHORT *yGridGlobal; 19 | extern long xPglobalHI; 20 | extern long yPglobalHI; 21 | extern ULONG *rbaTable; 22 | 23 | extern long bmDistance; 24 | 25 | 26 | extern int rsHandle; 27 | extern long LastX1; 28 | extern long LastY1; 29 | extern long iLastX; 30 | extern long iLastY; 31 | extern short MaxDistance; 32 | extern short ErrorCode; 33 | extern short LightFlag; 34 | 35 | extern long xMapPosn; 36 | extern long yMapPosn; 37 | 38 | extern short DefZone[]; 39 | extern short AckLightZones[]; 40 | extern UCHAR *HtTable[]; 41 | extern USHORT *Grid; 42 | extern USHORT *ObjGrid; 43 | extern UCHAR HitMap[]; 44 | extern UCHAR *BitmapXferPtr; 45 | extern short TotalSpecial; 46 | extern short DistanceTable[]; 47 | extern long *AdjustTable; 48 | extern short xSecretmPos; 49 | extern short xSecretmPos1; 50 | extern short xSecretColumn; 51 | extern short ySecretmPos; 52 | extern short ySecretmPos1; 53 | extern short ySecretColumn; 54 | extern short TotalSecret; 55 | extern short ViewColumn; 56 | extern long *SinTable; 57 | extern long *CosTable; 58 | extern long *LongTanTable; 59 | extern long *LongInvTanTable; 60 | extern long InvCosTable[]; 61 | extern long InvSinTable[]; 62 | extern long *LongCosTable; 63 | extern long *ViewCosTable; 64 | extern long *xNextTable; 65 | extern long *yNextTable; 66 | extern UCHAR ObjectsSeen[]; 67 | extern UCHAR MoveObjectList[]; 68 | extern short TotalObjects; 69 | extern short FoundObjectCount; 70 | extern short MoveObjectCount; 71 | extern short LastObjectHit; 72 | extern short LastMapPosn; 73 | extern UCHAR ObjNumber[]; 74 | extern USHORT ObjRelDist[]; 75 | extern short ObjColumn[]; 76 | extern short ObjAngle[]; 77 | extern short DirAngle[]; 78 | extern UCHAR LightMap[]; 79 | 80 | extern USHORT FloorMap[]; 81 | extern USHORT CeilMap[]; 82 | extern SLICE Slice[]; 83 | extern USHORT ScreenOffset; 84 | extern short LastFloorAngle; 85 | extern short LastFloorX; 86 | extern short LastFloorY; 87 | extern long Flooru; 88 | extern long Floorv; 89 | extern long Floordu; 90 | extern long Floordv; 91 | extern long Floorkx; 92 | extern long Floorky; 93 | extern long Floorku; 94 | extern long Floorkv; 95 | extern long Floorkdu; 96 | extern long Floorkdv; 97 | extern UCHAR *Floorbm; 98 | extern UCHAR *Floorscr; 99 | extern UCHAR *FloorscrTop; 100 | extern UCHAR *Floorptr2; 101 | extern UCHAR *Floors1; 102 | extern UCHAR *Floors2; 103 | extern long Floorht; 104 | extern long Floorwt; 105 | extern short Floorvht; 106 | extern short Flooreht; 107 | extern short ViewAngle; 108 | extern short ViewHeight; 109 | extern short CeilingHeight; 110 | extern short Resolution; 111 | extern short LastWallHeight; 112 | extern short PlayerAngle; 113 | extern short ViewAngle; 114 | extern USHORT SysFlags; 115 | extern SLICE Slice[]; 116 | extern SLICE *sPtr; 117 | extern UCHAR **WallbMaps; 118 | extern UCHAR *VidTop; 119 | extern UCHAR *VidBottom; 120 | extern short BotRowTable[]; 121 | extern USHORT FloorMap[]; 122 | extern USHORT CeilMap[]; 123 | extern char *scantables[]; 124 | 125 | extern volatile UCHAR AckKeys[]; 126 | extern volatile UCHAR KeyPressed; 127 | extern volatile long AckTimerCounter; 128 | extern volatile short AckTmCount; 129 | extern volatile short AckTmDelay; 130 | 131 | #ifdef __cplusplus 132 | }; 133 | #endif 134 | 135 | #endif 136 | 137 | -------------------------------------------------------------------------------- /map_edit/mouse.c: -------------------------------------------------------------------------------- 1 | // 3D Construction Kit 2 | // Started: 01/02/94 3 | // Author: Lary Myers 4 | // Module: MOUSE.C 5 | // (c) CopyRight 1994 All Rights Reserved 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | int MouseModifier = 2; 12 | 13 | //============================================================================= 14 | // Check if mouse is installed, returns -1 if it IS installed 15 | //============================================================================= 16 | int MouseInstalled(void) 17 | { 18 | int yesno; 19 | union REGPACK regs; 20 | 21 | memset(®s,0,sizeof(union REGPACK)); 22 | intr(0x33,®s); 23 | yesno = regs.w.ax; 24 | 25 | return(yesno); 26 | } 27 | 28 | //============================================================================= 29 | // Show the mouse cursor 30 | //============================================================================= 31 | void ShowMouse(void) 32 | { 33 | union REGPACK regs; 34 | 35 | memset(®s,0,sizeof(union REGPACK)); 36 | regs.w.ax = 1; 37 | intr(0x33,®s); 38 | 39 | } 40 | 41 | //============================================================================= 42 | // Hide the mouse cursor 43 | //============================================================================= 44 | void HideMouse(void) 45 | { 46 | union REGPACK regs; 47 | 48 | memset(®s,0,sizeof(union REGPACK)); 49 | regs.w.ax = 2; 50 | intr(0x33,®s); 51 | 52 | } 53 | 54 | //============================================================================= 55 | // Returns button status, mouse row and column 56 | //============================================================================= 57 | int ReadMouseCursor(int *mrow,int *mcol) 58 | { 59 | int bstatus; 60 | union REGPACK regs; 61 | 62 | memset(®s,0,sizeof(union REGPACK)); 63 | regs.w.ax = 3; 64 | intr(0x33,®s); 65 | bstatus = regs.w.bx; 66 | *mrow = regs.w.dx; 67 | *mcol = regs.w.cx / MouseModifier; 68 | 69 | return(bstatus); 70 | } 71 | 72 | //============================================================================= 73 | // Returns just the mouse button status 74 | //============================================================================= 75 | int ReadMouseButtons(void) 76 | { 77 | int bstatus; 78 | union REGPACK regs; 79 | 80 | memset(®s,0,sizeof(union REGPACK)); 81 | regs.w.ax = 3; 82 | intr(0x33,®s); 83 | bstatus = regs.w.bx; 84 | 85 | return(bstatus); 86 | } 87 | 88 | //============================================================================= 89 | // Set mouse cursor to desired row and column 90 | //============================================================================= 91 | void SetMouseCursor(int mrow,int mcol) 92 | { 93 | union REGPACK regs; 94 | 95 | memset(®s,0,sizeof(union REGPACK)); 96 | regs.w.ax = 4; 97 | regs.w.dx = mrow; 98 | regs.w.cx = mcol * MouseModifier; 99 | intr(0x33,®s); 100 | 101 | } 102 | 103 | //============================================================================= 104 | // Defines left and right columns for mouse travel 105 | //============================================================================= 106 | void SetMouseMinMaxColumns(int mincol,int maxcol) 107 | { 108 | union REGPACK regs; 109 | 110 | memset(®s,0,sizeof(union REGPACK)); 111 | regs.w.ax = 7; 112 | regs.w.cx = mincol * MouseModifier; 113 | regs.w.dx = maxcol * MouseModifier; 114 | intr(0x33,®s); 115 | 116 | } 117 | 118 | 119 | //============================================================================= 120 | // Defines top and bottom rows for mouse travel 121 | //============================================================================= 122 | void SetMouseMinMaxRows(int minrow,int maxrow) 123 | { 124 | union REGPACK regs; 125 | 126 | memset(®s,0,sizeof(union REGPACK)); 127 | regs.w.ax = 8; 128 | regs.w.cx = minrow; 129 | regs.w.dx = maxrow; 130 | intr(0x33,®s); 131 | 132 | } 133 | 134 | //============================================================================= 135 | // Set shape of mouse cursor. 8 byte mask, hotspot row,col 136 | //============================================================================= 137 | void SetMouseShape(int hsrow,int hscol,char far *mask) 138 | { 139 | union REGPACK regs; 140 | 141 | memset(®s,0,sizeof(union REGPACK)); 142 | regs.w.ax = 9; 143 | regs.w.dx = FP_OFF(mask); 144 | regs.w.es = FP_SEG(mask); 145 | regs.w.bx = hscol; 146 | regs.w.cx = hsrow; 147 | intr(0x33,®s); 148 | 149 | } 150 | 151 | //============================================================================= 152 | // Wait for the mouse button to be released 153 | //============================================================================= 154 | void MouseReleased(void) 155 | { 156 | 157 | while (ReadMouseButtons()); 158 | 159 | } 160 | 161 | -------------------------------------------------------------------------------- /fdemo/MOUSE.C: -------------------------------------------------------------------------------- 1 | // 3D Construction Kit 2 | // Started: 01/02/94 3 | // Author: Lary Myers 4 | // Module: MOUSE.C 5 | // (c) CopyRight 1994 All Rights Reserved 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | 12 | void Mymemset(void *,int,int); 13 | 14 | int MouseModifier = 2; 15 | 16 | //============================================================================= 17 | // Check if mouse is installed, returns -1 if it IS installed 18 | //============================================================================= 19 | int MouseInstalled(void) 20 | { 21 | int yesno; 22 | union REGPACK regs; 23 | 24 | Mymemset(®s,0,sizeof(union REGPACK)); 25 | intr(0x33,®s); 26 | yesno = regs.w.ax; 27 | 28 | return(yesno); 29 | } 30 | 31 | //============================================================================= 32 | // Show the mouse cursor 33 | //============================================================================= 34 | void ShowMouse(void) 35 | { 36 | union REGPACK regs; 37 | 38 | Mymemset(®s,0,sizeof(union REGPACK)); 39 | regs.w.ax = 1; 40 | intr(0x33,®s); 41 | 42 | } 43 | 44 | //============================================================================= 45 | // Hide the mouse cursor 46 | //============================================================================= 47 | void HideMouse(void) 48 | { 49 | union REGPACK regs; 50 | 51 | Mymemset(®s,0,sizeof(union REGPACK)); 52 | regs.w.ax = 2; 53 | intr(0x33,®s); 54 | 55 | } 56 | 57 | //============================================================================= 58 | // Returns button status, mouse row and column 59 | //============================================================================= 60 | int ReadMouseCursor(int *mrow,int *mcol) 61 | { 62 | int bstatus; 63 | union REGPACK regs; 64 | 65 | Mymemset(®s,0,sizeof(union REGPACK)); 66 | regs.w.ax = 3; 67 | intr(0x33,®s); 68 | bstatus = regs.w.bx; 69 | *mrow = regs.w.dx; 70 | *mcol = regs.w.cx / MouseModifier; 71 | 72 | return(bstatus); 73 | } 74 | 75 | //============================================================================= 76 | // Returns just the mouse button status 77 | //============================================================================= 78 | int ReadMouseButtons(void) 79 | { 80 | int bstatus; 81 | union REGPACK regs; 82 | 83 | Mymemset(®s,0,sizeof(union REGPACK)); 84 | regs.w.ax = 3; 85 | intr(0x33,®s); 86 | bstatus = regs.w.bx; 87 | 88 | return(bstatus); 89 | } 90 | 91 | //============================================================================= 92 | // Set mouse cursor to desired row and column 93 | //============================================================================= 94 | void SetMouseCursor(int mrow,int mcol) 95 | { 96 | union REGPACK regs; 97 | 98 | Mymemset(®s,0,sizeof(union REGPACK)); 99 | regs.w.ax = 4; 100 | regs.w.dx = mrow; 101 | regs.w.cx = mcol * MouseModifier; 102 | intr(0x33,®s); 103 | 104 | } 105 | 106 | //============================================================================= 107 | // Defines left and right columns for mouse travel 108 | //============================================================================= 109 | void SetMouseMinMaxColumns(int mincol,int maxcol) 110 | { 111 | union REGPACK regs; 112 | 113 | Mymemset(®s,0,sizeof(union REGPACK)); 114 | regs.w.ax = 7; 115 | regs.w.cx = mincol * MouseModifier; 116 | regs.w.dx = maxcol * MouseModifier; 117 | intr(0x33,®s); 118 | 119 | } 120 | 121 | 122 | //============================================================================= 123 | // Defines top and bottom rows for mouse travel 124 | //============================================================================= 125 | void SetMouseMinMaxRows(int minrow,int maxrow) 126 | { 127 | union REGPACK regs; 128 | 129 | Mymemset(®s,0,sizeof(union REGPACK)); 130 | regs.w.ax = 8; 131 | regs.w.cx = minrow; 132 | regs.w.dx = maxrow; 133 | intr(0x33,®s); 134 | 135 | } 136 | 137 | //============================================================================= 138 | // Set shape of mouse cursor. 8 byte mask, hotspot row,col 139 | //============================================================================= 140 | void SetMouseShape(int hsrow,int hscol,char far *mask) 141 | { 142 | union REGPACK regs; 143 | 144 | Mymemset(®s,0,sizeof(union REGPACK)); 145 | regs.w.ax = 9; 146 | regs.w.dx = FP_OFF(mask); 147 | regs.w.es = FP_SEG(mask); 148 | regs.w.bx = hscol; 149 | regs.w.cx = hsrow; 150 | intr(0x33,®s); 151 | 152 | } 153 | 154 | //============================================================================= 155 | // Wait for the mouse button to be released 156 | //============================================================================= 157 | void MouseReleased(void) 158 | { 159 | 160 | while (ReadMouseButtons()); 161 | 162 | } 163 | 164 | 165 | //============================================================================= 166 | // 167 | //============================================================================= 168 | void MouseSetFunction(unsigned char mFlag,void *Func) 169 | { 170 | union REGPACK regs; 171 | 172 | Mymemset(®s,0,sizeof(union REGPACK)); 173 | regs.w.ax = 12; 174 | regs.w.dx = FP_OFF(Func); 175 | regs.w.es = FP_SEG(Func); 176 | regs.w.cx = mFlag; 177 | intr(0x33,®s); 178 | 179 | } 180 | 181 | -------------------------------------------------------------------------------- /mall/MOUSE.C: -------------------------------------------------------------------------------- 1 | // 3D Construction Kit 2 | // Started: 01/02/94 3 | // Author: Lary Myers 4 | // Module: MOUSE.C 5 | // (c) CopyRight 1994 All Rights Reserved 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | 12 | void Mymemset(void *,int,int); 13 | 14 | int MouseModifier = 2; 15 | 16 | //============================================================================= 17 | // Check if mouse is installed, returns -1 if it IS installed 18 | //============================================================================= 19 | int MouseInstalled(void) 20 | { 21 | int yesno; 22 | union REGPACK regs; 23 | 24 | Mymemset(®s,0,sizeof(union REGPACK)); 25 | intr(0x33,®s); 26 | yesno = regs.w.ax; 27 | 28 | return(yesno); 29 | } 30 | 31 | //============================================================================= 32 | // Show the mouse cursor 33 | //============================================================================= 34 | void ShowMouse(void) 35 | { 36 | union REGPACK regs; 37 | 38 | Mymemset(®s,0,sizeof(union REGPACK)); 39 | regs.w.ax = 1; 40 | intr(0x33,®s); 41 | 42 | } 43 | 44 | //============================================================================= 45 | // Hide the mouse cursor 46 | //============================================================================= 47 | void HideMouse(void) 48 | { 49 | union REGPACK regs; 50 | 51 | Mymemset(®s,0,sizeof(union REGPACK)); 52 | regs.w.ax = 2; 53 | intr(0x33,®s); 54 | 55 | } 56 | 57 | //============================================================================= 58 | // Returns button status, mouse row and column 59 | //============================================================================= 60 | int ReadMouseCursor(int *mrow,int *mcol) 61 | { 62 | int bstatus; 63 | union REGPACK regs; 64 | 65 | Mymemset(®s,0,sizeof(union REGPACK)); 66 | regs.w.ax = 3; 67 | intr(0x33,®s); 68 | bstatus = regs.w.bx; 69 | *mrow = regs.w.dx; 70 | *mcol = regs.w.cx / MouseModifier; 71 | 72 | return(bstatus); 73 | } 74 | 75 | //============================================================================= 76 | // Returns just the mouse button status 77 | //============================================================================= 78 | int ReadMouseButtons(void) 79 | { 80 | int bstatus; 81 | union REGPACK regs; 82 | 83 | Mymemset(®s,0,sizeof(union REGPACK)); 84 | regs.w.ax = 3; 85 | intr(0x33,®s); 86 | bstatus = regs.w.bx; 87 | 88 | return(bstatus); 89 | } 90 | 91 | //============================================================================= 92 | // Set mouse cursor to desired row and column 93 | //============================================================================= 94 | void SetMouseCursor(int mrow,int mcol) 95 | { 96 | union REGPACK regs; 97 | 98 | Mymemset(®s,0,sizeof(union REGPACK)); 99 | regs.w.ax = 4; 100 | regs.w.dx = mrow; 101 | regs.w.cx = mcol * MouseModifier; 102 | intr(0x33,®s); 103 | 104 | } 105 | 106 | //============================================================================= 107 | // Defines left and right columns for mouse travel 108 | //============================================================================= 109 | void SetMouseMinMaxColumns(int mincol,int maxcol) 110 | { 111 | union REGPACK regs; 112 | 113 | Mymemset(®s,0,sizeof(union REGPACK)); 114 | regs.w.ax = 7; 115 | regs.w.cx = mincol * MouseModifier; 116 | regs.w.dx = maxcol * MouseModifier; 117 | intr(0x33,®s); 118 | 119 | } 120 | 121 | 122 | //============================================================================= 123 | // Defines top and bottom rows for mouse travel 124 | //============================================================================= 125 | void SetMouseMinMaxRows(int minrow,int maxrow) 126 | { 127 | union REGPACK regs; 128 | 129 | Mymemset(®s,0,sizeof(union REGPACK)); 130 | regs.w.ax = 8; 131 | regs.w.cx = minrow; 132 | regs.w.dx = maxrow; 133 | intr(0x33,®s); 134 | 135 | } 136 | 137 | //============================================================================= 138 | // Set shape of mouse cursor. 8 byte mask, hotspot row,col 139 | //============================================================================= 140 | void SetMouseShape(int hsrow,int hscol,char far *mask) 141 | { 142 | union REGPACK regs; 143 | 144 | Mymemset(®s,0,sizeof(union REGPACK)); 145 | regs.w.ax = 9; 146 | regs.w.dx = FP_OFF(mask); 147 | regs.w.es = FP_SEG(mask); 148 | regs.w.bx = hscol; 149 | regs.w.cx = hsrow; 150 | intr(0x33,®s); 151 | 152 | } 153 | 154 | //============================================================================= 155 | // Wait for the mouse button to be released 156 | //============================================================================= 157 | void MouseReleased(void) 158 | { 159 | 160 | while (ReadMouseButtons()); 161 | 162 | } 163 | 164 | 165 | //============================================================================= 166 | // 167 | //============================================================================= 168 | void MouseSetFunction(unsigned char mFlag,void *Func) 169 | { 170 | union REGPACK regs; 171 | 172 | Mymemset(®s,0,sizeof(union REGPACK)); 173 | regs.w.ax = 12; 174 | regs.w.dx = FP_OFF(Func); 175 | regs.w.es = FP_SEG(Func); 176 | regs.w.cx = mFlag; 177 | intr(0x33,®s); 178 | 179 | } 180 | 181 | -------------------------------------------------------------------------------- /fdemo/KIT.H: -------------------------------------------------------------------------------- 1 | // Header file for 3D Construction Kit 2 | // Started: 01/02/94 3 | // Author: Lary Myers 4 | // Module: KIT.H 5 | // (c) CopyRight 1994 All Rights Reserved 6 | 7 | #define MODE_GRAPHICS 0x13 8 | #define MODE_TEXT 0x03 9 | 10 | #define SCREEN_LENGTH 64000 // Bytes in one full screen 11 | #define SCREEN_LEN_WORDS 32000 // Words in one screen 12 | #define SCREEN_LEN_DWORDS 16000 // DWORDS in one screen 13 | #define SCREEN_PLANES 1 // Number of planes for this mode 14 | #define SCREEN_WIDTH 320 // Number of bytes in one row 15 | #define SCREEN_HEIGHT 200 // Number of rows on screen 16 | 17 | #define BUTTON_OK 0 18 | #define BUTTON_OKCANCEL 1 19 | #define BUTTON_YESNO 2 20 | #define BUTTON_ABORTRETRY 3 21 | 22 | #define BUTTON_RET_OK 0 23 | #define BUTTON_RET_CANCEL 1 24 | #define BUTTON_RET_YES 2 25 | #define BUTTON_RET_NO 3 26 | #define BUTTON_RET_ABORT 4 27 | #define BUTTON_RET_RETRY 5 28 | 29 | // Used in IORTN.C for message boxes 30 | typedef struct { 31 | short x; 32 | short y; 33 | short x1; 34 | short y1; 35 | short index; 36 | } BUTTON; 37 | 38 | 39 | // Used in IORTN.C for message boxes 40 | typedef struct { 41 | short Count; 42 | short List[4]; 43 | } INDEXES; 44 | 45 | 46 | // Used in IORTN.C list boxes 47 | typedef struct _lcb { 48 | struct _lcb *Back; 49 | struct _lcb *Fwd; 50 | char Data[1]; 51 | } LCB; 52 | 53 | typedef struct { 54 | short ux; 55 | short uy; 56 | short ux1; 57 | short uy1; 58 | short dx; 59 | short dy; 60 | short dx1; 61 | short dy1; 62 | } ARROWRECT; 63 | 64 | 65 | //============================================================================= 66 | // Prototypes in UTIL.C 67 | //============================================================================= 68 | UINT Inkey(void); 69 | char *GetExtent(char *s); 70 | char *StripEndOfLine(char *s); 71 | char *SkipSpaces(char *s); 72 | char *AddExtent(char *s,char *ext); 73 | char *CopyToComma(char *dest,char *src); 74 | short HasWildCards(char *s); 75 | void SetCurrentPath(char *p); 76 | void InitDiskList(void); 77 | char *GetPath(char *s); 78 | //============================================================================= 79 | // Prototypes in GRAPHICS.C 80 | //============================================================================= 81 | void SetMode(short mode); 82 | void ClearScreen(UCHAR color); 83 | void PutPixel(short x,short y,UCHAR color); 84 | void DrawVerticalLine(short x,short y,short y1,UCHAR color); 85 | void DrawHorizontalLine(short x,short y,short x1,UCHAR color); 86 | void DrawBox(short x,short y,short x1,short y1,UCHAR color); 87 | void DrawRoundBox(short x,short y,short x1,short y1,UCHAR color); 88 | void Draw3DBox(short x,short y,short x1,short y1,UCHAR TopColor,UCHAR BottomColor); 89 | void DrawSolidBox(short x,short y,short x1,short y1,UCHAR color); 90 | void DrawXORBox(short x,short y,short x1,short y1,UCHAR color); 91 | void DrawXORRect(short x,short y,short x1,short y1,UCHAR color); 92 | void DrawLine(short x1,short y1,short x2,short y2,UCHAR color); 93 | void PutBitmap(short x,short y,short width,short height,UCHAR *Bitmap); 94 | UCHAR *GetBitmap(short x,short y,short width,short height,UCHAR *buffer); 95 | UINT GetBufferSize(short width,short height); 96 | void PutBitmapAsIcon(short x,short y,UCHAR *bm); 97 | void PutAckBitmap(short x,short y,UCHAR *bm); 98 | UCHAR *ScreenToBuffer(UCHAR *buffer); 99 | void BufferToScreen(UCHAR *buffer); 100 | void SetPalette(UCHAR *PalBuf); 101 | void ShowChar(short x,short y,char ch); 102 | void ShowString(short x,short y,char *s); 103 | UCHAR *LoadAndShowScreen(char *PicName); 104 | //============================================================================= 105 | // Prototypes in MOUSE.C 106 | //============================================================================= 107 | short MouseInstalled(void); 108 | void ShowMouse(void); 109 | void HideMouse(void); 110 | short ReadMouseCursor(short *mrow,short *mcol); 111 | short ReadMouseButtons(void); 112 | void SetMouseCursor(short mrow,short mcol); 113 | void SetMouseMinMaxColumns(short mincol,short maxcol); 114 | void SetMouseMinMaxRows(short minrow,short maxrow); 115 | void SetMouseShape(short hsrow,short hscol,char *mask); 116 | void MouseReleased(void); 117 | void MouseSetFunction(UCHAR,void *); 118 | //============================================================================= 119 | // Prototypes in READIFF.C 120 | //============================================================================= 121 | UCHAR *Readiff(char *picname); 122 | //============================================================================= 123 | // Prototypes in IO.C 124 | //============================================================================= 125 | void GetFontTable(void); 126 | void ShowChar(short x,short y,char ch); 127 | void ShowString(short x,short y,char *s); 128 | short ShowMessageBox(char *Body,UINT Buttons); 129 | void ShowListBox(short x,short y,short x1,short y1,short index,LCB *lcb); 130 | char *FileBox(char *fName,char *Path,char *rBuf,char *Title,char *ActiveButton); 131 | void TestListBox(void); 132 | short PickList(short x,short y,short x1,short y1,LCB *Anchor); 133 | short CreateSelectPickList(short x,short y,short x1,short y1,short count,char **List,short SortFlag); 134 | short ShowPickList(char **p,short SortFlag); 135 | //============================================================================= 136 | // Prototypes in SETS.C 137 | //============================================================================= 138 | short LoadSet(char *fName); 139 | 140 | -------------------------------------------------------------------------------- /mall/KIT.H: -------------------------------------------------------------------------------- 1 | // Header file for 3D Construction Kit 2 | // Started: 01/02/94 3 | // Author: Lary Myers 4 | // Module: KIT.H 5 | // (c) CopyRight 1994 All Rights Reserved 6 | 7 | #define MODE_GRAPHICS 0x13 8 | #define MODE_TEXT 0x03 9 | 10 | #define SCREEN_LENGTH 64000 // Bytes in one full screen 11 | #define SCREEN_LEN_WORDS 32000 // Words in one screen 12 | #define SCREEN_LEN_DWORDS 16000 // DWORDS in one screen 13 | #define SCREEN_PLANES 1 // Number of planes for this mode 14 | #define SCREEN_WIDTH 320 // Number of bytes in one row 15 | #define SCREEN_HEIGHT 200 // Number of rows on screen 16 | 17 | #define BUTTON_OK 0 18 | #define BUTTON_OKCANCEL 1 19 | #define BUTTON_YESNO 2 20 | #define BUTTON_ABORTRETRY 3 21 | 22 | #define BUTTON_RET_OK 0 23 | #define BUTTON_RET_CANCEL 1 24 | #define BUTTON_RET_YES 2 25 | #define BUTTON_RET_NO 3 26 | #define BUTTON_RET_ABORT 4 27 | #define BUTTON_RET_RETRY 5 28 | 29 | // Used in IORTN.C for message boxes 30 | typedef struct { 31 | short x; 32 | short y; 33 | short x1; 34 | short y1; 35 | short index; 36 | } BUTTON; 37 | 38 | 39 | // Used in IORTN.C for message boxes 40 | typedef struct { 41 | short Count; 42 | short List[4]; 43 | } INDEXES; 44 | 45 | 46 | // Used in IORTN.C list boxes 47 | typedef struct _lcb { 48 | struct _lcb *Back; 49 | struct _lcb *Fwd; 50 | char Data[1]; 51 | } LCB; 52 | 53 | typedef struct { 54 | short ux; 55 | short uy; 56 | short ux1; 57 | short uy1; 58 | short dx; 59 | short dy; 60 | short dx1; 61 | short dy1; 62 | } ARROWRECT; 63 | 64 | 65 | //============================================================================= 66 | // Prototypes in UTIL.C 67 | //============================================================================= 68 | UINT Inkey(void); 69 | char *GetExtent(char *s); 70 | char *StripEndOfLine(char *s); 71 | char *SkipSpaces(char *s); 72 | char *AddExtent(char *s,char *ext); 73 | char *CopyToComma(char *dest,char *src); 74 | short HasWildCards(char *s); 75 | void SetCurrentPath(char *p); 76 | void InitDiskList(void); 77 | char *GetPath(char *s); 78 | //============================================================================= 79 | // Prototypes in GRAPHICS.C 80 | //============================================================================= 81 | void SetMode(short mode); 82 | void ClearScreen(UCHAR color); 83 | void PutPixel(short x,short y,UCHAR color); 84 | void DrawVerticalLine(short x,short y,short y1,UCHAR color); 85 | void DrawHorizontalLine(short x,short y,short x1,UCHAR color); 86 | void DrawBox(short x,short y,short x1,short y1,UCHAR color); 87 | void DrawRoundBox(short x,short y,short x1,short y1,UCHAR color); 88 | void Draw3DBox(short x,short y,short x1,short y1,UCHAR TopColor,UCHAR BottomColor); 89 | void DrawSolidBox(short x,short y,short x1,short y1,UCHAR color); 90 | void DrawXORBox(short x,short y,short x1,short y1,UCHAR color); 91 | void DrawXORRect(short x,short y,short x1,short y1,UCHAR color); 92 | void DrawLine(short x1,short y1,short x2,short y2,UCHAR color); 93 | void PutBitmap(short x,short y,short width,short height,UCHAR far *Bitmap); 94 | UCHAR far *GetBitmap(short x,short y,short width,short height,UCHAR far *buffer); 95 | UINT GetBufferSize(short width,short height); 96 | void PutBitmapAsIcon(short x,short y,UCHAR far *bm); 97 | void PutAckBitmap(short x,short y,UCHAR far *bm); 98 | UCHAR far *ScreenToBuffer(UCHAR far *buffer); 99 | void BufferToScreen(UCHAR far *buffer); 100 | void SetPalette(UCHAR far *PalBuf); 101 | void ShowChar(short x,short y,char ch); 102 | void ShowString(short x,short y,char *s); 103 | UCHAR far *LoadAndShowScreen(char *PicName); 104 | //============================================================================= 105 | // Prototypes in MOUSE.C 106 | //============================================================================= 107 | short MouseInstalled(void); 108 | void ShowMouse(void); 109 | void HideMouse(void); 110 | short ReadMouseCursor(short *mrow,short *mcol); 111 | short ReadMouseButtons(void); 112 | void SetMouseCursor(short mrow,short mcol); 113 | void SetMouseMinMaxColumns(short mincol,short maxcol); 114 | void SetMouseMinMaxRows(short minrow,short maxrow); 115 | void SetMouseShape(short hsrow,short hscol,char far *mask); 116 | void MouseReleased(void); 117 | void MouseSetFunction(UCHAR,void *); 118 | //============================================================================= 119 | // Prototypes in READIFF.C 120 | //============================================================================= 121 | UCHAR *Readiff(char *picname); 122 | //============================================================================= 123 | // Prototypes in IO.C 124 | //============================================================================= 125 | void GetFontTable(void); 126 | void ShowChar(short x,short y,char ch); 127 | void ShowString(short x,short y,char *s); 128 | short ShowMessageBox(char *Body,UINT Buttons); 129 | void ShowListBox(short x,short y,short x1,short y1,short index,LCB *lcb); 130 | char *FileBox(char *fName,char *Path,char *rBuf,char *Title,char *ActiveButton); 131 | void TestListBox(void); 132 | short PickList(short x,short y,short x1,short y1,LCB *Anchor); 133 | short CreateSelectPickList(short x,short y,short x1,short y1,short count,char **List,short SortFlag); 134 | short ShowPickList(char **p,short SortFlag); 135 | //============================================================================= 136 | // Prototypes in SETS.C 137 | //============================================================================= 138 | short LoadSet(char *fName); 139 | 140 | -------------------------------------------------------------------------------- /fdemo/assets/fdemo.l01: -------------------------------------------------------------------------------- 1 | ; Description file for ACK-3D demo program 2 | Walls: 3 | 4 | Files: 5 | 1 , wall.bbm 6 | 2 , stone.bbm 7 | 3 , wall3.bbm 8 | 4 , bldg.bbm 9 | 5 , wall3.bbm 10 | 6 , wall3.bbm 11 | 7 , wall3p.bbm 12 | 8 , mine1.bbm 13 | 9 , mine2.bbm 14 | 10,bricks2a.bbm 15 | 11,bricks2b.bbm 16 | 12,bricks2c.bbm 17 | 13,bricks2d.bbm 18 | 14,bricks2e.bbm 19 | 15,bricks2f.bbm 20 | 16,stone1.bbm 21 | 17,stone3.bbm 22 | 18,texture2.bbm 23 | 19,texture3.bbm 24 | 20,brick-x.bbm 25 | 21,mine3.bbm 26 | 22,bricks2.bbm 27 | 23,mine4.bbm 28 | 24,stone4.bbm 29 | 25,floor.bbm 30 | 26,floor1.bbm 31 | 27,floor2.bbm 32 | 28,gwall1.bbm 33 | 29,gwall2.bbm 34 | 30,gwall3.bbm 35 | 31,gwall4.bbm 36 | 32,gwall5.bbm 37 | 33,floor3.bbm 38 | 34,stone5.bbm 39 | 35,red.bbm 40 | 36,grey.bbm 41 | 37,texture4.bbm 42 | 38,blue.bbm 43 | 39,yellow.bbm 44 | 40,green1.bbm 45 | 41,bluewall.bbm 46 | 42,greywall.bbm 47 | 43,grnwall.bbm 48 | 44,brnwall.bbm 49 | 45,ceil1.bbm 50 | 46,ceil2.bbm 51 | 47,pict.bbm 52 | 48,pict2.bbm 53 | 49,wallp.bbm 54 | 50,floor4.bbm 55 | 51,floor5.bbm 56 | 52,floor6.bbm 57 | 53,wallp1.bbm 58 | 54,wallp2.bbm 59 | 55,steel.bbm 60 | 56,steel1.bbm 61 | 57,steel3d.bbm 62 | 58,stones.bbm 63 | 59,bushes.bbm 64 | 60,door.bbm 65 | 61,wall3.bbm 66 | 62,door.bbm 67 | 63,fence.bbm 68 | 64,gpanel.bbm 69 | 65,gpanel1.bbm 70 | 66,icewall.bbm 71 | 67,icewall1.bbm 72 | EndWalls: 73 | 74 | Objects: 75 | Files: 76 | 1 , ball1.bbm 77 | 2 , ball2.bbm 78 | 3 , ball3.bbm 79 | 4 , ball4.bbm 80 | 5 , ball5.bbm 81 | 6 , slime1a.bbm 82 | 7 , slime1b.bbm 83 | 8 , melt1.bbm 84 | 9 , melt2.bbm 85 | 10, melt3.bbm 86 | 11, melt4.bbm 87 | 12, melt5.bbm 88 | 13, melt6.bbm 89 | 14, melt7.bbm 90 | 15, table.bbm 91 | 16, table1.bbm 92 | 17, can.bbm 93 | 18, mach1.bbm 94 | 19, mach2.bbm 95 | 20, mach3.bbm 96 | 21, mach4.bbm 97 | 22, mach5.bbm 98 | 23, mach6.bbm 99 | 24, plant1.bbm 100 | 25, table.bbm 101 | 26, slsh1.bbm 102 | 27, slsh2.bbm 103 | 28, slsh3.bbm 104 | 29, rock.bbm 105 | 30, dev1.bbm 106 | 31, apple1.bbm 107 | 129,plant1.bbm 108 | EndFiles: 109 | 110 | Number: 1 111 | Bitmaps: 1 112 | Direction: 0 113 | Speed: 0 114 | 115 | Number: 2 116 | Bitmaps: 2 117 | Direction: 0 118 | Speed: 0 119 | 120 | Number: 3 121 | Bitmaps: 3 122 | Direction: 0 123 | Speed: 0 124 | 125 | Number: 4 126 | Bitmaps: 4 127 | Direction: 0 128 | Speed: 0 129 | 130 | Number: 5 131 | Bitmaps: 6,7 132 | Direction: 10 133 | Speed: 1 134 | 135 | Number: 6 136 | Bitmaps: 6,7 137 | Direction: 10 138 | Speed: 1 139 | 140 | Number: 7 141 | Bitmaps: 8,9,10,11,12,13,14,14,14,13,12,11,10,9,8 142 | Direction: 10 143 | Speed: 1 144 | 145 | Number: 8 146 | Bitmaps: 8,9,10,11,12,13,14,14,14,13,12,11,10,9,8 147 | Direction: 10 148 | Speed: 1 149 | 150 | Number: 9 151 | Bitmaps: 8,9,10,11,12,13,14,14,14,13,12,11,10,9,8 152 | Direction: 10 153 | Speed: 1 154 | 155 | Number: 10 156 | Bitmaps: 8,9,10,11,12,13,14,14,14,13,12,11,10,9,8 157 | Direction: 10 158 | Speed: 1 159 | 160 | Number: 11 161 | Bitmaps: 8,9,10,11,12,13,14,14,14,13,12,11,10,9,8 162 | Direction: 10 163 | Speed: 1 164 | 165 | Number: 12 166 | Bitmaps: 8,9,10,11,12,13,14,14,14,13,12,11,10,9,8 167 | Direction: 10 168 | Speed: 1 169 | 170 | Number: 13 171 | Bitmaps: 15 172 | Direction: 0 173 | Speed: 0 174 | 175 | Number: 14 176 | Bitmaps: 15 177 | Direction: 0 178 | Speed: 0 179 | 180 | Number: 15 181 | Bitmaps: 15 182 | Direction: 0 183 | Speed: 0 184 | 185 | Number: 16 186 | Bitmaps: 15 187 | Direction: 0 188 | Speed: 0 189 | 190 | Number: 17 191 | Bitmaps: 15 192 | Direction: 0 193 | Speed: 0 194 | 195 | Number: 18 196 | Bitmaps: 16 197 | Direction: 0 198 | Speed: 0 199 | 200 | Number: 19 201 | Bitmaps: 16 202 | Direction: 0 203 | Speed: 0 204 | 205 | Number: 20 206 | Bitmaps: 16 207 | Direction: 0 208 | Speed: 0 209 | 210 | Number: 21 211 | Bitmaps: 17 212 | Direction: 0 213 | Speed: 0 214 | 215 | Number: 22 216 | Bitmaps: 17 217 | Direction: 0 218 | Speed: 0 219 | 220 | Number: 23 221 | Bitmaps: 17 222 | Direction: 0 223 | Speed: 0 224 | 225 | Number: 24 226 | Bitmaps: 18,19,18,19,20,21,22,23,18,19 227 | Direction: 10 228 | Speed: 1 229 | 230 | Number: 25 231 | Bitmaps: 18,19,18,19,20,21,22,23,18,19 232 | Direction: 10 233 | Speed: 1 234 | 235 | Number: 26 236 | Bitmaps: 18,19,18,19,20,21,22,23,18,19 237 | Direction: 10 238 | Speed: 1 239 | 240 | Number: 27 241 | Bitmaps: 18,19,18,19,20,21,22,23,18,19 242 | Direction: 10 243 | Speed: 1 244 | 245 | Number: 28 246 | Bitmaps: 18,19,18,19,20,21,22,23,18,19 247 | Direction: 10 248 | Speed: 1 249 | 250 | Number: 29 251 | Bitmaps: 18,19,18,19,20,21,22,23,18,19 252 | Direction: 10 253 | Speed: 1 254 | 255 | Number: 30 256 | Bitmaps: 129 257 | Direction: 0 258 | Speed: 0 259 | 260 | Number: 31 261 | Bitmaps: 24 262 | Direction: 0 263 | Speed: 0 264 | 265 | Number: 32 266 | Bitmaps: 24 267 | Direction: 0 268 | Speed: 0 269 | 270 | Number: 33 271 | Bitmaps: 25 272 | Direction: 0 273 | Speed: 0 274 | 275 | Number: 34 276 | Bitmaps: 25 277 | Direction: 0 278 | Speed: 0 279 | 280 | Number: 35 281 | Bitmaps: 26 282 | Direction: 10 283 | Speed: 1 284 | 285 | Number: 36 286 | Bitmaps: 29 287 | Direction: 10 288 | Speed: 1 289 | 290 | Number: 37 291 | Bitmaps: 29 292 | Direction: 10 293 | Speed: 1 294 | 295 | Number: 38 296 | Bitmaps: 29 297 | Direction: 10 298 | Speed: 1 299 | 300 | Number: 39 301 | Bitmaps: 29 302 | Direction: 10 303 | Speed: 1 304 | 305 | Number: 40 306 | Bitmaps: 29 307 | Direction: 10 308 | Speed: 1 309 | 310 | Number: 41 311 | Bitmaps: 29 312 | Direction: 10 313 | Speed: 1 314 | 315 | Number: 42 316 | Bitmaps: 29 317 | Direction: 10 318 | Speed: 1 319 | 320 | Number: 43 321 | Bitmaps: 29 322 | Direction: 10 323 | Speed: 1 324 | 325 | Number: 44 326 | Bitmaps: 29 327 | Direction: 10 328 | Speed: 1 329 | 330 | Number: 45 331 | Bitmaps: 29 332 | Direction: 10 333 | Speed: 1 334 | 335 | Number: 46 336 | Bitmaps: 29 337 | Direction: 10 338 | Speed: 1 339 | 340 | Number: 47 341 | Bitmaps: 29 342 | Direction: 10 343 | Speed: 1 344 | 345 | Number: 48 346 | Bitmaps: 29 347 | Direction: 10 348 | Speed: 1 349 | 350 | Number: 49 351 | Bitmaps: 29 352 | Direction: 10 353 | Speed: 1 354 | 355 | Number: 50 356 | Bitmaps: 30 357 | Direction: 10 358 | Speed: 1 359 | 360 | Number: 51 361 | Bitmaps: 31 362 | 363 | Number: 52 364 | Bitmaps: 31 365 | 366 | Number: 53 367 | Bitmaps: 31 368 | 369 | Number: 54 370 | Bitmaps: 31 371 | 372 | Number: 55 373 | Bitmaps: 31 374 | 375 | EndObjects: 376 | 377 | MapFile: fdemo.map 378 | PalFile: fdemo.PAL 379 | 380 | ; Palette ranges - starting color, number of colors 381 | RANGE: 16,16 382 | RANGE: 32,16 383 | RANGE: 48,16 384 | RANGE: 64,16 385 | RANGE: 80,16 386 | RANGE: 96,8 387 | RANGE: 104,8 388 | RANGE: 112,8 389 | RANGE: 120,8 390 | RANGE: 128,8 391 | RANGE: 136,8 392 | RANGE: 144,8 393 | RANGE: 152,8 394 | RANGE: 160,8 395 | RANGE: 168,8 396 | RANGE: 176,8 397 | RANGE: 184,8 398 | RANGE: 192,16 399 | RANGE: 208,16 400 | RANGE: 224,8 401 | RANGE: 232,8 402 | 403 |  -------------------------------------------------------------------------------- /ack_lib/ACKIFF.C: -------------------------------------------------------------------------------- 1 | // This source file contains the functions needed to read in BBM files. 2 | // (c) 1995 ACK Software (Lary Myers) 3 | //============================================================================= 4 | // This function will return a pointer to a buffer that holds the raw image. 5 | // just free the pointer to delete this buffer. After returning, the array 6 | // colordat will hold the adjusted palette of this pic. 7 | // 8 | // Also, this has been modified to only read in form PBM brushes. form ILBM's 9 | // (the "old" type) are not supported. use the "new" deluxe paint .lbm type 10 | // and do not choose "old". 11 | //============================================================================= 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | 19 | #include "ack3d.h" 20 | #include "ackeng.h" 21 | #include "ackext.h" 22 | #include "iff.h" 23 | 24 | extern char rsName[]; 25 | 26 | unsigned char colordat[768]; /* maximum it can be...256 colors */ 27 | 28 | unsigned char cplanes[8][80]; /* setting max at 640 pixels width */ 29 | /* thats 8 pixels per byte per plane */ 30 | unsigned char *pplanes= &cplanes[0][0]; /* for a form pbm */ 31 | 32 | #define MAX_BUF_POS 4096 33 | 34 | int rdbufpos; 35 | int rdSize; 36 | UCHAR rdBuffer[MAX_BUF_POS+2]; 37 | 38 | short ReadNxtBlock(short handle) 39 | { 40 | short retlen; 41 | 42 | retlen = read(handle,rdBuffer,MAX_BUF_POS); 43 | rdbufpos = 0; 44 | 45 | return(retlen); 46 | } 47 | 48 | //============================================================================= 49 | // 50 | //============================================================================= 51 | void CloseFile(FILE *fp) 52 | { 53 | 54 | fclose(fp); 55 | if (rsHandle) 56 | { 57 | rsHandle = open(rsName,O_RDONLY|O_BINARY); 58 | if (rsHandle < 1) 59 | rsHandle = 0; 60 | } 61 | 62 | } 63 | 64 | 65 | unsigned char *AckReadiff(char *picname) 66 | { 67 | FILE *pic; 68 | short handle; 69 | form_chunk fchunk; 70 | ChunkHeader chunk; 71 | BitMapHeader bmhd; 72 | long length; 73 | char value; /* must remain signed, no matter what. ignore any warnings. */ 74 | short sofar; 75 | short width,height,planes; 76 | short pixw; 77 | unsigned char *destx, *savedestx; 78 | 79 | rdbufpos = MAX_BUF_POS + 1; 80 | rdSize = MAX_BUF_POS; 81 | 82 | if (!rsHandle) 83 | { 84 | if ((pic = fopen(picname,"rb")) == NULL) 85 | { 86 | ErrorCode = ERR_BADPICNAME; 87 | return(0L); 88 | } 89 | } 90 | else 91 | { 92 | pic = fdopen(rsHandle,"rb"); 93 | if (pic == NULL) 94 | { 95 | ErrorCode = ERR_BADPICNAME; 96 | return(0L); 97 | } 98 | 99 | fseek(pic,rbaTable[(ULONG)picname],SEEK_SET); 100 | } 101 | fread(&fchunk,1,sizeof(form_chunk),pic); /* read in the first 12 bytes*/ 102 | 103 | if (fchunk.type != FORM) 104 | { 105 | CloseFile(pic); 106 | ErrorCode = ERR_INVALIDFORM; 107 | return(0L); 108 | } 109 | 110 | if (fchunk.subtype != ID_PBM) 111 | { 112 | CloseFile(pic); 113 | ErrorCode = ERR_NOPBM; 114 | return(0L); 115 | } 116 | /* now lets loop...Because the Chunks can be in any order! */ 117 | while(1) 118 | { 119 | fread(&chunk,1,sizeof(ChunkHeader),pic); 120 | chunk.ckSize = ByteFlipLong(chunk.ckSize); 121 | if (chunk.ckSize & 1) chunk.ckSize ++; /* must be word aligned */ 122 | if(chunk.ckID == ID_BMHD) 123 | { 124 | fread(&bmhd,1,sizeof(BitMapHeader),pic); 125 | bmhd.w=iffswab(bmhd.w); /* the only things we need. */ 126 | bmhd.h=iffswab(bmhd.h); 127 | destx = (unsigned char *)AckMalloc((bmhd.w * bmhd.h)+4); 128 | if ( !destx ) 129 | { 130 | CloseFile(pic); 131 | ErrorCode = ERR_NOMEMORY; 132 | return(0L); 133 | } 134 | 135 | savedestx = destx; 136 | 137 | destx[0] = bmhd.w%256; 138 | destx[1] = bmhd.w/256; 139 | destx[2] = bmhd.h%256; 140 | destx[3] = bmhd.h/256; 141 | destx += 4; 142 | continue; 143 | } 144 | if(chunk.ckID == ID_CMAP) 145 | { 146 | short i; 147 | unsigned char r,g; 148 | 149 | fread(colordat,1,chunk.ckSize,pic); 150 | for (i=0;i<768;i++) 151 | { 152 | r = colordat[i]; /* r,g do not stand for red and green */ 153 | g = r >> 2; 154 | colordat[i] = g; 155 | } 156 | continue; 157 | } 158 | if(chunk.ckID == ID_BODY) 159 | { 160 | for(height = 0; height 0) 172 | { 173 | short len; 174 | len = value +1; 175 | sofar -= len; 176 | if(!(fread(dest,len,1,pic))) 177 | { 178 | CloseFile(pic); 179 | ErrorCode = ERR_BADPICFILE; 180 | AckFree(savedestx); 181 | return(0L); 182 | } 183 | dest +=len; 184 | } 185 | else 186 | { 187 | short count; 188 | count = -value; /* get amount to dup */ 189 | count ++; 190 | sofar -= count; 191 | value=fgetc(pic); 192 | while (--count >= 0) *dest++ = value; 193 | } 194 | } 195 | else 196 | { 197 | fread(dest,sofar,1,pic); /* just throw on plane */ 198 | sofar = 0; 199 | } 200 | } 201 | if (sofar < 0) 202 | { 203 | CloseFile(pic); 204 | } 205 | _fmemcpy(destx,pplanes,bmhd.w); 206 | destx += bmhd.w; 207 | } 208 | break; /* leave if we've unpacked the BODY*/ 209 | } 210 | 211 | fseek(pic,chunk.ckSize,SEEK_CUR); 212 | } 213 | 214 | CloseFile(pic); 215 | return((unsigned char *)savedestx); 216 | } 217 | 218 | long ByteFlipLong(long NUMBER) 219 | { 220 | /* Hey, I didn;t write this function!!! */ 221 | long Y, T; 222 | short I; 223 | 224 | T = NUMBER; 225 | Y=0;for (I=0;I<4;I++){Y = Y | (T & 0xFF);if (I<3) {Y = Y << 8;T = T >> 8;}} 226 | return(Y); 227 | } 228 | 229 | short iffswab(unsigned short number) 230 | { 231 | unsigned short xx1,xx2; 232 | unsigned short result; 233 | 234 | xx1 = number <<8; xx2 = number >>8; result = xx1|xx2; 235 | return(result); 236 | } 237 | // **** End of Source **** 238 | 239 | -------------------------------------------------------------------------------- /ack_lib/ACKGIF.C: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | ACKGIF.C 3 | 4 | 5 | #include 6 | 7 | Routine to load a 256 color .GIF file into a memory buffer. *Only* 256 8 | color images are supported here! Sorry, no routines to SAVE .GIFs... 9 | Memory required is allocated on the fly. 10 | 11 | Mark Morley 12 | morley@camosun.bc.ca 13 | 14 | Modified for use in the ACK environment by Lary Myers 15 | 16 | *****************************************************************************/ 17 | 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include "ack3d.h" 24 | #include "ackeng.h" 25 | #include "ackext.h" 26 | 27 | #define MAX_CODES 4096 28 | 29 | extern unsigned char colordat[]; // Palette buffer in AckReadiff module 30 | 31 | 32 | static FILE* fp; 33 | static short curr_size; 34 | static short clear; 35 | static short ending; 36 | static short newcodes; 37 | static short top_slot; 38 | static short slot; 39 | static short navail_bytes = 0; 40 | static short nbits_left = 0; 41 | static unsigned char b1; 42 | static unsigned char byte_buff[257]; 43 | static unsigned char* pbytes; 44 | static unsigned char* stack; 45 | static unsigned char* suffix; 46 | static unsigned short* prefix; 47 | 48 | static unsigned long code_mask[13] = 49 | { 50 | 0L, 51 | 0x0001L, 0x0003L, 52 | 0x0007L, 0x000FL, 53 | 0x001FL, 0x003FL, 54 | 0x007FL, 0x00FFL, 55 | 0x01FFL, 0x03FFL, 56 | 0x07FFL, 0x0FFFL 57 | }; 58 | 59 | //============================================================================= 60 | // 61 | //============================================================================= 62 | static short get_next_code(void) 63 | { 64 | short i; 65 | static unsigned long ret; 66 | 67 | if (!nbits_left) 68 | { 69 | if (navail_bytes <= 0) 70 | { 71 | pbytes = byte_buff; 72 | navail_bytes = getc(fp); 73 | 74 | if (navail_bytes) 75 | { 76 | for (i = 0; i < navail_bytes; ++i ) 77 | *(byte_buff + i) = getc( fp ); 78 | } 79 | } 80 | b1 = *pbytes++; 81 | nbits_left = 8; 82 | --navail_bytes; 83 | } 84 | 85 | ret = b1 >> (8 - nbits_left); 86 | while (curr_size > nbits_left) 87 | { 88 | if (navail_bytes <= 0) 89 | { 90 | pbytes = byte_buff; 91 | navail_bytes = getc(fp); 92 | if (navail_bytes) 93 | { 94 | for( i = 0; i < navail_bytes; ++i ) 95 | *(byte_buff + i) = getc( fp ); 96 | } 97 | } 98 | b1 = *pbytes++; 99 | ret |= b1 << nbits_left; 100 | nbits_left += 8; 101 | --navail_bytes; 102 | } 103 | 104 | nbits_left -= curr_size; 105 | 106 | return((short)(ret & *(code_mask + curr_size))); 107 | } 108 | 109 | 110 | //============================================================================= 111 | // 112 | //============================================================================= 113 | unsigned char *AckReadgif(char *picname) 114 | { 115 | unsigned char *sp; 116 | unsigned char *buffer,*OrgBuffer; 117 | short code, fc, oc; 118 | short i; 119 | unsigned char size; 120 | short c; 121 | unsigned short wt,ht; 122 | int bSize; 123 | unsigned char buf[1028]; 124 | unsigned char red; 125 | unsigned char grn; 126 | unsigned char blu; 127 | 128 | 129 | if (!rsHandle) 130 | { 131 | fp = fopen(picname,"rb"); 132 | if( !fp ) 133 | { 134 | ErrorCode = ERR_BADFILE; 135 | return(NULL); 136 | } 137 | } 138 | else 139 | { 140 | fp = fdopen(rsHandle,"rb"); 141 | if (fp == NULL) 142 | { 143 | ErrorCode = ERR_BADPICNAME; 144 | return(0L); 145 | } 146 | 147 | fseek(fp,rbaTable[(ULONG)picname],SEEK_SET); 148 | } 149 | 150 | fread(buf,1,6,fp); 151 | if( strncmp( (char*)buf, "GIF", 3 ) ) 152 | { 153 | if (!rsHandle) 154 | fclose(fp); 155 | 156 | ErrorCode = ERR_INVALIDFORM; 157 | return(NULL); 158 | } 159 | 160 | fread(buf,1,7,fp); 161 | for (i = 0; i < 768;) 162 | { 163 | red = getc(fp); 164 | grn = getc(fp); 165 | blu = getc(fp); 166 | colordat[i++] = red >> 2; 167 | colordat[i++] = grn >> 2; 168 | colordat[i++] = blu >> 2; 169 | } 170 | 171 | fread(buf,1,5,fp); 172 | fread(buf,1,2,fp); 173 | wt = (*(short *)buf); 174 | fread(buf,1,2,fp); 175 | ht = (*(short *)buf); 176 | //wt = getw(fp); 177 | //ht = getw(fp); 178 | bSize = (ht * wt) + (sizeof(short) * 2); 179 | buffer = (UCHAR *)AckMalloc(bSize); 180 | if (buffer == NULL) 181 | { 182 | if (!rsHandle) 183 | fclose(fp); 184 | 185 | ErrorCode = ERR_NOMEMORY; 186 | return(NULL); 187 | } 188 | 189 | OrgBuffer = buffer; 190 | 191 | (*(short *)buffer) = wt; 192 | buffer += sizeof(short); 193 | (*(short *)buffer) = ht; 194 | buffer += sizeof(short); 195 | 196 | fread(buf,1,1,fp); 197 | size = getc(fp); 198 | 199 | if (size < 2 || 9 < size) 200 | { 201 | if (!rsHandle) 202 | fclose(fp); 203 | AckFree(OrgBuffer); 204 | ErrorCode = ERR_INVALIDFORM; 205 | return(NULL); 206 | } 207 | 208 | stack = (unsigned char *) AckMalloc(MAX_CODES + 1); 209 | suffix = (unsigned char *) AckMalloc(MAX_CODES + 1); 210 | prefix = (unsigned short *) AckMalloc(sizeof(short) * (MAX_CODES + 1)); 211 | 212 | if (stack == NULL || suffix == NULL || prefix == NULL) 213 | { 214 | if (!rsHandle) 215 | fclose(fp); 216 | AckFree(OrgBuffer); 217 | ErrorCode = ERR_NOMEMORY; 218 | return(NULL); 219 | } 220 | 221 | curr_size = size + 1; 222 | top_slot = 1 << curr_size; 223 | clear = 1 << size; 224 | ending = clear + 1; 225 | slot = newcodes = ending + 1; 226 | navail_bytes = nbits_left = 0; 227 | oc = fc = 0; 228 | sp = stack; 229 | 230 | while ( (c = get_next_code()) != ending ) 231 | { 232 | if (c == clear) 233 | { 234 | curr_size = size + 1; 235 | slot = newcodes; 236 | top_slot = 1 << curr_size; 237 | while ( (c = get_next_code()) == clear ); 238 | 239 | if( c == ending ) 240 | break; 241 | 242 | if( c >= slot ) 243 | c = 0; 244 | 245 | oc = fc = c; 246 | *buffer++ = c; 247 | } 248 | else 249 | { 250 | code = c; 251 | if (code >= slot) 252 | { 253 | code = oc; 254 | *sp++ = fc; 255 | } 256 | 257 | while (code >= newcodes) 258 | { 259 | *sp++ = *(suffix + code); 260 | code = *(prefix + code); 261 | } 262 | 263 | *sp++ = code; 264 | if (slot < top_slot) 265 | { 266 | *(suffix + slot) = fc = code; 267 | *(prefix + slot++) = oc; 268 | oc = c; 269 | } 270 | 271 | if (slot >= top_slot && curr_size < 12) 272 | { 273 | top_slot <<= 1; 274 | ++curr_size; 275 | } 276 | 277 | while (sp > stack) 278 | { 279 | --sp; 280 | *buffer++ = *sp; 281 | } 282 | } 283 | } 284 | 285 | AckFree(stack); 286 | AckFree(suffix); 287 | AckFree(prefix); 288 | 289 | if (!rsHandle) 290 | fclose(fp); 291 | 292 | return(OrgBuffer); 293 | } 294 | -------------------------------------------------------------------------------- /map_edit/m1.h: -------------------------------------------------------------------------------- 1 | // Header file for ACK-3D Map Editor 2 | // Author: Lary Myers 3 | // Copyright (c) 1994 4 | 5 | #ifndef M1_H_INCLUDED 6 | #define M1_H_INCLUDED 7 | 8 | #define RES_SMFONT 0 // Resource ID's 9 | #define RES_MDFONT 1 10 | #define RES_2DSCREEN 2 11 | #define RES_3DSCREEN 3 12 | #define RES_SELSCREEN 4 13 | 14 | 15 | #define BM_X 272 16 | #define BM_Y 17 17 | 18 | #define BM_NUM_X 308 19 | #define BM_NUM_Y 30 20 | 21 | #define MAP_X 0 22 | #define MAP_Y 0 23 | #define MAP_X1 256 24 | #define MAP_Y1 160 25 | 26 | #define MINI_X 255 27 | #define MINI_Y 135 28 | #define MINI_X1 (MINI_X+63) 29 | #define MINI_Y1 (MINI_Y+63) 30 | 31 | #define MAPXY_X 217 32 | #define MAPXY_Y 165 33 | #define MAPXY_X1 231 34 | #define MAPXY_Y1 165 35 | 36 | #define CURXY_X 217 37 | #define CURXY_Y 173 38 | #define CURXY_X1 231 39 | #define CURXY_Y1 173 40 | 41 | #define GD_FWT 32 42 | #define GD_FHT 32 43 | #define GD_HWT 16 44 | #define GD_HHT 16 45 | 46 | #define VM_2D 0 // View mode is 2D 47 | #define VM_3D 1 // View mode is 3D 48 | 49 | #define VT_MAP 0 // Viewing map 50 | #define VT_FLOOR 1 // Viewing floor 51 | #define VT_CEIL 2 // Viewing ceiling 52 | 53 | 54 | #define ED_WALLS 0 // Editing walls 55 | #define ED_OBJECTS 1 // Editing objects 56 | 57 | #define AI_UP 1 // Action index's 58 | #define AI_RIGHT 2 59 | #define AI_DOWN 3 60 | #define AI_LEFT 4 61 | #define AI_MINI 5 62 | #define AI_SELECT 6 63 | #define AI_VIEW 7 64 | #define AI_FLOORS 8 65 | #define AI_SAVE 9 66 | #define AI_MAP 10 67 | #define AI_WALLS 11 68 | #define AI_CEILING 12 69 | #define AI_OBJECTS 13 70 | #define AI_OPTIONS 14 71 | #define AI_EDITWIN 15 72 | #define AI_BM_UP 16 73 | #define AI_BM_DOWN 17 74 | #define AI_EXIT 99 75 | 76 | #define OPT_NORMAL 0 // Selectable option ID's 77 | #define OPT_SLIDING 1 78 | #define OPT_SPLIT 2 79 | #define OPT_SECRET 3 80 | #define OPT_LOCKED 4 81 | #define OPT_TRANS 5 82 | #define OPT_MULTI 6 83 | #define OPT_RAISED 7 84 | #define OPT_CANCEL 8 85 | #define OPT_FILL 9 86 | #define OPT_BORDER 10 87 | #define OPT_CLEAR 11 88 | #define OPT_PASSABLE 12 89 | #define OPT_PALETTE 13 90 | #define OPT_MAPPAL 14 91 | 92 | #define OPT_MAX 15 // Total number of options above 93 | 94 | 95 | #define BM_COLOR_X 261 // Current bitmap color coordinates 96 | #define BM_COLOR_Y 17 97 | #define BM_COLOR_X1 267 98 | #define BM_COLOR_Y1 48 99 | 100 | typedef struct { 101 | short Action; 102 | short x; 103 | short y; 104 | short x1; 105 | short y1; 106 | } HS; 107 | 108 | typedef struct { 109 | short id; 110 | int xBias; 111 | int yBias; 112 | UCHAR Flags; 113 | char *Text; 114 | } OPTS; 115 | 116 | #define OPTF_CHECKED 0x80 // Button will have a checkmark 117 | 118 | 119 | #define VIDSEG (UCHAR *)0xA0000 120 | 121 | #define MAX_MULTI 3 122 | 123 | #define KEY_ESC 0x011B 124 | #define KEY_SPACE 0x3920 125 | #define KEY_F2 0x3C00 126 | #define KEY_F3 0x3D00 127 | #define KEY_UP 0x4800 128 | #define KEY_RIGHT 0x4D00 129 | #define KEY_DOWN 0x5000 130 | #define KEY_LEFT 0x4B00 131 | #define KEY_PGUP 0x4900 132 | #define KEY_PGDN 0x5100 133 | 134 | //============================================================================= 135 | // Prototypes; 136 | //============================================================================= 137 | 138 | //----------------------------------------------------------------------------- 139 | // Functions in mouse.c 140 | //----------------------------------------------------------------------------- 141 | short MouseInstalled(void); 142 | void ShowMouse(void); 143 | void HideMouse(void); 144 | short ReadMouseCursor(short *mrow,short *mcol); 145 | short ReadMouseButtons(void); 146 | void SetMouseCursor(short mrow,short mcol); 147 | void SetMouseMinMaxColumns(short mincol,short maxcol); 148 | void SetMouseMinMaxRows(short minrow,short maxrow); 149 | void SetMouseShape(short hsrow,short hscol,char far *mask); 150 | void MouseReleased(void); 151 | 152 | //----------------------------------------------------------------------------- 153 | // Functions in m1.c 154 | //----------------------------------------------------------------------------- 155 | extern char assetsPath[]; 156 | extern char exePath[]; 157 | extern char tempFilename[]; 158 | 159 | void FindFilePaths(const char *exeFile, const char *descFile); 160 | char* GetCombinedPath(const char *base, const char *file); 161 | short GetAction(short mx,short my); 162 | short GetSelAction(short mx,short my); 163 | void DrawYline(int x,int y); 164 | void DrawXline(int x,int y); 165 | void DrawGridBlock(int x,int y); 166 | void DrawYbitmap(int x,int y,UCHAR *bm,UCHAR Shade,int TransFlag); 167 | void DrawXbitmap(int x,int y,UCHAR *bm,UCHAR Shade,int TransFlag); 168 | void ClearGridArea(UCHAR *BufPtr); 169 | void RefreshGrid(void); 170 | void DrawGrid3D(void); 171 | void Draw2Dxline(int x,int y,UCHAR color); 172 | void DrawxLineMulti(int x,int y,UCHAR color); 173 | void Draw2Dyline(int x,int y,UCHAR color); 174 | void DrawyLineMulti(int x,int y,UCHAR color); 175 | void DrawGrid2D(void); 176 | void DrawTinyBitmap(int x,int y,UCHAR *bm); 177 | void DrawFloorCeil(void); 178 | void DrawObjects(void); 179 | void DrawGrid(void); 180 | void ShowScreen(char *Name); 181 | void ShowBitmap(int x,int y,UCHAR *bm); 182 | short LoadGridMap(char *Name); 183 | short SaveGridMap(char *Name); 184 | void ShowCurrentBitmap(void); 185 | short GetActionIndex(short action); 186 | void PressButton(short ActionCode); 187 | void ReleaseButton(short ActionCode); 188 | void UpdateScreen(void); 189 | int GetGridPos(short mx,short my); 190 | void PutCode(short mx,short my); 191 | void UpdatePosn(short mx,short my); 192 | void ShowSelBitmaps(UCHAR bCode); 193 | int SelectScreen(void); 194 | UCHAR GetIndexColor(short index); 195 | UCHAR GetIndexColor2(short index); 196 | void DrawBackBox(int x,int y,int x1,int y1); 197 | void ShowButtons(OPTS *op,HS *hs,int x,int y,int xAmt,int yAmt); 198 | int ShowOptions(void); 199 | void FillMap(UCHAR bCode); 200 | void DrawArrow(int x,int y,UCHAR color); 201 | int SelectGridBox(void); 202 | void EditMulti(int mode,short mx,short my); 203 | 204 | //----------------------------------------------------------------------------- 205 | // Functions in m1util.c 206 | //----------------------------------------------------------------------------- 207 | void SoundBeep(void); 208 | short LoadSmallFont(void); 209 | short LoadMedFont(void); 210 | void mdWriteChar(short x,short y,unsigned char ch); 211 | short mdWriteString(short x,short y,char *s); 212 | void smWriteChar(short x,short y,unsigned char ch); 213 | short smWriteString(short x,short y,char *s); 214 | void smWriteHUD(short x,short y,UCHAR color,char *s); 215 | void BlitBlock(int x,int y,int x1,int y1,UCHAR *buf); 216 | void DrawFillBox(int x,int y,int x1,int y1,UCHAR color); 217 | void DrawHorzLine(int x,int y,int x1,UCHAR color); 218 | void DrawVertLine(int x,int y,int y1,UCHAR color); 219 | void DrawBox(int x,int y,int x1,int y1,UCHAR color); 220 | UCHAR GetColor(int x,int y); 221 | void SaveVideo(UCHAR *buf); 222 | void RestoreVideo(UCHAR *buf); 223 | void CreateButton(int x,int y,HS *hs,char *s); 224 | int QueryBox(int x,int y,char *Msg); 225 | 226 | //----------------------------------------------------------------------------- 227 | // Functions in m1read.c 228 | //----------------------------------------------------------------------------- 229 | short LoadDescFile(char *fName); 230 | 231 | #endif 232 | 233 | -------------------------------------------------------------------------------- /example/assets/example.med: -------------------------------------------------------------------------------- 1 | ; Description file for ACK-3D DOS Map Editor 2 | Walls: 3 | 4 | Files: 5 | 1,bars.pcx 6 | 2,blue.pcx 7 | 3,bluewall.pcx 8 | 4,brkwall.pcx 9 | 5,brkwin.pcx 10 | 6,brnwall2.pcx 11 | 7,ceil1.pcx 12 | 8,ceil2.pcx 13 | 9,chisel.pcx 14 | 10,diag.pcx 15 | 11,diamond.pcx 16 | 12,fence.pcx 17 | 13,floor1.pcx 18 | 14,floor2.pcx 19 | 15,g13.pcx 20 | 16,g9.pcx 21 | 17,green1.pcx 22 | 18,pave.pcx 23 | 19,redwall.pcx 24 | 20,redwin.pcx 25 | 21,safe.pcx 26 | 22,scont.pcx 27 | 23,screw.pcx 28 | 24,sdoor1.pcx 29 | 25,sside.pcx 30 | 26,stone.pcx 31 | 27,stone1.pcx 32 | 28,stone2.pcx 33 | 29,swall11.pcx 34 | 30,swall12.pcx 35 | 31,swall13.pcx 36 | 32,swall15.pcx 37 | 33,swall16.pcx 38 | 34,swall17.pcx 39 | 35,swall22.pcx 40 | 36,wall.pcx 41 | 37,wall1.pcx 42 | 38,wall2.pcx 43 | 39,wallp2.pcx 44 | 40,danger.pcx 45 | 41,ceillght.pcx 46 | 42,floorlgt.pcx 47 | 43,grey.pcx 48 | 44,mine1.pcx 49 | 45,mine2.pcx 50 | 46,mine4.pcx 51 | 47,texture3.pcx 52 | 48,texture4.pcx 53 | EndWalls: 54 | 55 | Objects: 56 | Files: 57 | 1,bed.pcx 58 | 2,plant1.pcx 59 | 3,table.pcx 60 | 4,table1.pcx 61 | 5,can1.pcx 62 | 6,can2.pcx 63 | 7,can3.pcx 64 | 8,can4.pcx 65 | 9,cons1.pcx 66 | 10,cons2.pcx 67 | 11,cons3.pcx 68 | 12,cons4.pcx 69 | 13,fern.pcx 70 | 14,slime1a.pcx 71 | EndFiles: 72 | 73 | ; trees 74 | 75 | Number: 1 76 | Bitmaps: 2 77 | Direction: 0 78 | Speed: 0 79 | 80 | Number: 2 81 | Bitmaps: 2 82 | Direction: 0 83 | Speed: 0 84 | 85 | Number: 3 86 | Bitmaps: 2 87 | Direction: 0 88 | Speed: 0 89 | 90 | Number: 4 91 | Bitmaps: 2 92 | Direction: 0 93 | Speed: 0 94 | 95 | Number: 5 96 | Bitmaps: 2 97 | Direction: 0 98 | Speed: 0 99 | 100 | Number: 6 101 | Bitmaps: 2 102 | Direction: 0 103 | Speed: 0 104 | 105 | Number: 7 106 | Bitmaps: 2 107 | Direction: 0 108 | Speed: 0 109 | 110 | Number: 8 111 | Bitmaps: 2 112 | Direction: 0 113 | Speed: 0 114 | 115 | Number: 9 116 | Bitmaps: 2 117 | Direction: 0 118 | Speed: 0 119 | 120 | Number: 10 121 | Bitmaps: 2 122 | Direction: 0 123 | Speed: 0 124 | 125 | ; ferns 126 | 127 | Number: 11 128 | Bitmaps: 13 129 | Direction: 0 130 | Speed: 0 131 | 132 | Number: 12 133 | Bitmaps: 13 134 | Direction: 0 135 | Speed: 0 136 | 137 | Number: 13 138 | Bitmaps: 13 139 | Direction: 0 140 | Speed: 0 141 | 142 | Number: 14 143 | Bitmaps: 13 144 | Direction: 0 145 | Speed: 0 146 | 147 | Number: 15 148 | Bitmaps: 13 149 | Direction: 0 150 | Speed: 0 151 | 152 | Number: 16 153 | Bitmaps: 13 154 | Direction: 0 155 | Speed: 0 156 | 157 | Number: 17 158 | Bitmaps: 13 159 | Direction: 0 160 | Speed: 0 161 | 162 | Number: 18 163 | Bitmaps: 13 164 | Direction: 0 165 | Speed: 0 166 | 167 | Number: 19 168 | Bitmaps: 13 169 | Direction: 0 170 | Speed: 0 171 | 172 | Number: 20 173 | Bitmaps: 13 174 | Direction: 0 175 | Speed: 0 176 | 177 | ; beds 178 | 179 | Number: 21 180 | Bitmaps: 1 181 | Direction: 0 182 | Speed: 0 183 | 184 | Number: 22 185 | Bitmaps: 1 186 | Direction: 0 187 | Speed: 0 188 | 189 | Number: 23 190 | Bitmaps: 1 191 | Direction: 0 192 | Speed: 0 193 | 194 | Number: 24 195 | Bitmaps: 1 196 | Direction: 0 197 | Speed: 0 198 | 199 | Number: 25 200 | Bitmaps: 1 201 | Direction: 0 202 | Speed: 0 203 | 204 | Number: 26 205 | Bitmaps: 1 206 | Direction: 0 207 | Speed: 0 208 | 209 | Number: 27 210 | Bitmaps: 1 211 | Direction: 0 212 | Speed: 0 213 | 214 | Number: 28 215 | Bitmaps: 1 216 | Direction: 0 217 | Speed: 0 218 | 219 | Number: 29 220 | Bitmaps: 1 221 | Direction: 0 222 | Speed: 0 223 | 224 | Number: 30 225 | Bitmaps: 1 226 | Direction: 0 227 | Speed: 0 228 | 229 | ; tables (2-chair) 230 | 231 | Number: 31 232 | Bitmaps: 3 233 | Direction: 0 234 | Speed: 0 235 | 236 | Number: 32 237 | Bitmaps: 3 238 | Direction: 0 239 | Speed: 0 240 | 241 | Number: 33 242 | Bitmaps: 3 243 | Direction: 0 244 | Speed: 0 245 | 246 | Number: 34 247 | Bitmaps: 3 248 | Direction: 0 249 | Speed: 0 250 | 251 | Number: 35 252 | Bitmaps: 3 253 | Direction: 0 254 | Speed: 0 255 | 256 | Number: 36 257 | Bitmaps: 3 258 | Direction: 0 259 | Speed: 0 260 | 261 | Number: 37 262 | Bitmaps: 3 263 | Direction: 0 264 | Speed: 0 265 | 266 | Number: 38 267 | Bitmaps: 3 268 | Direction: 0 269 | Speed: 0 270 | 271 | Number: 39 272 | Bitmaps: 3 273 | Direction: 0 274 | Speed: 0 275 | 276 | Number: 40 277 | Bitmaps: 3 278 | Direction: 0 279 | Speed: 0 280 | 281 | ; tables (1-chair) 282 | 283 | Number: 41 284 | Bitmaps: 4 285 | Direction: 0 286 | Speed: 0 287 | 288 | Number: 42 289 | Bitmaps: 4 290 | Direction: 0 291 | Speed: 0 292 | 293 | Number: 43 294 | Bitmaps: 4 295 | Direction: 0 296 | Speed: 0 297 | 298 | Number: 44 299 | Bitmaps: 4 300 | Direction: 0 301 | Speed: 0 302 | 303 | Number: 45 304 | Bitmaps: 4 305 | Direction: 0 306 | Speed: 0 307 | 308 | Number: 46 309 | Bitmaps: 4 310 | Direction: 0 311 | Speed: 0 312 | 313 | Number: 47 314 | Bitmaps: 4 315 | Direction: 0 316 | Speed: 0 317 | 318 | Number: 48 319 | Bitmaps: 4 320 | Direction: 0 321 | Speed: 0 322 | 323 | Number: 49 324 | Bitmaps: 4 325 | Direction: 0 326 | Speed: 0 327 | 328 | Number: 50 329 | Bitmaps: 4 330 | Direction: 0 331 | Speed: 0 332 | 333 | ; cans 334 | 335 | Number: 51 336 | Bitmaps: 5 337 | Direction: 0 338 | Speed: 0 339 | 340 | Number: 52 341 | Bitmaps: 5 342 | Direction: 0 343 | Speed: 0 344 | 345 | Number: 53 346 | Bitmaps: 5 347 | Direction: 0 348 | Speed: 0 349 | 350 | Number: 54 351 | Bitmaps: 5 352 | Direction: 0 353 | Speed: 0 354 | 355 | Number: 55 356 | Bitmaps: 5 357 | Direction: 0 358 | Speed: 0 359 | 360 | Number: 56 361 | Bitmaps: 5 362 | Direction: 0 363 | Speed: 0 364 | 365 | Number: 57 366 | Bitmaps: 5 367 | Direction: 0 368 | Speed: 0 369 | 370 | Number: 58 371 | Bitmaps: 5 372 | Direction: 0 373 | Speed: 0 374 | 375 | Number: 59 376 | Bitmaps: 5 377 | Direction: 0 378 | Speed: 0 379 | 380 | Number: 60 381 | Bitmaps: 5 382 | Direction: 0 383 | Speed: 0 384 | 385 | ; computer console 386 | 387 | Number: 61 388 | Bitmaps: 9 389 | Direction: 0 390 | Speed: 0 391 | 392 | Number: 62 393 | Bitmaps: 9 394 | Direction: 0 395 | Speed: 0 396 | 397 | Number: 63 398 | Bitmaps: 9 399 | Direction: 0 400 | Speed: 0 401 | 402 | Number: 64 403 | Bitmaps: 9 404 | Direction: 0 405 | Speed: 0 406 | 407 | Number: 65 408 | Bitmaps: 9 409 | Direction: 0 410 | Speed: 0 411 | 412 | Number: 66 413 | Bitmaps: 9 414 | Direction: 0 415 | Speed: 0 416 | 417 | Number: 67 418 | Bitmaps: 9 419 | Direction: 0 420 | Speed: 0 421 | 422 | Number: 68 423 | Bitmaps: 9 424 | Direction: 0 425 | Speed: 0 426 | 427 | Number: 69 428 | Bitmaps: 9 429 | Direction: 0 430 | Speed: 0 431 | 432 | Number: 70 433 | Bitmaps: 9 434 | Direction: 0 435 | Speed: 0 436 | 437 | ; slime monsters 438 | 439 | Number: 71 440 | Bitmaps: 14 441 | Direction: 0 442 | Speed: 0 443 | 444 | Number: 72 445 | Bitmaps: 14 446 | Direction: 0 447 | Speed: 0 448 | 449 | Number: 73 450 | Bitmaps: 14 451 | Direction: 0 452 | Speed: 0 453 | 454 | Number: 74 455 | Bitmaps: 14 456 | Direction: 0 457 | Speed: 0 458 | 459 | Number: 75 460 | Bitmaps: 14 461 | Direction: 0 462 | Speed: 0 463 | 464 | Number: 76 465 | Bitmaps: 14 466 | Direction: 0 467 | Speed: 0 468 | 469 | Number: 77 470 | Bitmaps: 14 471 | Direction: 0 472 | Speed: 0 473 | 474 | Number: 78 475 | Bitmaps: 14 476 | Direction: 0 477 | Speed: 0 478 | 479 | Number: 79 480 | Bitmaps: 14 481 | Direction: 0 482 | Speed: 0 483 | 484 | Number: 80 485 | Bitmaps: 14 486 | Direction: 0 487 | Speed: 0 488 | 489 | 490 | EndObjects: 491 | 492 | MapFile: example.map 493 | PalFile: example.pal 494 | 495 | ; Palette ranges - starting color, number of colors 496 | RANGE: 16,16 497 | RANGE: 32,16 498 | RANGE: 48,16 499 | RANGE: 64,16 500 | RANGE: 80,16 501 | RANGE: 96,8 502 | RANGE: 104,8 503 | RANGE: 112,8 504 | RANGE: 120,8 505 | RANGE: 128,8 506 | RANGE: 136,8 507 | RANGE: 144,8 508 | RANGE: 152,8 509 | RANGE: 160,8 510 | RANGE: 168,8 511 | RANGE: 176,8 512 | RANGE: 184,8 513 | RANGE: 192,16 514 | RANGE: 208,16 515 | RANGE: 224,8 516 | RANGE: 232,8 517 | 518 | --------------------------------------------------------------------------------