-r:: Restore game from specified file
-o:: Old-style. Restores original interface, no prompt or line editing.
- Also ignores new-school one-letter commands l, x, g, z, i.
+ Also ignores new-school one-letter commands l, x, g, z, i. Also
+ case-smashes and truncates unrecognized text when echoed.
== BUGS ==
// pack the substrings
cmd->wd1 = token_to_packed(cmd->raw1);
cmd->wd2 = token_to_packed(cmd->raw2);
+
+ /* (ESR) In oldstyle mode, simulate the uppercasing and truncating
+ * effect on raw tokens of packing them into sixbit characters, 5
+ * to a 32-bit word. This is something the FORTRAN version did
+ * becuse archaic FORTRAN had no string types. Don Wood's
+ * mechanical translation of 2.5 to C retained the packing and
+ * thus this misfeature.
+ *
+ * It's philosophically questionable whether this is the right
+ * thing to do even in oldstyle mode. On one hand, the text
+ * mangling was not authorial intent, but a result of limitations
+ * in their tools. On the other, not simulating this misbehavior
+ * goes against the goal of making oldstyle as accurate as
+ * possible an emulation of the original UI.
+ */
+ if (settings.oldstyle) {
+ cmd->raw1[TOKLEN+TOKLEN] = cmd->raw1[TOKLEN+TOKLEN] = '\0';
+ for (int i = 0; i < strlen(cmd->raw1); i++)
+ cmd->raw1[i] = toupper(cmd->raw1[i]);
+ for (int i = 0; i < strlen(cmd->raw2); i++)
+ cmd->raw2[i] = toupper(cmd->raw2[i]);
+ }
}
/* Hide the fact that wods are corrently packed longs */
Extreme care has been taken not to make changes that would alter the
logic of the game as we received it from Don Woods, except to fix
glitches that were clearly bugs. By policy, all user-visible
-changes must be revertible with the -o (oldstyle) option.
+changes to gameplay must be revertible with the -o (oldstyle) option.
It is a goal of this project to exactly preserve the *intended
behavior* of 430-point Adventure, but the implementation of it is fair
* Attempting to extinguish an unlit urn caused it to lose its oil.
* Unrecognized words are no longer truncated to 5 characters and
- uppercased when they are echoed.
+ uppercased when they are echoed. (This behavior is restored by the
+ oldstyle switch.)
* "A crystal bridge now spans the fissure." (progressive present) was
incorrect most places it appeared and has been replaced by "A crystal
i
-Sorry, I don't know the word "i".
+Sorry, I don't know the word "I".
l
-Sorry, I don't know the word "l".
+Sorry, I don't know the word "L".
x
-Sorry, I don't know the word "x".
+Sorry, I don't know the word "X".
z
-Sorry, I don't know the word "z".
+Sorry, I don't know the word "Z".
quit