diff --git a/2014/birken/README.md b/2014/birken/README.md
index 0444b69da..a83109d53 100644
--- a/2014/birken/README.md
+++ b/2014/birken/README.md
@@ -6,7 +6,7 @@
There is alternate code that lets you redefine the port to bind to, in case
there is a firewall issue, and also lets you redefine the timing constant,
-`STARDATE`. See [Alternate code](#alternate code) below.
+`STARDATE`. See [Alternate code](#alternate-code) below.
## To use:
diff --git a/2014/birken/index.html b/2014/birken/index.html
index a3046f549..c5755ed06 100644
--- a/2014/birken/index.html
+++ b/2014/birken/index.html
@@ -417,7 +417,7 @@ Location: US - United States of America
There is alternate code that lets you redefine the port to bind to, in case
there is a firewall issue, and also lets you redefine the timing constant,
- makeSTARDATE. See Alternate code below.STARDATE. See Alternate code below.
./prog < some_secret_or_something
diff --git a/2014/maffiodo1/README.md b/2014/maffiodo1/README.md
index 2df632a8c..d5cbe17b0 100644
--- a/2014/maffiodo1/README.md
+++ b/2014/maffiodo1/README.md
@@ -34,8 +34,8 @@ The parameters to the program are:
6. Sprites image height.
7. Filename of the sprites image (raw RGBA image).
8. Filename of the music (WAVE 8000 Hz 8bit Mono).
-9. Sky color. This number depends on the system where you run the program. See
-note on macOS.
+9. Sky color. This number depends on the system where you run the program. [See
+note on macOS](#running-under-macos).
## Try:
@@ -50,7 +50,7 @@ If you end up telnetting to the server (feature of [mario.sh](%%REPO_URL%%/2014/
try:
-```
+```
ls # show files including games
wumpus.bas # play Hunt the Wumpus
advent.gam # you know what this is! :-)
@@ -135,9 +135,6 @@ dies or loses its powers.
### Running under macOS
-[NOTE: this seems to no longer be the case as of 2023 and most likely much
-earlier. However one can change the look of the game doing this anyway:]
-
The color of the sky is wrong on macOS. You need to flip some bytes from the
last parameter of the program:
@@ -171,8 +168,8 @@ because `while(c=getchar())` is not evil.
6. Sprites image height.
7. Filename of the sprites image (raw RGBA image).
8. Filename of the music (WAVE 8000 Hz 8bit Mono).
-9. Sky color. This number depends on the system where you run the program. See
-note on macOS.
+9. Sky color. This number depends on the system where you run the program. [See
+note on macOS](#running-under-macos).
## Sprites
@@ -190,29 +187,45 @@ grid, sprite 8 is the first sprite of the second row of the grid etc.).
Some positions of the grid have a predefined purpose:
-```
- Position | Description
- :-----------------|:--------------
- 0 | Player standing right
- 1 | Player walking right frame 0
- 2 | Player walking right frame 1
- 3 | Player jumping right
- 4 | Player standing left
- 5 | Player walking left frame 0
- 6 | Player walking left frame 1
- 7 | Player jumping left
- 8 *(second row)* | Super player standing right
- 9 | Super player walking right frame 0
- 10 | Super player walking right frame 1
- 11 | Super player jumping right
- 12 | Super player standing left
- 13 | Super player walking left frame 0
- 14 | Super player walking left frame 1
- 15 | Super player jumping left
- 24 | Player dead
- 32 | Player won
- 40 | Super player won
-```
+
+- 0
+ * Player standing right
+- 1
+ * Player walking right frame 0
+- 2
+ * Player walking right frame 1
+- 3
+ * Player jumping right
+- 4
+ * Player standing left
+- 5
+ * Player walking left frame 0
+- 6
+ * Player walking left frame 1
+- 7
+ * Player jumping left
+- 8 _(second row)_
+ * Super player standing right
+- 9
+ * Super player walking right frame 0
+- 10
+ * Super player walking right frame 1
+- 11
+ * Super player jumping right
+- 12
+ * Super player standing left
+- 13
+ * Super player walking left frame 0
+- 14
+ * Super player walking left frame 1
+- 15
+ * Super player jumping left
+- 24
+ * Player dead
+- 32
+ * Player won
+- 40
+ * Super player won
All the others sprites can be used as you want, depending on the game you want
to create.
@@ -243,53 +256,43 @@ Each row has six columns:
`CLASSFLAGS` must be a combination (bitwise OR) of some of these constants:
* `ENEMY` (`1`)
-
- An enemy. CLASSPARAM0 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: SPRITE-1,
- used when the enemy dies, and SPRITE+1, used when it moves.
+ - An enemy. `CLASSPARAM0` 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: `SPRITE-1`, used when the enemy dies, and
+ `SPRITE+1`, used when it moves.
* `BLOCK` (`2`)
-
- A wall. Player can walk over the object but can not pass through it.
+ - A wall. Player can walk over the object but can not pass through it.
* `OBJECT BLOCK` (`4`)
-
- When the player hits the object from below, a new object is created.
- CLASSFLAGS of the new object is defined in CLASSPARAM0. The sprite
- used for the new object is defined in CLASSPARAM1. The sprite of the
- new object must have an adjacent sprite: SPRITE+1, used when the
- block is hit.
+ - When the player hits the object from below, a new object is created.
+ `CLASSFLAGS` of the new object is defined in `CLASSPARAM0`. The sprite used
+ for the new object is defined in `CLASSPARAM1`. The sprite of the new object
+ must have an adjacent sprite: `SPRITE+1`, used when the block is hit.
* `POWERUP` (`8`)
-
- 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 CLASSFLAGS has the bit ZOOM, 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.
+ - 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
+ `CLASSFLAGS` has the bit `ZOOM`, 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.
* `END` (`16`)
-
- When the player hits this object the level ends; the player wins.
+ - When the player hits this object the level ends; the player wins.
* `ZOOM` (`32`)
-
- This flag can be used with POWERUP to indicate a power-up that
- will double the size of the player (like the Mario mushroom).
+ - This flag can be used with `POWERUP` to indicate a power-up that will
+ double the size of the player (like the Mario mushroom).
* `DESTROY` (`64`)
-
- 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.
+ - 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.
* `DESTROYUP` (`128`)
-
- This object is like a BLOCK but when the player hits the object
- from below, the object disappears.
+ - This object is like a `BLOCK` but when the player hits the object from
+ below, the object disappears.
If `CLASSFLAGS` is `0` the object only has an aesthetic function.
diff --git a/2014/maffiodo1/index.html b/2014/maffiodo1/index.html
index 0addff859..bc3c062a2 100644
--- a/2014/maffiodo1/index.html
+++ b/2014/maffiodo1/index.html
@@ -431,8 +431,8 @@ if you don’t know how to do this for your system.
Sprites image height.
Filename of the sprites image (raw RGBA image).
Filename of the music (WAVE 8000 Hz 8bit Mono).
-Sky color. This number depends on the system where you run the program. See
-note on macOS.
+Sky color. This number depends on the system where you run the program. See
+note on macOS.
Try:
./giana.sh
@@ -489,8 +489,6 @@ these type of obstacles but cannot walk through them.
dies or loses its powers.
Running under macOS
-[NOTE: this seems to no longer be the case as of 2023 and most likely much
-earlier. However one can change the look of the game doing this anyway:]
The color of the sky is wrong on macOS. You need to flip some bytes from the
last parameter of the program:
@@ -518,8 +516,8 @@ because while(c=getchar()) is not evil.
- Sprites image height.
- Filename of the sprites image (raw RGBA image).
- Filename of the music (WAVE 8000 Hz 8bit Mono).
-- Sky color. This number depends on the system where you run the program. See
-note on macOS.
+- Sky color. This number depends on the system where you run the program. See
+note on macOS.
Sprites
The program read a single image that contains all the game sprites. The image
@@ -530,27 +528,84 @@ program calculates the size in this way:
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.).
Some positions of the grid have a predefined purpose:
-
Position | Description
- :-----------------|:--------------
- 0 | Player standing right
- 1 | Player walking right frame 0
- 2 | Player walking right frame 1
- 3 | Player jumping right
- 4 | Player standing left
- 5 | Player walking left frame 0
- 6 | Player walking left frame 1
- 7 | Player jumping left
- 8 *(second row)* | Super player standing right
- 9 | Super player walking right frame 0
- 10 | Super player walking right frame 1
- 11 | Super player jumping right
- 12 | Super player standing left
- 13 | Super player walking left frame 0
- 14 | Super player walking left frame 1
- 15 | Super player jumping left
- 24 | Player dead
- 32 | Player won
- 40 | Super player won
+
+- 0
+
+- Player standing right
+
+- 1
+
+- Player walking right frame 0
+
+- 2
+
+- Player walking right frame 1
+
+- 3
+
+- Player jumping right
+
+- 4
+
+- Player standing left
+
+- 5
+
+- Player walking left frame 0
+
+- 6
+
+- Player walking left frame 1
+
+- 7
+
+- Player jumping left
+
+- 8 (second row)
+
+- Super player standing right
+
+- 9
+
+- Super player walking right frame 0
+
+- 10
+
+- Super player walking right frame 1
+
+- 11
+
+- Super player jumping right
+
+- 12
+
+- Super player standing left
+
+- 13
+
+- Super player walking left frame 0
+
+- 14
+
+- Super player walking left frame 1
+
+- 15
+
+- Super player jumping left
+
+- 24
+
+- Player dead
+
+- 32
+
+- Player won
+
+- 40
+
+- Super player won
+
+
All the others sprites can be used as you want, depending on the game you want
to create.
Levels
@@ -571,39 +626,53 @@ here:
CLASSFLAGS must be a combination (bitwise OR) of some of these constants:
-ENEMY (1)
- An enemy. CLASSPARAM0 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: SPRITE-1,
- used when the enemy dies, and SPRITE+1, used when it moves.
-BLOCK (2)
- A wall. Player can walk over the object but can not pass through it.
-OBJECT BLOCK (4)
- When the player hits the object from below, a new object is created.
- CLASSFLAGS of the new object is defined in CLASSPARAM0. The sprite
- used for the new object is defined in CLASSPARAM1. The sprite of the
- new object must have an adjacent sprite: SPRITE+1, used when the
- block is hit.
-POWERUP (8)
- 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 CLASSFLAGS has the bit ZOOM, 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.
-END (16)
- When the player hits this object the level ends; the player wins.
-ZOOM (32)
- This flag can be used with POWERUP to indicate a power-up that
- will double the size of the player (like the Mario mushroom).
-DESTROY (64)
- 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.
-DESTROYUP (128)
- This object is like a BLOCK but when the player hits the object
- from below, the object disappears.
+ENEMY (1)
+
+- An enemy.
CLASSPARAM0 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: SPRITE-1, used when the enemy dies, and
+SPRITE+1, used when it moves.
+
+BLOCK (2)
+
+- A wall. Player can walk over the object but can not pass through it.
+
+OBJECT BLOCK (4)
+
+- When the player hits the object from below, a new object is created.
+
CLASSFLAGS of the new object is defined in CLASSPARAM0. The sprite used
+for the new object is defined in CLASSPARAM1. The sprite of the new object
+must have an adjacent sprite: SPRITE+1, used when the block is hit.
+
+POWERUP (8)
+
+- 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
+
CLASSFLAGS has the bit ZOOM, 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.
+
+END (16)
+
+- When the player hits this object the level ends; the player wins.
+
+ZOOM (32)
+
+- This flag can be used with
POWERUP to indicate a power-up that will
+double the size of the player (like the Mario mushroom).
+
+DESTROY (64)
+
+- 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.
+
+DESTROYUP (128)
+
+- This object is like a
BLOCK but when the player hits the object from
+below, the object disappears.
+
If CLASSFLAGS is 0 the object only has an aesthetic function.
The last row of the level descriptor must have all its columns set equal to
diff --git a/2014/skeggs/README.md b/2014/skeggs/README.md
index fea88ba3f..b7bc372c7 100644
--- a/2014/skeggs/README.md
+++ b/2014/skeggs/README.md
@@ -11,7 +11,7 @@
./prog
```
-HINT: Try pressing the left and right arrow keys as needed.
+**HINT**: Try pressing the left and right arrow keys as needed.
Also try pressing space/enter to select options.
Pressing Q or Escape may end the fun before you are ready. :-)
@@ -66,22 +66,22 @@ The current size is a third to a half of the original size before compression.
Due to this, it does LOTS of things that subtly annoy compilers!
-* (10) data argument not used by format string
+* `(10)` data argument not used by format string
This occurs because some of the `fprintf(3)` invocations don't use all their
parameters. The program should still work fine!
-* (1) using the result of an assignment as a condition without parentheses
+* `(1)` using the result of an assignment as a condition without parentheses
Somewhere, I needed to set a variable and then branch on the result. The
shortest way was to combine them. Some self-proclaimed "EXPERTS" think this
is a bad programming practice, but what do they know? :P
-* (1) implicit declaration of function 'time' is invalid in C99
+* `(1)` implicit declaration of function 'time' is invalid in C99
An `#include` statement is expensive, and I'm broke.
-* (1) control may reach end of non-void function
+* `(1)` control may reach end of non-void function
Turns out that sometimes, a `return` statement is too much. This will never
actually occur, but some C compilers think they know more about my program
diff --git a/2014/skeggs/index.html b/2014/skeggs/index.html
index 7e493e089..70eb0e3e8 100644
--- a/2014/skeggs/index.html
+++ b/2014/skeggs/index.html
@@ -412,7 +412,7 @@ Location: US - United States of America
make
To use:
./prog
-HINT: Try pressing the left and right arrow keys as needed.
+
HINT: Try pressing the left and right arrow keys as needed.
Also try pressing space/enter to select options.
Pressing Q or Escape may end the fun before you are ready. :-)
Judges’ remarks:
@@ -449,24 +449,16 @@ size requirements. It’s currently at 2052 according to
The current size is a third to a half of the original size before compression.
Due to this, it does LOTS of things that subtly annoy compilers!
-
-- data argument not used by format string
-
+(10) data argument not used by format string
This occurs because some of the fprintf(3) invocations don’t use all their
parameters. The program should still work fine!
-
-- using the result of an assignment as a condition without parentheses
-
+(1) using the result of an assignment as a condition without parentheses
Somewhere, I needed to set a variable and then branch on the result. The
shortest way was to combine them. Some self-proclaimed “EXPERTS” think this
is a bad programming practice, but what do they know? :P
-
-- implicit declaration of function ‘time’ is invalid in C99
-
+(1) implicit declaration of function ‘time’ is invalid in C99
An #include statement is expensive, and I’m broke.
-
-- control may reach end of non-void function
-
+(1) control may reach end of non-void function
Turns out that sometimes, a return statement is too much. This will never
actually occur, but some C compilers think they know more about my program
than I do! :P
diff --git a/2014/vik/README.md b/2014/vik/README.md
index 7b4d74edc..39608b933 100644
--- a/2014/vik/README.md
+++ b/2014/vik/README.md
@@ -108,7 +108,7 @@ any code in order for the program to run correctly:
_setmode(_fileno(stdout), 0x8000);
```
-**NOTE**: see the [alternate code](%%REPO_URL%%/2014/vik/prog.alt.c) for this.
+**NOTE**: see the [Alternate code](#alternate-code) for this.
### Known Issues
diff --git a/2014/vik/index.html b/2014/vik/index.html
index 1d3caa7a5..5fb0e6392 100644
--- a/2014/vik/index.html
+++ b/2014/vik/index.html
@@ -458,7 +458,7 @@ the program relies on writing binary data to stdout.
program with this platform, the following line can be added to main() before
any code in order for the program to run correctly:
_setmode(_fileno(stdout), 0x8000);
-NOTE: see the alternate code for this.
+NOTE: see the Alternate code for this.
Known Issues
The program uses a quite simple algorithm for detecting tone on and off events
in the Morse signal. Hence the program does not work well with noisy input
diff --git a/bugs.html b/bugs.html
index 335949eea..4921fb4ce 100644
--- a/bugs.html
+++ b/bugs.html
@@ -2843,16 +2843,17 @@ used.
STATUS: INABIAF - please DO NOT fix
Source code: 2013/endoh1/endoh1.c
Information: 2013/endoh1/index.html
-From the author:
-–
+
This program supports only “Combinator-calculus style notation” of Lazy K.
“Unlambda style” and “Iota and Jot” style are not supported.
+
+
Also, it requires a space between identifiers. In short, use (S K) instead of
-(SK), “`sk”, **iiiiiiiii, or11111100011100`.
+(SK), “`sk”, **i*i*i*ii*i*i*ii, or 11111100011100.
Huge memory may be required to compile the program (about 300 MB on my machine).
In addition, there are some limitations (and workarounds) mentioned in the
obfuscation section.
-–
+
2013/endoh3
@@ -2860,12 +2861,12 @@ used.
Source code: 2013/endoh3/endoh3.c
Information: 2013/endoh3/index.html
From the author:
-–
-You can NOT write a note length immediately followed by a note E,
-such as C2E2.
+
+You can NOT write a note length immediately followed by a note E, such as
+C2E2.
Can you figure out why?
A workaround is inserting a whitespace: C2 E2.
-–
+
2013/endoh4
@@ -2904,24 +2905,21 @@ it out as a known limitation it is not a bug but a feature.
STATUS: INABIAF - please DO NOT fix
Source code: 2014/maffiodo1/prog.c
Information: 2014/maffiodo1/index.html
-The author noted that in macOS the colours might be wrong. They gave a solution.
-However Cody didn’t see any problem with it and he beat the series many times.
-Of course the game here is small and he’s practically blind and it’s been a
-while since he last played so it might be wrong. Nevertheless the author does
-give a way to reconfigure the colours.
+The author noted that in macOS the colours might be wrong and gives a solution,
+though it is unclear if this is still true or if there was any problem at all.
The author noted that the character cannot go through walls and the impression
-is that this is how it was believed but Cody ironically pointed out that there
-are known glitches where in some places you actually could go through walls.
-This might even have applied to the arcade version, Mario Bros, though that can
-no longer be confirmed by Cody. The point here is that in this game you cannot
-go through walls but it’s not a bug.
+is that this is how it was believed but someone did ironically point out that
+there are known glitches where in some places you actually could go through
+walls. This might even have applied to the arcade version, Mario Bros, though
+that can no longer be confirmed by said person. The point here is that in this
+game you cannot go through walls but it’s not a bug.
On the other hand, the author also stated:
-–
+
When the Super character becomes bigger (ZOOM 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!
-–
-but since it’s documented it’s considered a feature, not a bug to fix.
+
+.. but since it’s documented it’s considered a feature, not a bug to fix.
2014/maffiodo2
diff --git a/faq.html b/faq.html
index ee6ea8af7..2066c1b1c 100644
--- a/faq.html
+++ b/faq.html
@@ -389,7 +389,7 @@
FAQ Table of Contents
-This is FAQ version 28.0.4 2024-08-24.
+This is FAQ version 28.0.5 2024-10-14.
Section 0 - Submitting to a new IOCCC
- 0.0 - How may I enter the IOCCC?
@@ -455,6 +455,8 @@
- 3.21 - What are
try.sh and try.alt.sh scripts and why should I use them?
- 3.22 - Are there any compiler warnings that I should not worry about?
- 3.23 - How do I compile an IOCCC entry that requires zlib?
+- 3.24 - How do I install Ruby for entries that require it?
+- 3.25 - How do I install rake for entries that require it?
Section 4 - Changes made to IOCCC entries
@@ -3333,6 +3335,29 @@ packages: one for compiling and one for linking / running.
for downloading, installing and using zlib.
We recommend trying a method suitable for your environment first, if possible.
Jump to: top
+
+
+FAQ 3.24: How do I install Ruby for entries that require it?
+
+
+Please see the official Ruby installation
+guide.
+Jump to: top
+
+
+FAQ 3.25: How do I install rake for entries that require it?
+
+
+First, if gem is not installed, see the gem GitHub repo.
+Assuming you have git(1) installed, you can do:
+
git clone https://github.com/rubygems/rubygems
+ cd rubygems && exe/gem install rake
+Otherwise, you can download the zip file, extract it, cd to the directory and
+then run:
+ exe/gem install rake
+Once this is done, try as root or via sudo:
+ gem install rake
+Jump to: top
Section 4: Changes made to IOCCC entries
@@ -3398,7 +3423,7 @@ can look almost identical.
We have set up make rules to easily do see what was changed in the winning IOCCC
entry source. Using the Makefile in the entry directory, use
-one of the following make(1) rules:
+one of the following make(1) rules:
The following make rules exist to make a difference:
make diff_orig_prog:
diff --git a/faq.md b/faq.md
index dff05df2c..3b1ed4360 100644
--- a/faq.md
+++ b/faq.md
@@ -1,6 +1,6 @@
# FAQ Table of Contents
-This is FAQ version **28.0.4 2024-08-24**.
+This is FAQ version **28.0.5 2024-10-14**.
## Section 0 - [Submitting to a new IOCCC](#faq0)