view rogue3/rogue36.cat @ 111:7f8f43943b1f

Fix some terribly depressing corruption during restore. In rogue5/state.c, rs_read_daemons() zeroes out the argument and delay if the daemon slot is empty. Unfortunately that code ended up on the wrong side of the brace that closes the for loop, so instead of running after each daemon, it got run once after the loop exited, when the index was of course out of bounds. This tended to manifest, when compiled with -O2, by overwriting hw and setting it to NULL. When inventory() next ran, hw would be passed to wgetch(), which returns ERR when it gets a NULL argument. This made md_readchar() think something was wrong and autosave the game. Upon investigation, rogue3 was found to commit the same mistake. rogue4 and srogue don't zero the data. arogue5 already does it properly. Someday I am going to run all this through Valgrind. Someday when I am a kinder person who will not be driven to invoke hordes of trolls and centaurs upon the original authors.
author John "Elwin" Edwards
date Wed, 08 Jan 2014 16:44:16 -0500
parents 38acf3eb27e6
children
line wrap: on
line source

ROGUE(6)                                                              ROGUE(6)



NAME
       rogue - Exploring The Dungeons of Doom

SYNOPSIS
       rogue [ -s ] [ save_file ] [ -n playername ]

DESCRIPTION
       Rogue  is a computer fantasy game with a new twist.  It is crt oriented
       and the object of the game is to survive the attacks  of  various  mon-
       sters and get a lot of gold, rather than the puzzle solving orientation
       of most computer fantasy games.

       To get started you really only need to know two commands.  The  command
       ?   will  give  you  a list of the available commands and the command /
       will identify the things you see on the screen.

       To win the game (as opposed to merely playing to  beat  other  people's
       high  scores)  you  must locate the Amulet of Yendor which is somewhere
       below the 20th level of  the  dungeon  and  get  it  out.   Nobody  has
       achieved  this  yet and if somebody does, they will probably go down in
       history as a hero among heros.

       When the game ends, either by your death, when you quit, or if you  (by
       some  miracle) manage to win, rogue will give you a list of the top-ten
       scorers.  The scoring is based entirely upon how  much  gold  you  get.
       There is a 10% penalty for getting yourself killed.

       For more detailed directions, read the document A Guide to the Dungeons
       of Doom.

OPTIONS
       If a save_file argument is given, rogue will attempt to load  a  previ-
       ously saved game from that file.

       With  the  -n  option,  rogue will load a game with the name playername
       from a location defined at compile time.  If no such  game  exists,  it
       will start one.

       The -s option prints the top-ten scores list and exits.


FILES
       /usr/local/games/roguelike/rogue3.scr   Score file
       ~/rogue3.save                           Default save file
       /usr/local/games/roguelike/rogue3save   System savefiles

SEE ALSO
       Michael C. Toy, A Guide to the Dungeons of Doom

BUGS
       Probably  infinite.   Currently known bugs are: Sometimes you are still
       hungry even after you eat food and sometimes you get a monster  on  the
       screen in reverse video which may or may not cause a core dump.

COPYRIGHT
       Rogue: Exploring the Dungeons of Doom
       Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman
       All rights reserved.
       License: 3-clause BSD, see LICENSE.txt for details.



3rd Berkeley Distribution                                             ROGUE(6)