New MSX Core In The Works
- NinjaWarrior
- Posts: 38
- Joined: Fri Nov 19, 2021 11:48 pm
- Has thanked: 22 times
- Been thanked: 14 times
Re: New MSX Core In The Works
I checked the colors with a real MSX 1 (SVI-728) and Molekula MSX core seems very accurate on my setup using The Maze of Galious cartridge. The gradient is not present on real MSX, purple is very accurate, so the differences pointed out seems like an emulator artifact to me. I took some photos only realizing that phone camera changed colors and they were inaccurate, so it is just my perception. I tested also F1-Spirit and some other games, and colors seems right to me using an SVI-728. Please note that other MSX 1 models may show different video outputs.
- pgimeno
- Top Contributor
- Posts: 709
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: New MSX Core In The Works
Even within the same model you can get different colours due to tolerance of components.
Converters I've written: Floppy DIM/FDI/FDD/HDM to D88, D88 to XDF, Tape SVI 318/328 CAS to WAV
- NinjaWarrior
- Posts: 38
- Joined: Fri Nov 19, 2021 11:48 pm
- Has thanked: 22 times
- Been thanked: 14 times
Re: New MSX Core In The Works
Totally true, and most MSX 1 computers are now almost 40 years old, so we can expect some variations in colors or signal output quality. Overall, I think the MSX 1 palette is fairly accurate and we talked about it in a Retrocrypta Twitch live (in which @molekula fixed "on air" the core with our suggestions regarding color palette btw).
- wark91
- Core Developer
- Posts: 334
- Joined: Sun May 24, 2020 8:34 pm
- Has thanked: 447 times
- Been thanked: 95 times
Re: New MSX Core In The Works
Thank you for your response !NinjaWarrior wrote: ↑Thu Jan 20, 2022 6:03 pm I checked the colors with a real MSX 1 (SVI-728) and Molekula MSX core seems very accurate on my setup using The Maze of Galious cartridge. The gradient is not present on real MSX, purple is very accurate, so the differences pointed out seems like an emulator artifact to me. I took some photos only realizing that phone camera changed colors and they were inaccurate, so it is just my perception. I tested also F1-Spirit and some other games, and colors seems right to me using an SVI-728. Please note that other MSX 1 models may show different video outputs.
It is great !
Re: New MSX Core In The Works
@molekula this is awesome, thanks so much. It's great to be able to load my .CAS files from the OSD now, and everything I've tried so far loads fine.
The only problem I'm having is that the cursor keys aren't working in any of the games I've tried. They work fine in the OSD, and interestingly they work in MSX BASIC, only not in the games themselves. I've tried a couple of different keyboards, but no joy so far...
Anyhow keep up the great work with this core!
The only problem I'm having is that the cursor keys aren't working in any of the games I've tried. They work fine in the OSD, and interestingly they work in MSX BASIC, only not in the games themselves. I've tried a couple of different keyboards, but no joy so far...
Anyhow keep up the great work with this core!
-
- Core Developer
- Posts: 24
- Joined: Fri Mar 12, 2021 3:54 pm
- Has thanked: 2 times
- Been thanked: 102 times
Re: New MSX Core In The Works
@vampier
@pgimeno
As for the timing of interrupts in relation to the status bit, the situation is more complicated. This would have to be implemented extra.
@aloyisus
Unfortunately, my musical hearing doesn't allow me to tell the difference. But I triedvampier wrote: ↑Tue Jan 18, 2022 1:46 am I would say that PSG sounds almost spot on now. SCC sounds good for a 1st implementation but it seems that waveforms and channels are getting mixed up or something (hard to explain)
If you want to have good test scenarios to see how accurate the core is please run Utopia demo by Dvik and JoyRex or Waves by the same people. The sound playback works great that probably means the PSG and z80 implementation are great already.
Maybe later. But I don't want to make any promises.vampier wrote: ↑Tue Jan 18, 2022 1:46 am For future requests if you can implement a 2nd cartridge slot to implement cartridge mixing (used a lot of Konami games)
If you are thinking about implementing cheats let me know I have a massive library that I can extract (I made most of the trainers that can be found in openMSX and blueMSX)
That is unlikely to happen. I have no relationship with MSX2.
@pgimeno
I looked at VDP interupt. The number of cycles can probably be adjusted relatively well. Looks like there's a missing one line in the VDP implementation.pgimeno wrote: ↑Tue Jan 18, 2022 9:45 am - The per-frame cycle count is 71136 instead of the expected 71364 in most PAL machines. That corresponds to 312x228 (lines x cycles per line) instead of the 313x228 it should be. Hopefully this will be an easy fix.
- Polling the VDP status register with interrupts disabled is always guaranteed to return the interrupt status bit set, once per frame; however, in real hardware, there's a small window of 1 to 2 cycles in which if you poll the status register, you miss the bit for the whole frame. For details see the explanation of values A and B in https://codeberg.org/pgimeno/vdptest/sr ... ESULTS.txt and the results for a TMS9129NL (tested on a Philips VG-8020/40).
As for the timing of interrupts in relation to the status bit, the situation is more complicated. This would have to be implemented extra.
@aloyisus
Does the problem persist in the latest version ? Do you have a specific game where the problem occurs ?aloyisus wrote: ↑Mon Jan 31, 2022 7:19 pm The only problem I'm having is that the cursor keys aren't working in any of the games I've tried. They work fine in the OSD, and interestingly they work in MSX BASIC, only not in the games themselves. I've tried a couple of different keyboards, but no joy so far...
Re: New MSX Core In The Works
@molekula
This specific issue was fixed a couple of releases back, thanks so much. I've raised another joystick issue on github today, but most of the .CAS games I've tried seem to be running pretty well now, with the exception of some very minor graphical issues.Does the problem persist in the latest version ? Do you have a specific game where the problem occurs ?
- pgimeno
- Top Contributor
- Posts: 709
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: New MSX Core In The Works
The first issue is quite important, as many programs (demos, most notably) depend on the exact cycle count between interrupts, and it's off by a lot. As for the second issue, don't sweat it, I don't think there's any emulator capable of getting it right, and it's only necessary for the case of developing on MiSTer and then porting the program to a real machine. That's a pretty niche case, so it's OK to leave it as is.molekula wrote: ↑Sun Mar 06, 2022 12:46 pmI looked at VDP interupt. The number of cycles can probably be adjusted relatively well. Looks like there's a missing one line in the VDP implementation.pgimeno wrote: ↑Tue Jan 18, 2022 9:45 am - The per-frame cycle count is 71136 instead of the expected 71364 in most PAL machines. That corresponds to 312x228 (lines x cycles per line) instead of the 313x228 it should be. Hopefully this will be an easy fix.
- Polling the VDP status register with interrupts disabled is always guaranteed to return the interrupt status bit set, once per frame; however, in real hardware, there's a small window of 1 to 2 cycles in which if you poll the status register, you miss the bit for the whole frame. For details see the explanation of values A and B in https://codeberg.org/pgimeno/vdptest/sr ... ESULTS.txt and the results for a TMS9129NL (tested on a Philips VG-8020/40).
As for the timing of interrupts in relation to the status bit, the situation is more complicated. This would have to be implemented extra.
Converters I've written: Floppy DIM/FDI/FDD/HDM to D88, D88 to XDF, Tape SVI 318/328 CAS to WAV
-
- Posts: 20
- Joined: Thu Nov 04, 2021 4:39 am
- Has thanked: 9 times
- Been thanked: 2 times
Re: New MSX Core In The Works
I've read that some models of MSX support MIDI out -- and there's various videos of MSX Vampire Killer playing a MIDI soundtrack during game play. Will this MSX core support MIDI out to the MT32-pi?
- pgimeno
- Top Contributor
- Posts: 709
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: New MSX Core In The Works
I don't know if there are MSX1 games that support MIDI, but there's going to be very few of them if any. Also there are at least three standards, see https://www.msx.org/forum/msx-talk/gene ... ent-328780
I don't think it's worth adding support.
I don't think it's worth adding support.
Converters I've written: Floppy DIM/FDI/FDD/HDM to D88, D88 to XDF, Tape SVI 318/328 CAS to WAV
Re: New MSX Core In The Works
I believe what you saw was WORP3 MIDPAC v2 ( https://www.worp3.com/MainPage.php ), an interface that "grabs" the I/O calls to PSG and FM chips and translate thoses into midi instruments and send then over the MIDPAC interface to an external MIDI device like Sound Canvas, so it doesn't require games to support MIDI and has a few profiles/configurations on its own... That is a proprietary implementation that would be difficult to implement from the scratch as it is not open source/open hardware as far as I know.circletheory wrote: ↑Thu Apr 14, 2022 7:00 pm I've read that some models of MSX support MIDI out -- and there's various videos of MSX Vampire Killer playing a MIDI soundtrack during game play. Will this MSX core support MIDI out to the MT32-pi?
For regular MIDI interface, MISTER MSX core is based on KdL OCM and it has MIDI over joystick port, so it is just a matter of finding a way to export that to an output pin on MiSTER that can connect to a MIDI device, but then, I think it works only with software that supports MSX TURBO-R Midi Interface, and probably is not what you are looking for.
- pgimeno
- Top Contributor
- Posts: 709
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: New MSX Core In The Works
For the record, this thread is about molekula's unofficial MSX1 core, and not about the official OCM-based MSX core.
Still, glad to hear that OCM supports Turbo-R MIDI; maybe it's worth posting a feature request issue on GitHub about adding MT32-pi support to the core.
Still, glad to hear that OCM supports Turbo-R MIDI; maybe it's worth posting a feature request issue on GitHub about adding MT32-pi support to the core.
Converters I've written: Floppy DIM/FDI/FDD/HDM to D88, D88 to XDF, Tape SVI 318/328 CAS to WAV
- Moondandy
- Top Contributor
- Posts: 535
- Joined: Mon May 25, 2020 2:14 am
- Location: Edinburgh, Scotland
- Has thanked: 32 times
- Been thanked: 102 times
Re: New MSX Core In The Works
Been having a go of this core this evening and it's working really well, being able to load the roms from the OSD is great, good effort! Is there much left to do before this can be released officially?
- pgimeno
- Top Contributor
- Posts: 709
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: New MSX Core In The Works
I think the fix is this one:
Code: Select all
diff -ru a/vdp18_pack-p.vhd b/vdp18_pack-p.vhd
--- a/vdp18_pack-p.vhd 2022-10-22 23:47:04.000000000 +0200
+++ b/vdp18_pack-p.vhd 2022-11-01 15:23:13.303453960 +0100
@@ -26,10 +26,10 @@
-- Constants for first and last vertical line of NTSC and PAL mode.
--
constant hv_first_line_ntsc_c : hv_t := to_signed(-40, hv_t'length);
- constant hv_last_line_ntsc_c : hv_t := to_signed(221, hv_t'length);
+ constant hv_last_line_ntsc_c : hv_t := to_signed(222, hv_t'length);
--
constant hv_first_line_pal_c : hv_t := to_signed(-65, hv_t'length);
- constant hv_last_line_pal_c : hv_t := to_signed(247, hv_t'length);
+ constant hv_last_line_pal_c : hv_t := to_signed(248, hv_t'length);
--
-----------------------------------------------------------------------------
Converters I've written: Floppy DIM/FDI/FDD/HDM to D88, D88 to XDF, Tape SVI 318/328 CAS to WAV
-
- Core Developer
- Posts: 24
- Joined: Fri Mar 12, 2021 3:54 pm
- Has thanked: 2 times
- Been thanked: 102 times
Re: New MSX Core In The Works
Work continues and new fixes and features have been added to the core.
- FDD support
- SYS updates
- Unloading ROM cartridge
- Change video mode PAL/NTSC
- Fixed PSG sound
- Fixed border problem on CRT
- Fixed joystick in some games
- FDD support
- SYS updates
- Unloading ROM cartridge
- Change video mode PAL/NTSC
- Fixed PSG sound
- Fixed border problem on CRT
- Fixed joystick in some games
Re: New MSX Core In The Works
@molekula
Today's release makes it an awesome and mature MSX1 core already: the PSG sound fixes, the FDD support and the NTSC/PAL switch make it an incredible machine implementation.
As others have said, I can't wait to see this on the main MiSTer repository: this is way more compatible than the old "official" MSX1/2/2+ core which is far less accurate.
This is the MSX1 core we deserve!
Today's release makes it an awesome and mature MSX1 core already: the PSG sound fixes, the FDD support and the NTSC/PAL switch make it an incredible machine implementation.
As others have said, I can't wait to see this on the main MiSTer repository: this is way more compatible than the old "official" MSX1/2/2+ core which is far less accurate.
This is the MSX1 core we deserve!
Re: New MSX Core In The Works
Thank you @molekula, Your Core is very welcome.
An accurate Core with lots of features is so nice for users and fans of old hardware to experience and also interesting for those who would like to see how the old hardware performed. You've given us addons as well
An accurate Core with lots of features is so nice for users and fans of old hardware to experience and also interesting for those who would like to see how the old hardware performed. You've given us addons as well
- Chilli_Vibes
- Posts: 129
- Joined: Sat Mar 12, 2022 4:47 pm
- Has thanked: 53 times
- Been thanked: 33 times
Re: New MSX Core In The Works
Awesome core, loads every rom file I have thrown at it.
For CAS files, do we need to close the "" ?
For example,
cload"-"
Or can we get away with
cload"-
I know some are bload, or even run. I just can't find the " symbol, I have tried every key combo I can think of, so for now I am doing the CTRL+F2 to load cas files.
For CAS files, do we need to close the "" ?
For example,
cload"-"
Or can we get away with
cload"-
I know some are bload, or even run. I just can't find the " symbol, I have tried every key combo I can think of, so for now I am doing the CTRL+F2 to load cas files.
- pgimeno
- Top Contributor
- Posts: 709
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: New MSX Core In The Works
Two keys to the right of L, there's the apostrophe '; to get the double quote you need to press LEFT shift and apostrophe.Chilli_Vibes wrote: ↑Thu Nov 10, 2022 7:53 pm I know some are bload, or even run. I just can't find the " symbol, I have tried every key combo I can think of, so for now I am doing the CTRL+F2 to load cas files.
Don't ask me why it works with left shift only.
Converters I've written: Floppy DIM/FDI/FDD/HDM to D88, D88 to XDF, Tape SVI 318/328 CAS to WAV
-
- Top Contributor
- Posts: 468
- Joined: Sun May 24, 2020 7:17 pm
- Has thanked: 35 times
- Been thanked: 99 times
Re: New MSX Core In The Works
hi
thanks for your work !!!
how can i get this demo working ?
https://www.pouet.net/prod.php?which=91909
thanks for your work !!!
how can i get this demo working ?
https://www.pouet.net/prod.php?which=91909
CPC-Power Staff
- pgimeno
- Top Contributor
- Posts: 709
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: New MSX Core In The Works
Thanks! Any chance we can get this patch in too?
Code: Select all
diff --git a/vdp18_pack-p.vhd b/vdp18_pack-p.vhd
--- a/vdp18_pack-p.vhd 2022-10-22 23:47:04.000000000 +0200
+++ b/vdp18_pack-p.vhd 2022-11-01 15:23:13.303453960 +0100
@@ -26,10 +26,10 @@
-- Constants for first and last vertical line of NTSC and PAL mode.
--
constant hv_first_line_ntsc_c : hv_t := to_signed(-40, hv_t'length);
- constant hv_last_line_ntsc_c : hv_t := to_signed(221, hv_t'length);
+ constant hv_last_line_ntsc_c : hv_t := to_signed(222, hv_t'length);
--
constant hv_first_line_pal_c : hv_t := to_signed(-65, hv_t'length);
- constant hv_last_line_pal_c : hv_t := to_signed(247, hv_t'length);
+ constant hv_last_line_pal_c : hv_t := to_signed(248, hv_t'length);
--
-----------------------------------------------------------------------------
The correct count for PAL is 71364 and for NTSC it's 59736. That's (248-(-65))*228 and (222-(-40))*228 respectively, so I believe that 247 and 221 are incorrect and 248 and 222 are correct.
Converters I've written: Floppy DIM/FDI/FDD/HDM to D88, D88 to XDF, Tape SVI 318/328 CAS to WAV
- wark91
- Core Developer
- Posts: 334
- Joined: Sun May 24, 2020 8:34 pm
- Has thanked: 447 times
- Been thanked: 95 times
Re: New MSX Core In The Works
You could open an issue on github page to follow your request.pgimeno wrote: ↑Sun Nov 13, 2022 9:00 amThanks! Any chance we can get this patch in too?I don't know if it will interfere with other options, like V-Integer scaling; I haven't tried the patch myself. But here's a test program that you can use to check the number of Cycles/frame: https://notabug.org/attachments/0702c8d ... fbea3e5a1dCode: Select all
diff --git a/vdp18_pack-p.vhd b/vdp18_pack-p.vhd --- a/vdp18_pack-p.vhd 2022-10-22 23:47:04.000000000 +0200 +++ b/vdp18_pack-p.vhd 2022-11-01 15:23:13.303453960 +0100 @@ -26,10 +26,10 @@ -- Constants for first and last vertical line of NTSC and PAL mode. -- constant hv_first_line_ntsc_c : hv_t := to_signed(-40, hv_t'length); - constant hv_last_line_ntsc_c : hv_t := to_signed(221, hv_t'length); + constant hv_last_line_ntsc_c : hv_t := to_signed(222, hv_t'length); -- constant hv_first_line_pal_c : hv_t := to_signed(-65, hv_t'length); - constant hv_last_line_pal_c : hv_t := to_signed(247, hv_t'length); + constant hv_last_line_pal_c : hv_t := to_signed(248, hv_t'length); -- -----------------------------------------------------------------------------
The correct count for PAL is 71364 and for NTSC it's 59736. That's (248-(-65))*228 and (222-(-40))*228 respectively, so I believe that 247 and 221 are incorrect and 248 and 222 are correct.
https://github.com/tdlabac/MSX1_MiSTer/issues
- pgimeno
- Top Contributor
- Posts: 709
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: New MSX Core In The Works
Unfortunately no, I can't. I've left GitHub.wark91 wrote: ↑Sun Nov 13, 2022 11:28 am You could open an issue on github page to follow your request.
https://github.com/tdlabac/MSX1_MiSTer/issues
Converters I've written: Floppy DIM/FDI/FDD/HDM to D88, D88 to XDF, Tape SVI 318/328 CAS to WAV
-
- Core Developer
- Posts: 24
- Joined: Fri Mar 12, 2021 3:54 pm
- Has thanked: 2 times
- Been thanked: 102 times
Re: New MSX Core In The Works
I don't know what the BIOS rights are. Before the official release, I would replace the BIOS with C-BIOS, where there is no rights problem.
-
- Core Developer
- Posts: 24
- Joined: Fri Mar 12, 2021 3:54 pm
- Has thanked: 2 times
- Been thanked: 102 times
Re: New MSX Core In The Works
I've edited it in the next release.wark91 wrote: ↑Sun Nov 13, 2022 11:28 amYou could open an issue on github page to follow your request.pgimeno wrote: ↑Sun Nov 13, 2022 9:00 amThanks! Any chance we can get this patch in too?I don't know if it will interfere with other options, like V-Integer scaling; I haven't tried the patch myself. But here's a test program that you can use to check the number of Cycles/frame: https://notabug.org/attachments/0702c8d ... fbea3e5a1dCode: Select all
diff --git a/vdp18_pack-p.vhd b/vdp18_pack-p.vhd --- a/vdp18_pack-p.vhd 2022-10-22 23:47:04.000000000 +0200 +++ b/vdp18_pack-p.vhd 2022-11-01 15:23:13.303453960 +0100 @@ -26,10 +26,10 @@ -- Constants for first and last vertical line of NTSC and PAL mode. -- constant hv_first_line_ntsc_c : hv_t := to_signed(-40, hv_t'length); - constant hv_last_line_ntsc_c : hv_t := to_signed(221, hv_t'length); + constant hv_last_line_ntsc_c : hv_t := to_signed(222, hv_t'length); -- constant hv_first_line_pal_c : hv_t := to_signed(-65, hv_t'length); - constant hv_last_line_pal_c : hv_t := to_signed(247, hv_t'length); + constant hv_last_line_pal_c : hv_t := to_signed(248, hv_t'length); -- -----------------------------------------------------------------------------
The correct count for PAL is 71364 and for NTSC it's 59736. That's (248-(-65))*228 and (222-(-40))*228 respectively, so I believe that 247 and 221 are incorrect and 248 and 222 are correct.
https://github.com/tdlabac/MSX1_MiSTer/issues
-
- Core Developer
- Posts: 24
- Joined: Fri Mar 12, 2021 3:54 pm
- Has thanked: 2 times
- Been thanked: 102 times
Re: New MSX Core In The Works
Today I posted another version.
- SCC sound fix
- adjustment of the number of VDP lines
- support for two cartridges
- BIOS upload support
- firmware/Hangul ROM support
- SCC sound fix
- adjustment of the number of VDP lines
- support for two cartridges
- BIOS upload support
- firmware/Hangul ROM support
Re: New MSX Core In The Works
Thank you very much, the bios loading feature is very good. Do you happen to have a plan to develop the MSX2 core? I'm very much looking forward to MSX2 or TurboR.