This is very impressive! A MSX emulator on a website.. i never thought .. when we had internet back in the nineties that this was even possible... if you think about it... what will it be in the next 10 years.. Yesterday i wend to the cinema watching a 3d movie.. in this 3d movie there was a old CRT television (with the news on it..) an that in 2D view! while i was in 3D mode! Would that be the next MSX emulator? That you put on your 3D glass and that you are sitting behind your beloved MSX?! Funny idea not?

Although very similar, FM-PAC and MSX-MUSIC standard are a bit different. AFAIK you have to activate the sound chip on the FM-PAC, for instance. Also, you may have programs that try to detect the FM-PAC in some means that will not work in a built-in MSX-MUSIC chip, as another example.

Why does this emulator run demos much smoother than openMSX and blueMSX? Is it because in a browser, it is easier to imitate the 60hz refresh rate?

Because it's cheating a bit AFAIK it adjusts the emulation speed to match the monitor refresh rate. But the author can tell you more about it.

I'm not sure if I understand what you guys mean by cheating :-)

But what WMSX does is that, by default, it auto-detects your native video frequency and always try to achieve 1:1 V-Synch, even if your host machine is 60Hz (almost all machines) and you're running an emulated PAL MSX at 50Hz. It implements a technique called "video pulldown" (without interpolation), which is what most modern TVs, for instance, do to adapt the various source video frequencies to their native frequency.
WMSX currently supports pulldown for 50, 60, 100 and 120Hz host frequencies.

Although very similar, FM-PAC and MSX-MUSIC standard are a bit different. AFAIK you have to activate the sound chip on the FM-PAC, for instance. Also, you may have programs that try to detect the FM-PAC in some means that will not work in a built-in MSX-MUSIC chip, as another example.

You think that may be some problem with WMSX or it is supposed to work that way?
Remember to DISABLE the default MSX-MUSIC Extension of you want to insert an FM-PAC cartridge to avoid conflicts on the YM-2413 ports.

You think that may be some problem with WMSX or it is supposed to work that way?
Remember to DISABLE the default MSX-MUSIC Extension of you want to insert an FM-PAC cartridge to avoid conflicts on the YM-2413 ports.

Well.. I am not sure.. But the version here on MSX.ORG is a "cracked' version. The original .DSK file can't be loaded by wMSX due to it's copy protection I guess.
I just found out that I can get ProTracker to work by first running the Editor, stopping it and then going to ProTracker itself. Then there is sound. My guess: It's a bad crack.

It would be nicer if we can get the original ProTracker Disk Image to work correctly in wMSX ;-)

Well.. I am not sure.. But the version here on MSX.ORG is a "cracked' version. The original .DSK file can't be loaded by wMSX due to it's copy protection I guess.
It would be nicer if we can get the original ProTracker Disk Image to work correctly in wMSX ;-)

I didn't even know that DSKs could carry copy protection....

tfh wrote:

I just found out that I can get ProTracker to work by first running the Editor, stopping it and then going to ProTracker itself. Then there is sound. My guess: It's a bad crack.

Maybe it assumes there is MSX-AUDIO and does not work right with only MSX-MUSIC? Does it work in a real machine with only MSX-MUSIC?

BTW tfh, its better if you report the bugs in the project issue tracking, in GitHub.

WIll do so in the future I hope you don't mind me bugging you all the time.
It's been quite some time since I have played around with MSX stuff so much and I am having quite a good time with your emulator. And not only me. I can see in the logs that quite some people are playing quite some games wih your emulator. Sometimes for multiple hours!

ppeccin wrote:

tfh wrote:

I've got a save stat file for WebMSX that sometimes does start and other times it doesn't:

BTW tfh, its better if you report the bugs in the project issue tracking, in GitHub.

Hmmm. It seems I need an account on Gitbhub to do so, which I don't have...
Anyway, it seems that the new version of the Salamander Voice ROM isn't recognized as SCC anymore, even when I give it the [KonamiSCC] tag:

Victor, please, first of all, using the latest version, try to determine if the emulator is using the correct mapper for your ROM. Put the mouse pointer at the Cartridge1 icon and a tooltip will be shown. At the end, after the file name, the mapper type being used is displayed between brackets. If that isn't [KonamiSCC], the format is not correct.

WebMSX will not recognize your ROM (or any new custom ROM) as SCC automatically. You have to force it to use the SCC format, either by putting the format hint in the file name, or by using the parameter CARTRIDGE1_FORMAT to set the correct format. I have answered this to tfh in the original thread, and now his page (with your ROM) works as expected.

Then, after you make sure the ROMs are being loaded with the correct formats, we can discuss if the emulation is not correct, or how it should be detected!

I haven't explained correclty... for your answer...
I didn't want to say that your emulator isn't correct or something similar.

Not at all... I didn't take this way. We are cool.

Victor wrote:

There are some games that use that routine to serach the SCC cartridge... I only insert in slot 1 a "SCC cartridge", direclty from the config menu "KONAMI SCC Extension Enabled in slot 1".

Can you explain the routine a bit? The "is RAM" jumps are considered success (its an SCC) or not?

