Nuvie - New Ultima VI Engine -  
Main Menu
 Home
 FAQ
 Forum
 Screenshots
 Documentation
 Downloads
Development Progress
 Ultima 6
 The Savage Empire
 Martian Dreams
 ChangeLog
SourceForge
 Project Home
 Bug Tracking
 SVN Tree
Misc Menu
 Links
 Contact
 IRC Logs
SourceForge
Documentation

Nuvie Documentation

Contents

Configuration and Running

Before you configure and run Nuvie, remember that Nuvie can run Ultima 6, The Savage Empire or Martian Dreams. While you can install Nuvie in your Ultima 6 folder and run it from there, the ideal is to install it in its own folder and copy your games there.

You may need to edit a few settings to get Nuvie setup. This is pretty easy to do, and here I will guide you on how to configure Nuvie to find the necessary data files to be able to run.

A sample configuration file is provided. It is called nuvie.cfg.sample. You need to rename it to nuvie.cfg. The game will also generate one if the cfg file is missing. It contains the following XML code:

<config>

 <loadgame>ultima6</loadgame>

 <datadir>./data</datadir>

 <keys>(default)</keys>

 <joystick>
  <enable_joystick>no</enable_joystick>
  <repeat_hat>no</repeat_hat>
  <repeat_delay>50</repeat_delay>
  <axes_pair1>
   <x_axis>0</x_axis>
   <y_axis>1</y_axis>
   <delay>110</delay>
   <x_deadzone>8000</x_deadzone>
   <y_deadzone>8000</y_deadzone>
  </axes_pair1>
  <axes_pair2>
   <x_axis>0</x_axis>
   <y_axis>1</y_axis>
   <delay>110</delay>
   <x_deadzone>8000</x_deadzone>
   <y_deadzone>8000</y_deadzone>
  </axes_pair2>
  <axes_pair3>
   <x_axis>0</x_axis>
   <y_axis>1</y_axis>
   <delay>110</delay>
   <x_deadzone>8000</x_deadzone>
   <y_deadzone>8000</y_deadzone>
  </axes_pair3>
  <axes_pair4>
   <x_axis>0</x_axis>
   <y_axis>1</y_axis>
   <delay>110</delay>
   <x_deadzone>8000</x_deadzone>
   <y_deadzone>8000</y_deadzone>
  </axes_pair4>
 </joystick>

 <input>
  <enable_doubleclick>yes</enable_doubleclick>
  <doubleclick_opens_containers>no</doubleclick_opens_containers>
  <party_view_targeting>no</party_view_targeting>
  <new_command_bar>no</new_command_bar>
  <enabled_dragging>yes</enabled_dragging>
  <look_on_left_click>yes</look_on_left_click>
  <walk_with_left_button>yes</walk_with_left_button>
  <direction_selects_target>yes</direction_selects_target>
  <interface>normal</interface>
 </input>

 <general>
  <lighting>original</lighting>
  <dither_mode>none</dither_mode>
  <enable_cursors>yes</enable_cursors>
  <converse_gump>no</converse_gump>
  <use_text_gumps>no</use_text_gumps>
  <party_formation>standard</party_formation>
  <show_console>yes</show_console>
 </general>
 
 <cheats>
  <enabled>no</enabled>
  <enable_hackmove>no</enable_hackmove>
  <party_all_the_time>no</party_all_the_time>
  <min_brightness>0</min_brightness>
 </cheats>

 <video>
  <game_style>original</game_style>
  <scale_method>Point</scale_method>
  <scale_factor>2</scale_factor>
  <fullscreen>no</fullscreen>
  <screen_width>320</screen_width>
  <screen_height>200</screen_height>
  <game_width>320</game_width>
  <game_height>200</game_height>
  <game_position>center</game_position>
 </video>

 <audio>
  <enabled>yes</enabled>
  <enable_music>yes</enable_music>
  <enable_sfx>yes</enable_sfx>
  <music_volume>100</music_volume>
  <sfx_volume>255</sfx_volume>
  <combat_changes_music>yes</combat_changes_music>
  <vehicles_change_music>yes</vehicles_change_music>
  <conversations_stop_music>no</conversations_stop_music>
  <stop_music_on_group_change>yes</stop_music_on_group_change>
 </audio>

 <ultima6>
  <gamedir>./ultima6</gamedir>
  <sounddir>./u6_sounds</sounddir>
  <savedir>./u6_save</savedir>
  <skip_intro>no</skip_intro>
  <show_eggs>no</show_eggs>
  <roof_mode>no</roof_mode>
  <show_stealing>no</show_stealing>
  <use_new_dolls>no</use_new_dolls>
  <cb_position>default</cb_position>
  <show_orig_style_cb>default</show_orig_style_cb>
  <cb_text_color>115</cb_text_color>
  <map_tile_lighting>yes</map_tile_lighting>
  <custom_actor_tiles>default</custom_actor_tiles>
  <converse_solid_bg>no</converse_solid_bg>
  <converse_bg_color>218</converse_bg_color>
  <converse_width>default</converse_width>
  <converse_height>default</converse_height>
  <free_balloon_movement>no</free_balloon_movement>
  <music>native</music>
  <game_specific_keys>(default)</game_specific_keys>
  <patch_keys>./patchkeys.txt</patch_keys>
  <newscroll>
   <width>18</width>
   <height>19</height>
   <solid_bg>no</solid_bg>
   <bg_color>218</bg_color>
   <border_color>220</border_color>
  </newscroll>
 </ultima6>

 <martian>
  <gamedir>./martian</gamedir>
  <savedir>./martian_save</savedir>
  <skip_intro> no </skip_intro>
  <show_eggs>no</show_eggs>
  <use_new_dolls>no</use_new_dolls>
  <cb_position>default</cb_position>
  <show_orig_style_cb>default</show_orig_style_cb>
  <map_tile_lighting>no</map_tile_lighting>
  <custom_actor_tiles>default</custom_actor_tiles>
  <converse_solid_bg>no</converse_solid_bg>
  <converse_bg_color>136</converse_bg_color>
  <converse_width>default</converse_width>
  <converse_height>default</converse_height>
  <game_specific_keys>(default)</game_specific_keys>
  <patch_keys>./patchkeys.txt</patch_keys>
  <newscroll>
   <width>18</width>
   <height>19</height>
   <solid_bg>no</solid_bg>
   <bg_color>136</bg_color>
   <border_color>133</border_color>
  </newscroll>
 </martian>

 <savage>
  <gamedir>./savage</gamedir>
  <savedir>./savage_save</savedir>
  <skip_intro> no </skip_intro>
  <show_eggs>no</show_eggs>
  <use_new_dolls>no</use_new_dolls>
  <cb_position>default</cb_position>
  <show_orig_style_cb>default</show_orig_style_cb>
  <map_tile_lighting>yes</map_tile_lighting>
  <custom_actor_tiles>default</custom_actor_tiles>
  <converse_solid_bg>no</converse_solid_bg>
  <converse_bg_color>216</converse_bg_color>
  <converse_width>default</converse_width>
  <converse_height>default</converse_height>
  <game_specific_keys>(default)</game_specific_keys>
  <patch_keys>./patchkeys.txt</patch_keys>
  <newscroll>
   <width>18</width>
   <height>19</height>
   <solid_bg>no</solid_bg>
   <bg_color>216</bg_color>
   <border_color>219</border_color>
  </newscroll>
 </savage>

