Contents

Virtual MSX Help Index

To learn how to use help, press F1.

Shareware rules and registering

Introduction

Credits

Overviews

Optimising Performance

Tape Overview

Specifications Emulator

Frequently Asked Questions

Games that work

Useful Internet Addresses

MSX Character Set

Get ROM Overview

Commands

File menu

Setup menu

Edit menu

Run menu

Print menu

Options menu

Help menu

Keyboard shortcuts


Shareware rules and registering

I've been working on this emulator for over a year now. I've spent innumerable hours coding , testing, debugging, etc. and quite a bit of money on compilers, assemblers, development tools and on information on MSX.

It may be just a hobby project, but I'd like some repayment for what I've done. And I think it's worth it. I've been thinking about how to do this for quite some time. I've always hated crippleware, so that wouldn't be it. Also, my program is here to be used, not to make money on.

Virtual MSX is no where near what I want it to be. I'm thinking about starting from scrap again, and writing it completely in 32 bit code now (CPU, video, and most of the I/O already are 32 bit assembler). It'll be a MSX2 emulator for Windows 95. This has quite some advantages for speed. Yet again, I'll need a new compiler and new development tools which are quite expensive. So, the money you'll pay will be used for the project, and it'll show the interest there is for this program.

The rules are:

1.

You may use Virtual MSX for 30 days for free. After this, you'll have to pay to continue to use it.

2.

The fees are at least £10 or 17US$ or 25 NFL

3.

You may not modify, disassemble or reverse engineer the MSX.EXE executable in any way.

4.

Virtual MSX may only be distributed as the original ZIP file, with all the files included.

Transferring the money

Send the money too (using International Money Transfer or whatever):

Sean Young

Weiver 12

1546 LB  Jisp

Holland

Bank Account Number: 37 49 29 548

If you also send your Email address, I can keep you up to date about new versions.


Introduction

What's Virtual MSX ?

Virtual MSX is a MSX emulator. An emulator emulates all the hardware components so the original software can be used, including the original BIOS. This is quite a time consuming process, so this program requires a powerful PC.

Virtual MSX requires about a 486. It'll run on a 386, but not very fast. :(

From a 486DX2 66MHz and higher, it'll run just as fast as a real MSX.

You need Windows 3.1 to run Virtual MSX. Windows 3.0 with Multimedia extensions will not do. Win32s is not required.

There are some other MSX emulators, see Frequently Asked Questions for information about them.

If you want to know more about MSX, check out Toni Siira's Page for the MSX FAQ. (See Useful Internet Addresses).

Please note that Virtual MSX is Shareware. You may use it for free for 30 days, after which you must pay. See Shareware rules and registering for more information.


Credits

Thanks To...

Marius Hartland (Akuma) for the neat logo.

Sepultura for making such ace music to entertain me while I'm debugging (and all the other stuff I do in life).

Maarten ter Huurne for the first steps on finding out how the Game Master 2 SRAM works.

Marat Fayzullin for a interesting discussion on the way to implement Z80 emulation, and a not-so-interesting discussion on WinG.

Konami for making the best games in the whole world.

No Thanks To...

Microsoft for making Windows and MS-DOS so crappy.

Borland for making the worst error messages I've ever seen.

Microsoft for bugging everyone with new versions and bugging their new versions.


Tape Overview

The most popular data storing device was, in the time of the MSX1, the datarecorder. It was a tape deck, specially designed to store tape recordings. Of course, a tape is not designed to store computer data so it is very slow. A few kilobytes of memory will take about a few minutes to store or load. Fortunately, most programs were not much bigger than that.

But with a high-performance PC you do not want to wait a few minutes every time you wish to use a MSX program or game. So, Virtual MSX uses a special technique involving a tape document that acts as a tape: it contains several recordings, recordings can added or erased etc.

Saving from the MSX

In the MSX, enter the command to save too tape. A dialog box will present itself. Enter a title and a type, and select the .tap file you want the recording to be added to.

Loading from the MSX

In the MSX, enter the command to load from tape. A dialog box will present itself. Select the .tap file you want to load a recording from, select the recording you wish to load and press load. If an error occurs, the recording can be of the wrong format (try using an other command) or the recording is corrupted.

Loading and Saving from a real MSX or a real tape

