Files
ioccc/2011/toledo/index.html
T
Landon Curt Noll a1c86c8a7a add original C links to entry navigation bars
The navigation bar for a winning entry now has a "_Original C_" link
(between the ✅ and the Inventory on the right hand side) so that one
may easily view the original C code that was submitted for IOCCC judging.

Ran `make www timestamp` to perform the above.
2025-08-10 12:46:23 -07:00

808 lines
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../../ioccc.css">
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2011/toledo - Best non-chess game</title>
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
<meta name="description" content="2011 IOCCC entry toledo - Best non-chess game">
<meta name="keywords" content="IOCCC, 2011, IOCCC 2011, IOCCC entry, toledo, Best non-chess game">
</head>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- END: this line ends content from: inc/head.default.html -->
<!-- -->
<!-- This web page was formed via the tool: bin/readme2index.sh -->
<!-- The content of main section of this web page came from: 2011/toledo/README.md -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2011/toledo/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2011/toledo/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2011/toledo/README.md !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/topbar.default.html -->
<div class="theader">
<nav class="topbar">
<div class="container">
<div class="logo">
<a href="../../index.html" class="logo-link">
IOCCC
</a>
</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
Entries
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../years.html" class="sub-item-link">
Winning entries
</a>
</div>
<div class="outfit-font">
<a href="../../authors.html" class="sub-item-link">
Winning authors
</a>
</div>
<div class="outfit-font">
<a href="../../location.html" class="sub-item-link">
Location of authors
</a>
</div>
<div class="outfit-font">
<a href="../../bugs.html" class="sub-item-link">
Bugs and (mis)features
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
Fixing entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#fix_author" class="sub-item-link">
Updating author info
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
Status
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../news.html" class="sub-item-link">
News
</a>
</div>
<div class="outfit-font">
<a href="../../status.html" class="sub-item-link">
Contest status
</a>
</div>
<div class="outfit-font">
<a href="../../next/rules.html" class="sub-item-link">
IOCCC rules
</a>
</div>
<div class="outfit-font">
<a href="../../next/guidelines.html" class="sub-item-link">
IOCCC guidelines
</a>
</div>
<div class="outfit-font">
<a href="../../markdown.html" class="sub-item-link">
Markdown guidelines
</a>
</div>
<div class="outfit-font">
<a href="../../SECURITY.html" class="sub-item-link">
Security policy
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
FAQ
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../faq.html" class="sub-item-link">
Frequently asked questions
</a>
</div>
<div class="outfit-font">
<a href="../../quick-start.html#enter" class="sub-item-link">
Enter the IOCCC
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#compiling" class="sub-item-link">
Compiling entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#running_entries" class="sub-item-link">
Running entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#help" class="sub-item-link">
How to help
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
About
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../index.html" class="sub-item-link">
Home page
</a>
</div>
<div class="outfit-font">
<a href="../../social.html" class="sub-item-link">
IOCCC social media
</a>
</div>
<div class="outfit-font">
<a href="../../about.html" class="sub-item-link">
About the IOCCC
</a>
</div>
<div class="outfit-font">
<a href="../../judges.html" class="sub-item-link">
The judges
</a>
</div>
<div class="outfit-font">
<a href="../../thanks-for-help.html" class="sub-item-link">
Thanks for the help
</a>
</div>
<div class="outfit-font">
<a href="../../contact.html" class="sub-item-link">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</nav>
<div class="header-mobile-menu">
<noscript>
<a href="../../nojs-menu.html" class="topbar-js-label">
Please Enable JavaScript
</a>
</noscript>
<button id="header-open-menu-button" class="topbar-mobile-menu">
<img
src="../../png/hamburger-icon-open.png"
alt="hamburger style menu icon - open state"
width=48
height=48>
</button>
<button id="header-close-menu-button" class="hide-content">
<img
src="../../png/hamburger-icon-closed.png"
alt="hamburger style menu icon - closed state"
width=48
height=48>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Entries
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../years.html">
Winning entries
</a>
<a class="mobile-submenu-item" href="../../authors.html">
Winning authors
</a>
<a class="mobile-submenu-item" href="../../location.html">
Location of authors
</a>
<a class="mobile-submenu-item" href="../../bugs.html">
Bugs and (mis)features
</a>
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
Fixing entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
Updating author info
</a>
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Status
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../news.html">
News
</a>
<a class="mobile-submenu-item" href="../../status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="../../next/rules.html">
IOCCC rules
</a>
<a class="mobile-submenu-item" href="../../next/guidelines.html">
IOCCC guidelines
</a>
<a class="mobile-submenu-item" href="../../markdown.html">
Markdown guidelines
</a>
<a class="mobile-submenu-item" href="../../SECURITY.html">
Security policy
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
FAQ
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../faq.html">
Frequently asked questions
</a>
<a class="mobile-submenu-item" href="../../quick-start.html#enter">
Enter the IOCCC
</a>
<a class="mobile-submenu-item" href="../../faq.html#compiling">
Compiling entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#running_entries">
Running entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#help">
How to help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
About
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../index.html">
Home page
</a>
<a class="mobile-submenu-item" href="../../social.html">
IOCCC social media
</a>
<a class="mobile-submenu-item" href="../../about.html">
About the IOCCC
</a>
<a class="mobile-submenu-item" href="../../judges.html">
The judges
</a>
<a class="mobile-submenu-item" href="../../contact.html">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<div class="header">
<a href="../../2011/zucker/index.html">
<img src="../../png/ioccc.png"
alt="IOCCC image by Matt Zucker"
width=300
height=110>
</a>
<h1>The International Obfuscated C Code Contest</h1>
<h2>2011/toledo - Best non-chess game</h2>
<h3>Dual player tank shooter game</h3>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/navbar.mid.html -->
<div class="navbar">
<a class="Left" href="../richards/index.html">&larr; 2011/richards</a>
<a class="Left" href="../index.html">&uarr; 2011 &uarr;</a>
<a class="Left" href="../vik/index.html">2011/vik &rarr;</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.c">C code</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/Makefile">Makefile</a>
<a class="Right" href="#inventory">Inventory</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.orig.c">Original C</a>
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2011%2Ftoledo%2Findex.html">&#x2713;</a>
</div>
<!-- END: this line ends content from: inc/navbar.mid.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<div class="content" id="content">
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
<h2 id="author">Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Oscar_Toledo">Oscar Toledo G.</a><br>
Location: <a href="../../location.html#MX">MX</a> - <em>United Mexican States</em> (<em>Mexico</em>)</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: 2011/toledo/README.md -->
<h2 id="to-build">To build:</h2>
<pre><code> make</code></pre>
<p><strong>NOTE</strong>: this entry requires the <code>X11/Xlib.h</code> header file and the X11 library to
compile. For more information see the
FAQ on “<a href="../../faq.html#X11">X11</a>”.</p>
<p>There are two alternate versions, <a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.alt.c">one that lets you reconfigure the
controls and size</a> and <a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.alt2.c">another that should work for
Windows</a>. See <a href="#alternate-code">Alternate code</a> below.</p>
<h2 id="to-use">To use:</h2>
<pre><code> ./toledo</code></pre>
<h2 id="alternate-code">Alternate code:</h2>
<p>The first alt version, <a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.alt.c">toledo.alt.c</a>, allows you to reconfigure
the controls and the dimensions more easily.</p>
<p>The second version, <a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.alt2.c">toledo.alt2.c</a>, should work for Windows but
does not allow you to reconfigure the keys or dimensions. This is because it
cannot be tested by us.</p>
<h3 id="alternate-build">Alternate build:</h3>
<p>For the one that lets you reconfigure the keys you will want to look at the
included header file, <a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/keysym.h">keysym.h</a>, to find the correct macros. Once you
have the right names you can define the macros <code>FIRE</code>, <code>FORWARD</code>, <code>BACKWARD</code>,
<code>LEFT</code>, <code>RIGHT</code>, <code>WIDTH</code> and <code>HEIGHT</code>. Here are the defaults:</p>
<pre><code> FIRE= XK_BackSpace:XK_Tab
FORWARD= XK_Up:XK_w
BACKWARD= XK_Down:XK_s
LEFT= XK_Left:XK_a
RIGHT= XK_Right:XK_d
WIDTH= 512
HEIGHT= 288</code></pre>
<p>but you can change them about however you like, even with other keys. For
instance to swap <code>LEFT</code> and <code>RIGHT</code>:</p>
<pre><code> make clobber LEFT=XK_Right:XK_d RIGHT=XK_Left:XK_a alt</code></pre>
<p>but you can specify something completely else and you can pick and choose which
controls you wish to redefine. You might also wish to change the dimensions of
the game, <code>WIDTH</code> and <code>HEIGHT</code> which have an arbitrarily selected lower limit as
well as the default values.</p>
<p>Observe that each of the controls are a pair in the form of <code>player2:player1</code>
(yes, player 2 comes first!).</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>This two player game uses X11. The control keys can be configured by
modifying the <code>A</code>, <code>B</code>, <code>C</code>, <code>D</code> and <code>E</code> macros at compilation.</p>
<p>After a quick splash screen the objective should be clear. There
are Red, Green and Cyan tanks. A larger window can be made by altering
the source early on, right before the code gets hard to follow, or using the
<a href="#alternate-code">alternate version</a>.</p>
<p>Like Oscar’s previous winning X11 program for the 19th IOCCC, if
you remove both the X11 include files and replace them with</p>
<pre><code> #include &quot;layer.c&quot;</code></pre>
<p>you ought to be able to compile and run this program on Windows.</p>
<p><strong>NOTE</strong>: this is what <a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.alt2.c">toledo.alt2.c</a> is for.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<pre><code> /=========\\
\==\ /==/ ||
|| || /====\ |\/=\ || //==\ ==\ |=\
|| || || || || || // || =| | |
|| || //===| || || ||=// \\=\\ ==/ |=/
|| || || || || || || \\ || User&#39;s
\===/ \\==// || || || \\ \==// Manual</code></pre>
<p>This is a color X11 3D tank-game for two players, just compile
and run it without arguments.</p>
<p>You will see briefly a tank spinning before each level.</p>
<p>The Left half of the window shows the red player view and the right
half shows the green player view; the background will change to
blue when the view goes inactive.</p>
<p>The objective is to chase and destroy the other player’s tank.
There is also an aqua tank for testing your aim and getting
extra points.</p>
<p>Caveat: You can shoot only 3 bullets at a time.</p>
<p>Trick: You can fire faster if they explode on anything.</p>
<p>Believe it or not, it has strategy!</p>
<p>When only one tank remains on the field, the level will advance.
Don’t forget to destroy the aqua tank.</p>
<p>The <del>battle</del>playground is surrounded by mountains and each level is
filled with random obstacles (pyramids and cubes).</p>
<p>The bars show players energy and score; each bar shows energy
and indicates the current player view (wider on the left). The right
part grows with every point.</p>
<p>Keys for player 1 (lowercase):</p>
<ul>
<li>Tab - Fire</li>
<li>w - Go ahead</li>
<li>s - Go backwards</li>
<li>a - Turn left</li>
<li>d - Turn right</li>
</ul>
<p>Keys for player 2:</p>
<ul>
<li>Backspace - Fire</li>
<li>Up arrow - Go ahead</li>
<li>Down arrow - Go backwards</li>
<li>Left arrow - Turn left</li>
<li>Right arrow - Turn right</li>
</ul>
<p>Note: Numeric keys don’t work.</p>
<p>If you don’t like the keys assignment, you can change it in the
Makefile or use the <a href="#alternate-code">alternate version</a>.</p>
<h3 id="parental-advisory-warning">PARENTAL ADVISORY WARNING:</h3>
<p>This game is highly violent: when the tank explodes you can
see the little stick man blowing in parts.</p>
<p>Not really, just kidding :D</p>
<h3 id="platforms-tested">PLATFORMS TESTED:</h3>
<ul>
<li>openSUSE 10.2 x86-32, X11R6 1024x768 32-bits color.</li>
<li>Fedora Core 8 x86-64, X11R6 1280x1024 32-bits color.</li>
<li>Fedora Core 11 x86-64, X11R6 1024x768 32-bits color.</li>
<li>Fedora Core 14 x86-64, X11R6 1024x768 32-bits color.</li>
</ul>
<h3 id="complete-feature-set">COMPLETE FEATURE SET:</h3>
<ul>
<li>Multiplayer out of the box.</li>
<li>Totally self-contained, no external files.</li>
<li>Fast-and-furious action at 29.97 frames per second.</li>
<li>Just as the movies, 16:9 aspect-ratio.</li>
<li>Beautiful mountains landscape plus horizon line :)</li>
<li>Tanks and bullets exploding as wires with weird physics.</li>
<li>Tanks back off when firing.</li>
<li>There is an infinite number of levels.</li>
<li>Always different levels.</li>
<li>Animated intro.</li>
<li>It has color!</li>
</ul>
<h3 id="features-that-programmers-will-find-appealing">FEATURES THAT PROGRAMMERS WILL FIND APPEALING:</h3>
<ul>
<li>Works both with 32 and 64-bit CPUs.</li>
<li>Double buffered, portable to any X11 with 24/32-bit color.</li>
<li>Memory-hungry as must be any 3D program; uses a 256 MB array.</li>
<li>Total and absolute irreverent coding style, so it generates a lot of warnings
when compiled.</li>
<li>It can take several minutes to compile (known culprits: Fedora Core 11-14 on
x86-64 512 MB).</li>
<li>It is written in the only true C: K&amp;R, and no, that doesn’t mean
Katherine &amp; Rose.</li>
<li>Vectorial scalable graphics: do you want a bigger viewport? Change variables
<code>M</code> and <code>N</code> (see the <a href="#alternate-code">alternate</a> code).</li>
<li>Half of the program is formatted as 3D cube. View with tabs at 8 columns and a
square font.</li>
<li>The other half of the program is unprintable source code, so no typing from
paper, you have to write a converter of tabs and form-feeds to its C escaped
forms.</li>
<li>No text, so this program can be used and understood easily in any country.</li>
<li>This program is highly ecological, it sleeps when it is not doing anything.</li>
<li>Virtual world with its own physics laws.</li>
<li>When closing the window it will show an X11 error :P</li>
</ul>
<h3 id="obfuscation-tricks">OBFUSCATION TRICKS:</h3>
<ul>
<li>Loop code included inside loop test.</li>
<li>Function arguments used as variables.</li>
<li>Operators used freely.</li>
<li>Pre-calculated values to save bytes.</li>
<li>Uses the <code>+++</code>, <code>+-</code> and <code>*+</code> undocumented C operators :P</li>
</ul>
<pre><code>
....,,,,---++++++--,,..\
.,,,....... .$@@@@@@@@@@@@$$@@@@@@@@@@@@@@#+\
@@@@@###@@@@$$$@@@@$$$@@@-......-@+......,,,,,,##\
=++==++++++++=@@$==#$$$$$---,,,,@@@,,,,,,-------@@,..........,,.\
,===#$$$$$$###$####=======@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+=##$@@@@@@@@.
+@,,++++++++=+=========++++===++++++++++-+++@@-,,,,,,,,---+++=++++--,,... @.
.@. .......,,,,-----++=@=++==@$=+--,,... @.
$# S P O I L E R .,,-#@--,,,@$..... @.
.@ ..,--+==++-,,,,.,,,,=@+++++====+++++---,,,....@.
@+ ..,,-+++++++-,,.. @. ....,,,,,---+@@\
,@ ..,--+++=+++,,.. $# .==+\
@#--++==++-,,.. ,@ S P O I L E R .==+\
,#@@$+,,. @. ==+\
.,,+++++,,. S P O I L E R $= +=+\
..,-==++-,. ,@ ---\
.,-+=+++,.. @. .++-\
.,,++=++-,. @+ ==+\
.,-++==+-,. +@ ==+\
..,+++=+-,.. .@. +=+\
.,-+++++,@@==
</code></pre>
<h3 id="the-history-of-this-program">THE HISTORY OF THIS PROGRAM:</h3>
<p>When I started working on this program, I figured that it would
be easy to fit on the character limit, but I missed three things: the enormous
X11 names, the non-portable key codes and my 2 KB of artwork.</p>
<p>Very hard coding did the first thing. In fact I worked out twenty-nine different
versions and at one step I had four parallel versions with different
characteristics removed (mountains, horizon lines, score/status bars and
explosions) but I’ve managed to fit it all together!</p>
<p>The second thing was solved using the Makefile: it is under
160 bytes and you get adjustable controls. The greatest
mystery on the Earth is why X11 gives non-portable key codes to
the user.</p>
<p>And finally, the third “Thing” was growing and growing, and
growing, eating bytes for lunch… after endless rounds of
crunching I obtained three-hundred seventy-eight bytes of
artwork and guess what? It doesn’t fit.</p>
<p>So I had to integrate a decompressor based on the space, tabulators and other
non-counted characters.</p>
<p>The final program is composed of eight micro-functions: one is the core and does
most of the hard work and the other functions help do the X11 things, explosion
effects, 3D calculations and viewing.</p>
<ul>
<li><code>K()</code> - 3D transformation</li>
<li><code>s()</code> - Rendering</li>
<li><code>b()</code> - Line color selection</li>
<li><code>G()</code> - Explosion animation</li>
<li><code>g()</code> - Moves 3D object backward and forward</li>
<li><code>F()</code> - Collision detection</li>
<li><code>T()</code> - Core (also known as main loop :D)</li>
<li><code>main()</code> - Initialization and ‘uncruncher’, what a common name!;
C programs should start in the cool() function :).</li>
</ul>
<p>The source code was formatted as a cube using a specially written program. This
program is smaller and obfuscated what is needed so the reformatting doesn’t
exceeded the character limits. The crunched vectors were generated by another
special program and the tank that surrounds this text was generated by yet
another program.</p>
<p><em>Have fun!</em></p>
<!--
Copyright © 1984-2024 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/
-->
<!-- AFTER: last line of markdown file: 2011/toledo/README.md -->
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<div id="inventory">
<h1 id="inventory-for-2011toledo">Inventory for 2011/toledo</h1>
</div>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.c">toledo.c</a> - entry source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.alt2.c">toledo.alt2.c</a> - second alternate source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.alt.c">toledo.alt.c</a> - alternate source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/toledo.orig.c">toledo.orig.c</a> - original source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/keysym.h">keysym.h</a> - header file to help identify some key symbols</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/layer.c">layer.c</a> - translation layer to make 3D Tanks game</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="2011_toledo.tar.bz2">2011_toledo.tar.bz2</a> - download entry tarball</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/README.md">README.md</a> - markdown source for this web page</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2011/toledo/.path">.path</a> - directory path from top level directory</li>
<li><a href="index.html">index.html</a> - this web page</li>
</ul>
<hr style="width:10%;text-align:left;margin-left:0">
<h4>
Jump to: <a href="#">top</a>
</h4>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
</div>
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/footer.inventory.html -->
<!--
Copyright © 1984-2025 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/
-->
<div class="footer">
<div id="copyright"><h3>Copyright &copy; 1984-2025 by Landon Curt Noll:
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
target="_blank"
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
<p>
This work is <b>licensed by Landon Curt Noll</b> under
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
target="_blank"
rel="license noopener noreferrer"
style="display:inline-block;">CC BY-SA 4.0</a></b>.
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/cc.png"
alt="cc inside circle symbol">
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/by.png"
alt="person inside circle symbol">
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/sa.png"
alt="arrow looping back on itself inside circle symbol"><br>
You should <b>carefully review</b> the
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
target="_blank"
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
before using the licensed material.<br>
You may wish to review the
<b><a href="../../license.html"
target="_blank"
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
of <b>CC BY-SA 4.0</b>.<br>
</p>
</div>
<div id="coda"><h3>Coda</h3>
<p>
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2011%2Ftoledo%2Findex.html" rel="nofollow">Nu HTML check this web page</a><br>
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br>
</p>
</div>
</div>
<!-- END: this line ends content from: inc/footer.inventory.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->