Hello,
for those who don't know, the recently released Game & Watch (Mario & Zelda) can be hacked to run a modified system allowing to play several systems !
But MSX was no in this list ... So as I'm a developper I started porting fMSX on this console, I had some results quite quickly but when I started implementing sound support, I realised how bad sound emulation was in term of result, the sound had nothing to do with the real FM-PAC and SCC sound ... So I decided to change to a better emulator, I had choice between blueMSX which is quite old now but not that bad, and openMSX which is the best one I guess (I didn't play that much with MSX emulators as I prefer to play my real MSX computers ). The problem with the G&W is that there is very little RAM : about 1.2 MB that has to hold both code (that can't be run directly from flash as it's too slow) and used program ram. Moreover the CPU is not that powerful ... For various reasons, I've decided to go with blueMSX (mainly because it's in C code as openMSX is mainly in C++ and I've not much experience with C++), and after hours of works, I now have something running quite well
You can see the result here : https://www.youtube.com/watch?v=oIzmozKwYuA
One other limitation of the G&W is its flash size ... The Mario version has a 1MB flash (less than 2 MSX disks oO ) and Zelda one has 4MB of flash ... So the hack itself is often done with a flash memory change ! 16MB replacement flash are relatively easy to install and are cheap, 64MB replacement chips are a better option but are harder to install as it require hot air soldering, and there are some 128 and 256MB flash chip that are even harder to solder as it requires an adaptor to be installed in the G&W, moreover these 128/256MB flash chips are quite hard to find and quite expensive. So as the flash size is also limited, I've added a compression feature for MSX disks (basically I compress using lzma each track and I have a table at the begining of the file with offset for each track, on the emulator side, I just decompress the requested track when needed and pass data for requested sector). I've not done it yet for roms as compression and decompression has to be handled differently for each mapper type.
Now the few things it's missing to be perfect :
- Due to some shortcut I've taken in audio implementation, the speech parts are not correct, I may solve that later
- The sound is ok when running at 50Hz but there are some glitches when running at 60Hz, it's not clear to me yet why I have this problem
- As you know, there are a lot of different keys used by MSX games, some are using shift, some are using n, some are using function keys, ... I'd like to add a database of what is the key configuration for each game so player will not have to deal with this
- Some games require to press the ctrl key at startup to disable second fdd to free some additional ram, as I know that I'll never use a second FDD in my emulation, I'd like to make this automatic. The most versatile option would be to patch bios files on the fly to always disable 2nd FDD, but it's not something I'll do in a close future as I'd have to understand where in bios file this check is done to be able to patch the bios files ...
For those interested in playing with that, source code is available in a branch of official repository for now : https://github.com/olderzeus/game-and-watch-retro-go/tree/bl... and I'm working with the maintainer so he merge it in main branch.
If you have questions about all this, feel free to ask ;)
MSX emulator on hacked Game & Watch
Wow! Cool! Very impressive. I like this!
awesome! now I have reason to buy one!
Hacking this console is quite complex (it requires good software compilation capabilities and some good soldering skills to change the flash chip), if some people are interested, I may sell some ready to play G&W hacked consoles !
very nice!
Like... what?? This is so cool. Keep it up. Super impressive!
It reminds me of msxDS but in less convenient.
https://www.youtube.com/watch?v=TD_yf1x6Pc0
Thanks guys !
Too bad I can't edit first post to update things that will change in future
Anyway with the help of some guys here, I managed to find where to patch the disk bios so the computer acts like if it was started with ctrl key pressed It was added in my development git : https://github.com/sylverb/game-and-watch-retro-go/tree/blueMSX and should go to official repository later next week :)
Some updates :
I've made some improvements regarding video sync frequency and audio management,
I now have added (default) automatic vsync freq, meaning that if a game is forcing VDP to 50 or 60Hz, then my core part will adapt to change the frequency. I also had a lot of audio glitches when running at 60Hz, I've found a better way to handle audio and now it's almost perfect whatever the frequency is, I still have some minor audio glitches but I should be able to solve this soon. When it'll be perfect, I'll make these updates public !
Now I have a question regarding blueMSX, I discovered that YS2 HDD version with better sound is available here https://github.com/bladeba/MSX/tree/master/Enhanced%20Games/... I'd love to run this on the G&W, but I didn't find the proper way to run this on bluemsx or even openMSX (the mount directory as disk is not working as it seems not to support more than 720kB of data). here there is a big dsk image http://sharksym.egloos.com/5366811 but it has to be loaded with mmcsd. What are the options to load this and play this on blueMSX ?
In openMSX, you need to create a HDD image with the diskmanipulator
, and put MSX-DOS2/COMMAND2.COM on it and also import the files with diskmanipulator import
...
That link to the 'big disk image' doesn't work for me, but if you have one, you can try it with the IDE extension in openMSX and the -hda command line option to select it as harddisk.
Thanks Manuel for your answer,
for some reason the page with hdd image has been deleted, I still have a tab with it opened and the address is correct, but if I open a new tab with same address, I have an error in Korean. Anyway I managed to run the hdd image using a turbo-r computer (on others it was not working, probably because I should add the MSX-DOS 2 rom) and by adding Sunrise ATA-IDE hardware, I'll try to do the same on my blueMSX emulator port (meaning that I have to add the Sunrise ATA-IDE code that I removed earlier in my cleaning to only embed needed code)