7DRL: Bob and Trev: Resurrection+ -------------------------------- (c) Jeffrey Lee 2007. Released under the GNU GPL version 2. Created for 7DRL challenge 2007: http://roguebasin.roguelikedevelopment.org/index.php?title=7DRL_Contest_2007 This is a post-challenge bugfix-only release. For a list of bugs fixed, see the 'bugs fixed' section. Introduction: ------------- Around the time the BBC Micro was popular, there was a magazine called The Micro User. And in the letters page, there were some humourous, fictional letters from Bob, writing to his friend Trev. These letters dealt with the trials and tribulations of an 80's home computer tinkerer, and the way the world around him (particularly his wife) looked upon his hobby. Some of these letters can be seen online here: http://myweb.tiscali.co.uk/themicrouser/menus/humour.htm The letters however were rather tame in nature, and not really befitting of a roguelike. The real inspiration for the roguelike comes from a much later letter, in 1995, in the last ever issue of Acorn Computing. This Bob and Trev letter sends things down a slightly more surreal and apocalyptic/dystopian path, featuring cemtex mice, floppy disc drives brandished as deadly weapons, the dongle squad, the Acron Users' suicide clan, and the usual smattering of in-jokes. This of course is a perfect setting for a roguelike. So, I present to you, Bob and Trev: Resurrection. Minimum system requirements: ---------------------------- A BBC Model B with 32k of RAM and 100k disc drive, i.e.: * BBC BASIC II * 24.75k free RAM * A 40x25 text mode * 22k free disk space for game data * And (up to) 57k for each save file The game should also run fine on newer versions of BBC BASIC (i.e. as shipped with RISC OS), or on the open-source Brandy (http://jaguar.orpheusweb.co.uk/branpage.html). Note however that the current version (1.19) contains some bugs that need patching in order for the game to run (see below). Technically the game should also run on BBC BASIC for Windows (http://www.bbcbasic.co.uk/) but I have been unable to test its compatability due to the 8K RAM limit on the demo version. Installation: ------------- For a BBC: * I've supplied an Acorn-formatted 100k DFS disc image with a copy of the game on it. Once the disc is in your BBC (whether emulated or real), ensure you are in Mode 7 and enter 'CH."BATRBCX"' at the BASIC prompt to start the game * I've also included it as an Acorn-formatted 200k DFS image, just in case the 100k fails, or you need some extra space (The tool I was using during testing was only making 200k images, so some tweaking was required to produce a 100k image) * If you want to store save files on a sperate disc, you can safely swap discs while at the "Name?" prompt. For RISC OS: * Copy batrbcx, config, and dundat to the directory of your choice * If needed, modify the config file as per instructions below. Default config is for colour in Mode 13, so should work on pretty much anything. * Set the current directory to the location of the files, and run batrbcx For Brandy on Linux: * Make sure you're using a compatible version of Brandy (see below) * Copy batrbcx, config, and dundat to the directory of your choice * Modify the config file as per the instructions below * Set the current directory to the location of the files, and run batrbcx Other systems: * I'm sure you can work this out for yourself :) The game: --------- The goal of the game is to ascend to level 30 of the building, steal the Nut Device, and escape back into the sewers. Along the way you will meet numerous people who will try to kill you, and find a multitude of items to defend yourself with. Features: * 4 colour ASCII graphics (if enabled) * Permadeath * Persistent levels * Character and monster statistics - XP level, speed, strength, dexterity, intelligence and wizdom * Melee, ranged, and fired weapons * Armour * Hunger, food, drink, and cooking! * Item identification * Map discovery, simple LOS * A few opportunities for stupid deaths * Scores file Controls: Due to the lack of a numpad on the BBC, the game relies on the yuhjklbn keyset for movement: y k u \|/ h-.-l /|\ b j n The other controls are: c Close door/window in direction d Drop item with inventory letter e Eat food with inventory letter f Fire current weapon in direction i List inventory m Move in direction without fighting o Open door/window in direction q Quaff (drink) item r Read book/magazine with inventory letter w Wield as a weapon C Cook in a microwave (if wielded) F Fight in direction (Important for ranged weapons!) H Hand-to-hand combat (i.e. unwield current weapon) L Load/unload ammo from current weapon Q Quit S Save and quit T Take off armour W Wear armour < Go up stairs > Go down stairs / Identify symbol; move the cursor to location and press . . Rest one turn , Take Your inventory will be labelled with the letters a-z, A-Z. Inventory assignments are sticky while the item is held. When taking items from the ground, if there is more than one item available, you will also be prompted which to take; enter the appropriate letter (a-z, A-Z). Use the identify command (/) to see the list of items if you are unsure. Due to memory constraints, the commands don't give very friendly messages if you enter something wrong. Onscreen items: # Wall . Lit tile (space) Unlit tile -| Open/closed door/window < Upward stairs > Downward stairs @ Player ) Weapon , Ammo " Armour ? Book/magazine ! Drink % Food * Item A-Z,a-z,0-9 Monster I Unseen monster How to actually play the game: Here's all the stuff that didn't make it into the original readme... Weapons: The following weapons are ranged; i.e. you can use the 'F' key to attack monsters more than one square away: Weapon Range All mice 2 102-key keyboard 2 Lead 3 The follow weapons can be loaded with ammo and fired: Weapon Ammo type All 5.25" floppy drives Any 5.25" floppy All 3.5" floppy drives Any 3.5" floppy Dot-matrix printers Dots Laserdisc drive Laserdiscs BBC Micro Self-guiding nuclear warhead (Scud) Opple Anorak Any 3.5" floppy Some items are completely ineffective in hand-to-hand combat, so don't be surprised if you get messages that you're doing pathetic damage. Armour: There are four types of armour: Chest armour (T-shirts, pullovers, jumpers, etc.), badges, coats (Anoraks, trenchcoats), and glasses. You can wear an unlimited number of badges, but only one of each type of other piece of armour at once. Books and magazines: These are meant to be the 'rare gems' of the game, although I haven't actually checked how much they're worth with respect to some of the other items ;) Books and magazines come in four states - shrink-wrapped, pristine, worn, and illegible. Illegible items cannot be read at all, while worn items require reading glasses to be worn in order to read them. Reading an item will cause its condition to deteriorate further, which results in a lower score at the end of the game, and less of an effect when read. Books will provide you with an XP point boost, while magazines will identify dungeon items (starting with those in your inventory, then moving onto other random items in the game). The better condition a book is in when it is read, the better the effects will be. Other random notes: Wielded weapons hit too hard, and you usually get hungry too quickly. This makes the game very hard. But since this is a bugfix-only release, there's not much I can do about that. Oh bugger, an error ------------------- As far as I know the game doesn't contain any crash-worthy errors, but if you get killed by the following, then it is indeed a bug/error: Message Meaning ------- ------- Error XXX at YYY An error from the BASIC interpreter Chaos theory A failure in the object location tracking code Schrodinger's cat Some ammo is loaded in a nonexistant weapon These other death messages are not errors per se, just me deciding to treat the player harshly for some fairly innocent actions: Message Meaning ------- ------- Kleptomania You exceeded the 52 item inventory limit Structural collapse You put too many items (over 202) on the floor Of course, if the game crashes without producing any error message, then it is indeed an error. In these situations you may be left with a savefile on disc; if you are lucky you'll be able to reload the game and continue from the point you entered the level. If you're unlucky, you'll have to delete it and start again. Scores ------ The game will create a file called 'logfile' to log all your death messages. The config file --------------- The config file (imaginatively called 'config') is used to control the following options: * Which screen mode to use (BBC/RISC OS) * Colour * The platform-specific delete command * Currency symbol (since the BBC used a different ASCII code for £ (GBP) than Latin-1) The format of the config file is several lines of the following form: * The first line of the file is a series of hex character codes to send to the VDU. For compatible platforms, these set up the screen mode and colour palette. For platforms where this isn't necessary, '&00' should be used. * The second line is either 0 to signify no colour, or 3 lines of numbers, giving the palette indices to use for white, green and blue respectively. * Then there is the platform-specific delete command. BASIC doesn't have a builtin file delete command, but it can pass commands to the host OS's command interpreter. So for MOS/RISC OS, the command is 'delete'; for Linux, 'rm', and for Windows, 'del'. * Then there is the character (or string!) you want to use for currency. Examples: - BBC in mode 7: &16&07 0 delete ` - BBC in mode 1: &16&01&17&01&07&00&00&00&17&02&04&00&00&00&17&06&00&00&00 1 2 3 delete ` - RISC OS in mode 13: &16&0D 63 12 60 delete £ - Linux Brandy: &00 7 2 6 rm £ - BBC BASIC for DOS/Windows, Windows Brandy: &00 7 2 6 del £ Brandy issues ------------- There are a couple of bugs in Brandy 1.19 that need to be fixed for the game to run: If you're not using the RISC OS port, then fileio_openup() in fileio.c needs patching to return 0 if the file cannot be opened (like fileio_openin() does). Make sure you modify the NetBSD/Linux/DOS version of the function (it's about halfway through the file) fn_rnd() in functions.c needs patching so that RND(N) returns numbers from 1 to N instead of 0 to N-1. Simply change: push_int(TOINT(randomfraction()*TOFLOAT(value))); to: push_int(1+TOINT(randomfraction()*TOFLOAT(value))); Then recompile Brandy and everything should work fine. Bugs fixed ---------- Compared to the original, this version has the following bugs fixed: * Corpses now give nutrition when eaten * Killing monsters will no longer corrupt the inventory of other monsters * Monster/item spawn code will no longer go over limit and corrupt the object list * Fixed book & magazine discovery to not interfere with each other * Fixed XP level gain so that you don't gain energy; also has the side-effect of increasing the chance of gaining other stats (AC, Wizdom, Intelligence, Constitution) * Fixed hunger status to fully overwrite the old state string * Fixed obituary to round your score to the nearest penny * Fixed floor deescriptions showing a number after them Source ------ The 'source' folder contains: batr The slightly-more-readable, uncrunched version of the game code dungen BASIC tool used to generate the dundat file duntsv TSV file which is parsed by dungen to produce dundat For some details of the innards of the game, see the articles on The Icon Bar (in links section below). I may also add some extra stuff to my website. To fit 'batr' into the ~17k of RAM I had available, I ran it through two BASIC compressors to get the smallest size possible: * First, it was run through BasCompress, using the default options, and with 'dumb' mode enabled * Then, it was run through StrongBS. For BASIC II compatibility, ensure the 'Convert LEFT$(x$,LENx$-1) to LEFT$(n$)' option is turned off. I also turned off 'Insert Squash Info', to gain a few extra bytes. The reason for the two-stage compression is that: a) I found that StrongBS produces smaller files than BasCompress b) However StrongBS failed to detect most of the constant variables in the code Thus, BasCompress is used first (mainly to strip out the static variables), followed by StrongBS to get the code to minimal size. Legal mumbo jumbo ----------------- Bob and Trev: Resurrection is (c) Jeffrey Lee 2007 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA See the file 'COPYING' for details. Links ----- http://www.phlamethrower.co.uk/riscos/batr.php Game homepage http://www.iconbar.com/articles/Bob_and_Trev_Resurrection/index1131.html Development articles on The Icon Bar http://myweb.tiscali.co.uk/themicrouser/menus/humour.htm Online Micro User/Bob and Trev archives http://jaguar.orpheusweb.co.uk/branpage.html Brandy homepage http://www.bbcbasic.co.uk/ BBC BASIC for Windows http://appbasic.jettons.co.uk/downloads/ StrongBS, BASCompress downloads