DGen-SDL:

- The home directory is now taken from system.env;
- The original documentation was restored and converted into html;
- File path hints now work in command mode.

git-svn-id: svn://kolibrios.org@9970 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
turbocat 2024-01-20 18:10:56 +00:00
parent e1bea992de
commit ef78b78d1c
9 changed files with 937 additions and 37 deletions

View File

@ -777,8 +777,8 @@ if tup.getconfig('NO_NASM') ~= 'full' then
{"kolibrios/games/wolf3d/", "../contrib/games/wolf3d/wolf3d"}, {"kolibrios/games/wolf3d/", "../contrib/games/wolf3d/wolf3d"},
{"kolibrios/games/wolf3d/", "common/games/wolf3d/*"}, {"kolibrios/games/wolf3d/", "common/games/wolf3d/*"},
{"kolibrios/emul/dgen/dgen", PROGS .. "/emulator/dgen-sdl-1.33/dgen"}, {"kolibrios/emul/dgen/dgen", PROGS .. "/emulator/dgen-sdl-1.33/dgen"},
{"kolibrios/emul/dgen/dgen.man", PROGS .. "/emulator/dgen-sdl-1.33/dgen.man"}, {"kolibrios/emul/dgen/dgen.html", PROGS .. "/emulator/dgen-sdl-1.33/dgen.html"},
{"kolibrios/emul/dgen/dgenrc.man", PROGS .. "/emulator/dgen-sdl-1.33/dgenrc.man"}, {"kolibrios/emul/dgen/dgenrc.html", PROGS .. "/emulator/dgen-sdl-1.33/dgenrc.html"},
}) })
end end
-- For russian build, add russian-only programs. -- For russian build, add russian-only programs.

View File

