Philbin Language File Interpreter

Scott Lawrence, January - June 1996


PLFI was my main project for my Independant Study in Computer Graphics. It was basically a Flatware object loader, 3-d wireframe renderer, all connected up with a music player engine (Mikmod for the Interwave sound card) and a time-based queueing event mechanism.


The event mechanism and file parser were the two big things introduced to my programming pallet with this project. This was before I had learned about lex and yacc, so the file parser was readable but terse. The event engine consisted of a two dimensional linked list. The backbone list consisted of elements that specified certain times for things to happen. The branches coming off from there are all of the things to actually be performed. This tree is generated when the PLFI file was parsed in.
There was also a second set of links in each of the nodes that were for a runtime 'to-do' list. When the time event occurred, the operations branch was tacked onto the end of the todo list. As the operations were performed, they were popped off of the top of the list. That way if there wasn't enough time to get everything done at once, it wasn't forgotten.

I also have in there an incremental position/rotation mechanism, such that you can specify "rotate this 90 degrees in 5 seconds, and each time a frame is rendered, it rotates the object the appropriate amount for the current time.


This was written to be run on MS-DOS systems. For sound, you needed an Interwave (Gravis Ultrasound PnP/Reveal) sound card, although it runs fine, but quiet without. It was compiled with Borland's v3.1 compiler and used the SVGACC 2.3 graphics library (antialiased lines, polygons, font rendering.) The font and 3d objects were all my own design.