e8555c89 Andy McCall 1 month ago
1
<! DOCTYPE html>
2
< html lang = " en" >
3
< head >
4
< meta charset = " utf-8" >
5
< link title = " Purple" rel = " stylesheet" href = " manual-purple.css" type = " text/css" >
6
< link title = " Minty" rel = " alternate stylesheet" href = " manual-minty.css" type = " text/css" >
7
< link title = " Plain" rel = " alternate stylesheet" href = " manual.css" type = " text/css" >
8
< title > openMSX Setup Guide</ title >
9
</ head >
10
11
< body >
12
13
< h1 > openMSX Setup Guide</ h1 >
14
15
< h2 > Contents</ h2 >
16
< ol class = " toc " >
17
< li > < a class = " internal " href = " #intro" > 1. Introduction</ a >
18
< ol class = " toc " >
19
< li > < a class = " internal " href = " #newver" > 1.1 New Versions of this Document</ a > </ li >
20
< li > < a class = " internal " href = " #purpose" > 1.2 Purpose</ a > </ li >
21
< li > < a class = " internal " href = " #history" > 1.3 Revision History</ a > </ li >
22
</ ol >
23
</ li >
24
< li > < a class = " internal " href = " #machext" > 2. Machines and Extensions</ a > </ li >
25
< li > < a class = " internal " href = " #systemroms" > 3. System ROMs</ a >
26
< ol class = " toc " >
27
< li > < a class = " internal " href = " #cbios" > 3.1 C-BIOS</ a > </ li >
28
< li > < a class = " internal " href = " #dumprom" > 3.2 Dumping ROMs</ a >
29
< ol class = " toc " >
30
< li > < a class = " internal " href = " #dumpromtools" > 3.2.1 Tools</ a > </ li >
31
< li > < a class = " internal " href = " #dumpromlegal" > 3.2.2 Legal Issues</ a > </ li >
32
33
</ ol >
34
</ li >
35
< li > < a class = " internal " href = " #downloadrom" > 3.3 Downloading ROMs</ a > </ li >
36
< li > < a class = " internal " href = " #installrom" > 3.4 Installing ROMs</ a >
37
< ol class = " toc " >
38
< li > < a class = " internal " href = " #romlocation" > 3.4.1 ROM Locations</ a > </ li >
39
< li > < a class = " internal " href = " #romchecksums" > 3.4.2 How openMSX knows which ROM files to use</ a > </ li >
40
< li > < a class = " internal " href = " #romsplit" > 3.4.3 How to handle split ROMs</ a > </ li >
41
</ ol >
42
</ li >
43
</ ol >
44
</ li >
45
< li > < a class = " internal " href = " #laserdisc" > 4. Palcom Laserdiscs</ a > </ li >
46
< li > < a class = " internal " href = " #settings" > 5. User Preferences</ a > </ li >
47
< li > < a class = " internal " href = " #tuning" > 6. Performance Tuning</ a >
48
< ol class = " toc " >
49
< li > < a class = " internal " href = " #opengl" > 6.1 OpenGL</ a > </ li >
50
< li > < a class = " internal " href = " #tuningvarious" > 6.2 Various Tuning Tips</ a > </ li >
51
</ ol >
52
</ li >
53
< li > < a class = " internal " href = " #hardwareedit" > 7. Writing Hardware Descriptions</ a > </ li >
54
< li > < a class = " internal " href = " #contact" > 8. Contact Info</ a > </ li >
55
</ ol >
56
57
< h2 > < a id = " intro " > 1. Introduction</ a > </ h2 >
58
59
< h3 > < a id = " newver " > 1.1 New Versions of this Document</ a > </ h3 >
60
< p >
61
The latest version of the openMSX manual can be found on the openMSX home page:
62
</ p >
63
< p >
64
< a class = " external " href = " http://openmsx.org/manual/" > http://openmsx.org/manual/</ a >
65
</ p >
66
< p >
67
You can also use this URL to get up-to-date versions of the hyper links
68
if you printed out this manual.
69
</ p >
70
71
< h3 > < a id = " purpose " > 1.2 Purpose</ a > </ h3 >
72
< p >
73
This guide is about openMSX, the open source MSX emulator that tries to achieve
74
near-perfect emulation by using a novel emulation model.
75
You can find more information about openMSX on the
76
< a class = " external " href = " http://openmsx.org/" > openMSX home page</ a > .
77
You can also download the emulator itself from there.
78
</ p >
79
80
< p >
81
This guide describes the setup of openMSX.
82
After installation, openMSX is ready to run using C-BIOS and the default
83
settings. In this guide you can read how to configure openMSX to emulate actual
84
MSX machines (such as Panasonic FS-A1GT). It also describes how you can have
85
openMSX start up with your personal settings, how you can configure openMSX and
86
your system for optimal performance, and several other configuration related
87
topics.
88
</ p >
89
90
< p >
91
< em > Disclaimer:</ em >
92
We do not claim this guide is complete or even correct.
93
What you do with the information in it is entirely at your own risk.
94
We just hope it helps you enjoy openMSX more.
95
</ p >
96
97
< h3 > < a id = " history " > 1.3 Revision History</ a > </ h3 >
98
99
< p >
100
For the revision history, please refer to the < a class = " external "
101
href = " https://github.com/openMSX/openMSX/commits/master/doc/manual/setup.html" > commit log</ a > .
102
</ p >
103
104
< h2 > < a id = " machext " > 2. Machines and Extensions</ a > </ h2 >
105
106
< p >
107
We use the word < em > machine</ em > to refer to a specific
108
MSX model. For example, the Sony HB-75P is a machine.
109
openMSX does not have a fixed machine hardcoded into it.
110
Instead, many different MSX machines can be emulated.
111
The details of a machine are described in an XML file.
112
This file describes how much memory a machine has,
113
what video processor it has, in which slots its system ROMs are located,
114
whether the machine has a built-in disk drive etc.
115
openMSX reads the machine description XML and will then emulate exactly
116
that MSX machine, which can be anything from an MSX1 with 16 kB of RAM
117
to the Panasonic FS-A1GT MSX turboR.
118
</ p >
119
120
< p >
121
The openMSX distribution contains XML files describing many existing MSX
122
models.
123
You can find them in the < code > share/machines</ code > directory.
124
If you want to run one of those machines,
125
you also need the system ROMs for that machine.
126
See the < a class = " internal " href = " #systemroms" > next chapter</ a > for more
127
information on system ROMs.
128
You can also create your own machine descriptions,
129
to expand existing MSX models or to create your own fantasy MSX. There are
130
currently some of such fantasy MSX machines, based on real MSX machines,
131
shipped with openMSX. Examples of such machines are "Boosted_MSX2_EN" (a
132
European MSX2 with loads of hardware built-in) and
133
"Boosted_MSX2+_JP" (a Japanese MSX2+ with loads of hardware built-in). You can
134
find some more information about them in their accompanying txt file in
135
< code > share/machines/</ code > . More about creating fantasy MSX machines in a
136
< a class = " internal " href = " #hardwareedit" > later chapter</ a > .
137
</ p >
138
139
< p >
140
An < em > extension</ em > is a piece of MSX hardware that can be
141
inserted into a cartridge slot to extend the capabilities of an MSX.
142
Examples of extensions are the Panasonic FMPAC, the Sunrise IDE interface
143
and an external 4MB memory mapper.
144
Extensions, like machines, are described in XML files.
145
You can find a lot of predefined extensions
146
in the < code > share/extensions</ code > directory.
147
Some extensions need ROM images in order to run, similar to system ROMs.
148
</ p >
149
150
< p >
151
In general, the XML files that describe the hardware configuration are called
152
"hardware configuration XML files".
153
</ p >
154
155
< p >
156
If you want to be able to run a combination of a machine and plugged in extensions at a later time, you can store this combination as a setup with the GUI via < span class = " menu-reference " > Main menu bar
157
& rarr; Machine & rarr; Save setup</ span > or the < code > < a class = " external "
158
href = " commands.html#store_setup" > store_setup</ a > </ code > command.
159
</ p >
160
161
< h2 > < a id = " systemroms " > 3. System ROMs</ a > </ h2 >
162
163
< p >
164
An MSX machine consists of a lot of hardware, but also contains some software.
165
Such software includes the BIOS, MSX-BASIC, software controlling disk drives
166
and built-in applications (firmware).
167
openMSX emulates the MSX hardware, but it needs MSX system software to emulate
168
a full MSX system.
169
Because the internal software is located in ROM chips, it is referred to as
170
< em > system ROMs</ em > .
171
</ p >
172
173
< p >
174
The software in the system ROMs, like most software, is copyrighted.
175
Depending on your local laws, there are certain things you are allowed to
176
do with copyrighted software and certain things you are not allowed to do.
177
In this manual, a couple of options are listed for providing system ROMs
178
to your openMSX installation.
179
It is up to you, the user, to select an option that is legal in your country.
180
</ p >
181
182
< h3 > < a id = " cbios " > 3.1 C-BIOS</ a > </ h3 >
183
184
< p >
185
C-BIOS stands for "Compatible BIOS".
186
It aims to be compatible with the MSX BIOS found in real MSX machines,
187
but it was written from scratch, so all copyrights belong to its authors.
188
BouKiChi, the original author of C-BIOS, was kind enough to allow
189
distribution of C-BIOS with openMSX.
190
When Reikan took over maintenance of C-BIOS, the license
191
was changed to give users and developers even more freedom in using C-BIOS.
192
Later still, C-BIOS was moved to a SourceForge.net project, with several new
193
maintainers. Every now and then, an updated version of C-BIOS is released.
194
You can wait for it to be included in the next openMSX release,
195
or download it directly from the
196
< a class = " external " href = " http://cbios.sourceforge.net/" > C-BIOS web site</ a > .
197
</ p >
198
199
< p >
200
C-BIOS can be used to run most MSX1, MSX2 and MSX2+ cartridge-based games.
201
It does not include support for MSX-BASIC or disk drives yet,
202
so software that comes on tape, disk or any other media than ROM cartridges
203
will not run on standard openMSX C-BIOS machines.
204
</ p >
205
206
< p >
207
openMSX contains several machine configurations using C-BIOS.
208
The machine < code > C-BIOS_MSX1</ code > is an MSX1 with 64 kB RAM.
209
The machine < code > C-BIOS_MSX2</ code > is an MSX2 with 512 kB RAM and 128 kB VRAM.
210
The machine < code > C-BIOS_MSX2+</ code > is an MSX2+ with 512 kB RAM, 128 kB VRAM and MSX-MUSIC.
211
The latter is the < a class = " external "
212
href = " commands.html#default_machine" > default machine</ a > for openMSX after
213
installation, so if you change nothing to the openMSX configuration,
214
then < code > C-BIOS_MSX2+</ code > is the machine that will be booted. The
215
mentioned machines have a US English (international) keyboard layout and
216
character set and run at 60Hz (like NTSC) interrupt frequency. Since C-BIOS
217
0.25, some localized versions are also available: Japanese, European (like US,
218
but 50Hz), and Brazilian. You can easily recognize them.
219
</ p >
220
221
< p >
222
It is always legal for you to run the C-BIOS ROMs in openMSX.
223
You are allowed to use C-BIOS and its source code in various other ways
224
as well, read the C-BIOS license for details.
225
It is located in the file < code > README.cbios</ code > in the Contrib directory.
226
</ p >
227
228
< h3 > < a id = " dumprom " > 3.2 Dumping ROMs</ a > </ h3 >
229
230
< p >
231
If you own a real MSX machine, you can dump the contents of its system ROMs
232
to create ROM images you can run in openMSX.
233
This way, you can emulate the MSX machines you are familiar with.
234
</ p >
235
236
< h4 > < a id = " dumpromtools " > 3.2.1 Tools</ a > </ h4 >
237
238
< p >
239
The easiest way to dump system ROMs is to run a special dumping tool on your
240
real MSX, which copies the contents of the system ROMs to disk.
241
Sean Young has made such tools, you can find the
242
< a class = " external " href = " http://bifi.msxnet.org/msxnet/utils/saverom.html" > tools and documentation</ a >
243
on BiFi's web site.
244
These tools can also be used to dump cartridge ROMs, which may be useful later,
245
if you want to use certain extensions or play games.
246
</ p >
247
248
< h4 > < a id = " dumpromlegal " > 3.2.2 Legal Issues</ a > </ h4 >
249
250
< p >
251
Using ROMs dumped from machines you own is generally speaking not frowned upon in the MSX community.
252
When the MSX machine was bought in a shop years ago, you or the person that
253
originally bought it paid money for the MSX machine.
254
A small part of that money paid for the software in the system ROMs.
255
However, we are no legal experts, so it is up to you to check whether it
256
is legal in your country to use dumped ROMs of machines you own.
257
</ p >
258
259
< h3 > < a id = " downloadrom " > 3.3 Downloading ROMs</ a > </ h3 >
260
261
< p >
262
Some WWW and FTP sites offer MSX system ROMs as a download.
263
Some MSX emulators include system ROMs in their distribution.
264
Downloaded system ROMs can be used in the same way as
265
system ROMs you dumped yourself, see the previous section.
266
</ p >
267
268
< p >
269
It may be illegal in your country to download system ROMs.
270
Please inform yourself of the legal aspects before considering this option.
271
Whatever you decide is your own responsibility.
272
</ p >
273
274
< h3 > < a id = " installrom " > 3.4 Installing ROMs</ a > </ h3 >
275
276
< p >
277
If you want to emulate real MSX machines next to the default C-BIOS based
278
machines, you will have to install system ROMs that did not come with openMSX.
279
This section explains how to install these, once you obtained them in one of
280
the ways that are explained in the previous sections.
281
</ p >
282
283
< h4 > < a id = " romlocation " > 3.4.1 ROM Locations</ a > </ h4 >
284
285
< p > The easiest way is to copy the ROM files in a so-called file pool: a special
286
directory where openMSX will look for files (system ROMs, other ROMs, disks,
287
tapes, etc.). The default file pool for system ROMs is the
288
< code > systemroms</ code > sub directory. The best way is to make a
289
< code > systemroms</ code > sub directory in your own user directory, which is
290
platform dependent:
291
</ p >
292
< table class = " border_enabled " >
293
< tr > < th > Platform</ th > < th > User directory</ th > </ tr >
294
< tr > < td > Windows (e.g. Windows 7)</ td > < td > < code > C:\Users\& lt; user name& gt; \Documents\openMSX\share</ code > whereby < code > & lt; user name& gt; </ code > stands for your Windows login name</ td > </ tr >
295
< tr > < td > Unix and Linux</ td > < td > < code > ~/.openMSX/share</ code > </ td > </ tr >
296
</ table >
297
298
< p >
299
Please note that the path part which comes before < code > share</ code > can be
300
overridden by setting the < code > OPENMSX_HOME</ code > environment variable, see the < a class = " internal " href = " #settings" > chapter about User Preferences</ a > .
301
</ p >
302
303
< p > That way, you do not need special privileges. Furthermore, the (Windows) installer
304
won't touch them for sure.</ p >
305
306
< p > A template for the < code > systemroms</ code > sub directory is present in the
307
installation directory of openMSX, which is also platform dependent:
308
</ p >
309
310
< table class = " border_enabled " >
311
< tr > < th > Platform</ th > < th > Typical openMSX file pool installation directory</ th > </ tr >
312
< tr > < td > Windows (any version)</ td > < td > < code > C:\Program Files\openMSX\share</ code > </ td > </ tr >
313
< tr > < td > Unix and Linux</ td > < td > < code > /opt/openMSX/share</ code > or < code > /usr/share/openmsx</ code > </ td > </ tr >
314
</ table >
315
316
< p > The quickest way to see where openMSX is searching for system ROMs on your
317
installation is via the GUI under < span class = " menu-reference " > Main menu bar
318
& rarr; Machine & rarr; Test MSX hardware</ span > . At the bottom of this dialog
319
you can find buttons to quickly open a (native) file browser on the locations
320
where the ROMs are searched for, both for the user folder and the system wide
321
folder. The main function of this window is to verify whether your system ROMs
322
have been installed properly. </ p >
323
324
< p > In short: you can just copy all your system ROMs to the
325
< code > share/systemroms</ code > directory of your user account. The ROM files can
326
be zipped (or gzipped), but only one file can be in a ZIP file. If multiple ROM
327
files are in a single ZIP file, openMSX will not find them. The directory
328
structure below < code > share/systemroms</ code > is not relevant, openMSX will
329
search it completely. </ p >
330
331
< p > More info about file pools is in the documentation of the < code > < a
332
class = " external " href = " commands.html#filepool" > filepool</ a > </ code > command. If
333
you can't get this working, please read one of the next sections. </ p >
334
335
< p > For advanced users, it is also possible to let openMSX load a specific set
336
of ROM images for a machine, independent of any file pool or the checksums of
337
the ROM images. For that you copy the ROM file with the name and path as
338
mentioned in the hardware configuration XML file that describes the machine,
339
relative to the path of that machine description file. For example, if you
340
dumped the ROMs of a Philips NMS 8250 machine, copy them to
341
< code > share/machines</ code > , because in the machine description file (in
342
< code > share/machines/Philips_NMS_8250.xml</ code > ) the name of the ROMs is like
343
this: < code > nms8250_msx2sub.rom</ code > . We recommend to not use this feature,
344
but use the file pools as mentioned above. </ p >
345
346
< h4 > < a id = " romchecksums " > 3.4.2 How openMSX knows which ROM files to use</ a > </ h4 >
347
348
< p > All necessary system ROM files used in machines and extensions are
349
primarily identified with a checksum: a sha1sum. This enables openMSX to find
350
the right ROM file from one of the < a class = " external "
351
href = " commands.html#filepool" > file pool</ a > s of type < code > system_rom</ code > ,
352
regardless of the file name. So the actual content is guaranteed to be
353
what was intended. If the ROM is explicitly specified in the configuration file
354
(which is also supported) and the sha1sum doesn't match, a warning will be
355
printed. </ p >
356
357
< p > If you are trying to run an MSX machine and get an error like < code > Fatal
358
error: Error in "broken" machine: Couldn't find ROM file for "MSX BIOS with
359
BASIC ROM" (sha1: 12345c041975f31dc2ab1019cfdd4967999de53e).</ code > it means
360
that the required system ROM for that machine with the given sha1sum cannot be
361
found in one of the file pools as mentioned above (typically
362
< code > share/systemroms</ code > ). This is the primary way to know that you are
363
missing required system ROMs and therefore something went wrong installing them
364
(typically either not a file with the proper content or you put the file in the
365
wrong place, or you put it in a large ZIP file with multiple files). </ p >
366
367
< p > The quickest way to see which machine and extensions work (i.e.: openMSX
368
can find the required system ROMs the configuration is referring to) is by
369
using the GUI under < span class = " menu-reference " > Main menu bar & rarr; Machine
370
& rarr; Test MSX hardware</ span > . It will quickly check all machines and
371
extensions and will show which are working and which are not, and which error
372
occurred when trying to use it. Besides this, when selecting to run a machine
373
using the GUI under < span class = " menu-reference " > Main menu bar & rarr; Machine
374
& rarr; Select MSX machine...</ span > , you can also see which are working and
375
which not and why. Likewise for extensions via < span
376
class = " menu-reference " > Main menu bar & rarr; Media & rarr; Extensions & rarr;
377
Insert</ span > for instance. </ p >
378
379
< p > You can also manually check whether you have the correct ROM images. The
380
value in the & lt; sha1& gt; tag(s) in the hardware configuration XML files
381
contain checksums of ROM images that are known to work. You can compare the
382
checksums of your ROM images to the ones in the hardware configuration XML
383
files with the < code > sha1sum</ code > tool. It is installed by default on most
384
UNIX systems, on Windows you will have to download it separately. If the
385
checksums match, it is almost certain you have correct system ROMs. If the
386
checksums do not match, it could mean something went wrong dumping the ROMs, or
387
it could mean you have a slightly older/newer model which contains different
388
system ROMs. </ p >
389
390
< p > A typical case in which you can have problems with checksums (or ROMs not
391
getting found in a file pool) is disk ROMs. The ROM dump can be correct, and
392
still have a different checksum. This is because part of the ROM is not
393
actually ROM, but mapped on the registers of the floppy controller. When you
394
are sure it is correct, don't put it in a file pool, but put it in the proper
395
directory, which is explained above. Alternatively, you could add the checksum
396
in the XML file that describes the machine you made the ROM dump for (multiple
397
checksums can be present, they will be checked in the same order as they are in
398
the file). </ p >
399
400
< h4 > < a id = " romsplit " > 3.4.3 How to handle split ROMs</ a > </ h4 >
401
402
< p > The machine configurations bundled with openMSX often refer to ROM files
403
that span multiple 16 kB pages. For example, in the NMS 8250 configuration, the
404
BIOS and MSX-BASIC are expected in a single 32 kB ROM image. If you created two
405
16 kB images when dumping or got those from downloading, you can concatenate
406
them using tools included with your OS. In Linux and other Unix(-like) systems
407
you can do it like this: </ p > < div class = " commandline " > cat bios.rom basic.rom
408
& gt; nms8250_basic-bios2.rom </ div > < p > In Windows, open a command prompt and
409
issue this command: </ p > < div class = " commandline " > copy /b bios.rom + basic.rom
410
nms8250_basic-bios2.rom </ div >
411
412
413
< h2 > < a id = " laserdisc " > 4. Palcom Laserdiscs</ a > </ h2 >
414
415
< p > The Pioneer PX-7 and Pioneer PX-V60 are both emulated including an emulated
416
Laserdisc Player, making it possible to run Palcom Laserdisc software. </ p >
417
418
< p > The laserdisc must be captured before it can be used with an emulator. The
419
file must adhere to the following rules: </ p >
420
421
< ul >
422
< li > Use the Ogg container format</ li >
423
< li > Use the Vorbis codec for audio</ li >
424
< li > Use the Theora codec for video</ li >
425
< li > Captured at 640& times; 480, YUV420</ li >
426
< li > A bitrate of at least 200kpbs for audio, otherwise the computer code
427
encoded on the right audio channel will degrade too much for it to be
428
readable</ li >
429
< li > Theora frame numbers must correspond to laserdisc frame numbers</ li >
430
< li > Some laserdiscs have chapters and/or stop frames. This is encoded in the
431
< a href = " http://www.daphne-emu.com/mediawiki/index.php/VBIInfo" > VBI
432
signal</ a > , and must be converted to plain text. This must be added to the
433
Theora meta data</ li >
434
</ ul >
435
436
< p > The metadata for chapters and stop frames has the form "chapter:
437
& lt; chapter-no& gt; ,& lt; first-frame& gt; -& lt; last-frame& gt; " and stop frames are
438
"stop: & lt; frame-no& gt; ". For example: </ p >
439
440
< pre > chapter: 0,1-360 chapter: 1,361-4500 chapter: 2,4501-9450 chapter:
441
3,9451-18660 chapter: 4,18661-28950 chapter: 5,28951-38340 chapter:
442
6,38341-39432 stop: 4796 stop: 9089 stop: 9178 stop: 9751 stop: 14818 stop:
443
14908 stop: 18270 stop: 18360 stop: 18968 stop: 24815 stop: 24903 stop: 28553
444
stop: 28641 stop: 29258 stop: 34561 stop: 34649 stop: 38095 stop: 38181 stop:
445
38341 stop: 39127 </ pre >
446
447
< p > Note that the emulated Pioneer PX-7 and Pioneer PX-V60 are virtually
448
identical, except that the Pioneer PX-7 has pseudo-stereo for its PSG. </ p >
449
450
< h2 > < a id = " settings " > 5. User Preferences</ a > </ h2 >
451
452
< p > Almost all user preferences can be set via the GUI menu and the openMSX
453
console, at openMSX run time. This is more thoroughly explained in < a
454
class = " external " href = " user.html#controlling" > the User's Manual</ a > . </ p >
455
456
< p > By using the < code > < a class = " external "
457
href = " commands.html#bind" > bind</ a > </ code > command you can create custom key
458
bindings. These bindings will also be saved as settings in your settings file
459
if you issue a < code > < a class = " external "
460
href = " commands.html#save_settings" > save_settings</ a > </ code > command. </ p >
461
462
< p > Many important settings are discussed in < a class = " external "
463
href = " user.html#controlling" > the User's Manual</ a > and there is an overview in
464
the < a class = " external " href = " commands.html" > Console Command Reference</ a > .
465
</ p >
466
467
< p > If you're a power user and want to specify commands which are executed at
468
the start of each openMSX start up, put those commands in a text file, one
469
command per line (i.e. a script) and put it in the < code > share/scripts</ code >
470
directory. You can also explicitly specify a Tcl file to be loaded and executed
471
on the openMSX command line. For this, use the < code > -script</ code > command line
472
option, which has the filename of the Tcl script as argument. </ p >
473
474
< p > If you're a power user and want to tweak where openMSX reads and writes
475
files from, you can use these hacky environment variables. Hacky, because we
476
don't really expect anyone to change them, but when the urge is stronger than yourself, do
477
so at your own risk... Be warned that they may change without notice in a next
478
release. </ p > < table class = " border_enabled " >
479
< tr > < th > variable</ th > < th > meaning</ th > </ tr >
480
< tr > < td > < code > OPENMSX_HOME</ code > </ td > < td > The user's home folder, where all
481
data will get stored that openMSX produces.</ td > </ tr >
482
< tr > < td > < code > OPENMSX_USER_DATA</ code > </ td > < td > The user's personal
483
< code > share</ code > folder, where amongst others, system ROMs are
484
searched</ td > </ tr > < tr > < td > < code > OPENMSX_SYSTEM_DATA</ code > </ td > < td > The system
485
wide < code > share</ code > folder in the openMSX installation directory</ td > </ tr >
486
</ table >
487
< p >
488
In the < a class = " internal " href = " #romlocation" > section about ROM locations</ a >
489
you get an idea about the default values of these on different platforms.
490
</ p >
491
492
< h2 > < a id = " tuning " > 6. Performance Tuning</ a > </ h2 >
493
494
< p >
495
This chapter contains some tips for tuning the performance of openMSX
496
on your system.
497
</ p >
498
499
< h3 > < a id = " opengl " > 6.1 OpenGL</ a > </ h3 >
500
501
< p >
502
As openMSX is using the SDLGL-PP < a class = " external "
503
href = " user.html#video" > renderer</ a > , it needs hardware acceleration to run at a
504
decent speed, with support for OpenGL 2.0.
505
</ p >
506
< p >
507
Getting OpenGL running hardware accelerated used to be a little cumbersome in some situations.
508
However, nowadays there is a big chance that your system already has hardware
509
accelerated OpenGL supported in the default installation of your Xorg/Wayland
510
or Windows environment.
511
</ p >
512
< p >
513
You can verify hardware acceleration on your Linux system by typing
514
< code > glxinfo</ code > on the command line. If you have everything working, this
515
command should output a line like this: < code > direct rendering: Yes</ code > .
516
</ p >
517
518
< h3 > < a id = " tuningvarious " > 6.2 Various Tuning Tips</ a > </ h3 >
519
520
< p >
521
CPU and graphics performance varies a lot, depending on the openMSX
522
settings and the MSX hardware and software you're emulating.
523
Some things run fine on a 200MHz machine, others are slow on a 2GHz
524
machine.
525
</ p >
526
527
< p >
528
If openMSX is running slow, you can try the following measures:
529
</ p >
530
< ul >
531
< li >
532
Disable the < a class = " external " href = " user.html#reverse" > reverse</ a > feature
533
(especially if the platform you're running on has a low amount of RAM), which
534
is enabled by default on most platforms: < code > set < a class = " external "
535
href = " commands.html#auto_enable_reverse" > auto_enable_reverse</ a > off</ code >
536
</ li >
537
< li >
538
Make sure there are no CPU or I/O heavy background processes is running.
539
Downloads, P2P software, distributed calculation efforts, search indexers etc. may grab
540
the CPU from time to time, leaving less time for openMSX to do its job.
541
Even if they only do so only once in a while, it may be enough to cause
542
emulation to stutter.
543
</ li >
544
< li >
545
Increase the number of frames that may be skipped (< code > set < a
546
class = " external " href = " commands.html#maxframeskip" > maxframeskip</ a > 10</ code > ,
547
for example).
548
</ li >
549
< li >
550
Use the < a class = " external " href = " commands.html#resampler" > blip resampler</ a > instead of the hq one.
551
</ li >
552
< li >
553
Emulate MSX software that uses fewer sound channels, for example MSX-MUSIC
554
(maximum 9 channels) instead of MoonSound (maximum 18+24 channels). Or run
555
simpler software altogether (e.g. MSX1 software instead of turboR software).
556
</ li >
557
</ ul >
558
559
< h2 > < a id = " hardwareedit " > 7. Writing Hardware Descriptions</ a > </ h2 >
560
561
< p >
562
There are two ways to use extra devices in your emulated MSX: you can use a
563
shipped extension (which is similar to inserting a cartridge with the device
564
into the MSX) or you can modify the hardware configuration file (the same as
565
opening the MSX and building in the device). As in the real world,
566
extensions are easier to use, but modifying the machine gives you more
567
possibilities.
568
Normal usage of machines and extensions is covered in the < a class = " external "
569
href = " user.html" > User's Manual</ a > ; this chapter tells you how you can create
570
or modify these hardware descriptions, which is a topic for advanced users and
571
definitely something very few people will (want to) do.
572
By editing the hardware configuration XML files, you can for example increase
573
the amount of RAM, add built-in MSX-MUSIC, a disk drive, extra
574
cartridge slots, etc.
575
</ p >
576
577
< p >
578
You can modify an MSX machine (e.g. to add devices) by editing its hardware
579
configuration XML file. So, let's make a copy of
580
< code > share/machines/Philips_NMS_8250.xml</ code > and put it in
581
< code > share/machines/mymsx.xml</ code > .
582
It's the config we are going to play with; our custom MSX.
583
Note: it is convenient to use the user directory (see < a href = " #romlocation" > above</ a > )
584
to store your home-made machines, instead of the openMSX installation directory.
585
</ p >
586
587
< p >
588
The easiest thing to do is to copy and modify fragments from other existing
589
configurations that can be found in < code > share/machines</ code > or
590
< code > share/extensions</ code > . For example, to add an FMPAC to the 8250, just
591
copy it from the < code > share/extensions/fmpac.xml</ code > to some place in your
592
< code > mymsx.xml</ code > file (between the < code > & lt; devices& gt; </ code > and
593
< code > & lt; /devices& gt; </ code > tags!):
594
</ p >
595
596
< pre >
597
& lt; primary slot="2"& gt;
598
& lt; secondary slot="1"& gt;
599
& lt; FMPAC id="PanaSoft SW-M004 FMPAC"& gt;
600
& lt; io base="0x7C" num="2" type="O"/& gt;
601
& lt; mem base="0x4000" size="0x4000"/& gt;
602
& lt; sound& gt;
603
& lt; volume& gt; 13000& lt; /volume& gt;
604
& lt; balance& gt; -75& lt; /balance& gt;
605
& lt; /sound& gt;
606
& lt; rom& gt;
607
& lt; sha1& gt; 9d789166e3caf28e4742fe933d962e99618c633d& lt; /sha1& gt;
608
& lt; filename& gt; roms/fmpac.rom& lt; /filename& gt;
609
& lt; /rom& gt;
610
& lt; sramname& gt; fmpac.pac& lt; /sramname& gt;
611
& lt; /FMPAC& gt;
612
& lt; /secondary& gt;
613
& lt; /primary& gt;
614
</ pre >
615
616
< p >
617
Don't forget to add the < code > fmpac.rom</ code > file to one of your < code > system_rom</ code > file pools.
618
</ p >
619
620
< p >
621
Because we changed the FMPAC from extension to built-in device, we have to
622
specify in which slot the FMPAC is residing inside the modified 8250. So, we
623
should replace the < code > slot="any"</ code > stuff, with a specified slot as you
624
can see in the above fragment.
625
The number in the < code > slot</ code > attribute of the
626
< code > & lt; primary& gt; </ code > tag indicates the
627
primary slot of the emulated MSX you're editing. In this case the second
628
cartridge slot of the NMS-8250 is used. < code > & lt; secondary& gt; </ code > means
629
sub slot. If we leave it out, the slot is not expanded and the primary slot is
630
used. If we use it like in the above example, it means that slot 1 (of the
631
< code > & lt; primary& gt; </ code > tag) will be an expanded slot. If a
632
< code > & lt; primary& gt; </ code > tag has the attribute
633
< code > external="true"</ code > , this means that the slot is visible on the
634
outside of the machine and can thus be used for external cartridges like
635
extensions and ROM software. As explained above, the parameter filename can be
636
adjusted to the name of your (64 kB!) FMPAC ROM file (note: if the file is not
637
65536 bytes in size, it won't work).
638
"balance" defines to what channel the FMPAC's sound will be routed by
639
default: in this case most of the sound goes to the left channel and a little
640
bit goes to the right channel. "sramname" specifies the file name for file in
641
which the SRAM contents will be saved to or loaded from. The saved files are
642
compatible with the files that are saved by the (real) FMPAC commander's save
643
option.
644
</ p >
645
646
< p >
647
After saving your config and running openMSX again, you should be able to get
648
the FMPAC commander with < code > CALL FMPAC</ code > in the emulated MSX!
649
</ p >
650
651
< p >
652
In a similar fashion, you can also add an MSX-Audio device
653
(< code > & lt; MSX-AUDIO& gt; </ code > , note that some programs also need the
654
< code > MusicModuleMIDI</ code > device to
655
detect the Music Module, an empty SCC cartridge (< code > & lt; SCC& gt; </ code > ),
656
etc. Just browse the existing extensions, check the Boosted_MSX2_EN
657
configuration file and see what you can find.
658
</ p >
659
660
< p >
661
Devices that contain ROM or RAM will have to be put inside a slot of the MSX,
662
using the < code > & lt; primary& gt; </ code > and < code > & lt; secondary& gt; </ code > tags
663
as demonstrated with the above mentioned FMPAC example. Other devices don't
664
need this.
665
Remember that you cannot put two devices that have a ROM in the same (sub)slot!
666
Just use a new free subslot if you need to add such a device and all your
667
primary slots are full. If a device does not need a slot, like the MSX-Audio
668
device, you can add as many as you like.
669
</ p >
670
671
< p >
672
Another thing you may want to change: the amount of RAM of the MSX: change the
673
"size" parameter in the < code > & lt; MemoryMapper& gt; </ code > device config.
674
</ p >
675
676
< p >
677
In principle all of the above mentioned things are also valid for extensions.
678
The main difference is the fact that you should use < code > "any"</ code > for the
679
slot specification as was already mentioned above. Just compare the fragment
680
above with the original FMPAC extension we based it on.
681
</ p >
682
683
< p >
684
If you understand the basics of XML, you should be able to compose your MSX now!
685
You can use the ready-made configurations in < code > share/machines</ code > as
686
examples.
687
</ p >
688
689
< h2 > < a id = " contact " > 8. Contact Info</ a > </ h2 >
690
691
< p >
692
Because openMSX is still in heavy development, feedback and bug reports are very
693
welcome!
694
</ p >
695
696
< p >
697
If you encounter problems, you have several options:
698
</ p >
699
700
< ol >
701
< li >
702
Go to our IRC channel: < a class = " external "
703
href = " ircs://irc.libera.chat:6697/#openMSX" > < code > #openMSX</ code > on
704
< code > libera.chat</ code > </ a > and ask your question there. Also reachable via < a
705
class = " external " href = " https://web.libera.chat/#openMSX" > webchat</ a > ! If you
706
don't get a reply immediately, please stick around for a while, or use one of
707
the other contact options. The majority of the developers lives in time zone
708
GMT+1. You may get no response if you contact them in the middle of the
709
night...
710
</ li >
711
< li >
712
Post a message on < a class = " external " href = " http://www.msx.org/forum/semi-msx-talk/openmsx" > the openMSX forum on MRC</ a > .
713
</ li >
714
< li >
715
Create a new issue in the
716
< a class = " external " href = " https://github.com/openMSX/openMSX/issues" > openMSX issue tracker</ a >
717
on GitHub.
718
You need a (free) log-in on GitHub to get access.
719
</ li >
720
< li >
721
Contact us and other users via one of the mailing lists. If you're a regular
722
user and want to discuss openMSX and possible problems, join our
723
< code > openmsx-user</ code > mailing list. If you want to address the openMSX
724
developers directly,
725
post a message to the < code > openmsx-devel</ code > mailing list.
726
More info on the < a class = " external "
727
href = " https://sourceforge.net/p/openmsx/mailman" > openMSX mailing lists</ a > ,
728
including an archive of old messages, can be found at SourceForge.
729
</ li >
730
</ ol >
731
732
< p >
733
For experienced users: if you get a crash, try to provide a < code > gdb</ code >
734
backtrace. This will only work if you did not strip the openMSX binary of its
735
debug symbols.
736
</ p >
737
738
< p >
739
In any case, try to give as much information as possible when you describe your
740
bug or request.
741
</ p >
742
743
</ body >
744
</ html >