Victor wrote:

You can try it with, for example, the SD Snatcher Melancholia Translation. It works with SCC+ extension, but does'nt find the normal SCC. It uses the same rutine than me.

The SCC and SCC-I are different chips, the address ranges to access the wavetable are different. Also, the SCC has no extra RAM, the SCC-I has. As I understand, SDSnatcher is meant to work with an SCC-I, not SCC. I don't know if I have the exact same version you mentioned, but the English Translation I have here only works with the SCC-I.

The SCC-I chip starts in the SCC compatibility mode, but SD Snatcher (at least the on I have) immediately switches to SCC-I mode, and if there is no SCC-I, it fails and asks "INSERT SOUND CARTRIDGE".

Victor wrote:

That routine only shows that the SCC is RAM through memory area from 9800h to 9FFFh. That's all...

Does the diskette image bundle zip file is only 5? It is not available but no more?

I don't know if I understand you question right.
But yes, currently you can load up to a 5 disk stack in each drive, plus 1 new blank disk when you ask the emulator to insert a new disk (mainly useful for creating save game disks and so, while maintaining the other disks still on the stack).

I chose 5 disks because Its extremely rare that a game uses more than 5 disks. Also, each disk being 720KB, if you load too many disks you will consume a lot of memory, and all that disks will also have to be saved in Savestates.

But I can very easily increase this number, or make it adjustable via a parameter.

But please observe that this feature is not meant to read a big archive of disks and displaying all the options for the user to select which game to play.
Its meant for actually inserting all the disks for a title, that you WILL need to switch later, like in a multi-disk game.

Do you need it to be more than 5? Please tell me about your use case, what you are trying to achieve.

"The memory area from 9800h to 987Fh behaves as RAM. The memory area from 9880h to 98FFh is write only; if you read it, it'll always return FFh."

Edit: Can you please explain your routine, and where it fails in WebMSX?

I have written incorrectly the last part of the routine, anyway I'll explain it:

LD A,02
LD (09000h),A ;select a ROM part in visible area (8000h-A000h)

LD HL,9800h
LD A,(HL) ;read in A the value of 9800h
CPL ;put in A the complementary value of A
LD (HL),A ;write that value in 9800h
CP (HL) ;compare the actual value of A with the actual value in 9800h
JR Z,isRAM ;is the same?? then in 9800h we have RAM
;is different? we have ROM
LD A,03Fh
LD (09000h),A ;select SCC part from visible area (8000h-A000h)
LD A,(HL) ;read in A the value of 9800h
CPL ;put in A the complementary value of A
LD (HL),A ;write that value in 9800h
CP (HL) ;compare the actual value of A with the actual value in 9800h
JR z,isSCC ;is the same?? then in 9800h we have RAM (we have SCC!!)
;is different? we have ROM (we haven't SCC)

Well, I did notice that none of our (Fony & Tyfoon Software) demos or programms detect the SCC correctly in WebMSX. Unless we have hardcoded to slot 1, or if we give the use the chance to select a port, none of our software gives sound in WebMSX.

will not find the SCC. You have to hit the 1 key, to tell it's there. And this only works withthe SCCI. The normal SCC won't work at all.
I also noticed btw, that both ProTrack & SCC Musixx have their data (The music data) placed 1 location to the left for some reason in WebMSX.

Well, I did notice that none of our (Fony & Tyfoon Software) demos or programms detect the SCC correctly in WebMSX. Unless we have hardcoded to slot 1, or if we give the use the chance to select a port, none of our software gives sound in WebMSX.

will not find the SCC. You have to hit the 1 key, to tell it's there. And this only works withthe SCCI. The normal SCC won't work at all.
I also noticed btw, that both ProTrack & SCC Musixx have their data (The music data) placed 1 location to the left for some reason in WebMSX.

tfh, do you know if SCCMUSIXX works on a real machine with a real SCC-I cartridge?

I have found a problem in my SCC impl, when someone tries to read-back samples values > 128 (negative values).
That is fixed (not published yet)

Now SCCMUSIXX finds the SCC and plays music in the intro, but then later inside the editor is says "NO SCC".

It appears it is trying to find ROM in the SCC cartridge... But it should not, since a real SCC-I cartridge has no ROM, and WebMSX SCC Expansion cartridge is similar, which is a SCC chip, but unlike the SCC Games, it has no ROM.

I have tested the version tfh is using, and it does not work in Blue/OpenMSX either.
Testing your version now.

Same behavior. Intro works plays the SCC. Inside the editor, it says "NO SCC".
2 different detections are being performed? One in the Intro and another in the editor???? Why?

larsthe18th, can you describe what the detection routine does? What it assumes should happen with the SCC?
I have found a problem and fixed it, but for SCCMUSICXX I still get this weird behavior.

It works if I insert a REAL SCC GAME with ROM (like SpaceManbow), but it does not work with the SCC Expansion (no ROM).
That makes me think something is wrong with the detection routine. ROM in the cartridge should not make a difference, and should not be searched for.

Well... I could be wrong here, so please don't shoot me if I am I haven't owned a piece of real MSX hardware in over 15 years now I think
But, I remember when using real MSX hardware, you had a switch on your SCC-cartridge. When you plugged it in, and the machine was in BASIC (or DOS) you switched the cart back on, meaning that also the game ROM was active again, together with some other parts maybe. Not only the SCC.

As for the SCC-Musixx & Pro-Tracker (and our Fony DemoDisks) not finding the MSX-Music & SCC, I suspect the following:

* If the software searches these chips, it won't find them (for some reason)
* If the software assumes it's in port 1 and just starts writing to those ports (intro of SCC-Musixx), it works
* If the user selects the correct port and the software starts writing to those ports (Both music editors), it works

Now the only remaining problem is that the tracking data is still shifted one position to the left
Going to replace the .WST by a zip-as-disk now to save some space Trying to keep www.file-hunter.com below 10MByte ;-) (for no specific reason...)

