# Configuration file for MegaZeux
# June 7th, 2008 --ajs.

# Comments begin with #. Whitespace is ignored. Empty lines are
# ignored as well.
# Options are set in the following format:
# option = value
# If value is not given, then it is assumed to be 1.
# You can include spaces in values by escaping them with \s.
# (see the default macros for examples)
# For directories, use forward slashes (/) instead of back-slashes,
# as they work more reliably.
# Note that even if the option is given to change the values
# in MZX, this text file will NOT be modified, and hence the
# values will revert to what they are here when you restart MZX.

# Default options are given (and commented out) with
# an explanation. If an option is not chosen at all
# this default will automatically be used.

### Video options ###

# Rendering engine to use to display MegaZeux. The fastest renderer
# is "software", due to the way MegaZeux is drawn internally. However,
# due to MegaZeux's strange default resolution (640x350), many video
# cards have difficulty with supporting it correctly in fullscreen mode.
#
# Using another renderer that supports scaling will be slower, but not
# necessarily by much, depending on your video hardware and CPU. Very
# often, MZX uses so little CPU during software rendering that scaling
# is an inexpensive feature.
#
# The software renderer is the default renderer and has very good
# windowed and non-windowed performance. In addition, this renderer
# correctly supports 8 bit colour modes, should you be using antiquated
# hardware. It also requires no overlay or 3D hardware support. If you're
# on a slow computer or a handheld portable, you definitely want to use
# this. To use it, either do nothing, or uncomment the line below.

# video_output = software

# The YUV overlay renderer is a good substitute if you want scaling
# at low cost. The quality of the scaling is poor, and can sometimes be
# very poor depending on your video hardware. On video hardware that
# interpolates or filters the YUV overlay, such as NVIDIA or ATI hardware,
# this method can be fairly high quality (comparable to GL with linear
# filtering), and yields good performance, with low OS driver requirements.
# On Intel Integrated video, and other similar solutions, the YUV overlay
# will use nearest neighbour and the quality will be atrocious.
#
# Uncomment either of the lines below (but not both) if you want to try it.
# The "overlay2" mode is cheaper, but will be less accurate due to the use
# of chroma subsampling instead of a full YUV encode.

# video_output = overlay1
# video_output = overlay2

# An OpenGL renderer is a good choice if you want a highly configurable,
# cheap (in terms of CPU cycles) renderer and have a fairly good video
# card. This method provides the highest quality scaler and should work
# on all platforms with a compliant OpenGL 1.1 implementation.
#
# MegaZeux provides two OpenGL scalers, one by Exophase which renders the
# whole game to a GL texture and then uses OpenGL to stretch it. This render
# is called "opengl1", and is high quality but quite slow.
#
# The second OpenGL scaler was written by LogiCow, and it more extensively
# remaps all the character sets to textures and uses more GL features to
# do the tiling entirely in OpenGL. This yields a performance increase, at
# the cost of compatibility. It's been tested and works well on NVIDIA and
# ATI video cards, but your mileage might vary. This renderer is called
# "opengl2".
#
# Uncomment ONE of the lines below:

# video_output = opengl1
# video_output = opengl2

# OpenGL will, by default, linearly interpolate pixels as it upscales
# to your requested resolution. This creates an output with more "blur",
# which some people dislike. If you are using a sufficiently high target
# resolution, preferably an integer multiple of 640x350, you may find
# "nearest" more pleasing, which will have no "blur". The default 
# setting is "linear".

# gl_filter_method = nearest

# Some OpenGL driver settings may default vertical sync on, which looks
# visually better (especially on CRTs) but can cause "speed 1" to run
# noticably slower than with other renderers. For consistency with other
# renderers, and for correctness, MegaZeux will attempt to disable vsync
# when gl_vsync is the default value of 0. Conversely, a value >= 1 forces
# MegaZeux to override the driver settings and enable vsync, which
# decreases tearing. A value < 0 can be used to tell MegaZeux to obey the
# driver default, which is unlikely to be useful.

# gl_vsync = 1

