git @ Cat's Eye Technologies Dungeons-of-Ekileugor / 1a78dfb
Rename `.markdown` file extension to `.md`. Chris Pressey 1 year, 4 months ago
2 changed file(s) with 135 addition(s) and 135 deletion(s). Raw diff Collapse all Expand all
+0
-135
README.markdown less more
0 Dungeons of Ekileugor
1 =====================
2
3 Version 1.0 | _Entry_ [@ catseye.tc](https://catseye.tc/node/Dungeons%20of%20Ekileugor)
4 | _See also:_ [Bubble Escape](https://github.com/catseye/Bubble-Escape#readme)
5 ∘ [hatoucan](https://github.com/catseye/hatoucan#readme)
6 ∘ [yucca](https://github.com/catseye/yucca#readme)
7
8 - - - -
9
10 ![Screenshot of Dungeons of Ekileugor](images/dungeons-of-ekileugor.png?raw=true)
11
12 _Dungeons of Ekileugor_ is a little roguelike game for the **unexpanded**
13 Commodore VIC-20. Despite the limitations of this architecture, it supports
14 a respectable subset of the usual "dungeon furniture":
15
16 * random generation of reasonable dungeon levels, with rooms and passages
17 * the contents of rooms are not visible until entered
18 * levels populated with monsters, treasure, potions, chests, traps, and
19 stairwells
20 * monsters persue the hero and engage in combat with hit points
21 * health potions can be collected and quaffed later
22 * experience points for victory in combat, experience levels
23 * queued status messages
24 * progressively more difficult dungeon levels
25
26 Dungeons of Ekileugor is written in Commodore BASIC 2.0. It makes use of
27 colour and the Commodore graphics characters, but not of sound effects or a
28 custom character set.
29
30 Playing the Game
31 ----------------
32
33 Use the following keys:
34
35 * `I` - go (or attack) north
36 * `J` - go (or attack) west
37 * `L` - go (or attack) east
38 * `K` - go (or attack) south
39 * `R` - rest (allow monsters to move)
40 * `Q` - quaff a health potion
41
42 The status bar shows your current hit points, out of your maximum hit points,
43 followed by the amount of gold you have, followed by the number of health
44 potions you have, followed by your experience level.
45
46 The dungeon level you are currently on is shown in the lower left; level A is
47 the shallowest level, B is the next deepest, and so on.
48
49 You start at experience level zero, because, well, welcome to computer-dom.
50
51 If something notable happened during the turn, a message about it will
52 replace the status bar at the beginning of the next turn. You can press
53 any non-action key after that to show the stats in the status bar again.
54
55 If more than one notable thing happened during the turn, each message
56 (except the last), after being displayed, will prompt you to press any key
57 to see the next message, by displaying a diamond symbol in the upper-left
58 corner.
59
60 We suggest that, if you are playing in an emulator in WARP mode, you do
61 not press space to dismiss status messages, as the space bar repeats on
62 the VIC-20. Just press any key not assigned to an action, perhaps `Z`.
63
64 You will notice that, the first time you play after starting the VIC-20
65 (or your emulator), the first dungeon level is always the same one.
66 However, things will quickly get more random as the game progresses.
67
68 You will also notice that the game ends rather abruptly when you die. If
69 you would like to see your final score (to see if you have beaten your
70 personal record, for example), after the game ends, type:
71
72 ?au,dl,xp,xl
73
74 This will display the amount of gold you accumulated, the dungeon level
75 you died on, the experience points you accumulated, and the experience level
76 you achieved.
77
78 Building
79 --------
80
81 To build the `PRG` file from the `BAS` file, run `make.sh ekileugor`.
82 The following tools are required:
83
84 * `yucca` from the [yucca distribution][] (optional)
85 * A `petcat`-compatible Commodore BASIC 2.0 tokenizer
86 (`petcat` itself, from the [VICE][] distribution, or
87 `hatoucan` from the [hatoucan distribution][])
88
89 `yucca` is only used to remove the `REM` statements, and to statically check
90 that the program is not jumping to an undefined line number. If it is not
91 found on the executable search path, `grep` will instead be used to remove
92 the `REM`s and blank lines.
93
94 Run `run.sh ekileugor` to start the game in `xvic` immediately after building.
95
96 [yucca distribution]: http://catseye.tc/node/yucca
97 [hatoucan distribution]: http://catseye.tc/node/hatoucan
98 [VICE]: http://vice-emu.sourceforge.net/
99
100 Discussion
101 ----------
102
103 There are some things you might expect from a roguelike that you won't find
104 in Dungeons of Elikeugor, due to the limitations of the unexpanded VIC;
105 you'll have to wait for _Dungeons of Ekileugor II_ (assuming it ever
106 materializes) which will require at least 3K memory expansion:
107
108 * more than one kind of monster
109 * character generation with three stats (strength, intelligence, and
110 dexterity)
111 * multiple weapons and armor (although probably not a real inventory)
112 * detecting traps and secret doors
113
114 At one point the plan was to generate MINI and FULL versions of the game
115 from the same program source, but this soon began to seem like a fool's
116 errand; testing that the MINI version still works on an unexpanded VIC after
117 adding features for the FULL version was tricky and cumbersome. Since the
118 MINI version was what was the more impressive, and hardly large enough to
119 justify the sharing of a code base with another version of the program, I
120 decided to concentrate on it, and save the FULL version for some potentially
121 mythical sequel.
122
123 So, yeah, basically this game turned out to be "how much of a classic
124 roguelike can I stuff into an unexpanded VIC-20?" I was originally thinking
125 of writing it in assembly, with the Ophis assembler, but I suspected that
126 that would not be much more space-efficient, and run speed was not a primary
127 concern. Some parts of the code could probably be done in less space with
128 strategic machine code, but I don't know if it would shave enough off the
129 size to permit adding any new, significant features. (Currently, after the
130 program has ended, `?FRE(0)` will report that there are around 14 bytes of
131 free memory available, which is pretty darn close to nothing.)
132
133 But really, this project was undertaken mostly just as an excuse to use the
134 word "Ekileugor" in the title (have you figured it out yet?)
0 Dungeons of Ekileugor
1 =====================
2
3 Version 1.0 | _Entry_ [@ catseye.tc](https://catseye.tc/node/Dungeons%20of%20Ekileugor)
4 | _See also:_ [Bubble Escape](https://github.com/catseye/Bubble-Escape#readme)
5 ∘ [hatoucan](https://github.com/catseye/hatoucan#readme)
6 ∘ [yucca](https://github.com/catseye/yucca#readme)
7
8 - - - -
9
10 ![Screenshot of Dungeons of Ekileugor](images/dungeons-of-ekileugor.png?raw=true)
11
12 _Dungeons of Ekileugor_ is a little roguelike game for the **unexpanded**
13 Commodore VIC-20. Despite the limitations of this architecture, it supports
14 a respectable subset of the usual "dungeon furniture":
15
16 * random generation of reasonable dungeon levels, with rooms and passages
17 * the contents of rooms are not visible until entered
18 * levels populated with monsters, treasure, potions, chests, traps, and
19 stairwells
20 * monsters persue the hero and engage in combat with hit points
21 * health potions can be collected and quaffed later
22 * experience points for victory in combat, experience levels
23 * queued status messages
24 * progressively more difficult dungeon levels
25
26 Dungeons of Ekileugor is written in Commodore BASIC 2.0. It makes use of
27 colour and the Commodore graphics characters, but not of sound effects or a
28 custom character set.
29
30 Playing the Game
31 ----------------
32
33 Use the following keys:
34
35 * `I` - go (or attack) north
36 * `J` - go (or attack) west
37 * `L` - go (or attack) east
38 * `K` - go (or attack) south
39 * `R` - rest (allow monsters to move)
40 * `Q` - quaff a health potion
41
42 The status bar shows your current hit points, out of your maximum hit points,
43 followed by the amount of gold you have, followed by the number of health
44 potions you have, followed by your experience level.
45
46 The dungeon level you are currently on is shown in the lower left; level A is
47 the shallowest level, B is the next deepest, and so on.
48
49 You start at experience level zero, because, well, welcome to computer-dom.
50
51 If something notable happened during the turn, a message about it will
52 replace the status bar at the beginning of the next turn. You can press
53 any non-action key after that to show the stats in the status bar again.
54
55 If more than one notable thing happened during the turn, each message
56 (except the last), after being displayed, will prompt you to press any key
57 to see the next message, by displaying a diamond symbol in the upper-left
58 corner.
59
60 We suggest that, if you are playing in an emulator in WARP mode, you do
61 not press space to dismiss status messages, as the space bar repeats on
62 the VIC-20. Just press any key not assigned to an action, perhaps `Z`.
63
64 You will notice that, the first time you play after starting the VIC-20
65 (or your emulator), the first dungeon level is always the same one.
66 However, things will quickly get more random as the game progresses.
67
68 You will also notice that the game ends rather abruptly when you die. If
69 you would like to see your final score (to see if you have beaten your
70 personal record, for example), after the game ends, type:
71
72 ?au,dl,xp,xl
73
74 This will display the amount of gold you accumulated, the dungeon level
75 you died on, the experience points you accumulated, and the experience level
76 you achieved.
77
78 Building
79 --------
80
81 To build the `PRG` file from the `BAS` file, run `make.sh ekileugor`.
82 The following tools are required:
83
84 * `yucca` from the [yucca distribution][] (optional)
85 * A `petcat`-compatible Commodore BASIC 2.0 tokenizer
86 (`petcat` itself, from the [VICE][] distribution, or
87 `hatoucan` from the [hatoucan distribution][])
88
89 `yucca` is only used to remove the `REM` statements, and to statically check
90 that the program is not jumping to an undefined line number. If it is not
91 found on the executable search path, `grep` will instead be used to remove
92 the `REM`s and blank lines.
93
94 Run `run.sh ekileugor` to start the game in `xvic` immediately after building.
95
96 [yucca distribution]: http://catseye.tc/node/yucca
97 [hatoucan distribution]: http://catseye.tc/node/hatoucan
98 [VICE]: http://vice-emu.sourceforge.net/
99
100 Discussion
101 ----------
102
103 There are some things you might expect from a roguelike that you won't find
104 in Dungeons of Elikeugor, due to the limitations of the unexpanded VIC;
105 you'll have to wait for _Dungeons of Ekileugor II_ (assuming it ever
106 materializes) which will require at least 3K memory expansion:
107
108 * more than one kind of monster
109 * character generation with three stats (strength, intelligence, and
110 dexterity)
111 * multiple weapons and armor (although probably not a real inventory)
112 * detecting traps and secret doors
113
114 At one point the plan was to generate MINI and FULL versions of the game
115 from the same program source, but this soon began to seem like a fool's
116 errand; testing that the MINI version still works on an unexpanded VIC after
117 adding features for the FULL version was tricky and cumbersome. Since the
118 MINI version was what was the more impressive, and hardly large enough to
119 justify the sharing of a code base with another version of the program, I
120 decided to concentrate on it, and save the FULL version for some potentially
121 mythical sequel.
122
123 So, yeah, basically this game turned out to be "how much of a classic
124 roguelike can I stuff into an unexpanded VIC-20?" I was originally thinking
125 of writing it in assembly, with the Ophis assembler, but I suspected that
126 that would not be much more space-efficient, and run speed was not a primary
127 concern. Some parts of the code could probably be done in less space with
128 strategic machine code, but I don't know if it would shave enough off the
129 size to permit adding any new, significant features. (Currently, after the
130 program has ended, `?FRE(0)` will report that there are around 14 bytes of
131 free memory available, which is pretty darn close to nothing.)
132
133 But really, this project was undertaken mostly just as an excuse to use the
134 word "Ekileugor" in the title (have you figured it out yet?)