Open toiletduk opened 1 month ago
The Z-code files for Planetfall and Stationfall don't have the bit set in the header to indicate that the status bar is supposed to display time: instead what they call time is just the move count. For example, Planetfall running on an Amiga with Infocom's interpreter:
For Z-code version 3 it's up to the interpreter to draw the status bar: all the game provides is the location text, whether to show score/moves or time, and the value for that. Different Infocom interpreters showed it differently, but Planetfall and Stationfall are definitely really just showing score and moves.
Suggested patch from OP inline:
diff --git a/Generic/fastmem.c b/Generic/fastmem.c
--- Generic/fastmem.c
+++ Generic/fastmem.c
@@ -273,8 +273,15 @@
{ LURKING_HORROR, 203, "870506" },
{ LURKING_HORROR, 219, "870912" },
{ LURKING_HORROR, 221, "870918" },
{ AMFV, 47, "850313" },
+ { PLANETFALL, 10, "880531" },
+ { PLANETFALL, 20, "830708" },
+ { PLANETFALL, 26, "831014" },
+ { PLANETFALL, 29, "840118" },
+ { PLANETFALL, 37, "851003" },
+ { PLANETFALL, 39, "880501" },
+ { STATIONFALL, 1, "861017" },
+ { STATIONFALL, 63, "870218" },
+ { STATIONFALL, 87, "870326" },
+ { STATIONFALL, 107, "870430" },
{ UNKNOWN, 0, "------" }
};
/* Open story file */
diff --git a/Generic/frotz.h b/Generic/frotz.h
--- Generic/frotz.h
+++ Generic/frotz.h
@@ -35,8 +35,10 @@
ARTHUR,
JOURNEY,
LURKING_HORROR,
AMFV,
+ PLANETFALL,
+ STATIONFALL,
UNKNOWN
};
/*** Constants that may be set at compile time ***/
diff --git a/Generic/screen.c b/Generic/screen.c
--- Generic/screen.c
+++ Generic/screen.c
@@ -1866,13 +1866,21 @@
print_string (brief ? "S: " : "Score: ");
print_num (global1);
pad_status_line (brief ? 8 : 14);
+
+ if (story_id == PLANETFALL || story_id == STATIONFALL) { /* conditional statement to determine if Stationfall/Planetfall */
+ /* both games have time codes that would be incorrectly reported as */
+ print_string (brief ? "T: " : "Time: "); /* move counts */
+ print_num (global2);
- print_string (brief ? "M: " : "Moves: ");
- print_num (global2);
-
}
+ else
+ {
+ print_string (brief ? "M: " : "Moves: ");
+ print_num (global2);
+
+ }
/* Pad the end of the status line with spaces */
pad_status_line (0);
In games with a timestamp (Planetfall and Stationfall are ones I know specifically that exhibit this), the time is represented as "Moves" in the status bar. Proof attached.
Oddly, Suspect doesn't do this.
I messed around with the source, and I'm 99.99999% sure I did this right, and this should fix it.