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.