In the Tape Edit dialog box, two buttons are used for this purpose: export and import. Before using these, you must connect the PCs sound card to a MSX or tape deck. A datarecorder is better than a tape deck but a normal tape deck should will be sufficient.

Connecting your PC to a real MSX

The cable that connects a MSX to a datarecorder can also be used to connect a real MSX to a PC sound card. Put the red (save) plug in the sound input socket (mic., most commonly) and put the white (load) plug in the sound output socket of your PC sound card. Make sure the other to plugs do not touch anything. Set all input and output volumes to their maximum: the louder, the better.

Connect your PC to a tape deck or datarecorder

You must connect the PCs sound output with a tape decks input, and the tape decks output with the PCs sound input. The cables required depends on the sockets of your tape deck and sound card. Your local electronics shop may be able to help you with this. Put all filters like Dolby etc. off, and set all sound output and input the their maximum: the louder, the better.

Exporting to a real MSX

Make the real MSX stand by to receive a recording. Open the Tape Edit dialog box and select the recording you wish to export and press export.

Exporting to a real tape

When the connection is complete, open the Tape Edit dialog box and select the recording you wish to export and press export. Just before starting it, press record on your tape deck. When the PC is ready, press stop on your tape deck.

Importing from a real MSX

Open the Tape Edit dialog box and select import. Select Start. Make the real MSX save the recording. When the real MSX is ready, press stop. A Add Tape Recording dialog box will present itself. Enter a title and a type, and the recording will be added to the tape file.

Importing from a real tape

First ready the PC by opening the Tape Edit dialog box and select import. Select Start. Then, load on your tape deck. When the tape deck is ready, press stop. A Add Tape Recording dialog box will present itself. Enter a title and a type, and the recording will be added to the tape file.


Optimising Performance

Screen mode

Virtual MSX has the best performance in a screen mode with 256 colours.

Windows 3.1