</config>

What you really need to set is <gamedir> (in the <ultima6> block, and in the <martian> and <savage> blocks as well if you want to run the respective games) - set it to the path to your Ultima 6 folder. If you have "ultima6", "martian" and "savage" folders in your Nuvie folder, the default path settings are good enough and need not be changed.

No other setting needs to be altered, but you can alter them to your liking. You should now be done with configuring, and should be able to run Nuvie. If you still have problems, the "stdout.txt" and "stderr.txt" files created at runtime should contain useful information that may help to solve the problem.

If you want to run The Savage Empire or Martian Dreams, you will have to change the <loadgame> setting or do so from the command line. Type nuvie savage to run The Savage Empire, or nuvie martian to run Martian Dreams.

Advanced Configuration

Note: This section is a bit heavy and intended for people who want to set advanced settings within Nuvie. If all you want is to get Nuvie running, read the previous section and skip this one.

The following is a list of settings there are for the XML configuration options. Note that some options are not included in the default configuration file; if you want to set them, you will have to add them yourself.

The "keys" block

  • keys
    • Description: The base list of keybindings. You can partially or completely patch these keys with the per game patch_keys setting.
    • Possible values: the path to the file and the file name or (default) to use ./data/defaultkeys.txt. The default is (default)

The "joystick" (controller) block

Each axes_pair has its own set of keybindings and settings. axes_pair1 uses joy_up, joy_down, joy_left, joy_right, joy_rightup, joy_rightdown, joy_leftup, and joy_leftdown. Place the axes_pair number behind axes_pair2, axes_pair3, and axes_pair4 like in the following examples. axes_pair2 uses joy_up2. axes_pair3 uses joy_up3. axes_pair4 uses joy_up4. 20 buttons are supported joy0 - joy19. Only one hat is supported.