Exactly, the old routine only works if a SCC cartridge with ROM is inserted.
That is why the the SCC cart with switch that tfh mentions is only working if the switch is On.

The new detection routine uses a different approach, and will find the SCC with switch
no mather if its switched On or Off. It now allso find SCC-i, Flashrom-SD SCC, Konami SD-Snatcher Sound Cartridge...

/me almost feels guilty for all this bug-hunting...
@Paolo: I hope you understand that we are only reporting these issues because we are so happy with your emulator! It's really amazing to see what you have accomplished. It's so easy to use, and already has so much features!

/me almost feels guilty for all this bug-hunting...
@Paulo: I hope you understand that we are only reporting these issues because we are so happy with your emulator! It's really amazing to see what you have accomplished. It's so easy to use, and already has so much features!

If course! I am very happy with the feedback guys!
PLEASE keep reporting the problems. That only makes WebMSX better!

@ppeccin Are you aware of the early vram reading when setting the vdp address for input? If you set the address for input, but do an output instead, it will skip one address.

My god, I think you nailed it!
That passed completely unnoticed to me! I thought that this pre-read would be non observable in real scenarios, but you're right. It can affect the resulting writes if you use this undocumented and odd sequence!

I will test this right now.
Thanks SO MUCH for pointing that, even if it does not work...

So, what about FDD2 and the Traktor demos? Are they full working now? Or what is still left?

I had a (discerning) look:

Syntax Infinity (in order of appearance):

* a blink (or two) in the first part;
* garbage in the title screen (black lines, looks like remains from previous part);
* some garbage in the screen after that (face scene & before, top-left corner);
* sound: what's supposed to sound like a hat, sounds more like a snare;
* explosion scene is missing;
* credits part goes wrong, showing the next credit too early.

When this demo was released some of this stuff was problematic in either blue-/openMSX (or both) as well:
* the title screen lines/garbage;
* the missing explosion scene;
* ... (more?)

openMSX still show some garabage / 'stray pixels' on the tumbling/rotating bars scene (near the end) btw (in a way it looks worse ATM than it once did..?)

Manuel: I don't know about FDD2, but the Traktor Epas demos seems to run fine to my eyes! Bold too. IO runs quite well in the MSX1 machine if you DO NOT apply the OpenMSX patch. I don't know why but it hangs in the MSX2+ machine, any idea?

ren: I never run Syntax Infinity. Will try this one. About reverse/step back, no I haven't thought of it yet! Seems very hard to do with the current impl. Maybe have to sacrifice too much (needed) performance to achieve this. I would definitely go for other more important things first.

If ROM file isn't found in the Vampier DB, search this string in the ROM file: 3E 3F 32 00 90
Found? Then that ROM is a SCC ROM... It works with all SCC roms, except Space Manbow that includes a jump... Just an easy and usefull idea...

About reverse/step back, no I haven't thought of it yet! Seems very hard to do with the current impl. Maybe have to sacrifice too much (needed) performance to achieve this. I would definitely go for other more important things first.

Sure, more somewhat of a 'wild' suggestion.. But *if* you might consider it at some point, perhaps it could be feasible to just record every x seconds or so (and just keep a limited amount of history), so it won't be that much of a performance hit.

Updated the version on my site as well. And thanks to Lars 18th I now also have FDD#1 and the FDD#1 promo with better SCC detection routines, so ... TFH is a happy camper!
Furthermore still pleasantly surprised by this emulator (and it's maker!) Great job!

Your detection for .ROM files is working pretty well btw I added some more games to my site and only ran into one .ROM that wasn't detected propperly! Well done! Even all the SCC+ version are detected with 100% accuracy O

Is it something that can be easy fixed ? it would make me very happy.
The sound issue is not a big problem.

AxelF, IE is a very bad browser, it lacks several of the resources that WebMSX uses. It will not run properly.
Do you need to use IE for any particular reason? Why can't you switch to a more decent browser like Chrome?

Well, I had to look into some OpenMSX source code for that one, as pointed by abslide, since there is no information elsewhere about this!
It appears, at least for OpenMSX, that this cartridge does not have the RAM thing.... Just an encoding scheme for the ROM. Its just 32KB, no mapper.