#include <stdio.h>
#include <stdbool.h>
-#include "sizes.h"
+#include "common.h"
#define LINESIZE 100
#define NDWARVES 6
extern void PUTTXT(token_t,long*,long);
extern void SHFTXT(long,long);
extern void TYPE0(void);
-
-extern void fSAVWDS(long*,long*,long*,long*,long*,long*,long*);
-#define SAVWDS(W1,W2,W3,W4,W5,W6,W7) fSAVWDS(&W1,&W2,&W3,&W4,&W5,&W6,&W7)
-extern void fSAVARR(long*,long);
-#define SAVARR(ARR,N) fSAVARR(ARR,N)
-extern void fSAVWRD(long,long*);
-#define SAVWRD(OP,WORD) fSAVWRD(OP,&WORD)
-
extern long VOCAB(long,long);
extern void DSTROY(long);
extern void JUGGLE(long);
extern bool TSTBIT(long,int);
extern long RNDVOC(long,long);
extern void BUG(long) __attribute__((noreturn));
-extern void MAPLIN(FILE *);
+extern bool MAPLIN(FILE *);
extern void TYPE(void);
-
-extern void fSAVEIO(long,long,long*);
-#define SAVEIO(OP,IN,ARR) fSAVEIO(OP,IN,ARR)
extern void DATIME(long*, long*);
-
extern long MOD(long,long);
extern void set_seed(long);
extern unsigned long get_next_lcg_value(void);
extern long randrange(long);
extern void score(long);
+extern int saveresume(FILE *, bool);
/* Statement functions
*
* AT(OBJ) = true if on either side of two-placed object
* CNDBIT(L,N) = true if COND(L) has bit n set (bit 0 is units bit)
- * DARK(DUMMY) = true if location "LOC" is dark
+ * DARK(LOC) = true if location "LOC" is dark
* FORCED(LOC) = true if LOC moves without asking for input (COND=2)
- * FOREST(LOC) = true if LOC is part of the forest
- * GSTONE(OBJ) = true if OBJ is a gemstone
+ * FOREST(LOC) = true if LOC is part of the forest
+ * GSTONE(OBJ) = true if OBJ is a gemstone
* HERE(OBJ) = true if the OBJ is at "LOC" (or is being carried)
- * LIQ(DUMMY) = object number of liquid in bottle
+ * LIQUID() = object number of liquid in bottle
* LIQLOC(LOC) = object number of liquid (if any) at LOC
- * PCT(N) = true N% of the time (N integer from 0 to 100)
+ * PCT(N) = true N% of the time (N integer from 0 to 100)
* TOTING(OBJ) = true if the OBJ is being carried */
#define TOTING(OBJ) (game.place[OBJ] == -1)
#define AT(OBJ) (game.place[OBJ] == game.loc || game.fixed[OBJ] == game.loc)
#define HERE(OBJ) (AT(OBJ) || TOTING(OBJ))
#define LIQ2(PBOTL) ((1-(PBOTL))*WATER+((PBOTL)/2)*(WATER+OIL))
-#define LIQ(DUMMY) (LIQ2(game.prop[BOTTLE]<0 ? -1-game.prop[BOTTLE] : game.prop[BOTTLE]))
+#define LIQUID() (LIQ2(game.prop[BOTTLE]<0 ? -1-game.prop[BOTTLE] : game.prop[BOTTLE]))
#define LIQLOC(LOC) (LIQ2((MOD(COND[LOC]/2*2,8)-5)*MOD(COND[LOC]/4,2)+1))
#define CNDBIT(L,N) (TSTBIT(COND[L],N))
#define FORCED(LOC) (COND[LOC] == 2)
extern long K, SPK, WD1, WD1X, WD2, WD2X;
enum speechpart {unknown, intransitive, transitive};
+
+/* hack to ignore GCC Unused Result */
+#define IGNORE(r) do{if (r){}}while(0)
+
+/* end */
+