# Resolution MZX uses for fullscreen. With the software renderer, this
# will center MZX on the screen, and will not scale it.
# However, with the hardware renderers above, MZX will attempt to scale
# itself to match this resolution. Best results are obtained with
# multiples of 640x350, but any supported screen mode should work.
# Give in x,y format. Use this if the defaults are giving you problems,
# especially in the software renderer.
# This resolution may not actually work; if it doesn't, you will
# get the nearest that does.

fullscreen_resolution = 640,480

# The resolution MZX uses in a window. If you renderer supports
# it, MZX will be scaled to fit this specification. Otherwise
# the setting is ignored.

window_resolution = 640,350

# Use this to toggle whether MZX can be scaled while in window
# mode, if your renderer supports it. If you use a renderer which
# supports scaling, but don't want to accidentally scale it (which
# may distort the image), you can switch this off here.

enable_resizing = 1

# MZX is limited internally to 8bit colour, but it can upmix its
# rendering to 32bit if your video card has difficulty with 8bit
# resolutions. Using 32bit colour is slower, but not by much.
# NOTE: This option may be ignored by one or more of the above
# renderers, but it is guaranteed to apply to "software". Valid
# settings are usually '8' or '32'.

force_bpp = 32

# Whether MZX should start up in fullscreen or not.
# Press ctrl-alt-enter to toggle fullscreen as MZX runs.

# fullscreen = 1

### Audio options ###

# Sampling rate to output audio at. Higher values will sound
# better but use more resources and may not be supported by
# your audio card/drivers. Typical values include 22050, 44100,
# and 48000. If your card supports it you might get away with
# 96000, or even 192000.

#audio_sample_rate = 44100

# Audio buffer size. Setting this to lower can improve latency,
# so audio will be heard sooner after it is set to be changed.
# It is also possible to change PC speaker effects more rapidly
# with lower values. Lower buffer sizes need more CPU power to
# process. 2048 is adequete for PC speaker playback every
# command at speed 4.

#audio_buffer = 4096

# Allow music to be sampled at higher precision. Increases CPU
# usage but increases audio quality as well.

#enable_oversampling = 0

# Set master resample mode. This affects how OGGs and
# frequency shifted modules sound. Choices are:
# none (fastest, poor quality)
# linear (fast, good quality)
# cubic (slow, great quality)

resample_mode = linear

# Set resample mode for modplug. This affects how modules
# and WAVs sound. Choices are:
# none (fastest, poor quality)
# linear (fast, good quality)
# cubic (slow, great quality)
# fir (very slow, excellent quality)

modplug_resample_mode = cubic

# Whether music/samples should be played or not.
# Does not include PC speaker effects.

#music_on = 1

# Whether PC speaker effects should be played or not.

#pc_speaker_on = 1

# Volume music plays at
#music_volume = 8

# Volume samples play at
#sample_volume = 8

# Volume PC speaker SFX play at
#pc_speaker_volume = 8


### Game options ###

# Name of world file that should be loaded when MZX starts.

#startup_file = caverns.mzx

# Default save file name given when you first try to save.

#save_file = saved.sav

# Speed MZX should start at (1 through 9)

#mzx_speed = 4

# Start in the editor by default

#startup_editor = 1


### Board editor options ###

# Whether or not the spacebar can be used to toggle between
# your active buffer and the meta character "SPACE". If you
# set this, it will behave like older MegaZeux's, but it will
# allow you to overwrite robots, for instance.
#
# If the setting is disabled (the default), replacing params
# will your new buffer will not require a toggle, and robots
# can only be deleted with the Delete key.

#editor_space_toggles = 1

# Set to 1 if you want the board editor to not show the hotkey
# help by default.

#board_editor_hide_help = 1


### Robot editor options ###

# Enable or disable color coding in the editor.
# If color coding is off, ccode_string is used for the entire
# line.
#color_coding_on = 0

# Color codes for various types.
# For colors, use 255 to show a color box.
#ccode_colors = 255
#ccode_commands = 15
#ccode_conditions = 15
#ccode_current_line = 11
#ccode_directions = 3
#ccode_equalities = 0
#ccode_extras = 7
#ccode_immediates = 10
#ccode_items = 11
#ccode_params = 2
#ccode_strings = 14
#ccode_things = 11

# Whether or not "extra words" should be displayed.
# For instance, if turned on, a line like "wait 1" will
# become "wait for 1."

#disassemble_extras = 0