Use Windows Setup to set the appropriate display driver. Select the Change System Settings from the Options menu, scroll down the Display pop-up menu and find a line with "256 colors". Select it and close the Setup dialog box. Restart Windows. (If you do not find such a line, you may need to install the appropriate display driver. This is normally on a floppy disc which came with your display board. Follow your manufacturer's directions, or consult your Windows instruction book for the procedure.)

Windows 95

Use the Control Panel to change the screen mode to 256 colours.

Programs running

Be sure you have no other programs running. Disable your screen saver too, if you have one.

Windows 3.1

You should only have Program Manager and Virtual MSX running.

Windows 95

You should only have Virtual MSX and the task bar running.

Network

If your PC is connected to a network, disconnect it.

Screen Size / Update Frequency

A large percentage of the processing time is consumed while blting (=copying to the RAM of the video board) the screen of the MSX. If you increase the frequency with which the screen is updated, it'll become a lot slower. (The frequency is relative to the MSX.) Also, if the screen is enlarged, (when the window of Virtual MSX is large enough) the surface area is four times as much so it'll make a big difference.


Frequently Asked Questions

What MSX programs work on Virtual MSX ?

See Games that work.

What are .rom files ?

Most MSX games were on a cartridge, which contained a ROM IC. .rom files are binary dumps of this ROM memory. The MSX emulator loads them into memory, and emulates the cartridge. If you have some original MSX cartridges, you can make a .rom file of it using GetROM. See Get ROM Overview.

What are .dsk files ?

.dsk files are binary dumps of diskettes. Virtual MSX can emulate the disk drive via these .dsk files. Because they can reside on your hard disk, they are a lot faster than normal diskettes. Also, real diskettes cannot be sent via the Internet while .dsk files can.

Using Virtual MSX, you can make .dsk files of diskettes (or vice versa) with the Options - Disk - Disk Copy menu command.

Can I use PC diskettes in the emulator ?

You can use 2DD diskettes in the emulator, but you mustn't leave them in the drive when the MSX starts, because the bootsector contains 80x86 code, which is incompatible with MSX.  You can change the bootsector to MSX using the Options - Disk - Bootsector menu command. Also, the MSX cannot read subdirectories; only the files in the root.

Can I use MSX diskettes on my PC ?

Only the double sided diskettes (2DD).

How do enlarge the MSX screen ?

Enlarge the Virtual MSX Window. If youre running it on Windows 95 in 640 x 480 mode, you must also hide the task bar to get a larger screen.

What other emulators are there for the PC ?

fMSX, MSX4PC, CJS MSX2 emulator.

fMSX ?

fMSX is a UNIX based MSX1, 2, 2+ emulator. It's been ported to a number of platforms: MS-DOS (excellent port by Marcel de Kogel), Windows (crappy), Mac, Amiga. For UNIX, it's sources are available. This emulator is definitely worth a look. Pretty slow though (cause it's written in C to be platform independent).

MSX4PC ?

MSX4PC is a MS-DOS based emulator. It's not very fast, but a lot of software works on it. Available at MSX fairs in Holland and via MCCM (a Dutch MSX magazine).

CJS ?

Fast. This one has been written completely in Assembler. It's the only emulator that's faster than Virtual MSX. Loads of stuff doesn't work.

I have this ROM file and it doesn't work. What do I have to do ?

Well, make sure it isnt a MSX2 game. If it is a Konami game, it's probably screwed. Otherwise, try using it with fMSX with different options. If you get it to work with the -msx (for MSX1) and -rom 2 or - rom 3 (megaROM types Virtual MSX supports), please send it to me for investigation.

Why does the emulator require more processing power than some high-quality PC games ?

The MSX emulator exactly emulates the MSX as a real one, in software. This is quite a time consuming process. Furthermore, PC games are optimised for a PC environment while MSX games are not.

Why should I pay you any money ?

*sigh*

Cuz I'm a poor student, and I need money for a new compiler. (For the new version of Virtual MSX... :-) )

Why ? Why ? WHY ?

If you have a problem, please don't hesitate to contact me.

E-mail: syoung@cs.vu.nl


Games that work

All MSX1 games are supposed to work correctly.

All Konami MSX1 games have been checked, and they operate correctly.

The SRAM of the Game Master 2 is also emulated. To use this SRAM, select the ROM file of The Game Master 2 in cartridge A, and the game you wish to use with in cartridge B. Now, the SRAM is emulated, and is stored and opened from the file GMASTER2.RAM in the same directory as The Game Master 2 ROM file.

You can find more information about The Game Master 2 and it's ROM file at my homepage http://www.cs.vu.nl/~syoung/.

Virtual MSX only emulates the Konami type megaROMs. Thus, in theory all the MSX1 games that work with the -msx and -rom 0 / 2 / 3 switches with fMSX, should also work on Virtual MSX.

List of megaROM games that do not work (wrong MegaROM mapper type)

Fantasy Zone 1

Fantasy Zone 2

Hylide 3

Super Laydock

Dragon Slayer 4

Valis (Fantasy Soldier)

Of course, I cannot guarantee this is a complete list. If you have a MSX1 game ROM file that works with fMSX, and does not work with Virtual MSX and is not in this list, please send it to me for investigation.


Specifications MSX emulator

These are is the technical specifications of the differences between the original and the emulated components of the MSX emulator. Unless stated otherwise, the component emulates all documented features correctly (in theory).

CPU

The CPU only emulates the H and N flag correctly after an instruction that can be followed by a DAA.

All known undocumented instructions are emulated. (See my homepage at URL: http://www.cs.vu.nl/~syoung/ for a list.)

Video

Sprite collision is only calculated when the screen is updated.

First illegal sprite is only calculated if Display Illegal Sprites is off (see Setup Screen Output command) and when the screen is updated.

The screen cannot be modified while being constructed. Thus, for example, multiple coloured sprites are not possible by changing the sprite's colour frequently while the screen is constructed.

Tape

Tape emulation can only be achieved trough the MSX BIOS and not trough the PPI or PSG.

Sound

There is no sound output (as yet), but all registers are emulated correctly, so no program can fail because lack of sound output.

Keyboard

Not all combinations of keys are possible. This is a limitation of keyboard hardware and driver. A MSX has similar limitations, but different.

Memory

Slot 0 contains the BIOS

Slot 1 contains cartridge A

Slot 2 contains cartridge B

Slot 3 contains RAM (not a memory mapper, because it is a MSX1 emulator)

The DISK BIOS (BDOS) can reside in slot 2 or 3.

When the emulator is started, the RAM is cleared and if the emulator is reset, the memory remains intact


Useful Internet Addresses

You can contact me (the author of Virtual MSX) with Email at: syoung@cs.vu.nl

World Wide Web

http://www.cs.vu.nl/~syoung/

My own page. Information on Virtual MSX, Undocumented features of Zilog Z80 and Konami Hardware. Tips on Konami games.

http://www.freeflight.com/fms/MSX/

Marat Fayzullin's page. His fMSX emulator, general information on MSX and more.

http://msx.bnc.nl/msx/

The CJS emulator. You can also download some technical documents.

http://www.il.ft.hse.nl/MSX/

The MSX HomePage by Wiebe Weikamp. Loads of stuff. Excellent site.

http://www.xs4all.nl/~sandervn/msx.html

Sander van Nunen's MSX page. Loads of links. A good place to start as a introduction to MSX on the internet.

http://www.sci.fi/~tonisra/msx.html

MSX FAQ by Toni Siira.

FTP Sites

ftp://ftp.saitama-u.ac.jp/pub/msx/

Archive in Japan of MSX-ML. It mirrors komkon, irkutsk, funet and some stuff. It's always pretty fast.

ftp://altair.komkon.com/pub/MSX/

Marat's archive in the USA. .rom & .dsk files and fMSX. Good archive. It's replaced stargate.imagine.com (so that's dead now!).

Newsgroups

news:comp.sys.msx

Most commonly used newsgroup for MSX. As most newsgroups, it usually contains a load of crap, but it's interesting for people new to MSX.


MSX Character Set

The MSX character set differs from the Windows ANSI character set. The characters defined by ASCII (character 32 through 126) are the same. The last column shows the ANSI character Virtual MSX replaces the MSX character with when printing or copying text to the clipboard. If this column shows nothing, the character is replaced by a space.

Dec	Hex	Char	ANSI replace

0	0

1	1

2	2

3	3

4	4

5	5

6	6

7	7	·

8	8

9	9

10	A

11	B

12	C

13	D

14	E

15	F	¤

16	10

17	11

18	12

19	13

20	14

21	15	+

22	16	|

23	17	—

24	18

25	19

26	1A

27	1B

28	1C	×

29	1D

30	1E

31	1F	+

32	20

33	21	!

34	22	"

35	23	#

36	24	$

37	25	%

38	26	&

39	27	'

40	28	(

41	29	)

42	2A	*

43	2B	+

44	2C	,

45	2D	-

46	2E	.

47	2F	/

48	30	0

49	31	1

50	32	2

51	33	3

52	34	4

53	35	5

54	36	6

55	37	7

56	38	8

57	39	9

58	3A	:

59	3B	;

60	3C	<

61	3D	=

62	3E	>

63	3F	?

64	40	@

65	41	A

66	42	B

67	43	C

68	44	D

69	45	E

70	46	F

71	47	G

72	48	H

73	49	I

74	4A	J

75	4B	K

76	4C	L

77	4D	M

78	4E	N

79	4F	O

80	50	P

81	51	Q

82	52	R

83	53	S

84	54	T

85	55	U

86	56	V

87	57	W

88	58	X

89	59	Y

90	5A	Z

91	5B	[

92	5C

93	5D	]

94	5E	^

95	5F	_

96	60	`

97	61	a

98	62	b

99	63	c

100	64	d

101	65	e

102	66	f

103	67	g

104	68	h

105	69	i

106	6A	j

107	6B	k

108	6C	l

109	6D	m

110	6E	n

111	6F	o

112	70	p

113	71	q

114	72	r

115	73	s

116	74	t

117	75	u

118	76	v

119	77	w

120	78	x

121	79	y

122	7A	z

123	7B

124	7C	|

125	7D

126	7E	~

127	7F

128	80	Ç

129	81	ü

130	82	é

131	83	â

132	84	ä

133	85	à

134	86	å

135	87	ç

136	88	ê

137	89	ë

138	8A	è

139	8B	ï

140	8C	î

141	8D	ì

142	8E	Ä

143	8F	Å

144	90	É

145	91	æ

146	92	Æ

147	93	ô

148	94	ö

149	95	ò

150	96	û

151	97	ù

152	98	ÿ

153	99	Ö

154	9A	Ü

155	9B	¢

156	9C	£

157	9D	¥

158	9E

159	9F	ƒ

160	A0	á

161	A1	í

162	A2	ó

163	A3	ú

164	A4	ñ

165	A5	Ñ

166	A6	ª

167	A7	º

168	A8	¿

169	A9

170	AA	¬

171	AB	½

172	AC	¼

173	AD	¡

174	AE	«

175	AF	»

176	B0	Ã

177	B1	ã

178	B2

179	B3

180	B4	Õ

181	B5	õ

182	B6

183	B7

184	B8

185	B9

186	BA	¾

187	BB

188	BC

189	BD	‰

190	BE	¶

191	BF	§

192	C0

193	C1

194	C2

195	C3

196	C4

197	C5

198	C6

199	C7

200	C8

201	C9

202	CA

203	CB

204	CC

205	CD

206	CE

207	CF

208	D0

209	D1

210	D2

211	D3

212	D4

213	D5

214	D6

215	D7

216	D8

217	D9	‡

218	DA

219	DB

220	DC

221	DD

222	DE

223	DF

224	E0

225	E1	ß

226	E2

227	E3

228	E4

229	E5

230	E6	µ

231	E7

232	E8

233	E9

234	EA

235	EB

236	EC

237	ED	Ø

238	EE

239	EF

240	F0

241	F1	±

242	F2

243	F3

244	F4

245	F5

246	F6	÷

247	F7

248	F8	°

249	F9	•

250	FA	–

251	FB

252	FC

253	FD	²

254	FE

255	FF


Get ROM Overview

GetROM is a MSX binary program that works under BASIC. You can save the ROM BIOS, Disk BIOS (BDOS), and external cartridges with it.

Originally it was designed to save the BIOS and BDOS, so that the emulator can be used. I've been trying to get the copyrights of the ROMs, but I've received no response so far (not even a rejection !). So, screw ASCII and or Microsoft, and I've included the ROMs in the package.

If you want to save a cartridge ROM, you must insert it when the MSX is turned on. This may cause damage to the MSX or Cartridge. I've done it millions of times, you just have to insert it straight and fast. But you can't sue me if smoke comes out of your MSX, as I won't take any responsibility.

If you have a disk drive on your MSX

You can find the GETROM.BIN in the directory where you've installed Virtual MSX. Copy it to a diskette. (Make sure it's formatted and empty) Run it on the MSX (type: BLOAD GETROM.BIN",R). You can save it now.

If you don't have a disk drive on your MSX

The connect the MSX to the PC (see Tape Overview), and first export the GetROM program (works), and Import the ROM.

Type the following on your MSX:

BLOAD "CAS:",R

Now, select Options - Export menu command.

When the program is transferred, select the Options - Import menu command.

Save the ROM file on your MSX and pray...


File menu

The File menu offers commands to create, open, save, etc. Virtual MSX Setup files. You can use the setup files to save or restore all the options set via the Setup menu.

The setup document is intended to store specific settings for a specific MSX program, so you do not have to set the options manually every you change a program.

Commands

New	Restores all options to their default. Asks to save changes if necessary.

Open...	Allows you to open a setup file. Asks to save changes if necessary.

Save	Saves the options to the current file. Asks for a filename if is no current filename. (The title bar of Virtual MSX shows the current file or [untitled] if none.)

Save As...	Saves the options to a different filename. Asks for the new filename.

Exit	Exits Virtual MSX, asks to save changes.

1, 2, 3, 4	Opens the specified filename.


Setup menu

The Setup menu contains commands to change the behaviour of the MSX emulator.

Commands

Cartridges...	Set the ROM Cartridges virtually inserted' in the MSX. You can also set the amount of memory and turn disk emulation on or off.

Screen Output...	Set the frames per second rate and turn display of illegal sprites on or off.

Keyboard...	Set the MSX keys not on the PC keyboard.

Colours...	Set the 15 MSX Colours.

Joystick...	Assign PC joysticks to the MSX, turn autofire on or off and set rate.

Disk...	Set PC diskdrives or .dsk files assigned to MSX diskdrives.

Comments

The disk command is unavailable if disk emulation is turned off with the Cartridges command.

There are only four sprites allowed on a row. If there are more, they are not displayed and called illegal sprites'. This causes sprite flickering.

The autofire operates just like a REN-SHA-TURBO: it only has effect on the spacebar and the first button of every joystick.

.dsk files are binary dumps of disks you can make with the Disk Copy command from the Options menu. Because they can remain on your hard disk, they are a lot faster than real disks.


Edit menu

Use the edit menu to copy the MSX screen to the clipboard or paste text from the clipboard into the MSX.

Commands

Paste	Paste text from the clipboard into the MSX. The text is virtually retyped, so it may take a while.

Mark Area	You can select an area of the MSX screen to copy. The MSX is paused (use F12 or the Resume command from the Run menu to resume the MSX).

Copy	Copies the screen or the selected area to the clipboard. This command will show the type that is copied (see below).

Text as Bitmap	Set copying bitmap when the MSX is in text mode on or off.

Comments

By default, Virtual MSX copies text when the MSX is in text mode and a bitmap when the MSX isn't. You can tell what type of data Virtual MSX will use by looking at the Copy command: the type is put after it (it's Copy Text or Copy Bitmap). If the MSX is in text mode you can copy a bitmap by setting the Text as Bitmap option.


Run menu

Use the run menu to control the MSX processing.

Commands

Start / Stop	Starts or stops the MSX.

Pause / Resume	Pauses or resumes the MSX.

Reset	Resets the MSX.

Comments

After a reset, the RAM will remain intact. After stopping and restarting the MSX, the RAM will be wiped. Also, new cartridge settings can only take effect after restarting.

The reset command is the emulators equivalent of the reset button.

The start / stop command is the emulators equivalent of the on / off button.


Print menu

When the MSX prints something, the data is stored in the printer queue. Use the print menu to perform operations on the printer queue.

Commands

Save Printer Queue...	Save the printer queue as a text file. You can select different file types.

Delete Printer Queue	Flushes the printer queue.

Set Fonts...	Set the fonts used for formatted text printer emulation.

Comments

When you save the printer queue, you can select one of the following types:

Write File	The printer queue is parsed using Philips NMS 1431 escape codes. Pictures and formatted text are converted.

Text File	All escaped codes and pictures are deleted, the remaining text is saved as ANSI text file.

Raw File	The printer queue is stored in a binary file.

Except when you save to a raw file or make a raw print, the MSX Character set is converted to the ANSI character set. There are a number of characters in the MSX set which are not in the ANSI set, which are replaced by spaces. See MSX Character Set for a complete list.

The status bar shows whether there is anything in the printer queue. PRINT' will be highlighted.


Options menu

Commands

Process background	If this options is set, the MSX emulator will continue to run if Virtual MSX is in the background (Window inactive).

Confirmation...	Set confirmations on or off

Tape Edit...	Edit .tap files. Add, Import, Export, Delete, etc. recordings from a .tap file. See Tape Overview for more information on .tap files.

GetROM - Export...	Exports the GetROM program to a real MSX via Wave Out / tape in.

GetROM - Import...	Imports a .rom file saved by the GetROM program on a real MSX.

Disk - Copy...	Copies a .dsk file to real diskette or vice versa, and from real diskette to another real diskette.

Disk - Format...	Formats a disk MSX format.

Disk - Bootsector...	Changes the bootsector from a disk to a MSX bootsector.

Comments

See Get ROM Overview for more information on GetROM.

If you use a PC formatted 3.5" 2DD diskette with Virtual MSX, it will work, but if you leave it in the drive when the MSX starts up, it'll crash. This is because the bootsector contains Intel machine language and not Zilog Z80 (that's the MSX CPU...).

Disk Format only quick-formats a disk. Use another File Manager or whatever to format the disk completely.


Help menu

Commands

Contents	Displays help contents page

Search for Help on..	Searches help

About... 	Displays version and copyright information


keyboard shortcuts

Keyboards Shortcuts

All keys are passed to the MSX, except any combination with ALT and F9, F10, F11 and F12.

Help Contents command	ALT+F1

Edit Copy command	ALT+C

Edit Paste command	ALT+V

Options Tape Edit command	F10

Setup Screen Output command	F11

Run Start or Stop command	SHIFT+F12

Run Pause or Resume command	F12

Run Reset command	CTRL+F12