Files
ioccc/2005/vince
Landon Curt Noll ecabb73bf6 add tools to compare entry's manifest with its files
Added `bin/bin/tar-entry.sh` to build a compressed tarball for an
entry.  The compressed tarball is formed by gnu tar with options
so that the same entry file content will always produce the same
compressed tarball, byte for byte.

As some files are missing from some entries, one should
use the `-W` option as in:

```sh
bin/tar-entry.sh -v 5 -W 2020/ferguson1
```

Added `make form_entry_tarball` to the top level `Makefile`
to build entry tarballs even when files are still missing.

Added `make verify_entry_files` to verify that all entries have all
of their files listed in their manifest, plus the top level ioccc.css
and var.mk files.  As file entry files are still missing (due to
HTML files that need to be built), the overall `make quick_www` and
`make www` do **NOT** (yet) exit when the `make verify_entry_files`
fails.

Improved `bin/chk-entry.sh` by removing some variables
that were not needed.

TODO: Improve `bin/` tool exit codes as the current use is a bit silly.

TODO: Clean out some variables used in `bin/` tools as some of then
are only set printed in debug statements.

TODO: Clean up usage messages, some of the options listed to not
match the `getopts(1)` parsing.  In some cases the option needs to
be parsed but needs to be ignored by the tool because another tool
automatically passes along certain options that really have no
effect.  Such ignored options need to be show as "This option is
ignored" in the usage message.
2024-02-13 03:29:54 -08:00
..
2024-02-01 14:35:49 -08:00
2023-12-26 09:00:03 -08:00
2024-01-15 04:29:39 -08:00
2023-07-06 21:49:38 -07:00

To build:

Before building, make sure that you have the OpenGL development libraries installed.

make

To use:

./vince

Try:

When running this in the program's window try hitting space a few times and see what happens!

Alternate code:

The vince.alt.c code of the submission will run on SGI IRIX and also has the recursive CPP macro (which sneaked in accidentally) removed.

Alternate build:

To compile this alternate version:

make alt

Alternate use:

Use vince.alt as you would vince above.

Alternate try:

Try it just like vince as above.

Judges' remarks:

This beauteous entry makes use of visual {}s and whitespace to instruct the OpenGL development libraries to create beauteous visuals. Even hitting the space bar while the program runs produces a "spacey" effect! :-)

NOTE: when hitting space bar make sure that the program window is in focus!

Challenge: Try modifying the texture to something of your own design.

Author's remarks:

ABUSE OF RULES

  • The executable needs to read in its own source code in order to run. As long as the source is in the same directory as the executable it should be able to find it...

  • The program requires the OpenGL library.

  • The program abuses severely the whitespace and { } ; exceptions in the file size limits.

Requirements

  • OpenGL. It works (slowly) with Mesa.

  • 16bpp graphics capability (but might work at other depths)

  • The original source needs to be in the same directory as the executable, and the source's name should be the same as the executable but with .c on the end.

Background

I was annoyed after the last IOCCC because I slaved away on a clever text based game only to find all of the game winners used X11. X11 isn't standard C!

So to one up them, I decided to use OpenGL. It's standard, and most Unix-like systems these days have either accelerated graphics or else software rendering.

Obfuscation

It was a challenge getting the source code below the 2k limit. OpenGL has way too many 'GRATUITOUSLY_LONG_CONSTANTS' and 'glLongStudlyFunctionNames();'.

Therefore, much of the obfuscation comes secondary to just reducing the code size to fit under the limit while still having some semblance of a demo.

There are some interesting abuses scattered about.

Usage

Try hitting the space bar when the program is running.

For Fun

Try modifying the texture to your own custom design...

Thanks

Many thanks to John Clemens for testing this on various machines for me.

Errors you can get

  • 0 = no error.
  • 1 = X problem.
  • 2 = can't open GLX.
  • 3 = can't open 16bpp visual.
  • 4 = can't open source file.

This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved. You are free to share and adapt this file under the terms of this license:

Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)

For more information, see: https://creativecommons.org/licenses/by-sa/4.0/