Fix the mazehint log so it works.
[open-adventure.git] / notes.adoc
index e92d9407914844e1bc2e9852e00419befc8c51a9..fd3504a6f2ce68a4d62668690e3b4542f0cf070e 100644 (file)
@@ -10,8 +10,8 @@ separate link:history.html[history] describing how it came to us.
 The principal maintainers of this code are Eric S. Raymond and Jason
 Ninneman.  Eric received Don Woods's encouragement to update and ship
 the game; Jason signed on early in the process to help. The assistance
 The principal maintainers of this code are Eric S. Raymond and Jason
 Ninneman.  Eric received Don Woods's encouragement to update and ship
 the game; Jason signed on early in the process to help. The assistance
-of Peje Nilson in restructuring some particularly grotty gotos is
-gratefully acknowledged.
+of Peje Nilsson in restructuring some particularly grotty gotos is
+gratefully acknowledged. Petr Voropaev contributed fuzz testing.
 
 == Nomenclature ==
 
 
 == Nomenclature ==
 
@@ -62,7 +62,9 @@ a "seed" command) will replay reliably, including random events.
 
 The adventure.text file is no longer required at runtime.  Instead, it
 is compiled at build time to a source module containing C structures,
 
 The adventure.text file is no longer required at runtime.  Instead, it
 is compiled at build time to a source module containing C structures,
-which is then linked to the advent binary.
+which is then linked to the advent binary. There is an adventure.yaml file
+as well; this is also compiled to C code, and will eventually replace
+adventure.text altogether.
 
 The game-save format has changed.  This was done to simplify the
 FORTRAN-derived code that formerly implemented the save/restore
 
 The game-save format has changed.  This was done to simplify the
 FORTRAN-derived code that formerly implemented the save/restore
@@ -79,8 +81,10 @@ ugly and quite unreadable.
 
 Jason Ninneman and I have moved it to what is almost, but not quite,
 idiomatic modern C.  We refactored the right way, checking correctness
 
 Jason Ninneman and I have moved it to what is almost, but not quite,
 idiomatic modern C.  We refactored the right way, checking correctness
-against a comprehesive test suite that we built first and verified with
-coverage tools. This is what you are running when you do "make check".
+against a comprehensive test suite that we built first and verified
+with coverage tools (we have 88% coverage, with the remaining 12%
+confined to exception cases that are difficult to reach). This is
+what you are running when you do "make check".
 
 This move entailed some structural changes.  The most important was
 the refactoring of over 350 gotos into if/loop/break structures.  We
 
 This move entailed some structural changes.  The most important was
 the refactoring of over 350 gotos into if/loop/break structures.  We
@@ -121,10 +125,13 @@ ways:
   compromise forward-portability to other languages.
 
 * The code still has an unfortunately high density of magic numbers - in
   compromise forward-portability to other languages.
 
 * The code still has an unfortunately high density of magic numbers - in
-  particular, numeric object and room IDs.  There are plans to fix this.
+  particular, numeric object IDs.  There are plans to fix this.
 
 * Much of the code still uses FORTRAN-style uppercase names.
 
 
 * Much of the code still uses FORTRAN-style uppercase names.
 
+* The code still assumes one-origin array indexing.  Thus, arrays are
+  a cell larger than they strictly need to be and cell 0 is unused.
+
 * The code is still mostly typeless, slinging around machine longs
   like a FORTRAN or BCPL program.  Some (incomplete) effort has been made
   to introduce semantic types.
 * The code is still mostly typeless, slinging around machine longs
   like a FORTRAN or BCPL program.  Some (incomplete) effort has been made
   to introduce semantic types.