Only axes_pair1 has the option to repeat it's keybinding when held down. The defaults for axes_pair are set to my PS1 and PS2 controllers driver. You can change enable_joystick, repeat_hat, x_axis, and y_axis settings in the joystick menu. You'll probably don't want both the hat and axes_pair1 to be bound to directional commands so the other can be used for more commands.

Unfortunately, drivers vary which buttons are which and which axis are which and even the number of axis. The buttons in the PS3 example are the same as my PS2 driver but the axes are different and my d-pad is a hat when analog or axis 0 and 1 when not. The x and y axis in the examples are probably 0 and 1 so the others would need to subtract two.

PS3 example.
XBOX 360 examples for Windows, OSX, and Linux.

  • enable_joystick
    • Description: 0-9 will pick which joystick to use. (You'll probably want joystick 0). no disables joystick support.
    • Possible values: 0 through 9, no(default)
  • repeat_hat
    • Description: If yes, hat 0 will use the repeat_delay setting. If no, axes_pair1 will use it. With my PS2 driver, the hat is the d-pad when analog is enabled.
    • Possible values: yes, no(default)
  • repeat_delay
    • Description: Determines how fast in milliseconds a held down axes or hat will repeat the keybinding when able to walk or during wizard eye. 10000 will mean never repeat.
    • Possible values: 0 through 10000 (default is 50)
  • x_axis and y_axis:
    • Description: Determines which axis to use for the x and y value for the axes_pair. Axis 255 will be ignored as will any that don't exist on the device.
    • Possible values: 0 - 255
  • delay
    • Description: Determines how fast in milliseconds a moving axes_pair will repeat its keybinding. Basically, the each axis acts like a mouse and each movement is sent back for processing. This slows it down to a reasonable level or practically makes it not repeat unless you center it.
    • Possible values: 0 through 10000 (default is 110)
  • x_deadzone and y_deadzone:
    • Description: Determines how far the axis needs to be from the center in order for movement to count. Set it lower if you want lesser movements to activate the keybinding. Set it higher if it activates on its own (axis is off-center) or you want it to require more movement to activate.
    • Possible values:0 through 32766 (default is 8000)

The "Input" block

  • enable_doubleclick
    • Description: Determines whether doubleclicking will do anything. It will talk, search, use objects, and read objects. In combat mode it will actors with an alignment other than good and objects. In new style or with doubleclick_opens_containers it will open container gumps instead of searching.
    • Possible values: yes (default), no
  • doubleclick_opens_containers
    • Description: Determines whether doubleclicking will show container gumps when not in new style. enable_doubleclick must be yes for this to work. There are some display issues when dragging outside the map window but it is fixed when the gump is closed.
    • Possible values: yes, no (default)
  • party_view_targeting
    • Description: Determines whether the party view (party roster) screen can be targeted with cast, talk, use, look, and items moved from inside the inventory.
    • Possible values: yes, no (default)
  • new_command_bar
    • Description: Determines whether the new command bar is used when you press the new_command_bar key (,).
    • Possible values: yes, no (default)
  • enabled_dragging
    • Description: Determines whether you can drag and drop/move items. Full screen map will always be at least yes.
    • Possible values: yes (default), no
  • look_on_left_click
    • Description: Allows you to look (as if using the command) with a single left mouse click. This only works on the map area. It doesn't work in the inventory.
    • Possible values: yes (default), no
  • walk_with_left_button
    • Description: Determines whether holding down the left mouse button when you cannot drag will cause you to walk.
    • Possible values: yes (default), no
  • direction_selects_target
    • Description: When you are asked for a direction, and it can only be 1 tile away (interface is normal, casting wind change, or moving an actor), normally the target is selected when you press a directional key. With this option set to no, you can move the cursor around with the directional keys and select the target with the return (do_action) key. This is handy for selecting diagonal directions on devices that only have 4 directional keys.
    • Possible values: yes (default), no
  • interface
    • Description: Determines how dropping and drag and drop work.
    • Possible values
      • normal (default) - will allow you to only drop within original screen range and if nothing is blocking the path. In normal you can only drag and manipulate items if it is within one tile.
      • fullscreen - will allow you to drag and manipulate items anywhere on screen that isn't blocked. You are restricted to normal setting when in combat mode. Drop animation is disabled.
      • ignore_block - is like fullscreen except it also ignores whether the path is blocked and isn't restricted when in combat mode.

The "general" block

  • lighting
    • Description: Determines how darkness looks.
    • Possible values:
      • original (default) - uses the blocky darkness used in the original game
      • smooth - nicer and more realistic
      • none - full brightness all the time
  • dither_mode
    • Description: Allows Nuvie to imitate the look of the cga and ega display modes
    • Possible values:
      • none (default) - allows modern graphics capability
      • cga - can only display 4 colors at a time
      • ega - can display only display 16 colors at a time
  • enable_cursors
    • Description: Determines whether the Ultima 6 cursors or the default SDL cursor is used.
    • Possible values: yes (default), no
  • converse_gump
    • Description: Yes means you use an Ultima 7+ style conversation gump instead of the original conversation system. You can still type with this gump. New style always uses this gump.
    • Possible values: yes, no (default)
  • use_text_gumps
    • Description: Yes means you use an Ultima 7 style pop up graphics like signs, books, and sctolls instead of displaying text in the bottom right corner. Currently, only signs are implemented (and only partially). New style always uses these gumps.
    • Possible values: yes, no (default)
  • party_formation
    • Description: Determines what party formation is used
    • Possible values:
      • standard (default) - puts the first follower behind in a triangle with a gap between each party member.
      • row - Party members line up behind and to the left of Avatar.
      • column - Party members line up behind Avatar.
      • delta - is an open triangle formation with Avatar at front.
  • show_console
    • Description: Determines whether the startup text is shown.
    • Possible values: yes (default), no

The "video" block

  • game_style
    • Description: Determines which game style to use. Original style is the original interface and backgrounds but with some improvements like better mouse controls. It is restricted to a 320x200 game size. All other game styles can be 320x200 or larger. Original+ gets rid of some useless background to show more of the game map. Original+ will have will stop drawing the map when the user interface (UI) begins. Original+ full map will draw the map underneath the UI if the game height is greater than 200, else it will use Original+ instead. New style displays the game map for the entire screen and uses a completely new, Ultima 7 like, interface with popup gumps and conversations. Some of there new style interfaces, converse_gump, use_text_gumps, new_command_bar, and doubleclick_opens_containers can be used in the other game styles.
    • Possible values:
      • original (default)
      • new
      • original+
      • original+_full_map
  • scale_method
    • Description: Determines which scaling method to use. The blockiness or sharpness of graphics depends on this setting. Scale methods other than Point and Interlaced must use 2 as the scale factor. Note that scaler names are case sensitive, for example use Scale2x not scale2x .
    • Possible values:
      • Point (default)
      • Interlaced
      • 2xSaI
      • Super2xSaI
      • Scale2x
      • SuperEagle
      • BiLinear
      • BiLinearPlus
      • BilinearInterlaced
      • BilinearHalfInterlaced
      • BilinearQuarterInterlaced
  • scale_factor
    • Description: The original size of the Ultima 6 graphics is 16×16 pixels. In the original game these are enlarged by 2 times to get a size of 32×32 pixels. Changing this setting will magnify the graphics by a different s scale factor, and thus affect your Nuvie window size. Scale methods other than Point and Interlaced must use 2 as the scale factor.
    • Possible values: any integer (default=2)
  • fullscreen
    • Description: Whether Nuvie is run in full screen mode. Full screen doesn't work in OSX.
    • Possible values: yes, no (default)
  • screen_width
    • Description: A black background will show if the screen_width is larger than the game or intro width. It is scaled by the scale_factor.
    • Possible values: any integer that's 320 or larger(default=320)
  • screen_height
    • Description: A black background will show if the screen_height is larger than the game or intro height. It is scaled by the scale_factor.
    • Possible values: any integer that's 200 or larger(default=200)
  • game_width
    • Description: (Ignored by original style which must be 320.) This changes the size of the game's height. Width must be at least 320.
    • Possible values: any integer (default=320)
  • game_height
    • Description: (Ignored by original style which must be 200.) This changes the size of the game's height. Height must be at least 200.
    • Possible values: any integer (default=200)
  • game_position
    • Description: This sets the position of the game and intro if it is smaller than the screen size.
    • Possible values: upper_left and center (default=center)

The "audio" block

  • enabled
  • enabled_music
  • enabled_sfx

These determine whether music and sound are enabled for any of the three games. All three take boolean (yes or no) settings. The enabled option is a master switch which, if set to no, will override the other two settings and disable audio totally.

  • music_volume
    • Description: This changes how loud the music is.
    • Possible values: any integer from 0 to 255 (default=100)
  • sfx_volume
    • Description: This changes how loud the sfx is.
    • Possible values: any integer from 0 to 255 (default=255)

The following settings are preferences. They take boolean settings (yes or no).

  • combat_changes_music - determines if toggling combat will stop playing the current track and change the music
  • vehicles_change_music - determines if entering and exiting a vehicle will stop playing the current track and change the music
  • conversations_stop_music - determines if starting a conversations stops music
  • stop_music_on_group_change - determines if changing the music group will stop the current track and change the music.

    • Level 1 plays random. Levels 2-4 play dungeon. Level 5 plays gargoyle. Entering a vehicle will play boat. Entering combat plays combat.

      file, title, group

      brit.m, Rule Britannia, random
      forest.m, Wanderer (Forest), random
      stones.m, Stones, random
      ultima.m, Ultima VI Theme, random

      engage.m, Engagement and Melee - combat

      hornpipe.m, Captain Johne's Hornpipe, boat

      gargoyle.m, Audchar Gargl Zenmur, gargoyle

      dungeon.m, Dungeon, dungeon

The "ultima6", "martian" and "savage" blocks

These three blocks have the same options, but at present the development of Martian Dreams and Savage Empire support is far behind that of Ultima 6, so some settings will not work or not be necessary.

The following settings define the paths to data that can be used by Nuvie for the specific game:

  • gamedir - the path to the specific game directory - required to run the specific game
  • sounddir - the path to sound for the specific game.
  • savedir - the path to Nuvie saves for the specific game
  • converse_bg_color
    • Description: Changes the background color when the conversation gump is showing. The colors available are shown below.
    • Possible values: any integer from 0 to 255 (default=218 for U6, 216 for SE, 136 for MD) 255 is no background in new style or in original+ styles when not forced to have a solid background (see converse_solid_bg).
Ultima 6 Savage Empire Martian Dreams
  • game_specific_keys
    • Description: The file that contains a list of game specific keybindings. This is loaded after the keys and before the patch_keys
    • Possible values: the path to the file and the file name. default=(default) The default will load u6keys.txt, or mdkeys.txt from the data directory.
  • patch_keys
    • Description: The file that contains a patch list of keybindings. This can partially or completely patch the keys with this file setting.
    • Possible values: the path to the file and the file name. An example is ./patchkeys.txt
  • custom_actor_tiles
    • Description: Determines if custom actor tiles (sprites) will be used for actors. Default will use them in new style but not any other style.
    • Possible values: default (default), yes, no
  • cb_text_color
    • Description: This is only used in Ultima 6 when using both original+ styles and new style games. This value is the index color that will be used to display the text on the original style command bar.
    • Possible values: 0 - 255 (default = 115)
  • converse_width
    • Description: This is not available in original style. This sets the width of the converse gump. default tries to pick a good looking size based on the game width.
    • Possible values: default or min_converse_width through game_width. min_converse_width is 286 in U6, 298 in MD, and 301 in SE. (default = default)
  • converse_height
    • Description: This is not available in original style. This sets the height of the converse gump. default tries to pick a good looking size based on the game height.
    • Possible values: default or min_converse_height through game_height. min_converse_height is 152 in U6, 185 in SE, and 181 in MD. (default = default)
  • show_orig_style_cb
    • Description: This is not available in original style. This determines whether the command bar is shown or not. default will show the command bar in both original plus styles but not in new style. The period "." key will toggle between shown and hidden. Then it will save the preference.
    • Possible values: default(default), yes, no
  • cb_position
    • Description: This is not available in original style. This sets the position of the orig_style_cb. Default will use left in new style and right for original+ styles. When using original+ styles, if game_height is less than 229 (234 in MD and 222 in SE.), left is used.
    • Possible values: default(default), left, right

The following settings are preferences. They take boolean settings (yes or no).

  • skip_intro - determines whether the introductory sequence and menu is shown or skipped. The Avatar will have bad stats if you skip character creation.
  • show_eggs - determines whether eggs are shown or hidden. Eggs (or triggers) are hidden objects that spawn monsters and reagents.
  • roof_mode - determines whether roofs are show. Roofs are removed when you are inside, near the north or west side, or you are next to a window or open doorway of a building that has a roof. Only some of the buildings in Ultima 6 have roofs. MD and SE don't have any yet.
  • show_stealing - determines whether PRIVATE PROPERTY will be displayed when you use the look command on items that will trigger stealing if you take them. This is only valid in Ultima 6.
  • use_new_dolls - (non-new style only) determines whether the new actor dolls are used or not.
  • map_tile_lighting - Yes means map tile data is used to provide extra lighting like lava. It wasn't used in the original engine. Yes is default for U6 and SE. No is default in MD because the canals are lit (it looks nice though).
  • converse_solid_bg - Yes means the conversation gump uses a solid background. No means the the background will be a pattern of dots. Original style must have a solid background. For original+ styles to have a non-solid background, their game_width minus border_width must be greater than or equal to converse_width. border_width is 158 in U6, 144 in MD, and 142 in SE.
  • free_balloon_movement - (U6 only) allows you to move the balloon in whatever direction you want as long as someone in the party has a magic fan.

The music option is by default set to native. At present it has no other known setting.

Note that as of September 2004 there is a new option. The townsdir option can be added to the <ultima6> block to support FM-Towns audio. It must be set to the path to your FM-Towns directory, and obviously a copy of Ultima 6 for FM-Towns is required.

The following settings are in the newscroll subsection and only apply when using the new style.

  • width
    • Description: Changes the width of the popup text. Pixel size is width * 7 + 8.
    • Possible values: any integer from 0 to 255 (default=18)
  • height
    • Description: Changes the maximum height of the popup text. Pixel size is height * 10 + 8.
    • Possible values: any integer from 0 to 255 (default=19)
  • solid_bg
    • Description: Yes means the popup text uses a solid background. No means it will be a pattern of dots.
    • Possible values: yes, no (default)
  • bg_color
    • Description: Changes the background color of the popup text. The colors available are shown above.
    • Possible values: any integer from 0 to 255 (default=218 for U6, 216 for SE, 136 for MD) 255 is no background.
  • border_color
    • Description: Changes the border color of the popup text. The colors available are shown above.
    • Possible values: any integer from 0 to 255 (default=220 for U6, 219 for SE, 133 for MD) 255 is no border.

Cheats

  • min_brightness
    • Description: allows you to control how dark the screen gets. 0 is the darkest and 255 is full brightness. Original lighting only increases with multiples of 20 through up til and including 120 (not counting 255). With original lighting and higher game sizes, any less than full brightness will completely black out a decent amount of the screen.
    • Possible values: any integer from 0 to 255. 0 (default)

The following take boolean (yes or no) settings.

  • enabled - must be enabled to use cheats
  • enable_hackmove - toggles hackmover. This allows moving of most objects that you cannot move by normal means.
  • party_all_the_time - if this is on, anyone you ask to join you will join. This also includes the ability to have more party members than the original party limit allows.

Keyboard Commands

Some other commands have been changed for the sake of having more comfortable commands (such as the one for saving, since the saving and loading mechanisms have been integrated into one). Here is a list of commands you can use.

  • ; - This will use the multi-use function that brings up a target cursor. When you select a target, the game will act as if you double clicked on the target.
  • . - toggle_original_plus_command_bar
  • , - New command bar (must be enabled through the cfg or menu if not using new style.
  • ` - Changes combat strategy if inventory is showing
  • / - Show party roster screen
  • ESC - Pass, Closes menus, and cancels actions
  • SPACE - Pass
  • A - Attack
  • CTRL-A - Toggle audio
  • B - Toggle combat mode
  • CTRL-C - Toggle cheats enabled
  • D - Drop
  • CTRL-D - Decrease debug output level by 1, min 0
  • E - Toggle egg display (cheat) (only works in U6 at the moment)
  • ALT-E - Toggle ethereal mode (walk through walls (cheat)
  • ALT-CTRL-E - Toggle actor spawning (cheat)
  • CTRL-F toggle_fps_display
  • G - Get
  • ALT-CTRL-G - Toggle god mode (cheat)
  • ALT-H Toggle hack mover (cheat)
  • ALT-CTRL-H - Heal party (cheat)
  • I - Avatar's doll gump, pressing it again cycles through the party members (new style only)
  • ALT-I - toggle no darkness
  • CTRL-I - Increase debug output level by 1, max 7, higher gives more detail
  • L - Look
  • CTRL-L or CTRL-R - Load the newest saved game
  • M - Move
  • CTRL-M - Toggle music
  • ALT-CTRL-P - Toggle pickpocket mode (cheat)
  • Q and CTRL-Q - Quit
  • ALT-Q - Quit (no dialog)
  • S - Save/Load menu
  • CTRL-S toggle sfx
  • T - Talk
  • CTRL-T - Teleport to the mouse cursor (cheat)
  • U - Use
  • X - Toggle X-ray mode (cheat)
  • ALT-X - Quit
  • ALT-A - select attack on the command bar
  • ALT-B - select toggle combat on the command bar
  • ALT-D - select drop on the command bar
  • ALT-G - select get on the command bar
  • ALT-L - select look on the command bar
  • ALT-M - select move on the command bar
  • ALT-T - select talk on the command bar
  • ALT-U - select use on the command bar
  • Enter (RETURN) and KP_Enter- Confirm actions such as attack and look
  • ALT-Enter (RETURN) - Toggle fullscreen
  • 0 - Party mode
  • 1 through 9 - Solo mode with the respective party member slot number
  • F1 through F9 - Show inventory of the respective party member slot number
  • Alt-F1 through Alt-F9 - Show doll gump of the respective party member slot number (fullscreen map mode only)
  • F10 - Show party roster screen
  • CTRL-1 through CTRL-9 - Show stats of the respective party member slot number
  • - and = - Scroll between party member inventory or stat pages.
  • KP - and KP + - Scroll between party member inventory or stat pages.
  • Home and End - Scroll to front and end of party members in inventory or stat page
  • Arrow keys and KP numbers - Move the selected character
  • Tab - Switch cursor to and from the inventory. Move the cursor with arrow keys. Enter will ready items, open containers, and use the buttons.
  • Pageup - Scrolls up through the message scroll
  • Pagedown - Scrolls down through the message scroll

Ultima 6 specific

  • C - Cast spell
  • ALT-C - select cast on the command bar
  • O - Use orb of moons
  • P - Use lock pick
  • R - Rest
  • ALT-R - select rest on the command bar
  • Alt-W - toggle unlimited casting (cheat)

Savage Empire specific

  • R - Rest
  • ALT-R - select rest on the command bar
  • Alt-W - toggle unlimited casting (cheat) (no current used in SE)

Martian Dream specific

  • P - Use pry bar
  • R - use tent
  • W - use watch

Custom key bindings

You can configure keybindings using patchkeys.txt and folling the examples in data/defaultkeys.txt and data/u6keys.txt. It is easy to do and the looking at the already done keys is pretty self explanatory. The keybindings are not case sensitive. You can separate entries with a space or tab.

The first entry is the key to be used. You can combine keys that need to be pressed by putting a '-' between them like alt-k. The second entry is the what command the key does. There is sometimes a third entry that tells the command what it should do. Most of those are explained in the defaultkeys.txt comments. '#' can be used to leave comments behide it, and it will leave that comment in the key help menu instead of the default comment. It needs to go after all other entries on the line.

Keybindings that pretty much always work unless you need to type and they are set alpha numeric keys are toggle_audio, toggle_music_key, toggle_sfx_key, toggle_fps, toggle_fullscreen, decrease_debug, increase_debug, quit, and quit_no_dialog (always_available_actions). The game needs a cancel_action and a do_action key that is not alphanumeric or backspace for use in instances where you need to type. If you don't have them, then you should be able to use escape and enter respectively even if they are bound to another action except always_available_actions. When you need to type alphanumeric characters all keybindings that are alphanumeric will be ignored and so will (usually) backspace.

Always_available_actions, Walk_east, walk_west, walk_north, walk_south, cancel_action, and do_action work in cutscenes and intro menu. The toggle_fps and quit keys are currently not working before the game map loads so they don't work in the intro and intro menu. They also don't work during the ending if viewed using the cheat.

  • use_item - The third entry is the object number of the item you want to use with the key. It picks the first item it finds with that number in the parties inventory. Here are some links to text files that list objects numbers in Ultima6, Savage Empire, and Martian Dreams. You can also see object numbers and other details about Ultima 6 with U6Edit.
  • quick_save and quick_load - The third entry is the quick save slot to use. Valid slots are 0 through 255. Slot 0 is used in the new command bar for its quick save and quick load button. The saves will show up in the save menu.

Save menu

  • ESC - Exits save menu
  • Up, KP8, and Mouse Wheel Up - Move up the list by 1
  • Down, KP2, and Mouse Wheel Down - Move down the list by 1
  • Page up, Left, and KP4 - Move up the list by a page
  • Page Down, right, and KP6 - Move down the list by a page
  • Tab - Cycle through the menu so you can select buttons and save slots. Up and down will put the keyboard cursor over save slots when in that area. Left and right will put the keyboard cursor over buttons when in that area. Up, down, left, and right can type text after selecting a save slot with the enter key.
  • Enter (RETURN) and KP_Enter - Select buttons or save slots after tabbing
  • Home - Move the top of the list
  • End - Move to the bottom of the list

Mapedit mode

Mapedit mode is activated by the Alt-600 code when using new style. It is used to edit roofs.

  • ESC - Exits the mapeditor without saving
  • Page up - Moves a page forward through the roof tiles
  • Page Down - Moves a page backward through the roof tiles
  • Home - Moves to the beginning of the roof tiles
  • End - Moves to the end of the roof tiles
  • Enter, Return, and Space - Adds currently selected roof tile to the map at the cursor location
  • Arrow keys and KP numbers - Move around the map
  • Alt plus Arrow keys or KP numbers - Change the selected roof tile
  • S - Saves the roof tiles (no prompt)
  • G - toggles showing the map grid

Alt Codes

You enter alt codes by holding down the alt key and typing a sequence of numbers shown below. They are mostly cheats.

  • 213 - Shows an overhead map. Displays info in the dialog box. First two numbers are your karma. The next 4 are the time. The last 7 ones are the coordinates
    • Example: 67135307C0334 means 67 karma, 13:53 (1:53 PM), 07C x, 033 y, 4 z
  • 214 - Teleport party to x, y, z hex coordinates like the ones given in the example above.
  • 215 - Advance the clock an hour.
  • 216 - Shows the time
  • 222 - Toggle ethereal mode (walk through walls)
  • 300 - Show npc portrait. Values are 1 through 191.
  • 314 - Teleport party to list of places
  • 400 - Talk to npc number, Values are 2 through 202.
  • 414 - Teleport party to npc number, Values are 2 through 202. Other values teleport to the dead npc area.
  • 456 - Polymorph any npc to object number. Object values are 0 through 431. Npc values are 1 through 187
  • 500 - Control npc number. Values are 1 through 187 for normal npcs. Most npcs from 188 to 255 are temporary npcs or statues.
  • 501 - Resurrects npc number. Values are 2 through 187 for normal npcs. Most npcs from 188 to 255 are temporary npcs or statues.
  • 600 - Edit roofs. You must be using new style view and have show_roofs enabled.

Command line options

Nuvie offers some "hidden" command line options:

  • u6
  • ultima6
  • md
  • martian
  • se
  • savage
      This starts the corresponding game and must be the first argument.
  • --reset-video
      resets Nuvie's video settings to the default values. Very helpful when Nuvie isn't playable anymore because of wrong settings.
      This can be the first or second argument. If it is the first argument, it will load the game set in the config.
  • --end
      This must be the second argument after naming the gametype.
      The virtue quote is displayed if there aren't enough extra arguments
      The arguments are 5 years months(0-29 only) days
      example: nuvie u6 --end 5 1 2 3
        shows the ending and that you completed the game in 1 year, 2 months, and 3 days. The year, month, and day parameters are currently rewuired but their value is ignored.

Changes from the original

The following are just a few of the things that have changed from the original game:

  1. We have joystick support. A keyboard is no longer required. You can use keys, joystick axis, joystick hats, and joystick buttons mapped to walk_north, walk_south, walk_east, and walk_west to cycle through letters, delete them, and change position when you need to type.
  2. If you use a locked door and possess the correct key, the door will be unlocked automatically
  3. Alt cheats can be typed using the normal keyboard numbers, and not exclusively with the keypad
  4. Drag and drop support for items has been implemented.
  5. A double-click will perform default commands such as talk to people, use items, etc.
  6. A left-click will look at objects.
  7. The mouse wheel can be used to scroll through inventory, actor selection, spell selection, and message scroll text.
  8. When a character speaks, you can click on a word he says to write it to the message area
  9. You can press page_up and page_down to scroll up or down respectively in a conversation
  10. We stopped the ability to move, use, and get objects through walls. enable_hackmove will allow you to bypass this.
  11. Sherry can now be resurrected by healers.

Not yet implemented

Nuvie is still being developed and many things have not yet been implemented. You should understand this before reporting that a particular feature doesn't work. Savage Empire and Martian Dreams have too many things missing to list. Some things that have not yet been implemented or don't fully work are:

  • Magic
    • Locate - dungeons give the wrong location
  • Other
    • background sfx don't play
    • Musical instruments don't play music
    • Npcs and monsters that aren't in the party don't avoid damaging terrain.
    • New style isn't complete, but it is fully usable. Keyboard controls of gumps needs some work but it can still be played with just a keyboard.
    • Roof mode doesn't have most roofs finished. It has some world wrapping issues so roofs south of Trinsic won't show. (There aren't currently any roofs there anyway.)
    • Fumarole (looks like mini volcano) doesn't earthquake, fire steam, and nearby actors. Volcanos don't earthquake.