Files
ioccc/2014/maffiodo1/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

904 lines
33 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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>2014/maffiodo1 - Homage to a classic game</title>
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
<meta name="description" content="2014 IOCCC entry maffiodo1 - Homage to a classic game">
<meta name="keywords" content="IOCCC, 2014, IOCCC 2014, IOCCC entry, maffiodo1, Homage to a classic 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: 2014/maffiodo1/README.md -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2014/maffiodo1/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2014/maffiodo1/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2014/maffiodo1/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>2014/maffiodo1 - Homage to a classic game</h2>
<h3>homage to a popular 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="../endoh2/index.html">&larr; 2014/endoh2</a>
<a class="Left" href="../index.html">&uarr; 2014 &uarr;</a>
<a class="Left" href="../maffiodo2/index.html">2014/maffiodo2 &rarr;</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/prog.c">C code</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/Makefile">Makefile</a>
<a class="Right" href="#inventory">Inventory</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/prog.orig.c">Original C</a>
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2014%2Fmaffiodo1%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#Sandro_Maffiodo">Sandro Maffiodo</a><br>
Location: <a href="../../location.html#IT">IT</a> - <em>Italian Republic</em> (<em>Italy</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: 2014/maffiodo1/README.md -->
<h2 id="to-build">To build:</h2>
<p>This entry requires SDL to be installed. See the
FAQ on “<a href="../../faq.html#SDL">SDL1 and SDL2</a>”
if you don’t know how to do this for your system.</p>
<pre><code> make</code></pre>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
<blockquote>
<p><strong>STATUS: INABIAF - please DO NOT fix</strong></p>
</blockquote>
<p>For more detailed information see <a href="../../bugs.html#2014_maffiodo1">2014/maffiodo1 in bugs.html</a>.</p>
<h2 id="to-use">To use:</h2>
<pre><code> cat game.level | ./prog 320 200 800 300 128 144 game.rgba game.wav 10343679</code></pre>
<p>The parameters to the program are:</p>
<ol type="1">
<li>Window width.</li>
<li>Window height.</li>
<li>Level width.</li>
<li>Level height.</li>
<li>Sprites image width.</li>
<li>Sprites image height.</li>
<li>Filename of the sprites image (raw RGBA image).</li>
<li>Filename of the music (WAVE 8000 Hz 8bit Mono).</li>
<li>Sky color. This number depends on the system where you run the program. <a href="#running-under-macos">See
note on macOS</a>.</li>
</ol>
<h2 id="try">Try:</h2>
<pre><code> ./giana.sh
./mario.sh</code></pre>
<p>If you end up telnetting to the server (feature of <a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/mario.sh">mario.sh</a> script) you can
try:</p>
<pre><code> ls # show files including games
wumpus.bas # play Hunt the Wumpus
advent.gam # you know what this is! :-)
starwars # animated Star Wars &#39;film&#39;</code></pre>
<p>If you wish to change the width and height, defaulting at 640 x 480, say to
800 x 800, try:</p>
<pre><code> ROWS=800 COLS=800 ./mario.sh
ROWS=800 COLS=800 ./giana.sh</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>A classic for a particular generation. Like all good programs, being data
driven means you can do fun things in small spaces.</p>
<p><strong>NOTE</strong>: the author states to use <code>tabsize=4</code> to see the magic of the formatting of
the code. In <code>vim</code> you can do:</p>
<pre><code> :set tabstop=4</code></pre>
<p>in command mode to see this effect. You don’t need to modify your <code>.vimrc</code> file!
You can also use <code>expand</code> as described below by the author if your terminal has
enough rows and you don’t want to move about in the code. The vim command should
immediately take effect.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="remarks">Remarks</h3>
<p>Use <code>tabsize=4</code> to see the magic.</p>
<pre><code> expand -t 4 prog.c</code></pre>
<p>The program returns 0 if the player wins or <em>non-zero</em> if the player loses so
you can test it and make something useful (or not), like this:</p>
<pre><code> cat mario.level | ./prog 320 200 800 300 128 144 mario.rgba mario8.wav 10343679 &amp;&amp; telnet telehack.com 23</code></pre>
<p>and type in: <code>starwars</code></p>
<p>This is an engine for <a href="https://en.wikipedia.org/wiki/Platform_game">platform
game</a>. It can be used to create
games like the legendary <a href="http://en.wikipedia.org/wiki/Super_Mario_Bros.">Super Mario
Bros</a>.</p>
<p>With this simple and clear source code you can create all the games you want,
for free!</p>
<p>In my two tests I tried to create one level of <a href="http://en.wikipedia.org/wiki/Super_Mario_Bros.">Super Mario
Bros</a> and one of <a href="http://en.wikipedia.org/wiki/The_Great_Giana_Sisters">The Great
Giana Sisters</a>.</p>
<p>Both games are classic <a href="https://en.wikipedia.org/wiki/Platform_game">platform
games</a> and both share the same
fundamental rules:</p>
<ul>
<li><p>There is a character.</p></li>
<li><p>There are power-ups that can change the look of the character and/or give the
character more or different powers or abilities!</p></li>
<li><p>There are walls, floors and ceilings. The character can move and jump over
these type of obstacles but cannot walk through them.</p></li>
<li><p>There are enemies and if the character collides with an enemy, the character
dies or loses its powers.</p></li>
</ul>
<h3 id="running-under-macos">Running under macOS</h3>
<p>The color of the sky is wrong on macOS. You need to flip some bytes from the
last parameter of the program:</p>
<ul>
<li><p>MARIO LAST PARAMETER: <code>4292124159</code></p></li>
<li><p>GIANA LAST PARAMETER: <code>3243070463</code></p></li>
</ul>
<h3 id="regarding-how-to-compile">Regarding how to compile</h3>
<p>The code requires <code>SDL1</code>.</p>
<p>The build process will generate some warnings (~60 with clang) about:</p>
<ul>
<li><code>incompatible pointer types</code>: because all pointers are declared to <code>int</code> or
<code>char</code>, to save bytes.</li>
<li><code>type specifier missing, defaults to 'int'</code>: because I need to save bytes.</li>
<li><code>using the result of an assignment as a condition without parentheses</code>:
because <code>while(c=getchar())</code> is not evil.</li>
</ul>
<h3 id="how-it-works">How it works</h3>
<h2 id="parameters">Parameters</h2>
<ol type="1">
<li>Window width.</li>
<li>Window height.</li>
<li>Level width.</li>
<li>Level height.</li>
<li>Sprites image width.</li>
<li>Sprites image height.</li>
<li>Filename of the sprites image (raw RGBA image).</li>
<li>Filename of the music (WAVE 8000 Hz 8bit Mono).</li>
<li>Sky color. This number depends on the system where you run the program. <a href="#running-under-macos">See
note on macOS</a>.</li>
</ol>
<h2 id="sprites">Sprites</h2>
<p>The program read a single image that contains all the game sprites. The image
must be a grid of 8xN sprites. The size of a single sprite must be square. The
program calculates the size in this way:</p>
<pre><code> sprite_size = image_width / 8</code></pre>
<p>Each sprite is identified by its position inside the grid, counting line by
line, from left to right (for example sprite 0 is the top left sprite in the
grid, sprite 8 is the first sprite of the second row of the grid etc.).</p>
<p>Some positions of the grid have a predefined purpose:</p>
<ul>
<li>0
<ul>
<li>Player standing right</li>
</ul></li>
<li>1
<ul>
<li>Player walking right frame 0</li>
</ul></li>
<li>2
<ul>
<li>Player walking right frame 1</li>
</ul></li>
<li>3
<ul>
<li>Player jumping right</li>
</ul></li>
<li>4
<ul>
<li>Player standing left</li>
</ul></li>
<li>5
<ul>
<li>Player walking left frame 0</li>
</ul></li>
<li>6
<ul>
<li>Player walking left frame 1</li>
</ul></li>
<li>7
<ul>
<li>Player jumping left</li>
</ul></li>
<li>8 <em>(second row)</em>
<ul>
<li>Super player standing right</li>
</ul></li>
<li>9
<ul>
<li>Super player walking right frame 0</li>
</ul></li>
<li>10
<ul>
<li>Super player walking right frame 1</li>
</ul></li>
<li>11
<ul>
<li>Super player jumping right</li>
</ul></li>
<li>12
<ul>
<li>Super player standing left</li>
</ul></li>
<li>13
<ul>
<li>Super player walking left frame 0</li>
</ul></li>
<li>14
<ul>
<li>Super player walking left frame 1</li>
</ul></li>
<li>15
<ul>
<li>Super player jumping left</li>
</ul></li>
<li>24
<ul>
<li>Player dead</li>
</ul></li>
<li>32
<ul>
<li>Player won</li>
</ul></li>
<li>40
<ul>
<li>Super player won</li>
</ul></li>
</ul>
<p>All the others sprites can be used as you want, depending on the game you want
to create.</p>
<h2 id="levels">Levels</h2>
<p>The program reads the level description from <code>stdin</code>.</p>
<p>The level description is a sequence of rows where each row describe an object.
You can input as many objects as you want but the maximum number of objects
handled by the program is 333. You can modify this value by editing the source
here:</p>
<pre><code> C[333*7],d=333;</code></pre>
<p>Each row has six columns:</p>
<ol type="1">
<li><code>Screen X</code> : <code>x</code> position of the object in the level.</li>
<li><code>Screen Y</code> : <code>y</code> position of the object in the level.</li>
<li><code>Sprite</code> : <code>id</code> of the sprite to be used for the object.</li>
<li><code>CLASSFLAGS</code> : a bitmask that describe how the object behaves.</li>
<li><code>CLASSPARAM0</code>: a parameter that depends on <code>CLASSFLAGS</code>.</li>
<li><code>CLASSPARAM1</code>: a parameter that depends on <code>CLASSFLAGS</code>.</li>
</ol>
<p><code>CLASSFLAGS</code> must be a combination (bitwise OR) of some of these constants:</p>
<ul>
<li><code>ENEMY</code> (<code>1</code>)
<ul>
<li>An enemy. <code>CLASSPARAM0</code> can be 0 if the enemies don’t move, 1 if the
initial move direction is right, -1 if that direction is left. All enemies
that walk will change their direction after 20 steps. The sprite of an enemy
must have 2 other adjacent sprites: <code>SPRITE-1</code>, used when the enemy dies, and
<code>SPRITE+1</code>, used when it moves.</li>
</ul></li>
<li><code>BLOCK</code> (<code>2</code>)
<ul>
<li>A wall. Player can walk over the object but can not pass through it.</li>
</ul></li>
<li><code>OBJECT BLOCK</code> (<code>4</code>)
<ul>
<li>When the player hits the object from below, a new object is created.
<code>CLASSFLAGS</code> of the new object is defined in <code>CLASSPARAM0</code>. The sprite used
for the new object is defined in <code>CLASSPARAM1</code>. The sprite of the new object
must have an adjacent sprite: <code>SPRITE+1</code>, used when the block is hit.</li>
</ul></li>
<li><code>POWERUP</code> (<code>8</code>)
<ul>
<li>This is a power-up like the classic Mario mushroom. When the character
hits the power-up object, the character becomes the Super character. If
<code>CLASSFLAGS</code> has the bit <code>ZOOM</code>, the character height will be doubled. The
Super character can hit the enemies without dying, but when this happens,
the Super character goes back to being normal.</li>
</ul></li>
<li><code>END</code> (<code>16</code>)
<ul>
<li>When the player hits this object the level ends; the player wins.</li>
</ul></li>
<li><code>ZOOM</code> (<code>32</code>)
<ul>
<li>This flag can be used with <code>POWERUP</code> to indicate a power-up that will
double the size of the player (like the Mario mushroom).</li>
</ul></li>
<li><code>DESTROY</code> (<code>64</code>)
<ul>
<li>When the player hits the object (e.g. the classic Mario coin) the object
disappears but the engine does not count the points, so, from the player
point of view, this object is useless.</li>
</ul></li>
<li><code>DESTROYUP</code> (<code>128</code>)
<ul>
<li>This object is like a <code>BLOCK</code> but when the player hits the object from
below, the object disappears.</li>
</ul></li>
</ul>
<p>If <code>CLASSFLAGS</code> is <code>0</code> the object only has an aesthetic function.</p>
<p>The last row of the level descriptor must have all its columns set equal to
<code>-1</code>.</p>
<h3 id="limitations">Limitations</h3>
<p>Some classical features are missing: throwing objects, shooting, multiple lives,
score tracking. You can add those features if you want!</p>
<p>The program allows only one level. It’s easy to add a menu and multiple levels
but the size of the engine would too big for the contest.</p>
<p>When the <code>Super character</code> becomes bigger (<code>ZOOM</code> flag), the character can
collide with blocks and get stuck inside them. This is a KNOWN BUG. When your
player become bigger, stay away from blocks!</p>
<p>There’s only one audio track (game effects are missing).</p>
<h3 id="credits">Credits</h3>
<p>Some of the sprites used in the examples are identical to those of the original
games; the others were designed by me.</p>
<p>The music used in the examples have been
<a href="https://en.wikipedia.org/wiki/Sample-rate_conversion">resampled</a>, starting from
the original versions for the <a href="http://en.wikipedia.org/wiki/Amiga">Commodore
Amiga</a> and <a href="http://en.wikipedia.org/wiki/Nintendo_Entertainment_System">Nintendo
NES</a>.</p>
<p><a href="http://en.wikipedia.org/wiki/Super_Mario_Bros.">Super Mario Bros</a> is a game
created by <a href="https://en.wikipedia.org/wiki/Nintendo">Nintendo Co., Ltd</a>. My use
of the <a href="https://en.wikipedia.org/wiki/Sprite_(computer_graphics)">sprites</a> does
not intend to infringe the <a href="https://en.wikipedia.org/wiki/Intellectual_property">intellectual
property</a> of Nintendo but
only demonstrates the operation of the program. From my point of view this is a
tribute to the legendary game <a href="http://en.wikipedia.org/wiki/Super_Mario_Bros.">Super Mario
Bros</a>!</p>
<p><a href="http://en.wikipedia.org/wiki/The_Great_Giana_Sisters">The Great Giana
Sisters</a> is the game
created by <a href="https://www.ign.com/games/producer/time-warp-productions">Time Warp
Productions</a> and my
justification for the sprites for Mario are the same for this game. Long live
<a href="http://en.wikipedia.org/wiki/The_Great_Giana_Sisters">The Great Giana
Sisters</a> !! :)</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: 2014/maffiodo1/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-2014maffiodo1">Inventory for 2014/maffiodo1</h1>
</div>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/prog.c">prog.c</a> - entry source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/prog.orig.c">prog.orig.c</a> - original source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/giana.sh">giana.sh</a> - script to play The Great Giana Sisters</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/mario.sh">mario.sh</a> - script to play Super Mario Brothers</li>
<li><a href="screenshot-giana.png">screenshot-giana.png</a> - gameplay screenshot of The Great Giana Sisters</li>
<li><a href="screenshot-mario.png">screenshot-mario.png</a> - gameplay screenshot of Super Mario Brothers</li>
<li><a href="giana8.wav">giana8.wav</a> - sound file for The Great Giana Sisters</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/giana.level">giana.level</a> - game level data for The Great Giana Sisters</li>
<li><a href="mario8.wav">mario8.wav</a> - sound file for Super Mario Brothers</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/mario.level">mario.level</a> - game level data for Super Mario Brothers</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="2014_maffiodo1.tar.bz2">2014_maffiodo1.tar.bz2</a> - download entry tarball</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/README.md">README.md</a> - markdown source for this web page</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
<li><a href="giana.rgba">giana.rgba</a> - raw RGBA image for The Great Giana Sisters</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
<li><a href="mario.rgba">mario.rgba</a> - raw RGBA image for Super Mario Brothers</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2014/maffiodo1/.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%2F2014%2Fmaffiodo1%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 -->