/[projet1]/users/twilighte/Wurlde/GameCode/Log.s
Defence Force logotype

Contents of /users/twilighte/Wurlde/GameCode/Log.s

Parent Directory Parent Directory | Revision Log Revision Log


Revision 143 - (show annotations)
Sat Aug 8 15:16:11 2009 UTC (10 years, 9 months ago) by Twilighte
File size: 129335 byte(s)
Latest version of wurlde added to svn
1 ;Log.s
2
3 The game is based on Wurlde, a story created many years ago (around 1990).
4 Lucien and Jonny are the main characters. The shortened version of the intro follows..
5 Lucien and Jonny are best friends. They play in the hills overlooking the fishing village
6 they were brought up in. Both Lucien and Jonnies fathers are fisherman by trade.
7 One day they are playing in the hills when a great storm begins. Unlike previous
8 rain storms, these drop firerain over the land, scorching and burning anyone and
9 everything they touch. And so the village is burnt to cinder and so too is Jonny.
10 Lucien is the only survivor and he traverses the hillside to the cliff edge and down
11 into a tunnel that opens into a cavern that holds the only remaining fishing vessel
12 that was not taken by the storm. He climbs in and sails off into the sunset.
13 A sea storm takes his boat and he is washed up on the shores of Ritemoor, losing his
14 memory as with most of his health.
15 Through his journeys here on, sleep will reveal fragments of the above story. However only
16 in certain controlled places can he sleep.
17
18 Whilst Jonny was killed by the storm his spirit lives on and he is occasionally able
19 to make an appearance to report the foul work that brought about the storm.
20 That a sorcerer named Madrageth wrought great magic to send out both fire and sea storm
21 to destroy a wizard who had hidden in the village in a power struggle. The Fire storm
22 intended to destroy the village and the sea storm to prevent people escaping to the sea.
23 Madrageth has not noticed Lucien and this is Luciens edge to victory.
24
25 Some parts of the bigger picture are revealed through dream sequences, others through visions
26 of Jonny and others through the characters Lucien meets on his quest.
27
28 Lucien must now restore the health he is lacking by eating from the fruit tree and catching
29 fish. He may also gather butterflies if he combines the net with the stick.
30 He will make his way to the Escarpment where he can get passage to Sassubree via the
31 Witches castle.
32 The witches will interrogate him and experiment on him but he will escape back to the boat.
33 Lucien must then traverse further down stream to Sassubree.
34
35 In Sassubree he will be able to sell the fruit, Fish and Butterflies. He may then buy lodging,
36 ale, and things from the market.
37 One such object is the firestone which will disuade the witches from stopping him.
38 Another object is the Weathercock.
39 He may then travel peacefully to Ritemoor and collect more butterflies.
40 If he carries the Weathercock as he passes the windmill vanes, they will not hit him so he can
41 reach the fish and fruit tree.
42 He may also buy fish from the Jetty early in the morning and sell it to the market later in the
43 day. The later he sells it the higher price it will fetch.
44 He will also learn that a powerful and magical sword is held on Samson isle. He will need to raise
45 enough gold to buy passage from Keggs.
46 Early one morning Lucien and Keggs set off on a boat moored in Sassubree harbour. However they
47 hit a heavy storm and keggs is knocked overboard leaving Lucien to ride the storm.
48 On reaching Samson Isle Lucien will find the monastary and will attempt to steal the sword from the
49 monks.
50 The Monks use strange magic against Lucien but eventually Lucien wises up, gets the sword and returns
51 to the boat only to find it gone.
52 If he spoke enough to the occupants of Sassubree he will know somewhere on the island is likely to
53 be a pit dragon who likes toadstools, which is his way off the island and back to Sassubree.
54 The Dragon is hidden east of the monastary beyond a small local village and will need to befriend it
55 with toadstools from the dungeon in the monastary (The villagers will mention this).
56 He may also get lodging at the village to save the game.
57 Once befriended he flies the dragon. However again he faces a heavy storm and must guide the dragon to
58 safety. The dragon will fly over Sassubree and land by Sassubree Fort. Lucien will get off and the dragon
59 will take off again.
60 Occupants of Sassubree will now refer to him as the dragon rider and through keywords he has learnt on
61 samson isle will ?
62
63
64
65 Controls Overview
66 Bit Operation Std Keys Joystick
67 0(kcL) Left Crsr LF Left
68 1(kcR) Right Crsr RG Right
69 2(kcU) Up Crsr UP Up
70 3(kcD) Down Crsr DN Down
71 4(kcA) Action Left Ctrl Primary Fire
72 5(kcI) Item Control Left Shift Secondary Fire
73 6(kcM) Menu Escape -
74
75
76 Standing mode
77 L Run Left/Turn Left
78 R Run Right/Turn Right
79 U Pickup/Jump
80 D Drop/Duck
81 F Action
82 LU Leap Left
83 LR Leap Right
84 Fh Inventory
85
86 Running
87 LU Running Jump Left
88 RU Running Jump Right
89
90
91
92
93 Standing mode
94 L Turn Left/Run Left
95 R Turn Right/Run Right
96 U
97 D
98 I Add transient item to inventory
99 I L Item Select Left
100 I R Item Select Right
101 I U Pickup Item
102 I D Drop Item
103 I A Use Current Item
104 A Action (Interact with Background)
105 U L Standing Jump Left
106 U R Standing Jump Right
107
108 Run Mode
109 L Turn Left/Continue running left
110 R Turn Right/Continue running right
111 L U Turn Left/Running Jump Left
112 R U Turn Right/Running Jump Right
113
114
115
116 NORMAL MODE(From Stand Left or Stand Right)
117 == Movement ==
118 Left kcL Turn/Run Left
119 Right kcR Turn/Run Right
120 Up kcU Jump Up/Enter Building
121 Down kcD Crouch?
122 Up Left kcUL Turn Left/Running Jump Left/Standing Jump Left
123 Up Right kcUR Turn Right/Running Jump Right/Standing Jump Right
124 Menu Enter Main Menu
125 == Inventory ==
126 Shift kcS Catch and pocket Item/Inventory Key Mode
127 Items caught are always placed in pocket before they can be eaten.
128 Shift Up kcSU Pickup Item
129 Shift Down kcSD Drop Item
130 Shift Left kcSL Navigate Pockets left
131 Shift Right kcSR Navigate Pockets Right
132 Shift Action kcSA Use Item/Eat Item
133 Shift Menu Enter Item Menu(Combine,Examine)
134 == Action ==
135 Action kcA Interact Background/Talk to Character
136 Action Cursor Combat (Type of combat is Based on selected item)
137 Performing an action away from the scene will perform an escape tactic
138 Performing an action towards the scene will perform an attack tactic(proactive)
139 Performing an action Up will perform an avoidance tactic(reactive)
140 Performing an action Down will perform a submissive tactic(surrender)
141 Action Menu Enter Action Menu
142
143
144
145
146 Space Resume game and Normal Mode
147
148 HANGING MODE
149 Up Climb Up onto Ledge
150 Down Fall Down
151 Space Suspend game and enter Item Mode
152
153 PAUSE MODE
154 Fire(L-Ctrl) Exit game to Game Menu
155 Space Resume game
156
157
158 ************************* ScoreBoard *******************
159
160 Now we have a fresh new scoreboard.
161 >Areas
162 - Top Left Window - Displays images of things the hero is about to face
163 - Arrows - Defines possible exits and the colour determines danger(Red), Normal(Green), No exit(Black)
164 - Ring - Hourglass - counts down time remaining, this may accelerate by certain magic
165 - Attribute bars - Not sure of neccesity
166 - Sword - Might
167
168 Need Heart and Health Bar
169
170
171 ************************* Collision ********************
172 For outside maps their is no collision map unless specifically provided by SSC module in its
173 ScreenRun Call.
174 Y position is controlled by X position through a Floor Table which can be embedded in the Inlay
175 screen (08-0B) and extracted at ScreenInit time or held as a separate table.
176 The Floor Table is 40 bytes long and each byte defines maximum Y-Position and terrain features.
177 B0-5 00 Initial Value of table before extracting embedded attribute
178 01-59 Maximum Y Position
179 60 No thoroughfare
180 61 Exit Left
181 62 Exit Right
182 63 Instant Death
183 B6-7 Screen Specific Collision Identifier (0-3)
184
185 For embedded data, 60-63 codes are interpolated into FloorTable by ScreenInit after extracting
186 embedded data, which is most likely to be done manually.
187
188 For each new hero position, the collision detection routine is parsed the Sprites Width, height,
189 X and Y Positions.
190 The Detection routine (using the floor table) determines the maximum height the sprite can be
191 based on the width bytes and the Sprites height.
192 (Previous version was based purely on left most X Position)
193
194 Since the collision routine is always in the SSC module, any detected terrain features will be
195 processed by the SSC module(because width is provided, there may be more than one feature
196 detected).
197
198 Some Features will require some action on behalf of the hero before the feature is affected.
199 The current action can be picked up from zero_page.
200
201 A Ceiling table also exists to set minimum height. This is optional so the embedding code is
202 different and is 1C.
203
204 Both Ceiling and floor tables are in lomem and the capturing of embedded codes routine is also
205 in lomem.
206
207 ************************* Flying Insects ****************
208
209 Really need a sort of sine trajectory for insects with varying size, speed and angle after cycle.
210 a simple sin table may be adequate then capture random intersection to continue cycle from.
211
212 The land begins to tire
213 of human lack lustre
214
215 weeping willow
216 how befit the fountain stirs
217
218 ************************** Land Contouring *********************
219 The hero always moves over the surface of the land and its ever changing contour.
220 The contour is held as a 40 byte table where each byte is the Y position at the X index in the
221 table.
222 However to keep the hero as close to the ground as possible means that every contour byte
223 must accommodate 3 bytes to the right because the hero frames are up to 4 bytes wide.
224 However this causes the hero to stand mid-air (to avoid corruption of ground).
225 Unfortunately because the Hero may be moving in either direction, it cannot be shifted so the
226 yposition of the countour byte must always accommodate 3 spare bytes to the right.
227
228
229 ************************* Movement ******************
230 Jump Left/Right checks Floor and ceiling tables during the heros flight.
231
232 On key left, kbdleft is called which manages all running left, including frame update, screen
233 management, screen byte stepping, land contour management, etc.
234
235 Their is now a stage to decide on true movements. Ie. how many movements should the hero posess
236 without increasing memory and code too much.
237 Essentially the same level of control and movement as Prince of Persia i guess.
238 HERO ACTION FRAMES DONE
239 Stand Left YES
240 Stand Right YES
241 Right to Left Turn YES
242 Left to Right Turn YES
243 Pickup Left (To pickup) YES (Using reduced Kneel Frames)
244 Pickup Right (To pickup) YES (Using reduced Kneel Frames)
245 Run Left YES
246 Run Right YES
247 Bow Left YES
248 Bow Right YES
249 Running jump left YES
250 Running jump right YES
251 standing jump left YES
252 standing jump right YES
253 standing jump Up Facing left YES (Progressing to Clamber left or fall left)
254 standing jump Up Facing Right YES (Progressing to Clamber right or fall right)
255 cling and swing facing left YES
256 cling and swing facing right YES
257 climb up facing left NO (Including Climb up, Climb down)*1
258 climb up facing right NO (Including Climb up, Climb down)*1
259 use sword Left NO (Including shuffle forward, Strike, defend)
260 use sword right NO (Including shuffle forward, Strike, defend)
261 Death sequence YES
262 *1 Based on jump up or cling-swing
263
264
265
266
267 **************************** Level File *****************
268 Each Screen is considered a 'level'
269 Each Level is contained within a single source file such as sscm-om2s5.s
270 Each Level contains a set of data and a set of code routines specific to the screen
271
272 LevelRun is code always called in the same main loop as hero control
273 LevelExit is code always called as the hero exits the screen
274
275 LevelProse is a paragraph of text to describe the level.
276 LevelScreen is the screen data which must contain embedded ceiling and floor codes.
277
278 ********************** Sword problem *******************
279 Possibly use Walk frames for Sword fighting frames, have sword naturally black (mask) with
280 tint of green and white shine wherever possible.
281
282
283 *********************** Game size Map ***************
284 The game is split into 5 outside areas, Maps 00 to 04 and a total of 33 screens.
285 Each area is set in a different part of Wurlde.
286
287 Map02 This is the first map and the hero is washed up on the far right shore.
288 Lucien must find the spellbook to travel to maps 02,01,00 and 04
289 Entrance to Windmill
290 Entrance to Grain house
291 Map01 This is Sassubree town (Market stall, pub to save game, boat to Samson isle)
292 Entrance to Fort
293 Entrance to Pirates Arms
294 Entrance to Market
295 Entrance to Kissing Widow
296 Entrance to boat
297 Map03 Samson isle (sword)
298 Entrance to Priory Inside complex
299 Map00 Turn country (Wizards house)
300 Entrance to Wizards house
301 Entrance to Hallow
302 Entrance to Church
303 Map04 This is the final quest (up the mountain, into the dwarven mines)
304 Entrance to Dwarven mines
305 Entrance to Cyan Castle
306
307
308
309 *************************** Seagulls *****************
310 Seagulls is a challenging sub-program.
311 I want the seagulls to fly, swoop, dive, land and woddle along and also with distance frames.
312
313 A random selection of sequence, where each sequence contains movements and frame pointers.
314 The random element ensures the flight pattern is always different.
315 Also each frame has associated shift patterns permitting any movements to be performed.
316
317 I'd really like to allow birds to both fly infront and behind tower in harbour1 but that is a
318 separate piece.
319
320
321
322 ************************ Animating background behind Hero *********************
323 This is a very difficult but very desirable feature of Wurlde.
324 Simply plotting background changes to screen then plotting hero would produce too much flicker.
325
326 Method1
327 Plot the background changes to the background buffer.
328
329 **
330 In the beginning there was no light, nor darkness, just a void. A single moment of
331
332 ***************** Ideas
333 Night time things become more treachorous
334
335 On certain empty screens have objects rise from ground then sink back down (maybe bog) that are
336 collectable.
337 Under the Lift cage lies something to collect.
338
339 Atop the mountain lies the final gate before the dwarven mines. This gate is controlled through
340 some very strong magic. The spell of which is little known. Their is a slight chance the same
341 spell that was spun may be subject to the presence of the great sword, so there is a small chance
342 the sword you find will fool the magic in releasing the door.
343
344 Mountain top: single well or grate.
345
346 BrokenSky
347 On entering this screen (left) the hero must pull the chain (which will trigger a sequence of chain
348 down then up). The cage will imediately tilt as it is pulled over the edge.
349 Whilst it is being moved into position, the hero is frozen (a single animation sequence will be
350 used) or will be involved in the animation.
351 Once over it will remain stationary allowing the hero to step onto it.
352
353 As the hero leans tilting the Cage, a ratchet may be heard which is the mechanism that drives it
354 forward. ie. the hero must lean left/right repeatedly at a close match to the mechanism speed in
355 order to progress up the cable. If no player action is taken, the cage will return to a centre
356 position and slide back down the cable (reversing the BG scroll) potentially back to its standing
357 position (but after the ground).
358 As the cage is swung and the ratchet drives the cage forward the rock cliff will byte scroll away
359 and the blue BG will smooth scroll DL.
360 Note the BG scroll is a parralax scroll, whereby the distant clouds remain static and only the
361 silhouette ground smooth scrolls.
362 If enough CPU & memory is left then trigger rain or flying things that must be hit with the
363 swinging cage.
364 Once the hero has reached the end of this 'level' the next screen will load with the cage already
365 'parked'. The hero may then exit the cage and progress forward.
366 The cage level is reversible. ie the hero may
367
368 To get up the mountain using the lift cage, the hero must use (crush) the black orb to turn
369 invisible. Failure to do so before the cage will attract the shadow-guards from further up
370 the mountain who will sweep down and devour the hero.
371 whilst invisible, pulling the cord by the cage will trigger the cage to be sent up the cable.
372 so the hero must quickly climb onto the cage with sword unsheathed (since this is the only
373 visible item so that he can see where he is).
374
375
376
377 An old man stands next to an old tree. He refuses to move and permit the heroes passing.
378 On asking him why he cannot move he replies "I have asked this tree to move but it doesn't
379 listen".
380 fire rain falling through trees and over tin roofs, and hero must run beneath avoiding every
381 drop.
382 at certain point, a crate with wheels must be mounted and this must be dispatched at exactly
383 the right point to avoid an intermittant firerain shower.
384 the final destination is a cave in a dell on the side of the downs.
385 This is where Lucien sees the apparition of his friend.
386
387 The gameplay then changes to b/w or minimal colour with flickering torch light down the cave
388 tunnel complex towards the boat moored in the seas cave.
389
390 The Mooring is an old stone jetty that only slightly jutts out from the cave and rises to the
391 cavern tunnel where Lucien will come from.
392
393 thin stone bridge with mountains in bg
394
395
396 'rolling' log over chasm.. Tree that requires something to make it fall over chasm and permit
397 passage.
398
399 Red blinking eyes in the dark
400
401 Falling snow (light snow oscillates pixel left/right) but then rages into hail storm shifting
402 hero back when attempting to run or even stand, only progression is crawl.
403
404 Wizards story.
405 Birist cannot be killed by normal means, he is the devil incarnate, he is the anti-life, the
406 evil within. He is the shadow that prevails all nights and he takes this form in life.
407
408 He dwells within the deepest caverns in a great hall. Only his minions venture beyond the
409 deep and his dark power has reached into the souls of most creatures in Wurlde.
410
411 They will devour you if you let them so beware of all living things. But remember that all except
412 Birist have been polluted, that they are innocent and a killing spree by you alone would only
413 attract the attention of Birist and would not be favoured by any, including me.
414
415 There is a sword, fabled to exist that can cut darkness and reveal the light. This sword is your
416 only means of banishing Birist from Wurlde, by showing him the light.
417 But just as this sword cuts light from the shadow, so it can also be wielded to cut darkness
418 from light and Birists minions have already captured it and hold it close to them deep in the
419 dwarven mines intending to use it at some point in the future.
420
421 The fable of the sword was so famous during one period of Wurlde history that fake swords were made
422 in honour of it.
423 My predeccesor was best known for his incarnation of this sword, wrought from great magic
424 and to all intent and purpose looking exactly the same.
425 Only the heart of the sword and its unimaginable power of slicing the very fabric of space differs
426 from the imposter.
427 This sword is held on an island close to Sasubree, within a vault and not known to Birist or his
428 minions. The island is known as Samson isle.
429
430 The way to defeat Birist is to acquire this sword.
431 Whilst hiding it in your posessions you must then travel to the dwarven mines whose entrance is
432 near the summit of the high Mountain.
433 Their you must descend and locate the real sword and replace it with its imposter.
434 You must then locate birist itself. Birist lies within a deep chamber, a sacrificial hall of old
435 and home to its presence. Eternal candles burn all around raising the temparature and throwing
436 great flickering shadows into the central hall. Their you will find the blackest
437 shadow, a swarming swathe of shape shifting blackness that can take any form it desires.
438 Strike hard with the sword and it will show the light to Birist and banish him to oblivion.
439 Strike too late and Birist will engulf you, swallowing you into its total eternal blackness.
440
441 I myself cannot attempt such a journey for i am old and weak.
442
443 To be able to avoid confrontation on your journey, you should invest in some defensive weapons.
444 Throughout the 200 years of my life i have seen many strange artifacts, some bestowing new strength
445 in the bearer, some changing the appearence of his apparral, some restoring his health and some
446 darker magical concoctions that bring death quickly to their victims.
447 Those are just a few of the objects i have seen, but be wary of creatures you deal with.
448 Not all will be as honest with what they sell.
449 Sassubree has some established places which provide more reliable artifacts whereas market stalls
450 and people you meet may try to sell you at far cheaper prices but may not be as reliable.
451
452 The water tablet (which is found in the fountain) can be used to replenish the hero's flagging
453 water level. Its closest simally is "dried water".
454
455 Casting spells?
456
457
458 ********************* Game sequence
459 The Sven anim begins until hero is catapulted into space, falling thru space.
460 Gme title, options, etc.
461 On Game start the hero falls away shrinking to a small dot, then a planet approaches from side.
462 the camera changes many times here giving different views of hero falling into orbit and thru
463 atmosphere of Wurlde until final blackout and Hero awakes laying on shore of Wurlde.
464
465 Birist (The evil in Wurlde) is not initially aware of Lucian's (The hero) presence but someway thru
466 his quest, Birist discovers him, and physchological warfare and psychoanalysis insues in the form
467 of cut sequences of confrontations during dreams (when the hero saves to disc) and at certain
468 seminal events in the game.
469
470 ldx xpos
471 ldy ypos
472 lda xloc,x
473 clc
474 adc ylocl,y
475 sta
476
477 ************ Bees
478 ;Draw and navigate swarm of bees
479 ;1) Bees naturally collect nector from the available flowers
480 ;2) Bees are attracted to Red or Magenta
481 ;3) Bees move in curves
482 ;4) Bees do not move wings when landed
483
484 1) Figure 0 clockwise
485 2) Figure 0 Anticlockwise
486 3) Figure Hover Left
487 4) Figure Hover Right
488
489 Activity consists of stages
490 Stage 1 (Hover)
491 Bee follows any cyclic FIGURE wave scanning flowers diagonally in facing direction
492 if near left/right border then only follow figures 3 or 4 respectively.
493 Stage 2
494 Bee dives to shrubs to flower (Red or Magenta)
495 settle on flower and wait 5 then Stage 3
496 Stage 3
497 Bee rises random height (3-8)
498 Enters stage 1 again
499
500 *************** Snow
501 Snow is actually a weather particle driver
502 Snow can generate rain,snow,fire-rain,hail etc at 5 speeds in both directions and vertically
503 with oscillation(fluttering).
504 Note blue rain will have the occasional white through a bug, though not uncommon :)
505
506 Blue - Rain
507 Red - Fire Rain
508 White - Snow
509 Yellow - Sand Storm
510 Colour cycle for magical curtain
511
512 Floor of particle based primarily on hero floortable
513
514 SnowSpeed
515 250 Storm Left
516 251
517 252
518 253
519 254
520 255 Shower left
521 0 Flutter Vertical
522 1 Shower Right
523 2
524 3
525 4
526 5 Storm Right
527 Other values are possible
528
529 No Proper initialisation yet, first fall is uniform :(
530 No lightning effects provided yet!
531 No gradual change of climate yet!
532
533
534
535 ***************** Items
536 Items dropped or yet to collect are displayed at the start of each screen.
537 Item Location Use Quantity in game
538 Green potion Health+6 4
539 red potion Health+10 4
540 blue potion Magic+4 4
541 green orb Magic Weapon 1
542 blue orb Magic Weapon 1
543 red orb Magic Weapon 1
544 black orb Magic Weapon 1
545 scroll Spells 1
546 red parcel 1
547 green parcel 1
548 yellow wand Found in field Needed for spells
549 red wand Needed for Red Spells 1
550 magical knife Infinite Knife throws 1
551 food basket Maximum Health
552 sword
553 water tablet See ideas 1
554 bird in cage Used in mines to detect presence of poisonous gas 1
555 map Map of Wurlde 1
556 straw bale Found in field 1
557 oil flask
558
559 Hero starts on seashore, so need shell.
560
561 They all appear as glowing inversed graphic either 2 rows above ground where they were dropped
562 or 2 rows above where they originally lay on the even line (Hero bitmap).
563 When the hero walks past them the text window will display a message, the item will be erased
564 by the plot routine but restored after by the item plot routine which runs concurrently.
565
566 Dropping an item on the skybridge or any other bridge will drop the item OFF the bridge.
567
568 Seagull behaviour
569
570 1)Seagulls fly away when hero approaches
571 2)Seagulls land where no hero and spare surface
572 3)
573
574
575
576 39x20
577 B0-4 Collision Value(32)
578 B5-7 Preferred Height in cell(0-5)
579
580 Collision values
581 0 No Collision
582 1 Impenetrable Wall/Floor
583 2 Left climbable Edge
584 3 Right climbable Edge
585 4 Falling platform?
586 5 Rising platform
587 6 Item
588
589 HeroDetectCollisionMap
590 ldy HeroTestY2
591 ;Divide by 6
592 ldx DivideBy6,y
593 ;Multiply by 39 and add CollisionMap base
594 lda CollisionMapYLOCL,x
595 ;Add X
596 clc
597 adc HeroTestX2
598 sta vector1+1
599 lda CollisionMapYLOCH,x
600 adc #00
601 sta vector1+2
602 ;Fetch collisionmap entry
603 vector1 lda $dead
604 pha
605 ;Extract Collision Value
606 and #31
607 sta CollisionValue
608 ;Extract Contour Map Index
609 pla
610 lsr
611 lsr
612 lsr
613 lsr
614 lsr
615 ;Use to index Contour map table
616 tay
617 lda CMContourTableLo,y
618
619
620 *Scoreboard*
621
622 Inventory
623 Health
624 Bladder?
625 Energy?
626
627
628 0000 System
629 0500 Game System 29696
630 7900 Level Data&Code 8192
631 9900 Std Charset 632
632 9B78 Spare 1160
633 A000 HIRES 8000
634 BF40 Spare 40
635 BF68 Text Rows 120
636 BFE0 Spare 32
637 C000 ROM
638
639 79 Characters used for Text
640
641 3Kx8
642
643 *********** Screen allignment **********
644 Each screen must start with BG row so that alt lines are always Sprite and Even lines are BG.
645
646
647 *********** Menu system *********
648 When entering shops, stalls and inns the hero will be presented with a number of options.
649 These options should be displayed either in the text window or on screen.
650
651 The textbox will display "Please Choose"
652 The text window will display a description of the establishment.
653 A popup window will appear in the gameplay area providing the options available.
654
655 For example
656
657 PLEASE CHOOSE
658
659 The quay side
660
661 ************** Music for Wurlde ************
662 Must be freeform with variable pulsewidth tone/s for title.
663 Incidental music is normal pattern based
664 Game sfx == environment sounds
665
666 For Sassubree something around Scarborough fair with growing complexity.
667 For LittlePee something around Rosemary and Thyme with growing complexity.
668 For countryside environmental sounds like bird-song, tree wind, crow calling, dove sound, rustling.
669 For first cut-scene either the song from Night of the hunter river scene or similar haunting tune
670 For Sassubree and Ciro Castle something more stirring
671 For Samson isle monastary something around Baroque/Chant
672
673
674 Freeform music must permit the freeform variance of both the notes pitch, volume and period.
675 However the event of the note may still observe similar formats to tracker musics.
676 Only the period needs to be accurate beyond 64 rows.
677 Also the pitch and volume is somewhat limited to the hardware of the Machine.
678
679 Freeform is problematic because it invariably requires lots of memory in order to deliver unique music.
680
681 Note: Freeform may not exclude repetition.
682
683 One might begin with the three channel scheme where each channel is provided a 4 byte notation to
684 specify Note to start, pitch variation to start, Volume to start, Period of note and initial pulse
685 width.
686
687 Note range is 0-95
688 Pitch range might be 0-63
689 Volume is 0-15
690 Pulsewidth is 0-31
691 Period is 0-511 at 100mS increments?
692
693 Byte 0 Bits 0-6 Note
694 Byte 0 Bits 7 Pitch
695 Byte 1 Bits 0-4 Pitch
696 Byte 1 Bits 5-7 Volume
697 Byte 2 Bits 0 Volume
698 Byte 2 Bits 1-6 Pulsewidth
699 Byte 2 Bits 7 Period
700 Byte 3 Bits 0-7 Period
701 Pitch Effect
702 Volume Effect
703 Pulsewidth effect
704 effect period effect
705
706 All effects are relative to the original set in the note form
707 Variation of the note as it progresses might use some form of modification pattern?
708
709 using the ay eg for click
710 if possible to add sample drums?
711
712
713 At the very beginning of the main code at $500 is a bank of JMPs that point to some very
714 useful routines in the main code area. The location of each jump is always the same so a
715 simple JSR to the JMP is all that is required to access the routines.
716
717
718 MainCode ;Always $500
719 jmp nl_screen
720
721 SSC jsr $500+nl_screen
722
723 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
724
725 cbc01234567890123456789012345678901234cb ;35 virtual chars
726 cbc01234567890123456789012345678901234cb ;35 virtual chars
727 cbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
728
729 32-63?
730 64-95
731 96-127
732
733 33-42
734
735 56-127 Virtual HIRES ($99C0-$9BFF)
736
737
738 ************** Game Title ************
739 Game intro ends with hero falling (rotating) through 3d starfield.
740 Hero falls centre screen varying rotation and floating actions.
741 3D starfield is masked behind hero and mapped on even rows only.
742 Credits(below) use odd rows only.
743
744 Intro continues like this and with credits shown thus..
745 Credits fade in from blue to white dithering on darker colours.
746 when white, they remain for a second before fading again.
747 as they fade to blue/black and dither they also scroll left or right depending on top/bottom.
748
749 Each credit consists of title "Music" and Author "Twilighte" on next line.
750
751 The process must accommodate parallel fades, ie. next credit may appear before previous has
752 finished.
753
754 >>Music
755 Throughout title, music plays in background
756 Music starts with accurate freeform guitar solo using synthesised pulse width with volume.
757 Once solo ends, main music begins. This consists of EG clicks and LowSpeed Digidrums for
758 percussion, Synth pulse width for Bass and 2 remaining chip channels for melody.
759
760 Need to experiment with AY EG for synth pulse width. Will be much less cpu than chip volume
761 usage.
762
763 We might use a shortcut here by writing 13 to the envelope Cycle register
764 The shortcut is that the register value of 13 happens to be the same as the register number 13.
765 This means we do not need to reset CA2/CB2 between register and data writes.
766
767 In the code..
768 lda #13
769 sta via_porta
770 lda #AY_Register
771 sta via_pcr
772 lda #AY_Value
773 sta via_pcr
774
775 Based on a short period set, The action of writing to Register 13 will reset the waveform.
776 The value of 13 sets the EG to rise from 0 to 15 and remain high.
777 In its most basic form, the waveform will behave like a normal Sawtooth..
778
779 /|/|/|/|/|/|
780
781 But as the period register is decremented, the rise angle will become more acute giving the
782 waveform time to approach 15. This will be heard as a rise of volume.
783 As the period register is incremented, so the rise angle flattens, reducing the waveform
784 time to approach 15. This will be heard as a drop of volume.
785 Each write to 13 will trigger the full cycle which halves the cpu time required to generate the
786 waveform.
787 IRQ_1 ;In both instances of the interrupt request, 2 occurrences are required
788 ;SynthPW requires positive and negative cycles
789 ;LoDigi requires lo and hi nibble extraction
790 ;IRQ 1 200-5Khz - Synth PW
791 ;IRQ 2 400Hz - LoFi Digidrum
792
793 ;backup Accumulator
794 sta irq_temp01
795 ;Redirect next irq
796 lda #>IRQ_2
797 sta sys_IRQHi
798
799 ;Detect IRQ
800 bit via_ifr
801 bvs skip1
802 ;Process Synth PW
803
804 ;Preserve Accumulator
805 sta irq_temp01
806 ;Reset IRQ
807 lda via_t1cl
808 ;Set Waveform
809 lda #13
810 sta via_porta
811 ;Set Register 13
812 lda #AY_Register
813 sta via_pcr
814 ;Store 13
815 lda #AY_PortData
816 sta via_pcr
817 ;Restore Accumulator
818 lda irq_temp01
819 rti
820 skip1 ;Process LoSpeed Digidrum
821 sta irq_temp01
822 ;Reset IRQ
823 lda via_t1cl
824 ;Set Digi Register
825 lda #Digi_Register
826 sta via_porta
827 lda #AY_Register
828 sta via_PCR
829 lda #AY_Inactive
830 sta via_PCR
831 ;Fetch Sample
832 vector1 lda $dead
833 ;Extract High Nibble
834 sta vector2+1 ;This is the fastest way if routine resides in ZeroPage
835 vector2 lda $??00
836 ;Store Sample
837 sta via_porta
838 ;Notify AY
839 lda #AY_PortData
840 sta via_pcr
841 lda #AY_Inactive
842 sta via_PCR
843 ;Process 50hz
844 dec MusicCount
845 beq Proc_Music
846 ;Restore Accumulator
847 lda irq_temp01
848 rti
849
850 Proc_Music
851
852
853 #define via_portb $0300
854 #define via_t1cl $0304
855 #define via_t1ch $0305
856 #define via_t1ll $0306
857 #define via_t1lh $0307
858 #define via_t2ll $0308
859 #define via_t2ch $0309
860 #define via_sr $030A
861 #define via_acr $030b
862 #define via_pcr $030c
863 #define via_ifr $030D
864 #define via_ier $030E
865 #define via_porta $030f
866
867 #define AY_RegisterIndex
868 #define AY_RegisterValue
869
870
871
872
873 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
874 All text should possibly be placed in the SSC module.
875 You will only ever use the menus when at particular screens.
876
877 Each SSC will hold a number of trigger positions which mark a collision with a background object.
878
879 A Table exists in the ssc header block which holds 8 records of 4 bytes each(32 byte table).
880
881 Byt 0 - Background Attribute
882 Bits 0-3 (Background appearance time)
883 0 04:00 tod_4AM
884 1 06:00 tod_6AM
885 2 08:00 tod_8AM
886 3 10:00 tod_10AM
887 4 12:00 Midday tod_Midday
888 5 14:00 tod_2PM
889 6 16:00 tod_4PM
890 7 18:00 tod_6PM
891 8 20:00 tod_8PM
892 9 22:00 tod_10PM
893 10 23:00 tod_11PM
894 11 00:00 Midnight tod_Midnight
895 12 02:00 tod_2AM
896 15 Anytime tod_Anytime
897 Bits 4-6 (Background Type)
898 0 Menu Entry (Inn, Market) bgt_Menu
899 1 Location Jump (Subgame) bgt_Jump
900 2 Feature (?) bgt_Feat
901 Bit 6 -
902 Bit 7
903 1 Active Entry rec_Active
904 Byt 1 - Xpos+Range
905 Bits 0-1 Range 1-4
906 Bits 2-7 Xpos 0-39
907 Byt 2-3 - Pointer to menu address
908
909
910
911
912 Who do you wish to speak to?
913
914 Inn keeper
915 Fisherman at bar
916 Fishermans Dog
917 Saucy wench
918
919 The Bar Tender turns to you..
920
921 Ask question
922 Ask for lodging
923 Buy beer
924 Buy food
925
926 The Saucy Wench turns to you..
927
928 Chat up
929 Ask about rumours
930
931 You stand in Sasubree market..
932 Select the stall you wish to visit
933
934 Stanleys Fish Stall
935 Arkies Artifacts
936 Smithies Metal Merchants
937 Maltherzars Inscents
938 Geffers ?
939 Halford
940 Muncaster
941 Kaufman
942
943 The Kaufman sells Kauf, a strange substance only found in Ciro country and used to boost Mana.
944
945 Welcome Traveller, can i help you?
946
947 Example sequence
948 Enter market
949 Which stall do you wish to visit?
950 Stanleys Fish Stall
951 >Arkies Artifacts<
952 Smithies Metal Merchants
953 Maltherzars Inscents
954 Which item interests you?
955 Sceptre
956 Green Potion
957 Trinkit
958 Heavy Armour
959 >Strange stone<
960 The stone is strange because it glows
961 when held.
962 What would you like to do now?
963 Ask about stone
964 Buy stone
965 Put Stone back
966 >Steel stone<
967 How are you going to steel it?
968 >Pocket it when Merchant is not looking<
969 Run away with it
970 Threaten Merchant with weapon
971 Claim he stole it from you
972
973 The Merchant appears to have
974 picked you out as a suspicious
975 character. You can not find a
976 suitable moment to hide it.
977
978 or
979
980 It just so happens that the
981 Merchant is away from his stall
982 right now, and you easily slide
983 it into your pocket with no one
984 the wiser.
985
986 or
987
988 The item slips from your grasp as
989 soon as the thought enters your
990 mind. It ends up exactly where you
991 picked it up from!
992
993 or
994
995 It is too large to conceal in your
996 pocket.
997
998
999 Old Leather Satchel - Increases pockets from 2 to 10
1000 Brass Lantern - Needs oil and ?
1001 Lantern Oil
1002 Bed Pan
1003 Coals
1004 Wooden Cross - Red Herring in this world
1005
1006 The game starts on map02 on the rightmost screen (shore).
1007 The hero passes the field before reaching the bogmire.
1008 He must navigate the mire by using the correct sequence of rising stepping stones.
1009 He will then pass the windmill and old millhouse before finally the butterfly bank and
1010 first screen.
1011 Alternative1: He must then mount the Oryx and ride across the wasteland to arrive at Templeweave.
1012 Alternative2: He must take flight in the basket beneath the balloon, to land at Templeweave.
1013
1014
1015
1016 Problems
1017 q: How do we get from map to map?
1018 a: By Land(Horse),sea(boat) or sky(?)
1019
1020
1021
1022
1023 ITEM PURPOSE
1024
1025 ioGreenPotion Maximum Health Boost
1026 ioRedPotion
1027 ioBluePotion
1028 ioGreenRock
1029 ioBlueRock Seems only to shield the attention of the Banit Witches!
1030 ioRedRock
1031 ioBlueSphere
1032 ioScroll Spells
1033 ioRedParcel
1034 ioGreenParcel
1035 ioYellowWand
1036 ioRedWand Mana focuser(requires spells)
1037 ioKnife Magical knife, infinite throws
1038 ioSandBowl
1039 ioGreenSword
1040 ioBlueTablet
1041 ioBirdcage Detects gas in Dwarven Mines
1042 ioWhiteParchment Dark Spells(Those that destroy)
1043 ioTobacco If used with pipe and spark can increase mana
1044 ioSparkFlask The flint on its stern will produce a spark (use with tobacco and pipe)
1045 Map Opens map in infopanel to show current position(No inventory gfx).
1046 Lemon Bread Eat for health
1047 Fish Eat for health or sell on market
1048 Fruit Eat for health or sell on market
1049 Stick Combine with Fish net to make butterfly net
1050 Fish Net Combine with Stick to make Butterfly net
1051 Butterfly Net Used to capture Butterflies in Map02
1052 Pipe If tobacco and spark is used can increase mana
1053 Old Leather Satchel Increases pouches from two to ten(No inventory gfx)
1054
1055 something to allow hero to see in dark better?
1056
1057 Combining two objects can either be done manually or with the wand.
1058 Manually combining objects takes time and persistance whereas the wand makes the change immediate.
1059 However combining incompatable objects together with the wand will produce spurious results..
1060
1061 You combine the Map with the Lemon Bread using the wand producing a conjealed lump of multicolour goo.
1062 However eating the goo has the strange effect of suddenly having a photographic memory of the map
1063
1064
1065
1066 Need to cover actions
1067
1068 What do you want to do with the *?
1069
1070 Combine with another Item (Or Adapt *)
1071 Use the *
1072 Eat the *
1073 Drop the *
1074 Sell or Barter the *
1075 Examine the *
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087 The butterflies are by far the most valuable items. They can be sold at the market.
1088
1089
1090
1091
1092
1093 Provide common routines that replace ROM routines are other things in one sector.
1094
1095
1096 *********** Screen Changes ************
1097 When a hero visits a screen, he may change a particular feature of that screen. This
1098 will need to be remembered for the next time he visits the same screen.
1099 This is held in the Player File.
1100
1101
1102 lpOldCastle
1103 .byt "The old castle lies on the bank of "
1104 .byt "the ancient river Sass and at the "
1105 .byt "edge of old Sassubree harbour town "
1106 .byt "in the heart of Calgaroth.",128
1107 lpOldBakery
1108 .byt "The Bakery and slaughter house used"
1109 .byt "to serve the whole of Calgaroth and"
1110 .byt "became famous for it. The quality "
1111 .byt "of its produce was legendary from a"
1112 .byt "simple lemonbread to the best meat "
1113 .byt "in the wald.",128
1114 lpPublicHouse
1115 .byt "The Pirates Tavern is the ideal "
1116 .byt "place for rumours and gossip even "
1117 .byt "in these hard times. It also serves"
1118 .byt "a restbite for weary travellers and"
1119 .byt "the facilities are not found better"
1120 .byt "elsewhere.",128
1121 lpMarketSquare
1122 .byt "Sasubree market is the best place "
1123 .byt "for fresh produce from around "
1124 .byt "Calgaroth. Market stalls also serve"
1125 .byt "up artifacts from time to time. Be "
1126 .byt "sure to return every new moon for "
1127 .byt "bargains.",128
1128 lpHarbour1
1129 .byt "The Harbour watch tower is always "
1130 .byt "manned day and night, ensuring the "
1131 .byt "safety of Sasubreeans. "
1132 .byt "The Kissing Wench is another public"
1133 .byt "house serving fisherman and sailors"
1134 .byt "from the harbour.",128
1135 lpHarbour2
1136 .byt "The quay side is the best place to "
1137 .byt "find fresh sea produce especially "
1138 .byt "early on a new moon.",128
1139 lpJettyEnd
1140 .byt "Boats are moored here and fisherman"
1141 .byt "may be bought to take travellers to"
1142 .byt "some of the more remote islands "
1143 .byt "around Calgaroth.",128
1144 TestText
1145 .byt "Out amongst the stars.. "
1146 .byt "A lit church bereft of audience "
1147 .byt "So still and quiet the weld "
1148 .byt "How brightly shines the silence "
1149 .byt "how sweet an ambience beheld. "
1150 .byt " "
1151 .byt "But is all as it seems? "
1152
1153
1154 COMBINE Stick WITH Fish Net
1155 You fashion a Fly net!
1156 HOLD Fly Net
1157 You now hold the Fly Net, to use it
1158 perform Action whilst standing.
1159
1160 COMBINE Pipe WITH Stick
1161 The Pipe and stick cannot be
1162 combined.
1163
1164 ENTER Market
1165 You enter Sassubree Market.
1166 There are Stalls at the Green, Red
1167 and Blue areas.
1168 At near dusk the market is still a
1169 busy place.
1170
1171 ENTER Green Market
1172 You see Balthazar's incense stall
1173 and Sophia's Grocery stall
1174
1175 ENTER Incense
1176 "Welcome to my stall, please ask
1177 if something interests you."
1178
1179 LOOK
1180 You see some josticks, a small case
1181 and pendants hanging from a velvit
1182 drape.
1183
1184 EXAMINE Pendants
1185 One pendant catches your eye as it
1186 contains a large crystal that seems
1187 to continuelly swirl as if alive.
1188
1189 REQUEST Pendant
1190 "Aha so this pendant interests you
1191 does it? it is very nice is it not?
1192 "To you my dear friend i should like
1193 to offer it to you at 30 Grotes."
1194
1195 OFFER 20 Grotes FOR Pendant
1196 "You drive a hard bargain but on
1197 this occasion i will sell it to you
1198 for that price."
1199 You exchange 20 Grotes for Pendant.
1200
1201 EXIT Market
1202 You walk away and return to the Town
1203 square.
1204
1205 ********* New Mini Script Language for Cut Scenes in Wurlde **************
1206
1207 The new miniscript language is designed to optimise memory and speed of
1208 graphical overlay effects.
1209 WMSL will reside in overlay together with resource graphics.
1210
1211 At the language level WMSL is composed of a set of mnemonic instructions
1212 that are followed by a number of parameters.
1213 At the graphics level WMSL provides a means to take flat graphics and ?
1214
1215 A Graphic stack should be created by the developer that consists of
1216 graphic bitmaps and masks.
1217 Work areas in WMSL can either be defined (memory addresses) by the developer
1218 (l,h)or auto-assigned(0,0) based on the width and height of the graphic.
1219 The memory address that Auto assignment should begin from should be set by
1220 the developer (SETALLOC) if auto assignment is to be used.
1221 (The address range(4000-FDFF) is such that it permits a high address of 0
1222 as a trigger to auto-allocate)
1223
1224 At the beginning of running an WMSL script the engine will scan the
1225 Script and build a list of unique widths found.
1226 Multiplication tables will then be generated for each width.
1227 This is the first step in accelerating the speed of operation.
1228
1229 As each line of code is interpreted, a list of memory addresses for
1230 each new line will be compiled. Because of this a limit of up to 64
1231 lines of code can exist in a single script.
1232 This will accelerated any branches or jumps in the code and also make
1233 it easier to calculate where branches and jumps refer to.
1234
1235 XOffset or YOffset may refer to a value or a variable. The values range
1236 0-127 withthe top bit indicating either Variable(1) or Value(0)
1237
1238 Overview of commands
1239
1240 Cmd Description Parameters
1241
1242 000 *SETALL Set All Buffer Params BufferID+VFlag,Width,Height,Low Address,High Address
1243 001 *SETV0 Set Variable 0(0-31) Value
1244 033 *SETALLOC Set Allocated Memory Low Address,High Address
1245 034 *TRANSFERV0 Transfer Variable VariableID
1246 066 *INCADDRESS Add to Buffer Address BufferID+VFlag,Value to add
1247 067 *INCV0 Increment Variable Value to increment by
1248 099 *DECADDRESS Subtract Buffer Address BufferID+VFlag,Value to subtract
1249 100 *DECV0 Decrement Variable Value to decrement by
1250 132 *BRANCHBACK Branch back on condition Condition,Param1,Param2,Row
1251 133 *BRANCHFORTH Branch forth on condition Condition,Param1,Param2,Row
1252 134 *MOVE Move Buffer Data DestinationID+VFlag,XOffset,YOffset,SourceID+VFlag
1253 135 *SCROLLLEFT6 Byte(Text) Scroll Left BufferID+VFlag,ScrollOn Byte
1254 136 *SCROLLRIGHT6 Byte(Text) Scroll Right BufferID+VFlag,ScrollOn Byte
1255 137 *SCROLLUP1 Byte Scroll Up BufferID+VFlag,ScrollOn Byte
1256 138 *SCROLLDOWN1 Byte Scroll Down BufferID+VFlag,ScrollOn Byte
1257 139 *SCROLLLEFT1 Bit Scroll Left BufferID+VFlag,ScrollOn Bit
1258 140 *SCROLLRIGHT1 Bit Scroll Right BufferID+VFlag,ScrollOn Bit
1259 141 *MASKMOVE Move with Mask DestinationID+VFlag,SourceID+VFlag,MaskID+VFlag
1260 142 *DELAY Delay the sequence Seconds,Milliseconds
1261 143 *FILL Fill the Buffer BufferID+VFlag,Value
1262 144 *BIT Set Bits in Buffer BufferID+VFlag,Bit Value,Bit Mask
1263 145 *RANDOMV0 Random Variable Scope(0-Scope)
1264 177 *END End of Script
1265 178 *SUBROUTINE Set Subroutine Subroutine ID
1266 179 *CALL Call Subroutine Subroutine ID
1267 ________________________________
1268 | _____________________ |
1269 | | | |
1270 | | Visible | |
1271 | | Area | |
1272 | | | |
1273 | --------------------- |
1274 | Graphic Buffer |
1275 --------------------------------
1276 Each Graphic buffer also contains a visible area which may be optionally
1277 used in all instruction Buffer fields(VFlag).
1278
1279 A Buffer consists of an area of memory that is ordered by location, width and height.
1280 Each buffer may also have a visible area.
1281
1282 ********* Commands in Detail ***************
1283
1284 000 *SETALL Set All Buffer Params BufferID+VFlag,Width,Height,Low Address,High Address
1285 Description: Sets all visible Buffer parameters.
1286 Parameters: BufferID (1-31) +VFlag(0 or 32)
1287 Width (1-127)
1288 Height (1-127)
1289 Low Address (0-255)
1290 High Address (0-255)
1291 Notes: If the VFlag is used (+32) then the Visible area parameters
1292 in the Buffer are set. Address fields become offset fields.
1293
1294 001 *SETV0 Set Variable 0(0-31) Value
1295 Description: Assigns a value to a variable
1296 Parameters: Value(0-255)
1297 Notes: The Variable number is included in the statement which may
1298 Range SETV0 to SETV31. Because these are labels they may
1299 be named differently.
1300
1301 033 *SETALLOC Set Allocated Memory Low Address,High Address
1302 Description: Set Memory location that auto allocated memory starts from
1303 Parameters: Low Address (0-255)
1304 High Address (0-255)
1305 Notes:
1306
1307 034 *TRANSFERV0 Transfer Variable VariableID
1308 Description: Transfers one variable value to another
1309 Parameters: Destination VariableID(1-32)
1310 Notes: The Source Variable ID is included in the statement which may
1311 Range SETV0 to SETV31. Because these are labels they may
1312 be named differently.
1313
1314 066 *INCADDRESS Add to Buffer Address BufferID+VFlag,Value to add
1315 Description: Increment the Buffer Address by the value supplied
1316 Parameters: BufferID (1-31) +VFlag(32)
1317 Value(0-127) or Variable(0-31)
1318 Notes: If the VFlag is used (+32) then the value is added to the
1319 Visible Offset within the Buffer.
1320
1321 067 *INCV0 Increment Variable Value to increment by
1322 Description: Increment Variable Value by the value supplied
1323 Parameters: Value (0-127) or Variable(0-31)
1324 Notes:
1325
1326 099 *DECADDRESS Subtract Buffer Address BufferID+VFlag,Value to subtract
1327 Description: Decrement the Buffer Address by the Value supplied
1328 Parameters: BufferID (1-31) +VFlag(32)
1329 Value (0-127) or Variable(0-31)
1330 Notes: If the VFlag is used (+32) then the value is subtracted from the
1331 Visible Offset within the Buffer.
1332
1333 100 *DECV0 Decrement Variable Value to decrement by
1334 Description: Decrement Variable Value by the value supplied
1335 Parameters: Value (0-127) or Variable(0-31)
1336 Notes:
1337
1338 132 *BRANCHBACK Branch back on condition Condition,Param1,Param2,Row
1339 Description: Branch back a number of rows on met condition
1340 Parameters: Condition (0-11)
1341 0 Branch on Param1(Variable) equal to Param2(Variable)
1342 1 Branch on Param1(Variable) Less than Param2(Variable)
1343 2 Branch on Param1(Variable) More than Param2(Variable)
1344 3 Branch on Param1(Variable) Not Equal to Param2(Variable)
1345 4 Branch on Param1(Variable) Less or Equal to Param2(Variable)
1346 5 Branch on Param1(Variable) More or Equal to Param2(Variable)
1347 6 Branch on Param1(Variable) equal to Param2(Value)
1348 7 Branch on Param1(Variable) Less than Param2(Value)
1349 8 Branch on Param1(Variable) More than Param2(Value)
1350 9 Branch on Param1(Variable) Not Equal to Param2(Value)
1351 10 Branch on Param1(Variable) Less or Equal to Param2(Value)
1352 11 Branch on Param1(Variable) More or Equal to Param2(Value)
1353 Param1 Variable (0-31) or Value (0-127)
1354 Param2 Variable (0-31) or Value (0-127)
1355 Number of rows to jump back (1-127)
1356 Notes:
1357 133 *BRANCHFORTH Branch forth on condition Condition,Param1,Param2,Row
1358 Description: Branch forward a number of rows on met condition
1359 Parameters: Condition (0-11)
1360 0 Branch on Param1(Variable) equal to Param2(Variable)
1361 1 Branch on Param1(Variable) Less than Param2(Variable)
1362 2 Branch on Param1(Variable) More than Param2(Variable)
1363 3 Branch on Param1(Variable) Not Equal to Param2(Variable)
1364 4 Branch on Param1(Variable) Less or Equal to Param2(Variable)
1365 5 Branch on Param1(Variable) More or Equal to Param2(Variable)
1366 6 Branch on Param1(Variable) equal to Param2(Value)
1367 7 Branch on Param1(Variable) Less than Param2(Value)
1368 8 Branch on Param1(Variable) More than Param2(Value)
1369 9 Branch on Param1(Variable) Not Equal to Param2(Value)
1370 10 Branch on Param1(Variable) Less or Equal to Param2(Value)
1371 11 Branch on Param1(Variable) More or Equal to Param2(Value)
1372 Param1 Variable (0-31) or Value (0-127)
1373 Param2 Variable (0-31) or Value (0-127)
1374 Number of rows to jump forward (1-127)
1375 Notes:
1376 134 *MOVE Move Buffer Data DestinationID+VFlag,SourceID+VFlag
1377 Description: Moves Data from one buffer to the other with optional offsets
1378 Parameters: DestinationID (0-31) +VFlag(32)
1379 SourceID (0-31) +VFlag(32)
1380 Notes: If the VFlag is used (+32) then the Visible Area of the
1381 Buffer is used in the move operation.
1382
1383 135 *SCROLLLEFT6 Byte(Text) Scroll Left BufferID+VFlag,ScrollOn Byte
1384 Description: Byte Scrolls a Buffer Left.
1385 Parameters: BufferID (0-31) +VFlag(32)
1386 ScrollOnByte (0-255)
1387 Notes: Bytes fall off the left. ScrollOnByte appears on the right.
1388 If the VFlag is used (+32) then only the Visible area of the buffer
1389 is scrolled.
1390
1391 136 *SCROLLRIGHT6 Byte(Text) Scroll Right BufferID,ScrollOn Byte
1392 Description: Byte Scrolls a Buffer Right.
1393 Parameters: BufferID
1394 ScrollOnByte
1395 Notes: Bytes fall off the Right. ScrollOnByte appears on the left.
1396 If the VFlag is used (+32) then only the Visible area of the buffer
1397 is scrolled.
1398
1399 137 *SCROLLUP1 Byte Scroll Up BufferID,ScrollOn Byte
1400 Description: Scrolls a Buffer Up.
1401 Parameters: BufferID
1402 ScrollOnByte
1403 Notes: Bytes fall off the Top. ScrollOnByte appears on the bottom.
1404 If the VFlag is used (+32) then only the Visible area of the buffer
1405 is scrolled.
1406
1407 138 *SCROLLDOWN1 Byte Scroll Down BufferID,ScrollOn Byte
1408 Description: Scrolls a Buffer Down
1409 Parameters: BufferID
1410 ScrollOnByte
1411 Notes: Bytes fall off the Bottom. ScrollOnByte appears on the Top.
1412 If the VFlag is used (+32) then only the Visible area of the buffer
1413 is scrolled.
1414
1415 139 *SCROLLLEFT1 Bit Scroll Left BufferID,ScrollOn Bit
1416 Description: Bit Scrolls a Buffer Left.
1417 Parameters: BufferID
1418 ScrollOnBit (Bit0)
1419 Notes: Bits fall off the Left. ScrollOnBit appears on the Right.
1420 If the VFlag is used (+32) then only the Visible area of the buffer
1421 is scrolled.
1422
1423 140 *SCROLLRIGHT1 Bit Scroll Right BufferID,ScrollOn Bit
1424 Description: Bit Scrolls a Buffer Right
1425 Parameters: BufferID
1426 ScrollOnBit (Bit0)
1427 Notes: Bits fall off the Right. ScrollOnBit appears on the Left.
1428 If the VFlag is used (+32) then only the Visible area of the buffer
1429 is scrolled.
1430
1431 141 *MASKMOVE Move with Mask DestinationID,XOffset,YOffset,SourceID,MaskID
1432 Description: Copies the buffer from Source to Destination using the Mask
1433 Parameters: DestinationID
1434 SourceID
1435 MaskID
1436 Notes: If the VFlag is used (+32) then only the Visible area of the buffers
1437 are used.
1438
1439 142 *DELAY Delay the sequence Seconds,Milliseconds
1440 Description: Delays the sequence by a number of milliseconds
1441 Parameters: Seconds Value (0-127) or Variable (0-31)
1442 Milliseconds Value (0-99) or Variable (0-31)
1443 Notes: The code is usually executed every 100th of a second depending
1444 on the speed of operation.
1445 The delay in calling the engine may be delayed using Seconds
1446 then milliseconds provided.
1447
1448 143 *FILL Fill the Buffer BufferID,Value
1449 Description: Fills a buffer with the specific value.
1450 Parameters: BufferID
1451 Value (0-255)
1452 Notes: If the VFlag is used (+32) then only the Visible area of the buffer
1453 is Filled.
1454
1455
1456 144 *BIT Set Bits in Buffer BufferID,Bit Value,Bit Mask
1457 Description:
1458 Parameters:
1459 Notes: If the VFlag is used (+32) then only the Visible area of the buffer
1460 is scrolled.
1461
1462 145 *RANDOMV0 Random Variable Scope(0-Scope)
1463 Description:
1464 Parameters:
1465 Notes:
1466 177 *END End of Script
1467 Description:
1468 Parameters:
1469 Notes:
1470
1471 ;Scroll the boat graphic from right to left behind a river bank mask.
1472 ;Set up Boat work areas
1473 ; Set ID0 to Boat bitmap
1474 *SETALL BoatBitmap_ID,<Boat_Bitmap,>Boat_Bitmap,11,16
1475 ; Set ID1 to Boat_bitmap work area(We scroll there)
1476 *SETALL BoatBMWork_ID,0,0,12,16 ;0,0 flags auto buffer allocation
1477 ; Fill the area with 64
1478 *FILL BoatBMWork_ID,64
1479 ; Copy the bitmap to this buffer offsetting it to reserve leftmost column
1480 *MOVE BoatBitmap_ID,BoatBMWork_ID,1,0
1481
1482 ;Set up Riverbank work area
1483 ; Set up the full screen width River bank mask
1484 *SETALL RiverBankMask_ID,<Riverbank_Mask,>Riverbank_Mask,40,20
1485
1486 ;Set Screen Location
1487 ; Set screen location
1488 *SETALL Screen_ID,<$A000+40*100,>$A000+40*100,40,20
1489
1490 ;Set Variable0 to X position of Boat
1491 *SETV0 30
1492
1493 ;Set Bit counter
1494 *SETV1 6
1495
1496 ; Perform Copy from BoatBMWork_ID bitmap to Screen_ID masked with
1497 ; RiverbankMask_ID Mask offset by Variable0(x) and 5(y)
1498 *MASKMOVE IDBankMask,IDBoatBitmap,Variable0,5
1499
1500 ;Now smooth scroll boat work area left
1501 *SCROLLLEFT1 BoatBitmap_ID,0
1502
1503 ;Progress the bit
1504 *DECV1 1
1505
1506 ;Test counter
1507 *BRANCHBACK Morethan,Variable1,0,3
1508
1509 ;Move Boat one byte left
1510 *DECV0 1
1511
1512 ;Test Counter
1513 *BRANCHON Not,Variable0,10,6
1514
1515 *END
1516
1517 Total Script == 59 Bytes
1518 Specifying mask will allign the bitmap to the top left of the mask.
1519 XOffset and YOffset provide a means of offsetting the bitmap within
1520 the mask area.
1521 These parameters are also provided for the MOVE command to allow
1522 the bitmap to be offset within the work area and permit columns or rows
1523 to be reserved for scroll-on areas.
1524
1525
1526 ************************ Map of Map *****************************
1527
1528 6 Maps in total..
1529 1 Map01 Sassubree
1530 2 Map02 Windmill games
1531 3 Map00 Wizards House
1532 4 Map03 Samson Isle
1533 5 Map04 Mountain approach
1534
1535 The hero starts on map 02 and by river boat takes the hero to Map01 and
1536 Sassubree Harbour.
1537 From Sassubree harbour he may travel by Sea boat to Map03 and Samson Isle.
1538 From Sassubree harbour he may travel by Dragon to Map00 and the Wizards house.
1539 From Sassubree harbour he may travel by Horseback to Map04 and the mountain.
1540
1541 Plot..
1542 The game consists of a number of quests that need to be completed before the final
1543 quest begins.
1544 The game also consists of some sub games.
1545 Quest1 : Raise capital enough to buy passage to Samson Isle
1546 The butterflies, Bok Fish and Fruit found in Ritemoor can be sold for a profit at
1547 the market. This is meant as the means to get money at the start of a new game.
1548 Through talking to characters in the taverns and many houses in Sassubree, it will
1549 be found that buying fish early in the morning from the fisherman can be sold to
1550 market for a profit.
1551 Quest2 : Riding the Storm
1552 Once enough money is collected, Lucien can seek passage to Samson isle from Keggs.
1553 Keggs has a small fishing boat on the jetty and early in the morning both venture
1554 out towards Samson isle. Unfortunately the boat hits a massive swell which knocks
1555 Keggs overboard and Lucien is left to attempt to guide the boat through the storm
1556 and to Samson isle (Subquest1).
1557 The more energy he uses, the more his health will diminish.
1558 Quest3 :
1559 Once Lucien reaches Samson isle, he will be washed up on the beach, tired and low on health.
1560 However this position will be saved to Disc.
1561 Nearby are resources where he can get food. Otherwise he may have posessions
1562 left to replenish his health.
1563 venturing forth into the undergrowth he will discover the monastary, entering it
1564 on the second screen.
1565 The rooms within are
1566
1567
1568
1569
1570 Through rumours the hero will learn the bigger challenge ahead of him. He must
1571 first travel to Samson Isle and collect the fake sword from the abbey their. He
1572 must also collect some fungus only grown in the woods.
1573
1574 Samson Isle is also frequented by a Dragon with a fancy for Fungus. The hero can
1575 use the Fungus to gain flight from the dragon and travel to Map00 where he will
1576 find the last Wizard. The wizard will then place him on one or more quests ending
1577 with the ultimate quest of replacing the sword in the mountain chamber with his
1578 own.
1579
1580 To assist the hero, the dragon may be used to get to each map.
1581
1582 Each quest will earn the hero money, which he may use to buy magical artifacts,
1583 weapons, potions and lodging (to save the game), etc.
1584
1585 On returning to Sassubree new rumours will be spreading about a horse that runs
1586 faster than the wind. It will also be rumoured the horse seems to always instinctively
1587 take the rider to were he is destined to travel seemingly without being guided.
1588
1589 Some joke is made about a drunk being returned to the pub after leaving it late one
1590 night.
1591
1592 The Hero must earn enough money to purchase this horse.
1593 The price of the horse rises as the hero accumulates more money. The hero must
1594 sacrifice items he has in order to complete the deal.
1595
1596 The Horse will take the Hero to the foothills of the Mountain where the final quest
1597 begins.
1598
1599 Riding Horseback, travelling by sea boat and Dragon flight are subgames the hero
1600 must play and pass unscathed in order to progress to the next Map.
1601
1602 Riding Horseback consists of the Hero riding on the back of a horse and like Wrath of
1603 a Demon, the hero must jump over rocks, duck under branches, pick up health potions
1604 and swipe at attacking creatures with a parralax landscape scrolling behind and
1605 infront of horse and hero.
1606
1607 The Sea boat will enter a storm and similar to the Viking ship in Myth, the hero
1608 must keep the boat afloat by pulling hard at the ropes, keeping control of the helm
1609 and steering away from the tretcherous rocks.
1610
1611 The Dragon may be guided up and down. The hero must avoid attacking giant wasps,
1612 Terradactils, etc. and may use the dragons fire breath to kill the adversaries.
1613
1614
1615 MAP02 >> MAP01 >> MAP03 >> MAP00 >> MAP04
1616
1617 Title is displayed when map is visited. However if the hero moves infront
1618 of a detected location the name will be displayed instantly in this window.
1619 However would the name of each collision be better displayed in gamecode?
1620 ;Rather than holding everything in one floor table, lets be logical
1621 ;and store to two tables.
1622 ;Lets also use codes 32-63 and inverse instead of odd codes.
1623 ;$A0-$BF will indicate a floor and ceiling limit.
1624 ;$20-$3F will indicate collision.
1625 ;In this way both collision and floor level can be specified in single location.
1626
1627 MAP02 (7 SSCs)
1628 scn50-moat2-scn14-scn23-bogmire-scn51-scn71
1629 MAP01 (7 SSCs)
1630 scn04-scn12-scn32-scn22-harbour1-harbour2-jettyend2
1631 MAP03 (? SSCs)
1632 wood-scn44-priory2-?
1633 MAP00 (8 SSCs)
1634 scn03-boulders2-bridge2-hallow1-well-wizhouse-fountain-scn64
1635 MAP04 (8 SSCs)
1636 scn02-scn53-scn21-?-boulders-skybridge-brokensky-atop
1637
1638 Ceiling marker bytes will be code $A0 - Thats 128(Ceiling)+0(No collision)
1639 Floor marker bytes will be code $A0 - That is second $A0 for column
1640 Collision bytes will be codes $20-$3F or $A0-$BF if occupying same pos as floor/ceiling
1641 Default Collision is..
1642 ;00 20 A0 No Collision
1643 ;01 21 A1 Left Exit
1644 ;02 22 A2 Right Exit
1645 ;03 23 A3 Wall
1646 ;04 24 A4 Death
1647 ;05 25 A5-AF Background Collision
1648 ;Ground types (For footsteps)
1649
1650
1651 SCN50 - Boat boarding is A5, creek code is A6
1652 MOAT2 - creek code is A6
1653 SCN14 - mill door is A5
1654 SCN23 - Windmill door is A5, Church door is A6
1655 SCN71 - Tree is A5
1656
1657 SCN04 - Entrance is A5
1658 SCN12 - Ground window A5, Door A6
1659 SCN32 - Sign A5, Gate A6, Garden A7, Windows A8, Inn A9
1660 SCN22 - Market A5, Front Exit A6, Arch A7
1661 harbour1 - Gully bridge A5, Steps A6
1662 harbour2 - left fish bucket A5, right fish exit A6
1663 jettyend2 - moored boat A5
1664
1665 Text window displays this message..
1666 "Welcome to the Kissing Widow."
1667 "4 characters populate the bar."
1668 "Please select who you wish to"
1669 "speak to."
1670
1671 Inlay displays a list of the 4 characters.
1672 Each entry displays the characters face, health, mana, Name, Title, up to 10
1673 items (which may include hidden items (?)), "I" flag (which reflects that character
1674 wants to talk and may have new information), Gender flag and Grotes.
1675
1676 On selecting the character, the screen scrolls selected character to top, and the
1677 text window then displays..
1678
1679 "You are looking at NYLOT."
1680 "What do you wish to talk about?"
1681
1682 Under the Character is displayed a list of subjects based on the character.
1683
1684 "Ask about rumours"
1685 "Query Items NYLOT holds"
1686 "Sell item owned"
1687 "Ask NYLOT to hold item for you"
1688
1689 On selecting Ask about rumours, the text window will display the text..
1690
1691 "Well, i have heard rumours of"
1692 "a black stone that deters Witches."
1693
1694
1695 "Black Stone" is added to the inventory of catch phrases, and a low bell sounds
1696 to reflect the importance.
1697 The cursor then returns to the list of subjects.
1698
1699 On selecting "Query.." the list of questions is replaced with a list of the characters
1700 items he or she posesses.
1701 Some items may just be a question mark to indicate that NYLOT is unwilling to reveal
1702 the item.
1703 Each item is shown as a picture, its health, its price (if willing to sell) and mana
1704 properties and a description about its known properties.
1705
1706 Selecting an item like the "green potion" will attempt to buy that item.
1707
1708
1709
1710
1711 For Inns and Market perhaps an alternative would be to provide a separate
1712 inlay or even overlay existing inlay with market menu and text then use
1713 bottom window for text input?
1714
1715 Enter Inn..
1716
1717 *****************+*****************
1718 You enter the Pirates Arms.
1719 The Inn is heavy with the musty
1720 scent of old ale and old men. A
1721 Rather butch female stands at the
1722 bar. The bar is filled with a motly
1723 group of misfits, most of them
1724 drunk! /
1725
1726 ******** Pirates Arms *********
1727 What do you want to do?
1728 >Speak to someone <
1729 Sit quietly in corner
1730 Attack someone
1731 Exit Inn
1732 ******* Sassubree Market *******
1733 What do you want to do?
1734 >Visit Stall
1735 Set up shop
1736 Exit Market
1737
1738 Who do you wish to speak to?
1739 >Speak to Drunk <
1740 Speak to visitor
1741 Speak to Innkeeper
1742 Speak to Barmaid
1743 Speak to Pirates Mate
1744 Speak to Someone else..
1745
1746
1747 What do you want to say?
1748 >Chat to Drunk <
1749 Compliment Drunk
1750 Insult Drunk
1751
1752 The Drunk ignores you.
1753
1754 What do you want to say?
1755 Chat to Drunk
1756 >Compliment Drunk <
1757 Insult Drunk
1758
1759 The Drunk turns and promptly
1760 falls to the floor unconcious.
1761
1762
1763 QuestionText
1764 .byt "What do you want to do?"
1765 .byt "Who do you wish to speak to?"
1766 .byt "What do you want to say?"
1767
1768
1769 Ask about Rumours
1770 Ask Question
1771 Ask about items
1772 Lend guest item
1773 Recover item from guest
1774 Compliment guest
1775 Buy guest Ale
1776
1777
1778 Find Pipe in SSC-OM2S2
1779 Buy Tobacco in Sassubree Market
1780 Buy Fire Sticks in Sassubree Market
1781 Use Pipe with tobacco and FireSticks (Would be cool to have it animated!)
1782 Drink Beer but don't feel effects
1783
1784 How do we combine?
1785 We USE multiple items.
1786 Will also work thus..
1787 Use Fish Net with Stick and Cat Gut
1788 to make Butterfly Net
1789
1790 The combination is taken, not the sequence of combining items, so
1791 the combination of three items can be matched to a result.
1792
1793 Need controls to
1794 Select multiple
1795 Examine Item
1796
1797 CONTROL MENU
1798 Combine items
1799 Examine Item
1800
1801 L
1802 R
1803 U
1804 D
1805 A Action key
1806 I Inventory key
1807 M Manage Key
1808
1809
1810 I Catch Item to Inventory
1811 I+L Move item selector Left
1812 I+R Move item selector Right
1813 I+U Pickup Item
1814 I+D Drop Selected Item
1815 I+A Use Item
1816
1817 A Interact background/Catch and eat item/Use item
1818 L Move Left
1819 R Move Right
1820 U Enter Building
1821 D
1822 U+L Standing Jump Left (or running jump)
1823 U+R Standing Jump Right (or running jump)
1824 A+L Combat
1825 A+R Combat
1826 A+U Combat
1827 A+D Combat
1828
1829 Rather than "Seek Transport" the hero should chat to fisherman who should
1830 at some point mention his boat by the quayside where "Boat" becomes a
1831 keyword. The hero should then immediately ask about "Samson Isle" (another
1832 keyword he will need). This will then trigger the fisherman to either ask
1833 if the hero seeks transport (Yes/No) or that the fisherman would not go
1834 there for any money.
1835
1836 "Man, the swells that brew in those deep, deep waters near Samson must be
1837 strived by a larger vessel than mine."
1838
1839 "I have never travelled that far.. it will cost you some for my time and
1840 potentially my risk"
1841
1842 Keywords
1843 Keywords are important words picked up during conversation that may
1844 be enquired about. Enquiring on a keyword may bring forth further
1845 keywords and may eventually lead to useful information or even a
1846 quest or passage.
1847
1848 Keywords are embedded in the character conversation text as codes
1849 from 128 to 191.
1850 The codes refer to a specific keyword (held in keyword text) which
1851 replaces the code before being inserted in the text with a bell.
1852 New keywords(0-63) are added to a keywordsLearnt list indexed by
1853 KeywordsLearntIndex which starts at 255 (BMI no keywords learnt).
1854 Once each keyword has been used in a conversation and they have
1855 triggered a further response they are deemed redundant and are
1856 marked complete by setting the top bit in the KeywordsLearnt list.
1857
1858 LocationWelcomeTextLo
1859 .byt <WelcomeText_KissingWidowTavern
1860 .byt <WelcomeText_PiratesArmsInn
1861 .byt <WelcomeText_MarketGreenZone
1862 .byt <WelcomeText_MarketCyanZone
1863 .byt <WelcomeText_MarketMagentaZone
1864 .byt <WelcomeText_MarketYellowZone
1865 .byt <WelcomeText_MarketBlueZone
1866 .byt <WelcomeText_Bakery
1867 .byt <WelcomeText_MillHouse
1868 .byt <WelcomeText_Windmill
1869 .byt <WelcomeText_WizardsHouse
1870 .byt <WelcomeText_BanitWitchesCastle
1871 .byt <WelcomeText_TurnChurch
1872 LocationWelcomeTextHi
1873 .byt >WelcomeText_KissingWidowTavern
1874 .byt >WelcomeText_PiratesArmsInn
1875 .byt >WelcomeText_MarketGreenZone
1876 .byt >WelcomeText_MarketCyanZone
1877 .byt >WelcomeText_MarketMagentaZone
1878 .byt >WelcomeText_MarketYellowZone
1879 .byt >WelcomeText_MarketBlueZone
1880 .byt >WelcomeText_Bakery
1881 .byt >WelcomeText_MillHouse
1882 .byt >WelcomeText_Windmill
1883 .byt >WelcomeText_WizardsHouse
1884 .byt >WelcomeText_BanitWitchesCastle
1885 .byt >WelcomeText_TurnChurch
1886
1887 ;Character 13,32,65-90,97-122
1888 WelcomeText_KissingWidowTavern
1889 ; ***********************************
1890 .byt "You enter the Kissing Widow Tavern.",13
1891 .byt "Musty aromas of rotten fish and",13
1892 .byt "tobacco hit your throat.",13
1893 .byt "Select a Character you want to",13
1894 .byt "converse with..",0
1895 WelcomeText_PiratesArmsInn
1896 .byt "Welcome to the Pirates Arms!",13
1897 .byt "The large room has rows of benches",13
1898 .byt "ending with a bar at the far end.",13
1899 .byt "Select the Character you want to",13
1900 .byt "talk to..",0
1901 WelcomeText_MarketGreenZone
1902 .byt "There are a few Food Stalls here.",13
1903 .byt "Selling Bread, Fish, Meat, Tobacco,",13
1904 .byt "Milk, Eggs and Poultry.",13
1905 .byt "Select the stall holder you wish to",13
1906 .byt "converse with..",0
1907 WelcomeText_MarketCyanZone
1908 .byt "Here stand many stalls selling many",13
1909 .byt "wares ranging from Weapons to Pots,",13
1910 .byt "Herbs to Cloaks and Artifacts to",13
1911 .byt "Strange Potions.",13
1912 .byt "Select the stall holder you wish to",13
1913 .byt "converse with..",0
1914 WelcomeText_MarketMagentaZone
1915 .byt "Chairs, Benches, Grandfather clocks",13
1916 .byt "and wood of all different sizes are",13
1917 .byt "stacked as high as the eye can see.",13
1918 .byt "These stalls are a hive of activity",13
1919 .byt "today. Select which stallholder to",13
1920 .byt "Visit..",0
1921 WelcomeText_MarketYellowZone
1922 .byt "Grain sacks are stacked high,Stalls",13
1923 .byt "selling every variety of bread,",13
1924 .byt "Pulses, Rice, Potatoes and strange",13
1925 .byt "Pink root vegetables can be seen.",13
1926 .byt "Select a stallholder to visit..",0
1927 WelcomeText_MarketBlueZone
1928 .byt "Alcoholic and pure Juices are sold",13
1929 .byt "here every day. From Apple to Meat",13
1930 .byt "and from Goat urine to Dragons",13
1931 .byt "Blood, or so the label says!",13
1932 .byt "Select the stall holder you wish to",13
1933 .byt "converse with..",0
1934 WelcomeText_Bakery
1935 .byt "The best place to go for reduced",13
1936 .byt "Prices, cheaper than Sassubree",13
1937 .byt "Market and much fresher.",13
1938 .byt "Select the Character you wish to",13
1939 .byt "talk to..",0
1940 WelcomeText_MillHouse
1941 .byt "The Mill house holds grain from",13
1942 .byt "Last years crop. Apples, onions",13
1943 .byt "and other strange fruits and",13
1944 .byt "vegatables hang from the high",13
1945 .byt "Ceiling.",13
1946 .byt "Select the Character you wish to",13
1947 .byt "talk to..",0
1948 WelcomeText_Windmill
1949 .byt "The mill is like the inside of",13
1950 .byt "some enormous wooden clock.",13
1951 .byt "Constantly turning, grinding,",13
1952 .byt "processing the grain to flour.",13
1953 .byt "Select the Character you wish to",13
1954 .byt "talk to..",0
1955 WelcomeText_WizardsHouse
1956 .byt "All is quiet, all is calm. As if",13
1957 .byt "the franetic outside world was",13
1958 .byt "a lifetime away. Strange charms",13
1959 .byt "and glowing orbs hang from above.",13
1960 .byt "Select the Character you wish to",13
1961 .byt "talk to..",0
1962 WelcomeText_BanitWitchesCastle
1963 .byt "You shudder as Lithe figures peer",13
1964 .byt "at you through glib eyes behind",13
1965 .byt "half closed doors. Strange sounds",13
1966 .byt "enter your mind and scream on exit.",13
1967 .byt "Select the Character you wish to",13
1968 .byt "talk to..",0
1969 WelcomeText_TurnChurch
1970 .byt "Turn church seems out of place in",13
1971 .byt "this Wurlde, Such familiar the",13
1972 .byt "architecture with tall arches and",13
1973 .byt "Fonts and Crosses, very strange.",13
1974 .byt "Select the Character you wish to",13
1975 .byt "talk to..",0
1976
1977 http://www.defence-force.org/ftp/forum/twilighte/wurlde/demos/caloricwurlde.zip
1978
1979 The birdcage could be a dual purpose item.
1980 1) If dropped in a dark place, could distract or divert the enemy
1981 2) If carried in the mines, is an early warning device for detecting gas
1982
1983 >Rumours? to Barton
1984
1985 The text is passed through source thus..
1986
1987 "The wonder of",128,"was within her heart"
1988
1989 128 is keyword for Merideth which needs to exist before determining
1990 line lengths..
1991
1992 1) Transfer source data to buffer inserting embedded keywords
1993
1994 This then gives us..
1995
1996 "The wonder of MERIDETH was within her heart"
1997
1998 Now looking at example window width of 16..
1999
2000 012345679012345
2001 "The wonder of MERIDETH was within her heart"
2002
2003 We must scan for each space looking for when it sits beyond the window width
2004
2005 "The_" ok
2006 "The wonder_" ok
2007 "The wonder of_" ok
2008 "The wonder of MERIDETH_" here
2009
2010 then set a carriage return flag by replacing the space with a 13.
2011 Next we start from the next line and scan across again..
2012
2013 012345679012345
2014 "The wonder of",13
2015 "MERIDETH was",13
2016 "within her",13
2017 "heart"
2018
2019
2020 2) Insert carriage returns
2021
2022 Now we are ready to display text to window.
2023
2024
2025 ;OptionSet
2026 ; 0) Character interaction options or Hero Options
2027 ; 1) Learnt Keyword list
2028 ; 2) Price haggling options
2029 ; 3) Yes/No/Cancel
2030
2031
2032 Optionset0 displayed
2033 textwindow displays "Selection option.."
2034 "Rumours?" to Keesha
2035 "I heard there has been seen a pit dragon over samson isle"
2036 >"Samson isle" added to learnt keywords
2037 >"Pit Dragon" added to learnt keywords
2038 Returns to optionset 0
2039 >"Ask about Subject"
2040
2041 "Ask about Subject" to Ribald
2042 Optionset1 displayed
2043 text window displays "Select Keyword.." (LR resets to optionset0 and neighbour)
2044 "Pit Dragon" to keesha
2045 text window displays "Pit Dragons used to be reverred beasts of the wild but have"
2046 text window displays "now been used by Birist in the Dwarven mines"
2047 >"Birist" added to learnt keywords
2048 >"Dwarven mines" added to learnt keywords
2049 Optionset1 displayed
2050
2051 ESC
2052
2053 Optionset0 displayed
2054 "Seek Lodging" to Barton
2055 text window displays "Lodging costs 100 Grotes. You do not have enough."
2056
2057 After money got..
2058 "Seek Lodging" to Barton
2059 text window displays "After paying for lodging, a hearty meal, a slumbered sleep and a hearty breakfast
2060 text window displays "you feel revived and ready for the next day"
2061
2062 Refresh occupants
2063 Optionset0 displayed
2064
2065 "Combine items" with Hero
2066 text window displays "Select first item.."
2067 Option list remains
2068 flashing cursor in items displayed.
2069 Navigate to select first item then press Action or Esc to abort and return optionlist0
2070 cursor for Item(Briar pipe) selected turns blue and remains
2071
2072 text window displays "Select second item.."
2073 Option list remains
2074 flashing cursor in items displayed.
2075 Navigate to select second item then press Action or Esc to abort back to first item
2076 cursor for item(Tobacco) selected turns green and remains
2077
2078 text window displays "Select third item.."
2079 Option list remains
2080 flashing cursor in items displayed.
2081 Navigate to select third item(Fire stick) then press Action or Esc to abort back to first item
2082 text window displays "You cannot combine these items."
2083 Returns to selecting third item
2084
2085 or..
2086
2087 text window displays "You created a smoking pipe"
2088 Briar pipe, tobbacco and firestick vanish and replaced with smoking pipe.
2089 Item cursors erased
2090 optionSet0 displayed
2091
2092 "Examine items" to hero or character
2093 text window displays "Select item.."
2094 flashing cursor in items displayed.
2095 Each item shows description in Description window
2096 Esc to exit
2097 OptionSet0 displayed
2098 Reset to character description?
2099
2100 "Buy item" to character
2101 text window displays "Select item you wish to buy.."
2102 flashing cursor in items displayed.
2103 Each item shows description in Description window
2104 Press Action to buy or Esc to exit to optionset0
2105 "You do not have enough Grotes to buy this item."
2106
2107 or when item shown..
2108
2109 text window displays "You exchange grotes for item"
2110 Item vanishes from Ribald items and appears in pocket
2111
2112 or when item shown as "?"..
2113 text window displays "Ribald is unwilling to sell you this item."
2114
2115 in all cases OptionSet0 is displayed.
2116
2117 "Sell item" to character
2118 text window displays "Select item you wish to sell.."
2119 flashing cursor in hero pockets.
2120 Each item shows description in hero window.
2121 Press Action to Sell or Esc to exit to optionset0
2122 text window displays "I'll buy that for 15 Grotes, says Ribald"
2123
2124 OptionSet2 displayed..
2125 "Accept 15 Grotes"
2126 "Haggle Price"
2127 "Compliment"
2128 "Buy Ale"
2129
2130 ??????
2131
2132 "Compliment" to Ribald
2133 "
2134
2135
2136 Reformatting text
2137 This process involves formatting text so that no word is broken over a line
2138 width.
2139
2140 The first way is to scan from position 1 onwards recording and overwriting the
2141 position of a space in the sentence.
2142 Once the line width is reached, the last position of a space is restored, the
2143 space is replaced with a carriage return character and the process begins again
2144 from the next position.
2145
2146 To illustrate this..
2147
2148 The line..
2149 "Jumping Jack flash wrote this."
2150 |Line width ---->|
2151
2152 The scan then does this..
2153 >>>>>>>>>>>>>>>>>
2154 "Jumping Jack flash wrote this."
2155
2156 And restores to space, continueing...
2157
2158 "Jumping Jack/"
2159 >>>>>>>>>>>>>>>>>|
2160 "flash wrote this."
2161
2162 However in this example the scan involves 34 duty cycles to complete even
2163 though the sentence is just 30 characters long.
2164
2165 The more efficient way is to scan back from the line width like this..
2166 <<<<|
2167 "Jumping Jack flash wrote this."
2168
2169 Replace with CR on the first occurrence of a space and continue..
2170
2171 "Jumping Jack/"
2172 |
2173 "flash wrote this."
2174
2175 In this way we only actually scan 5 duty cycles!
2176
2177
2178 Currently we have three routines..
2179 Convert to pure text (Expand any embedded codes to text)
2180 Reformat to Formatted (Insert carriage returns at or before line widths)
2181 Render text (Display text to screen window)
2182
2183 Convert to Pure text is best kept separate but the latter two could be
2184 consolidated to provide a more efficient engine (Faster, smaller)
2185 Also include clear to end of line and optional clear to end of window.
2186
2187 It is of little point to include a word wrap routine if the text is known.
2188 Even if embedded text or Gold is to be represented in a row, it should be
2189 easy enough to calculate the text length by hand and save many bytes of code.
2190
2191
2192 Currently the plan is to hold all conversations in main memory, thereby allowing
2193 conversing to exist at any point of the game and also allowing characters to
2194 freely move around the map.
2195
2196 However it would be easier to keep characters in specific locations but if the need
2197 arises that they be absent.
2198
2199 This would greatly reduce the memory overhead. So onto the next problem of how SSC
2200 should hold this data and how Game memory should have access to this data.
2201
2202 That each character is confined to a specific location means that a particular SSC
2203 will hold a specific number of characters in itself including all conversation ever
2204 made by the character. This may mean the conversations can be more diverse and not
2205 so limited by memory.
2206
2207 For example in Sassubree and the SSC for the Market Square, their is little
2208 happening on screen (visual effects) but potentially many stallholder characters
2209 with many tales to tell within. A new flag in Playerfile for each character will
2210 set whether they are present or not. The SSC will decide through conditions the
2211 characters presence.
2212
2213 SSC will also contain the face gfx of the character, a description of the character,
2214 the characters name and a number of rumours that may be dependant on heros posessions.
2215
2216 Text from other SSC may refer to characters in another SSC but the name will
2217 have to be given rather than embedded. However this may give rise to a more diverse
2218 naming of the character. For example "Old Tom.." may refer to "Tom Bombadill".
2219
2220 However the Characters Gold, his posessions, gender, allegiance, health, mana and
2221 drunk level will still be held in the player file so the number of characters within
2222 the whole game still cannot exceed 32.
2223
2224 The SSC needs a new Character header describing the possible characters within the
2225 SSC..
2226
2227 MAIN HEADER
2228 CharacterCount .dsb 1
2229 CharacterHeaderVector .dsb 2 ;Refers to first character header
2230 InteractionsCount .dsb 1
2231 InteractionsVector .dsb 2
2232
2233 ;Message text will always appear in bottom text window so 35 characters per line.
2234 ;RumourMongeringLevel(1,2,4,8) or 128 for Interaction,required stuff,"]",Message Text,"]"
2235 ;For required stuff..
2236 ;0-31 Only if the hero posesses the specified object will the character deliver this message
2237 ;128-143 Only the Character of specified Group will deliver this message
2238 ;144-175 Only specified Character will deliver this message
2239 ;176-207 Only if the hero posesses the specified keyword will the character deliver this message
2240 ;208-223 Only when the character is at the specified Health level will he deliver this message
2241 ;224-239 Only at the specified level of drunkedness(0-15) will the character deliver this message
2242 ;240-255 Only if the hero posesses the specified Grotes(100-1600) will the character deliver this message
2243
2244 ;The response may then contain embedded codes that correspond to those in the main memory EmbeddedText.
2245 ;These may either be ways to optimise text size or for keyword specifying.
2246 Interaction0 ;General Rumour for any Mongering level (Only Facts!)
2247 .byt 15
2248 .byt "]"
2249 .byt "Sorry, i don't know]"
2250 Interaction1
2251 .byt 1 ;General Rumour for Mongering level 1 (
2252 .byt "]"
2253
2254
2255 CHARACTER HEADER (Up to 6 Characters x 10 Bytes)
2256 CharacterID .dsb 1 ;ID(0-31) of Character (x8 to index Playerfile CharacterBlocks)
2257 Name Text Vector .dsb 2 ;"]" terminated name vector in SSC
2258 Character Description Vector .dsb 2 ;"]" terminated Character Description in SSC
2259 Face Graphic Vector .dsb 2 ;3x15 Face Graphic Vector
2260
2261
2262 CHARACTER INTERACTION
2263 List of other characters required to be present(32-63), The Keyword
2264 being asked about (64-95), items that must be posessed by hero(96-127), Grotes that must be posessed?,
2265 level of toxicity(Drunk) required and consequence of response?
2266 terminated with 0.
2267 The response Text terminated with Top bit of last character set (128).
2268
2269 For example..
2270 "Ribald" is the Ships mate on the "Pirates Curse" sailing ship moored just outside
2271 Sassubree. He frequents the Kissing Widow Tavern and is only willing to provide
2272 passage to Samson Isle if the hero holds the Solice Key, if Kobla (Pirate Captain)
2273 is present and is given 100 Grotes.
2274
2275 7+32,7+64,31+96,0,"I can take you there but it will cost you 100 Gold"+128
2276
2277 How do we progress to completing the deal?
2278
2279 Give character 100 Gold?
2280
2281 * There needs to be some rule for redundant keywords otherwise the list will easily exceed 12!
2282
2283
2284
2285 Each character may be..
2286 1)asked a question on a keyword
2287 This depends on the keyword and may also depend on items
2288 the hero posesses and other characters present.
2289 2)asked for rumours
2290 The Rumour Monger level will be read from PF and the
2291 appropriate Response given.
2292 3)asked for lodging (Innkeeper only)
2293 If the PF says Innkeeper is not a friend or the hero
2294 doesn't have enough Grotes then lodging is refused.
2295 Otherwise lodging will be given.
2296 4)asked to hold something
2297 If the character has space he will always take item.
2298 5)asked to release something
2299 This depends on Heros Allegiance?
2300 6)asked to buy something
2301 Depends on characters Gold, his mood?, Health.
2302 7)asked to sell something
2303 Depends on characters Gold, his mood?, Health.
2304 8)Compliment
2305 This may affect the characters allegiances and ultimately
2306 may lead to sex, new information or a willingness to show
2307 previously hidden posessions.
2308 9)Insult
2309 This will upset the character and may lead to a change of
2310 allegiance depending on his group, gender, mana and health.
2311 10)Buy Beer
2312 This will have the same benefits as complimenting the
2313 character but to a greater degree.
2314
2315 Some items held by hero or creature may be hidden.
2316 Once a creature reaches their intoxicated limit they will reveal hidden items
2317 at a rate of one hidden item per intoxication level over their limit.
2318
2319 This simply means buying them ale until they reach their limit then switching
2320 off the objects hidden property.
2321 However doing this alone will mean the item is "permanently" revealed.
2322
2323 So we have a second flag to indicate if this item is normally hidden.
2324 So when the characters toxic level returns within their limit a quick scan of
2325 there items can hide all items that should be hidden.
2326
2327 Some characters will refuse to drink unless the hero drinks with them.
2328
2329 This is the same for the hero's items too. If the hero gets too drunk he too
2330 will begin revealing his items.
2331
2332 In addition the hero will lose some control over selecting items (the key
2333 controls will change, like up becomes down).
2334 It could be nice to also change options as the hero gets more drunk..
2335 "Rumours?" >> "Rumooo" >> "blah blah"
2336 "Compliment" >> "be nice" >> "compllll"
2337 "Buy item" >> "Buy thing" >> "blah blah"
2338 Once the heros limit is reached, all options change to "blah blah", all keys
2339 reversed. If the hero manages to buy again he will be thrown out or arrested
2340 if the steward is here.
2341
2342 Stepping out of the pub then back in again will decrease his toxic level by 2
2343 each time.
2344
2345 Every time the hero acquires new information or items through drinking, he
2346 gains an extra point to his toxic limit (up to 14).
2347
2348 KOBLA
2349 Kobla will not accept a drink unless the hero drinks with him.
2350 Koblas limit is 14
2351 Luciens limit is 3
2352 Lucien (Hero) must acquire as much information from other pub goers through
2353 drinking in order to equal Koblas limit before he is able to 'crack' him.
2354
2355 *************** In game Sound Effects **************
2356 Wind sound can be accomplished through the knock on effect of rustling tree
2357 leaves which appear to be very similar to high pitch noise.
2358 Put together with combined 2/3 channel volume to accomplish pseudo 8 bit res.
2359
2360 Bird song can be accomplished through high pitch tone sequences.
2361
2362 Seashore waves through same method as wind except different noise pitch and
2363 louder variation of 8 bit res volume.
2364
2365 Rain through same as wind with random high pitch plinks from tone & EG.
2366
2367 Thunder through deep noise.
2368
2369
2370 Smooth scrolling
2371
2372 ;Fetch next screen byte
2373 lda screen,y
2374 ;Rotate right so that new bit is in B7, Set B6 goes to B5 and B0 into carry
2375 ror
2376 ;Use 256 number to index shift right table
2377 tax
2378 lda ShiftRight,x
2379 ;and store back to screen
2380 sta screen,y ;==16 cycles
2381 iny
2382
2383 ;using conventional shift right
2384 lda screen,y ;4
2385 and #63 ;2
2386 bcc skip1 ;4/4
2387 ora #64
2388 skip1 lsr ;2
2389 ora #64 ;2
2390 sta screen,y ;4 == 18 cycles
2391
2392
2393 ;Fetch next screen byte
2394 lda screen,y
2395 ;Rotate left so that new bit is in B0, set b6 to b7 and b5(shifted out bit) to B6
2396 rol
2397 ;Capture B6 because we know B7 will be set
2398 cmp #64+128
2399 ;Use 256 number to index shift left table (will wipe B7, set B6 and fetch shifted value)
2400 tax
2401 lda ShiftLeft,x
2402 ;and store back to screen
2403 sta screen,y
2404
2405 ;Using conventional scroll left
2406 lda screen,y
2407 rol
2408 cmp #64+128
2409 and #63
2410 ora #64
2411 sta screen,y
2412
2413
2414
2415 come away, o human child!
2416 To the waters and the wild
2417 With a faery, hand in hand,
2418 For the world's more full of weeping
2419 than you can understand.
2420
2421
2422 On the mill screen have nats or bugs flying around in swarms, following circular paths interweaving with one
2423 another.
2424 They may bite, not sure yet.
2425
2426 0 Map00 Homeland and Wizards house Converted
2427 1 Map01 Sassubree and game save Converted
2428 2 Map02 Ritemoor and game start Converted
2429 3 Map03 Samson isle
2430 4 Map04 Mount Ciro
2431 5
2432 6 Held by creature
2433 7 Held by hero
2434
2435
2436 lda hi2
2437 bmi skip1
2438 lda lo1
2439 sec
2440 sbc lo2
2441 lda hi1
2442 and #127
2443 sbc hi2
2444 bcc 1<2 or bcs 1>=2 or beq 1=2
2445 |||
2446
2447 skip1 lda lo1
2448 sec
2449 sbc lo2
2450 lda hi1
2451 sbc hi2
2452 bcc 1<2 or bcs 1>=2 or beq 1=2
2453 |||
2454
2455
2456 A utility to convert tap files (saved by hide in euphoric) into xa .s files
2457 and copy them to ssc directory.
2458 The utility initially provides a means to open a tap file but will then allow
2459 this file to be renamed and will store both original and new name in a list for
2460 quick conversion later.
2461
2462 Quick Sequences of Volume&Pitch
2463
2464 B0-3 Volume
2465 B4-7
2466
2467 Pitch == 0-255 (Hi byte set low)
2468 Volume == 0-15
2469 Control == 0-15 (+ Data byte in some instances)
2470
2471 Pitch , (Volume + Control)
2472
2473 Control
2474 0 - Normal
2475 1 - Delay (+1
2476
2477 Sound Effects
2478
2479 Each SSC is given the opportunity to set the range of sound effects appropriate
2480 for its screen, which effects directly affect its screen (high volume) and those
2481 that effect adjacent screens (low volume) and the allocation of effects to channels.
2482
2483 For example, the Wood Cabin on Samson Isle may require some bird song and rustling
2484 of trees which are intermittent but the source exists on the screen.
2485 The adjacent screen has the shore so waves crashing on the shore are required.
2486 The ground surface is mixed chalk and grass so the footsteps need to reflect the
2487 different surfaces. This could be encoded into the floor table.
2488
2489
2490
2491 Boat ride to Samson Isle
2492 The biggest hurdle here is how to do the storm. If we adopt the Myth technique and have
2493 the waves never seen, it would not be accurate in that the boat never tips but a realistic
2494 storm can still be accomplished using lightning graphic, lighting changes to dark skies and
2495 heavy rain (especially if the rain appears like Pulsoids in streaks rather than particles).
2496 I am not sure if the boat could be tipped, such graphics would need to be simple and possibly
2497 use a similar technique of rendering as the windmill vanes.
2498 The floor height table could be changed dynamically though so the hero still appears to run
2499 up and down its length. However the boat size may be small if the moored rocking boat is used.
2500 But perhaps we also need to use the surf idea used in the modern remake of Myth. That is a
2501 single large particle wave that washes over the boat repeatedly.
2502 I think regardless what we do we may still need some waves.
2503
2504 Thinking about it, the boat ride may involve two 16K's, one leaving Sassubree and facing the
2505 heavy storm and the other using the birds-eye view as the boat approaches the long sands of
2506 Samson isle recreating Baron Munchausen Moon boat sequence.
2507
2508 For sound, departing Sassubree should use a suitable music then no music as the storm rises.
2509 For the Moon boat sequence, perhaps a suitable tune was used in film? something emotive to
2510 'after the storm' and no sfx.
2511
2512 For gameplay, the hero is provided lots of controls for navigating the boat through the storm
2513 but this is a red herring since he needs only lower the sails and keep low.
2514 However we might place some wraithes over the boat who try to destroy it.
2515 For the second 16K there is no gameplay but the stars to rippling water to sand sequence.
2516
2517
2518 *=$9C00
2519
2520 MapID ;9C00
2521 .byt 0
2522 ScreenID ;9C01
2523 .byt 5
2524 HeroSelectedPocket ;9C02
2525 .byt 0
2526 HeroHealth ;9C03
2527 .byt 15 ;0-15
2528 HeroToxicLevel ;9C04
2529 .byt 0
2530 HeroToxicLimit ;9C05
2531 .byt 4
2532 HeroMana ;9C06
2533 .byt 0
2534 HeroGrotes ;9C07,9C08,9C09
2535 .byt 1,0,0 ;10000 == 01 00 00
2536 Controller ;9C0A
2537 .byt 0
2538 KeywordsLearntIndex .byt 255
2539 ;123-152 Keyword ;9C0C-9C2B
2540 KeywordsLearnt
2541 .dsb 32,0
2542 ;Object tables (3x80) = 240
2543
2544 ;Character Blocks (4*32) = 128
2545
2546 Nylot_Tribesman ;0
2547 .byt cbHealth12+cbMana9
2548 .byt cbMale+cbLocation15+cbFriend
2549 .byt cbRumourSet0+cbGroup7
2550 .byt cbToxicLevel0+cbToxicLimit5
2551 .byt IQ7
2552 .byt 0,1,1
2553 Drummond_InnKeeper ;1
2554 .byt cbHealth14+cbMana0
2555 .byt cbMale+cbInfo+cbLocation1+cbFriend
2556 .byt cbRumourSet0+cbGroup0
2557 .byt cbToxicLevel0+cbToxicLimit15
2558 .byt IQ11
2559 .byt 0,0,0
2560 Lief_Wench ;2
2561 .byt cbHealth10+cbMana5
2562 .byt cbFemale+cbInfo+cbLocation1+cbFriend
2563 .byt cbRumourSet0+cbGroup1
2564 .byt cbToxicLevel0+cbToxicLimit15
2565 .byt IQ4
2566 .byt 0,9,9
2567 Derb_Baker ;3
2568 .byt cbHealth15+cbMana2
2569 .byt cbMale+cbLocation7+cbFriend
2570 .byt cbRumourSet1+cbGroup2
2571 .byt cbToxicLevel0+cbToxicLimit8
2572 .byt IQ6
2573 .byt 0,0,0
2574 Jumbee_Cobbler ;4
2575 .byt cbHealth10+cbMana0
2576 .byt cbMale+cbLocation4+cbFriend
2577 .byt cbRumourSet3+cbGroup3
2578 .byt cbToxicLevel0+cbToxicLimit10
2579 .byt IQ3
2580 .byt 0,0,9+9*16
2581 Barton_InnKeeper ;5
2582 .byt cbHealth14+cbMana1
2583 .byt cbMale+cbInfo+cbLocation0+cbFriend
2584 .byt cbRumourSet1+cbGroup0
2585 .byt cbToxicLevel0+cbToxicLimit15
2586 .byt IQ10
2587 .byt 0,9,9
2588 Keesha_Wench ;6
2589 .byt cbHealth12+cbMana3
2590 .byt cbFemale+cbLocation0+cbFriend
2591 .byt cbRumourSet0+cbGroup1
2592 .byt cbToxicLevel0+cbToxicLimit15
2593 .byt IQ12
2594 .byt 0,0,0
2595 Kobla_Pirate ;7
2596 .byt cbHealth14+cbMana8
2597 .byt cbMale+cbLocation0+cbFriend
2598 .byt cbRumourSet2+cbGroup4
2599 .byt cbToxicLevel0+cbToxicLimit12
2600 .byt IQ14
2601 .byt 8,8,8
2602 Ribald_Fisherman ;8
2603 .byt cbHealth7+cbMana0
2604 .byt cbMale+cbLocation0+cbFriend
2605 .byt cbRumourSet2+cbGroup12
2606 .byt cbToxicLevel5+cbToxicLimit9
2607 .byt IQ4
2608 .byt 0,0,0
2609 Rangard_Fisherman ;9
2610 .byt cbHealth10+cbMana1
2611 .byt cbMale+cbLocation1+cbFriend
2612 .byt cbRumourSet1+cbGroup5
2613 .byt cbToxicLevel0+cbToxicLimit10
2614 .byt IQ12
2615 .byt 0,0,0
2616 Keggs_Fisherman ;10
2617 .byt cbHealth7+cbMana0
2618 .byt cbMale+cbLocation0+cbFriend
2619 .byt cbRumourSet0+cbGroup5
2620 .byt cbToxicLevel0+cbToxicLimit8
2621 .byt IQ7
2622 .byt 0,0,0
2623 Tygor_Peasant ;11
2624 .byt cbHealth3+cbMana2
2625 .byt cbFemale+cbLocation5+cbFriend
2626 .byt cbRumourSet1+cbGroup6
2627 .byt cbToxicLevel0+cbToxicLimit7
2628 .byt IQ3
2629 .byt 0,0,0
2630 Retnig_Peasant ;12
2631 .byt cbHealth5+cbMana8
2632 .byt cbMale+cbLocation1+cbFriend
2633 .byt cbRumourSet3+cbGroup6
2634 .byt cbToxicLevel0+cbToxicLimit9
2635 .byt IQ3
2636 .byt 0,0,0
2637 Yltendoq_Priest ;13
2638 .byt cbHealth4+cbMana13
2639 .byt cbMale+cbLocation12+cbFriend
2640 .byt cbRumourSet0+cbGroup13
2641 .byt cbToxicLevel0+cbToxicLimit4
2642 .byt IQ7
2643 .byt 0,0,0
2644 Mardon_Peasant ;14
2645 .byt cbHealth15+cbMana10
2646 .byt cbMale+cbLocation1+cbFriend
2647 .byt cbRumourSet3+cbGroup6
2648 .byt cbToxicLevel0+cbToxicLimit10
2649 .byt IQ13
2650 .byt 8,8,8
2651 Lintu_Child ;15
2652 .byt cbHealth13+cbMana12
2653 .byt cbFemale+cbLocation2+cbFriend
2654 .byt cbRumourSet3+cbGroup9
2655 .byt cbToxicLevel0+cbToxicLimit2
2656 .byt IQ5
2657 .byt 0,0,0
2658 ;Tell Temple about artifact lost beneath the waves, leave and return to map
2659 ;and he will posess it (after diving to fetch it).
2660 Temple_Child ;16
2661 .byt cbHealth15+cbMana13
2662 .byt cbMale+cbLocation4+cbFriend
2663 .byt cbRumourSet3+cbGroup9
2664 .byt cbToxicLevel0+cbToxicLimit2
2665 .byt IQ6
2666 .byt 0,0,1
2667 Tallard_Steward ;17
2668 .byt cbHealth14+cbMana0
2669 .byt cbMale+cbLocation1+cbFriend
2670 .byt cbRumourSet0+cbGroup10
2671 .byt cbToxicLevel0+cbToxicLimit6
2672 .byt IQ2
2673 .byt 1,9,3
2674 Kinda_Bakerboy ;18
2675 .byt cbHealth12+cbMana3
2676 .byt cbMale+cbLocation7+cbFriend
2677 .byt cbRumourSet0+cbGroup9
2678 .byt cbToxicLevel0+cbToxicLimit8
2679 .byt IQ4
2680 .byt 0,0,0
2681 Abbot_Clergy ;19
2682 .byt cbHealth8+cbMana0
2683 .byt cbMale+cbLocation6+cbFriend
2684 .byt cbRumourSet0+cbGroup13
2685 .byt cbToxicLevel0+cbToxicLimit5
2686 .byt IQ3
2687 .byt 0,0,0
2688 Priest_Clergy ;20
2689 .byt cbHealth9+cbMana0
2690 .byt cbMale+cbLocation12+cbFriend
2691 .byt cbRumourSet0+cbGroup13
2692 .byt cbToxicLevel0+cbToxicLimit4
2693 .byt IQ5
2694 .byt 0,0,0
2695 Jiro_Child ;21
2696 .byt cbHealth15+cbMana14 ;0
2697 .byt cbMale+cbLocation10+cbFriend ;1
2698 .byt cbRumourSet0+cbGroup9 ;2
2699 .byt cbToxicLevel0+cbToxicLimit15 ;3
2700 .byt IQ12 ;4
2701 .byt 0,0,0 ;5,6,7
2702 OldTom_Farmer ;22
2703 .byt cbHealth5+cbMana0
2704 .byt cbMale+cbLocation8+cbFriend
2705 .byt cbRumourSet0+cbGroup11
2706 .byt cbToxicLevel8+cbToxicLimit8
2707 .byt IQ12
2708 .byt 0,0,0
2709 Witch1_Witch ;23
2710 .byt cbHealth14+cbMana8
2711 .byt cbFemale+cbLocation8
2712 .byt cbRumourSet0+cbGroup14
2713 .byt cbToxicLevel2+cbToxicLimit15
2714 .byt IQ12
2715 .byt 0,0,0
2716 Witch2_Witch ;24
2717 .byt cbHealth14+cbMana8
2718 .byt cbFemale+cbLocation8
2719 .byt cbRumourSet0+cbGroup14
2720 .byt cbToxicLevel2+cbToxicLimit15
2721 .byt IQ12
2722 .byt 0,0,0
2723 Witch3_Witch ;25
2724 .byt cbHealth14+cbMana8
2725 .byt cbFemale+cbLocation8
2726 .byt cbRumourSet0+cbGroup14
2727 .byt cbToxicLevel2+cbToxicLimit15
2728 .byt IQ12
2729 .byt 0,0,0
2730 Erth_Wizard ;26
2731 .byt cbHealth12+cbMana15
2732 .byt cbMale+cbLocation10
2733 .byt cbRumourSet0+cbGroup14
2734 .byt cbToxicLevel0+cbToxicLimit15
2735 .byt IQ15
2736 .byt 0,0,0
2737 Munk_Clergy ;27
2738 .byt cbHealth15+cbMana5
2739 .byt cbMale+cbLocation5
2740 .byt cbRumourSet0+cbGroup13
2741 .byt cbToxicLevel2+cbToxicLimit14
2742 .byt IQ3
2743 .byt 0,0,0
2744 Spare_Character1 ;28
2745 .byt 0,cbUnused,0,0,0,0,0,0
2746 Triffith_Dealer ;29
2747 .byt cbHealth12+cbMana0
2748 .byt cbMale+cbLocation2
2749 .byt cbRumourSet0+cbGroup8
2750 .byt cbToxicLevel0+cbToxicLimit10
2751 .byt IQ10
2752 .byt 0,0,0
2753 Callum_Dealer ;30
2754 .byt cbHealth12+cbMana2
2755 .byt cbMale+cbLocation2
2756 .byt cbRumourSet0+cbGroup8
2757 .byt cbToxicLevel0+cbToxicLimit15
2758 .byt IQ11
2759 .byt 0,0,0
2760 Spare_Character2 ;31
2761 .byt 0,cbUnused,0,0,0,0,0,0 ;25
2762 ;9DCC
2763 ;GroupID corresponds to the group the character is associated with and is displayed
2764 ;below the Characters name in the Character Selection Form.
2765 ;Group may have a bearing regards whether they can be trusted (to hold items)
2766 ;00 InnKeeper
2767 ;01 Wench
2768 ;02 Baker
2769 ;03 Cobbler
2770 ;04 Pirate
2771 ;05 Fisherman
2772 ;06 Serf/Peasant
2773 ;07 Tribesman
2774 ;08 Dealer
2775 ;09 Child
2776 ;10 Steward
2777 ;11 Farmer
2778 ;12 Lord
2779 ;13 Clergyman
2780 ;14 Witch
2781 ;15 Wizard
2782
2783 ;LocationID corresponds to the place the Character resides
2784 ;00 Kissing Widow Tavern, Sassubree
2785 ; Barton, Keesahe Kobla(Nights), Ribald(Nights), Keggs(Evenings), Retnig
2786 ;01 Pirates Arms Inn, Sassubree
2787 ; Drummond, Lief, Rangard(Evenings), Tygor, Tallard, Mardon
2788 ;02 Market, Sassubree
2789 ; Jumbee, Lintu, Temple, Merideth(Every 5th Day), Triffith(Every 3rd Day),Callum(Every 7th Day)
2790 ;03
2791 ;04 Log Cabin, Samson Isle
2792 ; Mouse
2793 ;05 Monastery, Samson Isle
2794 ; Prest
2795 ; Munk
2796 ;06 LittlePee, Mount Ciro
2797 ; Nylot
2798 ;07 Sassubree Bakery, Sassubree
2799 ; Derb, Kinda(Nights)
2800 ;08 Mill House, Ritemoor
2801 ; Old Tom(Days)
2802 ;09 Windmill, Ritemoor
2803 ; Jiles
2804 ;10 Wizards House, Homeland
2805 ; Jiro, Erth
2806 ;11 ?Banit Witches Castle, Ritemoor
2807 ; Witch1
2808 ; Witch2
2809 ; Witch3
2810 ;12 Tirn Church, Homeland
2811 ; Yltendoq
2812 ;14 Fishy Place, Sasubree
2813 ; Rangard(Mornings), Keggs(Mornings), Kinda (Mornings)
2814 ;15
2815
2816 ;Remainder unused
2817 .dsb 256-(*&255)
2818
2819 ; .byt >gfxNylot
2820 ; .byt >gfxDrummond
2821 ; .byt >gfxLief
2822 ; .byt >gfxDerb
2823 ; .byt >gfxJumbee
2824 ; .byt >gfxBarton
2825 ; .byt >gfxKeesha
2826 ; .byt >gfxKobla
2827 ; .byt >gfxRibald
2828 ; .byt >gfxRangard
2829 ; .byt >gfxKeggs
2830 ; .byt >gfxTygor
2831 ; .byt >gfxRetnig
2832 ; .byt >gfxYltendoq
2833 ; .byt >gfxMardon
2834 ; .byt >gfxLintu
2835 ; .byt >gfxTemple
2836 ; .byt >gfxTallard
2837 ; .byt >gfxKinda
2838 ; .byt >gfxMerideth
2839 ; .byt >gfxPrest
2840 ; .byt >gfxJiro
2841 ; .byt >gfxOldTom
2842 ;Jiles
2843 ;Erth
2844 ;Munk
2845
2846
2847
2848
2849
2850 Need some way of convincing Keggs to go to Samson isle, to all it is a suicide attempt.
2851 Even after convincing him, he drowns so how to excuse this to Ribald and the other fisherman
2852 on your return to Sassubree?
2853 One way is first to get Keggs drunk, then listen to his sorrows. He will admit some surprising facts
2854 which will trigger a keyword. At the prospect of redeeming himself by joining Lucien on his quest,
2855 he agrees. Also perhaps as a means of getting away (and possibly some suicidal thoughts!) but
2856 Lucien must travel immediately.
2857 On returning to Sassubree you may be asked to explain yourself since Keggs is now dead and you
2858 were the last to be seen with him.
2859 You reply by asking about the keyword, this triggers the inquisitor to retract his questions!
2860
2861 His misdemeanor?
2862 He commited an atrocity that others have never forgiven him for, the atrocity was the lighting
2863 of the fire that caused the death of the children, the keyword being "old clay pipe".
2864 ; ***********************************
2865 When keggs is asked about "Samson isle" at kissing widow
2866 ; ***********************************
2867 .byt "I am nothing without the OLD CLAY PIPE.
2868 .byt "I won't talk about anything else until??
2869
2870 When keggs is asked about "Old Clay Pipe" at kissing widow?
2871 .byt "Many seasons ago i laboured on land"
2872 .byt "as a farmer. Back then my wife used"
2873 .byt "to smoke an OLD CLAY PIPE which was"
2874 .byt "the source of most arguments."
2875 .byt "On one such occasion, i threw that"
2876 .byt "pipe out the window not realising a"
2877 .byt "spark would light the YONDER STRAW."
2878 When Keggs is