@ -100,7 +100,7 @@ To specify more than one code, separate them with commas (do
.Ar not .Ar not
use spaces). use spaces).
.It Fl r Ar RCFILE .It Fl r Ar RCFILE
Parse another rc file after /tmp0/1/.dgen/dgenrc. Values in the specified file Parse another rc file after $HOME/.dgen/dgenrc. Values in the specified file
override those in the preceding files. override those in the preceding files.
.It Fl X Ar XFACT .It Fl X Ar XFACT
Scale the window XFACT times in the X direction. XFACT must be a positive Scale the window XFACT times in the X direction. XFACT must be a positive
@ -177,22 +177,27 @@ Display current value for variable
.Ar name . .Ar name .
.El .El
.Sh FILES .Sh FILES
.Bl -tag -width /tmp0/1/.dgen/dgen/saves/* -compact .Bl -tag -width $HOME/.dgen/dgen/saves/* -compact
.It Pa /tmp0/1/.dgen/dgenrc .It Pa $HOME/.dgen/dgenrc
Contains user settings for the emulator. Contains user settings for the emulator.
.It Pa /tmp0/1/.dgen/dgenrc.auto .It Pa $HOME/.dgen/dgenrc.auto
Generated file containing saved user settings. Generated file containing saved user settings.
.It Pa /tmp0/1/.dgen/saves/* .It Pa $HOME/.dgen/saves/*
Save states generated by the emulator. Save states generated by the emulator.
.It Pa /tmp0/1/.dgen/ram/* .It Pa $HOME/.dgen/ram/*
Battery-backup RAM images, generated by the emulator for ROMs with save RAM. Battery-backup RAM images, generated by the emulator for ROMs with save RAM.
.It Pa /tmp0/1/.dgen/screenshots/* .It Pa $HOME/.dgen/screenshots/*
Screenshots are generated there. Screenshots are generated there.
.It Pa /tmp0/1/.dgen/roms/* .It Pa $HOME/.dgen/roms/*
ROMs default search path. ROMs default search path.
.It Pa /tmp0/1/.dgen/demos/* .It Pa $HOME/.dgen/demos/*
Demos default search path. Demos default search path.
.El .El
.Sh SEE ALSO
.Xr gzip 1 ,
.Xr bzip2 1 ,
.Xr zip 1 ,
.Xr dgenrc 5
.Sh AUTHORS .Sh AUTHORS
This manual page was written by This manual page was written by
.An Joe Groff Aq joe@pknet.com . .An Joe Groff Aq joe@pknet.com .

View File

@ -0,0 +1,265 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
table.head, table.foot { width: 100%; }
td.head-rtitle, td.foot-os { text-align: right; }
td.head-vol { text-align: center; }
.Nd, .Bf, .Op { display: inline; }
.Pa, .Ad { font-style: italic; }
.Ms { font-weight: bold; }
.Bl-diag > dt { font-weight: bold; }
code.Nm, .Fl, .Cm, .Ic, code.In, .Fd, .Fn, .Cd { font-weight: bold;
font-family: inherit; }
</style>
<title>DGEN(1)</title>
</head>
<body>
<table class="head">
<tr>
<td class="head-ltitle">DGEN(1)</td>
<td class="head-vol">General Commands Manual</td>
<td class="head-rtitle">DGEN(1)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">dgen</code> &#x2014; <span class="Nd">Sega
Genesis/Mega Drive emulator</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<table class="Nm">
<tr>
<td><code class="Nm">dgen</code></td>
<td>[<code class="Fl">-Pfhmv</code>] [<code class="Fl">-R</code>
<var class="Ar">(J|U|E)</var>] [<code class="Fl">-H</code>
<var class="Ar">HZ</var>] [<code class="Fl">-D</code>
<var class="Ar">DEMONAME</var>] [<code class="Fl">-d</code>
<var class="Ar">DEMONAME</var>] [<code class="Fl">-n</code>
<var class="Ar">USEC</var>] [<code class="Fl">-p</code>
<var class="Ar">CODE,CODE...</var>] [<code class="Fl">-r</code>
<var class="Ar">RCFILE</var>] [<code class="Fl">-X</code>
<var class="Ar">XFACT</var>] [<code class="Fl">-Y</code>
<var class="Ar">YFACT</var>] [<code class="Fl">-S</code>
<var class="Ar">FACT</var>] [<code class="Fl">-g</code>
<var class="Ar">(0|1)</var>] [<code class="Fl">-G</code>
<var class="Ar">XxY</var>] [<code class="Fl">-s</code>
<var class="Ar">SLOT</var>] <var class="Ar">[romname [...]]</var></td>
</tr>
</table>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The ROM image in the file <var class="Ar">romname</var> is
executed, as emulated on a Sega Genesis or Mega Drive running in 60Hz NTSC
mode (unless the <code class="Fl">-P</code> option is specified, in which
case 50Hz PAL mode is used). <var class="Ar">romname</var> should be in raw
binary or SMD format, and may be compressed with <a class="Xr">gzip(1)</a>,
<a class="Xr">zip(1)</a>, or <a class="Xr">bzip2(1)</a>.</p>
<p class="Pp">When <var class="Ar">romname</var> isn't specified, DGen starts
without a ROM. It can be loaded later from the prompt. When more than a
single <var class="Ar">romname</var> is specified, they are executed
sequentially.</p>
<p class="Pp">The options are as follows:</p>
<dl class="Bl-tag">
<dt id="H"><a class="permalink" href="#H"><code class="Fl">-H</code></a>
<var class="Ar">HZ</var></dt>
<dd>Use a custom frame rate, can be used to accelerate or slow down
emulation.</dd>
<dt id="P"><a class="permalink" href="#P"><code class="Fl">-P</code></a></dt>
<dd>Emulate 50Hz PAL mode (as used in European models of the Mega Drive).</dd>
<dt id="R"><a class="permalink" href="#R"><code class="Fl">-R</code></a>
<var class="Ar">(J|U|E)</var></dt>
<dd>Emulator region. Without this option, DGen uses the first region mentioned
in the ROM header. It should be combined with <code class="Fl">-P</code>
for PAL mode. See below.
<dl class="Bl-tag">
<dt>(none)</dt>
<dd>Autodetect (NTSC, 60Hz)</dd>
<dt id="P~2"><a class="permalink" href="#P~2"><code class="Fl">-P</code></a></dt>
<dd>Autodetect (PAL, 50Hz)</dd>
<dt id="R~2"><a class="permalink" href="#R~2"><code class="Fl">-R</code></a>
<var class="Ar">J</var></dt>
<dd>Japan (NTSC, 60Hz)</dd>
<dt id="R~3"><a class="permalink" href="#R~3"><code class="Fl">-R</code></a>
<var class="Ar">J</var> <code class="Fl">-P</code></dt>
<dd>Japan (PAL, 50Hz)</dd>
<dt id="R~4"><a class="permalink" href="#R~4"><code class="Fl">-R</code></a>
<var class="Ar">E</var></dt>
<dd>Europe (NTSC, 60Hz, music will certainly play too fast)</dd>
<dt id="R~5"><a class="permalink" href="#R~5"><code class="Fl">-R</code></a>
<var class="Ar">E</var> <code class="Fl">-P</code></dt>
<dd>Europe (PAL, 50Hz)</dd>
<dt id="R~6"><a class="permalink" href="#R~6"><code class="Fl">-R</code></a>
<var class="Ar">U</var></dt>
<dd>America (NTSC, 60Hz)</dd>
<dt id="R~7"><a class="permalink" href="#R~7"><code class="Fl">-R</code></a>
<var class="Ar">U</var> <code class="Fl">-P</code></dt>
<dd>Same as <code class="Fl">-R</code> <var class="Ar">E</var>
<code class="Fl">-P</code></dd>
</dl>
</dd>
<dt id="f"><a class="permalink" href="#f"><code class="Fl">-f</code></a></dt>
<dd>Run fullscreen, if possible.</dd>
<dt id="h"><a class="permalink" href="#h"><code class="Fl">-h</code></a></dt>
<dd>Show a brief synopsis of all options.</dd>
<dt id="m"><a class="permalink" href="#m"><code class="Fl">-m</code></a></dt>
<dd>MinGW only. This option prevents DGen from detaching from its control
console.</dd>
<dt id="v"><a class="permalink" href="#v"><code class="Fl">-v</code></a></dt>
<dd>Show the version number, and exit.</dd>
<dt id="D"><a class="permalink" href="#D"><code class="Fl">-D</code></a>
<var class="Ar">DEMONAME</var></dt>
<dd>Play back a demo recorded with the <code class="Fl">-d</code> option.</dd>
<dt id="d"><a class="permalink" href="#d"><code class="Fl">-d</code></a>
<var class="Ar">DEMONAME</var></dt>
<dd>Record a demo of the program running, which can be later replayed with the
<code class="Fl">-D</code> switch.</dd>
<dt id="n"><a class="permalink" href="#n"><code class="Fl">-n</code></a>
<var class="Ar">USEC</var></dt>
<dd>Sleep for a number of microseconds after every frame, to give time to
other processes.</dd>
<dt id="p"><a class="permalink" href="#p"><code class="Fl">-p</code></a>
<var class="Ar">CODE,CODE...</var></dt>
<dd>Modify the ROM image in memory, using Game Genie or Hex style codes. Game
Genie codes are of the form <var class="Ar">ABCD-EFGH</var> and Hex codes
are in the form <var class="Ar">123456:ABCD</var>. To specify more than
one code, separate them with commas (do <var class="Ar">not</var> use
spaces).</dd>
<dt id="r"><a class="permalink" href="#r"><code class="Fl">-r</code></a>
<var class="Ar">RCFILE</var></dt>
<dd>Parse another rc file after $HOME/.dgen/dgenrc. Values in the specified
file override those in the preceding files.</dd>
<dt id="X"><a class="permalink" href="#X"><code class="Fl">-X</code></a>
<var class="Ar">XFACT</var></dt>
<dd>Scale the window XFACT times in the X direction. XFACT must be a positive
integer.</dd>
<dt id="Y"><a class="permalink" href="#Y"><code class="Fl">-Y</code></a>
<var class="Ar">YFACT</var></dt>
<dd>Scale the window YFACT times in the Y direction. YFACT must be a positive
integer.</dd>
<dt id="S"><a class="permalink" href="#S"><code class="Fl">-S</code></a>
<var class="Ar">FACT</var></dt>
<dd>Scale the window FACT times in both directions. FACT must be a positive
integer.</dd>
<dt id="g"><a class="permalink" href="#g"><code class="Fl">-g</code></a>
<var class="Ar">(0|1)</var></dt>
<dd>Enable/disable OpenGL (if compiled-in).</dd>
<dt id="G"><a class="permalink" href="#G"><code class="Fl">-G</code></a>
<var class="Ar">XxY</var></dt>
<dd>Desired window size (e.g. 640x480, 800x600, etc.)</dd>
<dt id="s"><a class="permalink" href="#s"><code class="Fl">-s</code></a>
<var class="Ar">SLOT</var></dt>
<dd>Load the saved state from the given slot at startup (0-9)</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="INTERACTIVE_PROMPT"><a class="permalink" href="#INTERACTIVE_PROMPT">INTERACTIVE
PROMPT</a></h1>
<p class="Pp">A minimalist interactive prompt inspired from
<a class="Xr">vi(1)</a> can be used to perform various operations described
below. It is triggered by pressing colon (:), the default key. Command-line
editing, history and completion are supported.</p>
<section class="Ss">
<h2 class="Ss" id="Commands"><a class="permalink" href="#Commands">Commands</a></h2>
<dl class="Bl-tag">
<dt>{quit, exit, q}</dt>
<dd>Quit, or load the next <var class="Ar">romname</var> from command-line, if
any.</dd>
<dt>{load, open, plug, o} <var class="Ar">filename</var></dt>
<dd>Load a given ROM <var class="Ar">filename</var>.</dd>
<dt>{unload, close, unplug}</dt>
<dd>Unload the current ROM.</dd>
<dt>config_load <var class="Ar">filename</var></dt>
<dd>Load configuration from file <var class="Ar">filename</var>.</dd>
<dt>config_save <var class="Ar">filename</var></dt>
<dd>Save current configuration to file <var class="Ar">filename</var>.</dd>
<dt>reset</dt>
<dd>Genesis reset.</dd>
<dt>{ctv_push, ctv_pop, ctv_none}</dt>
<dd>Manage the stack of Crap TV filters (if compiled-in).</dd>
<dt>calibrate <var class="Ar">number</var></dt>
<dd>Interactive calibration of the specified gamepad (1 or 2). If
<var class="Ar">number</var> isn't specified, default to 1.</dd>
<dt>unbind <var class="Ar">binding [...]</var></dt>
<dd>Remove specified bindings (variables prefixed with &quot;bind_&quot;). See
<a class="Xr">dgenrc(5)</a> for more information about them.</dd>
<dt>vgmdump start <var class="Ar">filename</var></dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>vgmdump stop</dt>
<dd>Manages VGM dumping/logging. If the second argument is
<var class="Ar">start</var> VGM dumping will be started at the path
specified by the third argument. If the second argument is
<var class="Ar">stop</var> VGM dumping will be stopped and the dump
finalized.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Variables"><a class="permalink" href="#Variables">Variables</a></h2>
<p class="Pp">All configuration variables from <a class="Xr">dgenrc(5)</a> can
be displayed and modified interactively, with immediate effect.</p>
<dl class="Bl-tag">
<dt>{int_name, bool_name, key_name, joy_name, ...} {value}</dt>
<dd>Affect <var class="Ar">value</var> to variable
<var class="Ar">name</var>.</dd>
<dt>{int_name, bool_name, key_name, joy_name, ...}</dt>
<dd>Display current value for variable <var class="Ar">name</var>.</dd>
</dl>
</section>
</section>
<section class="Sh">
<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
<dl class="Bl-tag Bl-compact">
<dt><span class="Pa">$HOME/.dgen/dgenrc</span></dt>
<dd>Contains user settings for the emulator.</dd>
<dt><span class="Pa">$HOME/.dgen/dgenrc.auto</span></dt>
<dd>Generated file containing saved user settings.</dd>
<dt><span class="Pa">$HOME/.dgen/saves/*</span></dt>
<dd>Save states generated by the emulator.</dd>
<dt><span class="Pa">$HOME/.dgen/ram/*</span></dt>
<dd>Battery-backup RAM images, generated by the emulator for ROMs with save
RAM.</dd>
<dt><span class="Pa">$HOME/.dgen/screenshots/*</span></dt>
<dd>Screenshots are generated there.</dd>
<dt><span class="Pa">$HOME/.dgen/roms/*</span></dt>
<dd>ROMs default search path.</dd>
<dt><span class="Pa">$HOME/.dgen/demos/*</span></dt>
<dd>Demos default search path.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr">gzip(1)</a>, <a class="Xr">bzip2(1)</a>,
<a class="Xr">zip(1)</a>, <a class="Xr">dgenrc(5)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp">This manual page was written by <span class="An">Joe Groff</span>
&#x27E8;joe@pknet.com&#x27E9;.
<br/>
<span class="An">Updated by zamaz</span>
&#x27E8;zamaz@users.sourceforge.net&#x27E9;.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
<p class="Pp">There are known emulation bugs, see BUGS in DGen source
package.</p>
<p class="Pp">
<br/>
<span class="An">Report bugs to</span>
&#x27E8;http://sourceforge.net/projects/dgen/&#x27E9;.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">July 26, 2014</td>
<td class="foot-os">Linux 6.6.9-arch1-1</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,25 @@
.Dd October 28, 2011
.Dt DGEN 1
.Sh NAME
.Nm dgen_tobin
.Nd Convert SMD-format Genesis/Mega Drive image to raw (BIN) format
.Sh SYNOPSIS
.Nm dgen_tobin
.Ar FROMSMD
.Ar TOBIN
.Sh DESCRIPTION
The ROM image
.Ar FROMSMD
is converted into a raw image, as seen by the Genesis/Mega Drive console
itself. The raw image is written into
.Ar TOBIN .
If compiled with libarchive support and
.Ar FROMSMD
is compressed in a known format, it will also be transparently decompressed.
.Sh SEE ALSO
.Xr dgen 1 ,
.Xr libarchive 3
.Sh AUTHORS
This manual page was written by
.An Joe Groff Aq joe@pknet.com .
.An Updated by zamaz Aq zamaz@users.sourceforge.net .

View File

@ -6,10 +6,10 @@
.Nd file containing settings for .Nd file containing settings for
.Xr dgen 1 .Xr dgen 1
.Sh SYNOPSIS .Sh SYNOPSIS
/tmp0/1/.dgen/dgenrc $HOME/.dgen/dgenrc
.Sh DESCRIPTION .Sh DESCRIPTION
The file The file
.Pa /tmp0/1/.dgen/dgenrc .Pa $HOME/.dgen/dgenrc
is parsed by is parsed by
.Xr dgen 1 .Xr dgen 1
when the emuator is started. It is used to set controller keys, as well as other when the emuator is started. It is used to set controller keys, as well as other

View File

@ -0,0 +1,615 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
table.head, table.foot { width: 100%; }
td.head-rtitle, td.foot-os { text-align: right; }
td.head-vol { text-align: center; }
.Nd, .Bf, .Op { display: inline; }
.Pa, .Ad { font-style: italic; }
.Ms { font-weight: bold; }
.Bl-diag > dt { font-weight: bold; }
code.Nm, .Fl, .Cm, .Ic, code.In, .Fd, .Fn, .Cd { font-weight: bold;
font-family: inherit; }
</style>
<title>DGENRC(5)</title>
</head>
<body>
<table class="head">
<tr>
<td class="head-ltitle">DGENRC(5)</td>
<td class="head-vol">File Formats Manual</td>
<td class="head-rtitle">DGENRC(5)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">dgenrc</code> &#x2014; <span class="Nd">file
containing settings for <a class="Xr">dgen(1)</a></span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp">$HOME/.dgen/dgenrc</p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The file <span class="Pa">$HOME/.dgen/dgenrc</span> is parsed by
<a class="Xr">dgen(1)</a> when the emuator is started. It is used to set
controller keys, as well as other characteristics of the emulation. The
contents of this file may be overriden with the contents of another
similarly-formatted file, via the <code class="Fl">-r</code> commandline
switch.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="FILE_FORMAT"><a class="permalink" href="#FILE_FORMAT">FILE
FORMAT</a></h1>
<p class="Pp">Each rc file consists of an unlimited number of lines, which each
have the format 'fieldname = value'. A line may also be a comment, if it
begins with the hash mark (#) character.</p>
<p class="Pp">Each <var class="Ar">fieldname</var> is prepended by a name, which
identifies the type of this field:</p>
<dl class="Bl-tag">
<dt><var class="Ar">key_*</var></dt>
<dd>A key value. May be set to a key identifier listed in the
<a class="Sx" href="#KEY_IDENTIFIERS">KEY IDENTIFIERS</a> section
below.</dd>
<dt><var class="Ar">joy_*</var></dt>
<dd>A joystick/joypad value. May be set to a joystick identifier listed in the
<a class="Sx" href="#JOYSTICK_IDENTIFIERS">JOYSTICK IDENTIFIERS</a>
section below.</dd>
<dt><var class="Ar">mou_*</var></dt>
<dd>A mouse action. May be set to a mouse identifier listed in the
<a class="Sx" href="#MOUSE_IDENTIFIERS">MOUSE IDENTIFIERS</a> section
below.</dd>
<dt><var class="Ar">bool_*</var></dt>
<dd>A boolean value. &quot;false&quot;, &quot;no&quot;, and &quot;0&quot;
values are taken as false, while &quot;true&quot;, &quot;yes&quot;, and
any number except 0 are taken as true.</dd>
<dt><var class="Ar">int_*</var></dt>
<dd>An integer value, greater than or equal to 0.</dd>
<dt><var class="Ar">str_*</var></dt>
<dd>A string value, can be empty.</dd>
</dl>
<p class="Pp">Some fields take special value sets, which are addressed in their
respective sections. None of the field names or values are
case-sensitive.</p>
<p class="Pp">The fields fall under a few basic groups. They are listed below,
with their default values in brackets ([]):</p>
<p class="Pp">All of them can be modified interactively from the prompt, as
described in <a class="Xr">dgen(1)</a>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="CONTROLLERS"><a class="permalink" href="#CONTROLLERS">CONTROLLERS</a></h1>
<dl class="Bl-tag">
<dt>key_pad1_up [up]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_down [down]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_left [left]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_right [right]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_a [a]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_b [s]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_c [d]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_x [q]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_y [w]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_z [e]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_mode [backspace]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_pad1_start [return]</dt>
<dd>Map keys to the first Genesis controller. Each of these fields has a
corresponding &quot;key_pad2&quot; field, to map to the second
controller.</dd>
<dt>joy_pad1_up [joystick0-axis1-min]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_down [joystick0-axis1-max]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_left [joystick0-axis0-min]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_right [joystick0-axis0-max]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_a [joystick0-button0]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_b [joystick0-button3]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_c [joystick0-button1]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_x [joystick0-button6]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_y [joystick0-button4]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_z [joystick0-button5]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_mode [joystick0-button9]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_pad1_start [joystick0-button8]</dt>
<dd>Map joystick/joypad buttons to the first Genesis controller. Each of these
fields has a corresponding &quot;joy_pad2&quot; field, to map to the
second controller.</dd>
<dt>bool_joystick [true]</dt>
<dd>Use joysticks to emulate the controllers. Note that the keyboard keys will
still work if this value is set. This field is only available if you have
joystick support enabled.</dd>
<dt>int_mouse_delay [50]</dt>
<dd>Number of milliseconds to wait after the last mouse motion event to
release buttons bound to such events.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="USER-DEFINED_BINDINGS"><a class="permalink" href="#USER-DEFINED_BINDINGS">USER-DEFINED
BINDINGS</a></h1>
<dl class="Bl-tag">
<dt>bind_{keysym} <var class="Ar">action</var></dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>bind_{joypad} <var class="Ar">action</var></dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>bind_{mouse} <var class="Ar">action</var></dt>
<dd>Defines a new keyboard, joystick/joypad or mouse binding to an arbitrary
action. These variables use the <var class="Ar">keysym</var> format as
defined in <a class="Sx" href="#KEY_IDENTIFIERS">KEY IDENTIFIERS</a>, the
<var class="Ar">joypad</var> format as defined in
<a class="Sx" href="#JOYSTICK_IDENTIFIERS">JOYSTICK IDENTIFIERS</a>, or
the <var class="Ar">mouse</var> format as defined in
<a class="Sx" href="#MOUSE_IDENTIFIERS">MOUSE IDENTIFIERS</a>. When
<var class="Ar">action</var> is prefixed with &quot;key_&quot;,
&quot;joy_&quot; or &quot;mou_&quot;, it becomes an alias to the
corresponding variable in
<a class="Sx" href="#CONTROLLERS">CONTROLLERS</a>. Otherwise, it is
interpreted as if entered at the prompt, and can be used to modify
variables or execute commands (see <a class="Xr">dgenrc(5)</a> for more
information). No bindings are defined by default.</dd>
<dt>bind_&quot;{keysym|joypad|mouse} [{keysym|joypad|mouse} [...]]&quot;
<var class="Ar">action</var></dt>
<dd>Alternate syntax that supports combining several identifiers to perform
<var class="Ar">action</var>. Controller types can be mixed. Identifiers
are separated by spaces. To avoid syntax errors, spaces must be properly
escaped or quoted.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="AUDIO"><a class="permalink" href="#AUDIO">AUDIO</a></h1>
<dl class="Bl-tag">
<dt>bool_sound [true]</dt>
<dd>Enable the sound subsystem.</dd>
<dt>int_soundrate [44100]</dt>
<dd>Sound frequency to play at, in hertz (Hz).</dd>
<dt>int_soundsegs [8]</dt>
<dd>Number of sound segments to use for sound buffering. Lower values
guarantee low latency. Increment this only if the sound becomes
choppy.</dd>
<dt>int_soundsamples [0]</dt>
<dd>Size of the system sound buffer, in samples (samples are the sound unit,
sound rate is how many of them are played every second). Specifying 0
automatically choses the safest value. If you experience sound issues
int_soundsegs is unable to solve, try to change this. Increasing it will
cause noticeable audio lag (it is unfortunately often required on slower
machines).</dd>
<dt>int_volume [100]</dt>
<dd>Volume level, in percent. Values above 100 cause distorsion.</dd>
<dt>key_volume_inc [=]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>key_volume_dec [-]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_volume_inc []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_volume_dec []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_volume_inc []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_volume_dec []</dt>
<dd>Bindings for volume control.</dd>
<dt>bool_mjazz [false]</dt>
<dd>MJazz option - puts 2 more FM chips in the Megadrive for a sort of 22
channel sound boost. Can sound good. Slows things down a lot.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="VIDEO"><a class="permalink" href="#VIDEO">VIDEO</a></h1>
<dl class="Bl-tag">
<dt>int_depth [0]</dt>
<dd>Color depth (bits per pixel). Allowed values are 0 (automatic), 8, 15, 16,
24 and 32. Ignored in OpenGL mode.</dd>
<dt>int_width [-1]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>int_height [-1]</dt>
<dd>Desired window width and height.</dd>
<dt>bool_opengl [true]</dt>
<dd>Use the OpenGL renderer, if it is available.</dd>
<dt>bool_opengl_stretch [true]</dt>
<dd>Let OpenGL stretch the screen.</dd>
<dt>bool_opengl_linear [true]</dt>
<dd>Use GL_LINEAR for textures filtering instead of GL_NEAREST.</dd>
<dt>bool_opengl_32bit [true]</dt>
<dd>Use 32 bit textures. They require more memory but are usually faster than
16 bit textures.</dd>
<dt>bool_opengl_square [false]</dt>
<dd>Use square textures. Wastes a lot of memory but may solve OpenGL
initialization failures.</dd>
<dt>bool_fullscreen [false]</dt>
<dd>Try to run fullscreen, if possible.</dd>
<dt>int_scale [-1]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>int_scale_x [-1]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>int_scale_y [-1]</dt>
<dd>Amount by which to scale the rendered screen from the default resolution.
See scaling filters.</dd>
<dt>bool_aspect [true]</dt>
<dd>Retain original aspect ratio when resizing window.</dd>
<dt>key_fullscreen_toggle [alt-enter]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_fullscreen_toggle []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_fullscreen_toggle []</dt>
<dd>Button to toggle fullscreen mode (this may do nothing if SDL doesn't
support fullscreen toggling on your platform.)</dd>
<dt>int_info_height [-1]</dt>
<dd>Height of the text area at the bottom of the screen, in pixels. This also
affects the font size. Values smaller than the minimum font size make DGen
redirect text to stdout instead. The default value of -1 makes DGen choose
the proper height.</dd>
<dt>bool_fps [false]</dt>
<dd>Display the current number of frames per second.</dd>
<dt>bool_buttons [false]</dt>
<dd>Display pressed buttons. Can be used to help configuring them.</dd>
<dt>bool_swab [false]</dt>
<dd>Swap bytes in the video output. Sometimes useful when video output is
located on a different system. This is implemented as a CTV filter which
must be compiled-in to work.</dd>
<dt>bool_doublebuffer [true]</dt>
<dd>Toggle double buffering. Enabling this should prevent screen tearing from
happening. Disabling this may improve the number of displayed frames per
second on some systems.</dd>
<dt>bool_screen_thread [false]</dt>
<dd>When enabled, a separate thread is created to offload the displaying of
frames. This is only useful on slower machines where flipping video
buffers takes time, especially when V-sync is enabled and doing so blocks
until the next frame without consuming CPU time (sometimes the case when
bool_doublebuffer is enabled). This currently has no effect when OpenGL is
enabled and only works if multi-threading support is compiled-in.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="SAVE_STATES"><a class="permalink" href="#SAVE_STATES">SAVE
STATES</a></h1>
<dl class="Bl-tag">
<dt>key_slot_X [X]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_slot_X []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_slot_X []</dt>
<dd>Sets the current save-state slot to number X.</dd>
<dt>key_slot_next [f8]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_slot_next []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_slot_next []</dt>
<dd>Switch to the next save-slot.</dd>
<dt>key_slot_prev [f7]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_slot_prev []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_slot_prev []</dt>
<dd>Switch to the previous save-slot.</dd>
<dt>key_save [f2]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_save []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_save []</dt>
<dd>Saves state to the current slot.</dd>
<dt>key_load [f3]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_load []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_load []</dt>
<dd>Loads state from the current slot.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="MISCELLANEOUS_KEYS"><a class="permalink" href="#MISCELLANEOUS_KEYS">MISCELLANEOUS
KEYS</a></h1>
<dl class="Bl-tag">
<dt>key_fix_checksum [f1]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_fix_checksum []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_fix_checksum []</dt>
<dd>Fixes the checksum value. Some older games will freeze with a red screen
if the ROM has been hacked or modified with Game Genie codes. If it does,
pressing this, and resetting should fix the problem.</dd>
<dt>key_quit [escape]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_quit []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_quit []</dt>
<dd>Exit DGen or switch to the next ROM on the command-line.</dd>
<dt>key_craptv_toggle [f5]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_craptv_toggle []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_craptv_toggle []</dt>
<dd>Toggles Crap-TV image filters. These filters aren't available in 8 bpp
mode.</dd>
<dt>key_scaling_toggle [f6]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_scaling_toggle []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_scaling_toggle []</dt>
<dd>Toggles scaling algorithms. See scaling_startup below.</dd>
<dt>key_reset [tab]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_reset []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_reset []</dt>
<dd>Restart the Genesis emulation.</dd>
<dt>key_cpu_toggle [f11]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_cpu_toggle []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_cpu_toggle []</dt>
<dd>Switch CPU emulators. The x86 assembly CPU emulator StarScream is fast,
but has glitches which affect a few games. Switching to the slower Musashi
core will fix these problems, at a speed penalty.</dd>
<dt>key_z80_toggle [f10]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_z80_toggle []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_z80_toggle []</dt>
<dd>Switch Z80 emulators. MZ80 is a bit faster than CZ80, particularly in its
assembly version (only available for x86), but CZ80 works with more games.
This key can also disable Z80 emulation.</dd>
<dt>key_stop [z]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_stop []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_stop []</dt>
<dd>Pause emulation, so you can concentrate on real life for a few seconds.
:)</dd>
<dt>key_game_genie [f9]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_game_genie []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_game_genie []</dt>
<dd>Enter a Game Genie or Hex code. This key also works in stopped mode.</dd>
<dt>key_screenshot [f12]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_screenshot []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_screenshot []</dt>
<dd>Take a screenshot. Not available in 8 bpp mode.</dd>
<dt>key_prompt [:]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_prompt []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_prompt []</dt>
<dd>Pause emulation and display interactive prompt. Also works in stopped
mode.</dd>
<dt>key_debug_enter [`]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>joy_debug_enter []</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>mou_debug_enter []</dt>
<dd>Break into the debugger. Only meaningful if debugger support is
compiled-in.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="PREFERENCES"><a class="permalink" href="#PREFERENCES">PREFERENCES</a></h1>
<dl class="Bl-tag">
<dt>int_hz [60]</dt>
<dd>Video refresh rate. The default is 60 as in NTSC consoles.</dd>
<dt>bool_pal [false]</dt>
<dd>When true, a PAL console is emulated. This should be used in combination
with int_hz above for 50Hz emulation.</dd>
<dt>region [' ']</dt>
<dd>U for America (NTSC), E for Europe (PAL), J for Japan (NTSC), X for Japan
(PAL), or empty space for autodetection (the default). Overrides bool_pal
and int_hz.</dd>
<dt>str_region_order [JUEX]</dt>
<dd>Regions DGen is allowed to emulate when autodetection is enabled, ordered
by preference.</dd>
<dt>emu_m68k_startup [musa]</dt>
<dd>Useful when both Musashi and StarScream are compiled-in. This option
selects the default emulator to use (&quot;musa&quot; for Musashi,
&quot;star&quot; for StarScream, &quot;none&quot; for neither). See
key_cpu_toggle.</dd>
<dt>emu_z80_startup [cz80]</dt>
<dd>Useful when both CZ80 and MZ80 are compiled-in. This option selects the
default emulator to use (&quot;cz80&quot;, &quot;mz80&quot; or
&quot;none&quot;, if you want to disable it altogether). See
key_z80_toggle.</dd>
<dt>bool_autoload [false]</dt>
<dd>Automatically load the saved state from slot 0 when DGen starts.</dd>
<dt>bool_autosave [false]</dt>
<dd>Automatically save the saved state to slot 0 upon exit. Setting both of
these fields true, you can exit DGen, and automatically start a game where
you left off when you start it again.</dd>
<dt>bool_autoconf [true]</dt>
<dd>Automatically dump the current configuration to dgenrc.auto before
exiting. This file is always loaded before dgenrc at startup.</dd>
<dt>bool_frameskip [true]</dt>
<dd>Automatically skip frames, when it is necessary to maintain proper
emulation speed. You may want to disable sound or set int_nice to a
nonzero value when setting this to false.</dd>
<dt>int_nice [0]</dt>
<dd>If set to a non-zero value, DGen will call <a class="Xr">usleep(3)</a>
with the specified parameter after rendering each frame. This will slow
the program down (if it is running too fast on your computer), and allow
the operating system to reclaim some CPU time.</dd>
<dt>ctv_craptv_startup [off]</dt>
<dd>CTV filter to use by default. Available filters are &quot;blur&quot;,
&quot;scanline&quot;, &quot;interlace&quot; and &quot;swab&quot;.</dd>
<dt>scaling_startup [stretch]</dt>
<dd>Scaler to use when display resolution is larger than original screen.
Available filters are &quot;stretch&quot;, &quot;scale&quot;,
&quot;hqx&quot;, &quot;hqx stretch&quot;, &quot;scale2x&quot;,
&quot;scale2x stretch&quot; and &quot;none&quot;.</dd>
<dt>bool_show_carthead [false]</dt>
<dd>Show cartridge header info at startup.</dd>
<dt>bool_raw_screenshots [false]</dt>
<dd>Generate unfiltered screenshots.</dd>
<dt>str_rom_path [&quot;roms&quot;]</dt>
<dd>Directory where DGen should look for ROMs by default. It's relative to
DGen's home directory, unless an absolute path is provided.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="DEBUGGING"><a class="permalink" href="#DEBUGGING">DEBUGGING</a></h1>
<dl class="Bl-tag">
<dt>bool_vdp_hide_plane_a [false]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>bool_vdp_hide_plane_b [false]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>bool_vdp_hide_plane_w [false]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>bool_vdp_hide_sprites [false]</dt>
<dd>Hide various planes during frame rendering. Require VDP debugging to be
compiled-in.</dd>
<dt>bool_vdp_sprites_boxing [false]</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>int_vdp_sprites_boxing_fg [0xffff00] (yellow)</dt>
<dd style="width: auto;">&#x00A0;</dd>
<dt>int_vdp_sprites_boxing_bg [0x00ff00] (green)</dt>
<dd>Toggle sprites boxing and configure its colors. Require VDP debugging to
be compiled-in. &quot;fg&quot; is for sprites with the high priority bit
set, &quot;bg&quot; is for the others. Color format is 0xRRGGBB.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
<p class="Pp">See the file &quot;sample.dgenrc&quot; in the DGen/SDL
distribution.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="KEY_IDENTIFIERS"><a class="permalink" href="#KEY_IDENTIFIERS">KEY
IDENTIFIERS</a></h1>
<p class="Pp">A key identifier can have the prefixes &quot;shift-&quot;,
&quot;ctrl-&quot;, &quot;alt-&quot; and &quot;meta-&quot;, or any
combination thereof, to require that the specified modifier be pressed in
combination with the key. For example, the identifier &quot;alt-enter&quot;
would correspond to holding down the Alt key while pressing Enter.</p>
<p class="Pp">The &quot;shift-&quot; modifier only works with keys that don't
generate symbols (such as arrow keys). Otherwise their UTF-8 representation
must be used directly.</p>
<p class="Pp">The numbers &quot;0&quot; through &quot;9&quot; (&quot;kp_0&quot;
through &quot;kp_9&quot; for the numeric keypad), letters &quot;A&quot;
through &quot;Z&quot;, and function keys &quot;F1&quot; through
&quot;F12&quot; map to their key equivalents. In addition, the following
identifiers map to their similarly-labeled key counterparts. Identifiers on
the same line map to the same key:</p>
<div class="Bd Pp Bd-indent Li">
<pre>escape
backspace
tab
capslock caps_lock
lshift shift_l
rshift shift_r
lctrl ctrl_l
lmeta meta_l
lalt alt_l
ralt alt_r
rmeta meta_r
rctrl ctrl_r
return enter
space
scrollock scroll_lock
numlock num_lock
insert
home
page_up pageup
delete
end
page_down pagedown
left
right
up
down
kp_home
kp_up
kp_pageup kp_page_up
kp_left
kp_right
kp_end
kp_down
kp_pagedown kp_page_down
kp_insert
kp_delete kp_period
kp_enter
kp_divide
kp_minus
kp_multiply
kp_plus</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="JOYSTICK_IDENTIFIERS"><a class="permalink" href="#JOYSTICK_IDENTIFIERS">JOYSTICK
IDENTIFIERS</a></h1>
<p class="Pp">Like key identifiers, joystick (or joypad) identifiers describe a
joystick event. Each detected joystick is numbered starting from 0. Three
different event types are supported.</p>
<dl class="Bl-tag">
<dt>Buttons: joystickX-buttonY</dt>
<dd>For joystick/joypad number X, button number Y. &quot;button&quot; can be
abbreviated as &quot;b&quot;.</dd>
<dt>Axes: joystickX-axisY-min, joystickX-axisY-max</dt>
<dd>For joystick/joypad number X, axis number Y, and its position, which is
either &quot;min&quot; (also &quot;n&quot;, &quot;negative&quot;) or
&quot;max&quot; (also &quot;p&quot;, &quot;positive&quot;).
&quot;axis&quot; can be abbreviated as &quot;a&quot;.</dd>
<dt>Hats: joystickX-hatY-{direction}</dt>
<dd>For joystick/joypad number X, hat number Y and direction. &quot;hat&quot;
can be abbreviated as &quot;h&quot;. Possible directions are
&quot;up&quot;, &quot;right&quot;, &quot;down&quot;,
&quot;left&quot;.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="MOUSE_IDENTIFIERS"><a class="permalink" href="#MOUSE_IDENTIFIERS">MOUSE
IDENTIFIERS</a></h1>
<p class="Pp">These identifiers describe a mouse event. Each detected mouse is
numbered starting from 0. Two different event types are supported.</p>
<dl class="Bl-tag">
<dt>Buttons: mouseX-buttonY</dt>
<dd>For mouse number X, button number Y. &quot;button&quot; can be abbreviated
as &quot;b&quot;.</dd>
<dt>Motions: mouseX-{direction}</dt>
<dd>For mouse number X and direction. Possible directions are &quot;up&quot;,
&quot;right&quot;, &quot;down&quot;, &quot;left&quot;.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr">dgen(1)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp">This manual page was written by <span class="An">Joe Groff</span>
&#x27E8;joe@pknet.com&#x27E9;.
<br/>
<span class="An">Updated by zamaz</span>
&#x27E8;zamaz@users.sourceforge.net&#x27E9;.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">July 26, 2014</td>
<td class="foot-os">Linux 6.6.9-arch1-1</td>
</tr>
</table>
</body>
</html>

View File

@ -179,12 +179,6 @@ static char *my_index(const char *str, int chr);
extern char *getenv(); extern char *getenv();
#endif #endif
#ifdef _KOLIBRI
char* getenv(const char *name) {
return NULL;
}
#endif
static int my_strlen(const char *str) static int my_strlen(const char *str)
{ {
int n = 0; int n = 0;

View File

@ -54,9 +54,7 @@ extern "C" {
#endif #endif
#ifdef _KOLIBRI #ifdef _KOLIBRI
extern "C" {
#include <sys/ksys.h> #include <sys/ksys.h>
}
#endif #endif
/// Number of microseconds to sustain messages /// Number of microseconds to sustain messages

View File

@ -6,9 +6,7 @@
#include <errno.h> #include <errno.h>
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
#ifndef _KOLIBRI
#include <dirent.h> #include <dirent.h>
#endif
#include <ctype.h> #include <ctype.h>
#ifndef __MINGW32__ #ifndef __MINGW32__
#include <sys/types.h> #include <sys/types.h>
@ -41,11 +39,6 @@
#endif #endif
#endif #endif
#ifdef _KOLIBRI
char* kos_dgen_userdir = "/tmp0/1";
#endif
static const char *fopen_mode(unsigned int mode) static const char *fopen_mode(unsigned int mode)
{ {
static const char *modes[4][2] = { static const char *modes[4][2] = {
@ -161,6 +154,11 @@ char *dgen_userdir(char *buf, size_t *size)
if ((pwd == NULL) || (pwd->pw_dir == NULL)) if ((pwd == NULL) || (pwd->pw_dir == NULL))
return NULL; return NULL;
sz_dir = strlen(pwd->pw_dir); sz_dir = strlen(pwd->pw_dir);
#elif defined _KOLIBRI
char *kos_home = getenv("HOME");
if (!kos_home)
return NULL;
sz_dir = strlen(kos_home);
#endif #endif
if (buf != NULL) { if (buf != NULL) {
sz = *size; sz = *size;
@ -184,7 +182,7 @@ char *dgen_userdir(char *buf, size_t *size)
} }
#ifndef __MINGW32__ #ifndef __MINGW32__
#ifdef _KOLIBRI #ifdef _KOLIBRI
strncpy(path, kos_dgen_userdir, sz_dir); strncpy(path, kos_home, sz_dir);
#else #else
strncpy(path, pwd->pw_dir, sz_dir); strncpy(path, pwd->pw_dir, sz_dir);
#endif #endif
@ -234,7 +232,10 @@ char *dgen_dir(char *buf, size_t *size, const char *sub)
return NULL; return NULL;
sz_dir = strlen(pwd->pw_dir); sz_dir = strlen(pwd->pw_dir);
#else #else
sz_dir = strlen(kos_dgen_userdir); char *kos_home = getenv("HOME");
if (!kos_home)
return NULL;
sz_dir = strlen(kos_home);
#endif #endif
#endif #endif
@ -266,7 +267,7 @@ char *dgen_dir(char *buf, size_t *size, const char *sub)
#ifndef _KOLIBRI #ifndef _KOLIBRI
strncpy(path, pwd->pw_dir, sz_dir); strncpy(path, pwd->pw_dir, sz_dir);
#else #else
strncpy(path, kos_dgen_userdir, sz_dir); strncpy(path, kos_home, sz_dir);
#endif #endif
#else #else
if (SHGetFolderPath(NULL, (CSIDL_APPDATA | CSIDL_FLAG_CREATE), if (SHGetFolderPath(NULL, (CSIDL_APPDATA | CSIDL_FLAG_CREATE),
@ -355,12 +356,10 @@ FILE *dgen_freopen(const char *relative, const char *file, unsigned int mode,
goto error; goto error;
size = strlen(path); size = strlen(path);
} }
#ifndef KOLIBRI
if ((mode & (DGEN_WRITE | DGEN_APPEND)) && (path != NULL)) if ((mode & (DGEN_WRITE | DGEN_APPEND)) && (path != NULL))
mkdir(path, 0777); /* XXX make that recursive */ mkdir(path, 0777); /* XXX make that recursive */
#else
mkdir(path, 0777);
#endif
file_size = strlen(file); file_size = strlen(file);
if ((tmp = realloc(path, (size + !!size + file_size + 1))) == NULL) if ((tmp = realloc(path, (size + !!size + file_size + 1))) == NULL)
goto error; goto error;
@ -660,7 +659,6 @@ static void free_pppc(char ***pppc, size_t skip)
*/ */
static char **complete_path_simple(const char *path, size_t len) static char **complete_path_simple(const char *path, size_t len)
{ {
#ifndef _KOLIBRI
size_t rlen; size_t rlen;
const char *cpl; const char *cpl;
char *root; char *root;
@ -745,7 +743,7 @@ error:
free(*(ret++)); free(*(ret++));
free(ret); free(ret);
} }
#endif
return NULL; return NULL;
} }