Wednesday, November 30, 2016

A native Windows port of Moria

About 8 years ago, I did a proof of concept for porting the classic text-based adventure game Moria to a native Windows application.  I had some beta test help from other fans of the game (thanks Jou), and I had the blessing of David Grabiner for the project, based on the Umoria 5.5.2 core.  As is the case with so many projects, however, the effort ended up being shelved after the initial PoC.  I recently became interested again in the game and in finishing up the port, so that's what I've done with Win32Moria 5.5.3.  Combining the Moria core with PDCurses and SDL, I've been able to build a native Windows binary without the need for emulation, CygWin, or other compatibility layers.  It's possible there are similar efforts out there already, but this is mine.

Over the past 8 years, of course David released Moria 5.6.  The core source code is just different enough from 5.5.2 that I have not yet attempted to integrate those changes into the Win32 port, but it is on my list of to-dos along with releasing the final code changes for public consumption.  For now, I'm making the binary package available and would appreciate any feedback from folks who give it a try, especially if you find any bugs!  Also, if anyone would like to submit a good icon to use (maybe of the Balrog), I'd be glad to make an update.  I'm no artist.

Bits can be downloaded here: http://www.slor.net/moria/wmoria.zip

A couple useful new hotkeys:
- Alt-F toggles between fullscreen and windowed mode.
- Alt-D toggles between double and single resolution when in windowed mode.
* Alt isn't currently recognized more than once if kept held down because SDL needs to reset the keyboard when changing video modes, so it must be released and pressed each time for multiple toggles.

A few features that may keep this from becoming an official Moria port:
- Optional auto-rolling for hero stats.
- Optional auto-haggling for store prices.
- Optional colors for monsters, treasure, and mineral seams.

Some screenshots:



And a completed quest:

 Name        : Slor                    Age          :     15   STR : 18/100
 Race        : Human                   Height       :     73   INT : 18/100
 Sex         : Male                    Weight       :    214   WIS : 18/100
 Class       : Ranger                  Social Class :     49   DEX : 18/100
 Title       : **KING**                                        CON : 18/100
                                                               CHR : 18/100

 + To Hit    :     20       Level      :      78    Max Hit Points :    417
 + To Damage :     24       Experience : 8072780    Cur Hit Points :    417
 + To AC     :     47       Max Exp    : 8072780    Max Mana       :    145
   Total AC  :     78       Exp to Adv : *******    Cur Mana       :    145
                            Gold       :  811536

(Miscellaneous Abilities)

 Fighting    : Superb       Stealth     : Excellent    Perception  : Superb
 Bows/Throw  : Superb       Disarming   : Superb       Searching   : Very Good
 Saving Throw: Superb       Magic Device: Superb       Infra-Vision: 30 feet

Character Background
 You are one of several children of a Townsman.  You are a
 well liked child.  You have dark brown eyes, straight blond
 hair, and an average complexion.
 

  [Character's Equipment List]

  a) You are wielding   : a Battle Axe (Balestarius) (HA) (2d8) (+10,+14) [+2] (+1 to STR).
  b) Worn on head       : a Steel Helm of Infra-Vision [6,+7] (+3).
  c) Worn around neck   : an Amulet of the Magi [+3] (+15).
  d) Worn on body       : Augmented Chain Mail (R) (-2) [16,+12].
  e) Worn on shield arm : a Large Metal Shield [5,+7].
  f) Worn on hands      : a Set of Gauntlets of Slaying (+3,+4) [2,+3].
  g) Right ring finger  : a Ring of Speed (+1).
  h) Left  ring finger  : a Ring of Speed (+1).
  i) Worn on feet       : a Pair of Soft Leather Shoes of Stealth [1,+5] (+3).
  j) Worn about body    : a Cloak of Stealth [1,+3] (+1).
  k) Light source is    : a Brass Lantern with 10745 turns of light.
  l) Secondary weapon   : an Executioner's Sword (SD) (4d5) (+10,+19).
 

  [General Inventory List]

a) 3 Books of Magic Spells [Beginners-Magick].
b) 3 Books of Magic Spells [Magick I].
c) 3 Books of Magic Spells [Magick II].
d) 3 Books of Magic Spells [The Mages' Guide to Power].
e) 10 Rations of Food.
f) 20 Flasks of Oil.
g) 11 Potions of Restore Life Levels.
h) 27 Potions of Restore Intelligence.
i) 19 Potions of Restore Dexterity.
j) 20 Scrolls of Word-of-Recall.
k) 2 Scrolls of Rune of Protection.
l) 2 Scrolls of Mass Genocide.
m) a Wand of Acid Balls (3 charges).
n) a Wand of Cold Balls (4 charges).
o) a Wand of Lightning Balls (3 charges).
p) a Wand of Fire Balls (6 charges).
q) a Wand of Drain Life (4 charges).
r) a Staff of Teleportation (6 charges).
s) a Staff of Teleportation (4 charges).
t) a Staff of Speed (3 charges).
u) a Staff of Speed (5 charges).