Here be Dragons

 by Shawn Jefferson, 17 January 2015



And kobolds, slimes and snakes.



Got the basic Moria monster code running on the 8-bit. Monsters can move and attack you, and you can attack back and kill them gaining experience (and levels). You might want to wear your armor and wield your weapons and avoid Battle Scarred Veterans on the town level. ;)



Besides the monsters, these functions added since last beta/demo:



? - brings up the help screens

M - Map has been rewritten and fixed

W - Where am I (map feature)

P - Peruse books (you can look at the contents of magic books, just can't learn the spells yet!)

T - throwing items, including arrows/pebbles from slings, flaming oil

Q - Quaffing potions (beware of drinking strange substances in the dungeon!)

/ - Identify character



All commands are shown in the help screen, try whatever you like, those that are not ported yet will do nothing. Tombstones are drawn when you die and you can view your character and equipment.



Change $1A3B just before going down a staircase, and you'll go to dungeon level $1A3B + 1. Don't go too much further than your character level, the monsters get quite a bit stronger.



These bugs I'm aware of:

- sometimes a treasure is displayed as " (1d3)". You can pick it up, but doing inventory commands with it usually results in a crash.

- almost always a crash around generating a dungeon level around 5-7.

- "you hear a muffled scream"... creatures are being spawned in rock, most likely corrupted

- picking up gold seems to pause for a significant amount of time (could just be all the 32-bit values being worked with in that function.... or some bug I introduced.)

- occasionally invisible monsters that you can kill and gain experience but they don't get deleted from the level, so you can keep killing them over and over.

- some more I can't remember off the top of my head.



All bugs introduced by my efforts to port, usually due to bank switching errors, and not from the original code!



On the coding front, I thought I had ran out of memory, but I found some data in low memory that should have been in cartridge banks, so freed up enough to keep going! Mainly the issue is around the banking code to allow functions to call each other inter-bank. 