# The base numbers should be displayed as. Valid options
# are 10 and 16 (decimal and hexidecimal). Hex numbers are
# prefixed with a dollar sign ($).

#disassemble_base = 16

# Changing this will allow invalid comments to automatically
# be marked to "delete" or "comment" instead of "ignore".
# Don't change this unless you know what you're doing.

#default_invalid_status = ignore

# Single line macros
# These are the traditional MZX macros; they may only
# occupy one line in their definition in this file. They
# correspond to parameter-less macros: when you press
# F6 through F10 the following strings are printed to
# the editor, verbatim. For instance if you set macro_1 to
# * "hello", * "hello" will be inserted every time you
# press F6 in the robot editor.
# The following are the default singe-line macros.

#macro_1 = char\s
#macro_2 = color\s
#macro_3 = goto\s
#macro_4 = send\s
#macro_5 = :\splayershot^

# Extended macros:
# See macro.txt.

# The following is an example extended macro.
# It sets up a sprite. If you find it useful, remove the #'s.

#macro_1 = Sprite\sSetup
# (number255 spr_num)
# (number255 w, h, rx, ry)
# (number255 cx, cy, cw, ch)
# (number255 x, y)
# set spr!spr_num!_width !w!
# set spr!spr_num!_height !h!
# set spr!spr_num!_refx !rx!
# set spr!spr_num!_refy !ry!
# set spr!spr_num!_cwidth !cw!
# set spr!spr_num!_cheight !ch!
# set spr!spr_num!_cx !cx!
# set spr!spr_num!_cy !cy!
# put !x1! sprite p!#spr_num! !x! !y!

# Whether or not the palette should be reverted to default
# when the robot editor is load. If set, SMZX mode 0 will
# also be enforced.

#robot_editor_default_palette = 0

# Set to 1 if you want the robot editor to not show the hotkey
# help and horizontal border by default.

#robot_editor_hide_help = 0

# Backup options

# Backups are save files made in the editor. They will only be made
# while in the main editor, not while in a sub-editor or a dialogue
# box of sorts. Note that this can cause slight pauses while editing,
# as the game saves.
# If you have multiple backups you should check the modified date in
# a console or file properties to determine which was most recently
# modified. The number will not indicate most recently saved.

# How many backups to be made. Set to zero to disable backups.

#backup_count = 3

# How often (in seconds) backups should be made

#backup_interval = 60

# The name of the backup file. If you choose "backup" with 3 backups
# the backups will be named backup1.mzx, backup2.mzx, and backup3.mzx.

#backup_name = backup

# The extension of backup files (keep this .mzx if you want to be able
# to easily load them)

#backup_ext = .mzx


# Joystick options

# It is possible to emulate key presses using a joystick. If this file
# is config.txt these options will apply as a default to all games -
# you can put them in game.cnf to apply specifically to game.mzx.

# A joystick is first specified as joyN where N is the number from
# 1 onwards identifying the joystick in your system. You may have
# to experiment to find which joystick is which number, if you have
# multiple ones, otherwise just use 1. Up to 16 joysticks are
# recognized.
# You can currently map two things, axes and buttons.
# Axes/buttons are mapped to keys given by number. You can find out
# a key's number by printing key_pressed in a loop (NOT key_code).
# Axis mapping looks as follows:

#joyXaxisY = A, B

# Where X is the number of the joystick, Y is the number of the axis
# (1 is typically left/right, 2 is typically up/down), A is the key
# for one extreme (such as left) and B is the key for the other
# (such as right).

# Button mapping looks as follows:

#joyXbuttonY = A

# Where X is the number of the joystick, Y is the number of the button
# (you may have to experiment to find out which button is which number),
# and A is the key whose press is emulated when this button is pressed.


# Misc Options

# Set to 1 if you want MZX to pause when key focus is lost. Useful for
# when another app (such as someone IM'ing you) steals the screen. This
# might cause MZX to lock up sometimes on some machines - if you have
# problems with it don't enable it.

#pause_on_unfocus = 0

# Set to 0 if you want input boxes and strings in the robot editor
# to use the game set for characters 32-127, as opposed to the protected
# GUI set.

#mask_midchars = 1

include pad.config
include ~/.megazeux
