OCM-PLD Pack v3.9 is out!

OCM-PLD Pack v3.9 is out!

by KdL on 24-08-2021, 01:14
Topic: Development
Tags: BIOS, KdL, OCM, SM-X, SX-2, Firmware
Languages:

Well-known and popular user KdL in OCM circles has published a new masterpiece. A much more powerful hardware for our MSX OCM and the extended SM-X and SX-2 devices.
This package includes a set of custom firmware to update the following machines.

  • 1st Gen => 1chipMSX, Zemmix Neo (KR), Zemmix Neo BR, SX-1 and SX-1 Mini/Mini+.
  • 2nd Gen => SM-X , SM-X Mini and SX-2.

OCM-PLD v3.9 [2021.08.23] [KdL's Updates!]

    Updated Switched I/O ports ($40-$4F) module to Revision 10:
  • New features dedicated to 2nd Gen machines, so SM-X and SX-2 can control Internal OPL3 and VGA Scalines.
  • Removed the signal called "ZemmixNeo" in order to make the specification less constrained to the type of machine.
  • Updated documentation in the [docs\] folder, including the "hardware patches to 2020.10.16" now summarized.
  • Updated 'mglocm.com' v2.2a (2021.08.11) in the [msxtools\mglunch\] folder.
  • Updated jic2pld converter which now allows you to auto-adapt the input files for EPCS16 and higher devices.
  • Updated and revised all the scripts to compile and collect firmware. The 'zz5_set_synthesis_seed.cmd' script is used on the 1st Gen machines to generate random variants needed to re-enter when space limits are exceeded. Using this script also allows you to find better solutions than others, thus achieving system stability.
  • New RESET model rewritten and parsed from zero. The new method improves the compatibility of external cartridges. Three actions are available: a simple click <1s for a quick reset; a long click >1s that reloads SDBIOS; a click during the initial flashing allows you to cancel SDBIOS and force the use of EPBIOS without removing the SD card.
  • New Autofire module, a function suggested by Konamiman currently only available for 2nd Gen machines, by HRA!
  • The list of special keys has been updated as usual in the 'details.txt' of the [firmware\] folder.
  • New F2 device designed by me to manage the operating states of the ESP8266 Wi-Fi BIOS implemented by ducasp.
  • Improved Wi-Fi module with Quick Receive support by ducasp, LFSR counter and some minor optimizations.
  • Improved System Timer (S1990) module with LFSR counter and reset command, based on the HRA! project. Improved and fixed RTC module by HRA! with some changes made by me like LFSR counter and rtcena signal.
  • Improved some critical counters, now they are programmed separately if XTAL is 21.47727MHz or 50.00000MHz.
  • Improved VDP wait controller, LMMV is reverted to normal speed in accordance with the current VDP update.
  • Improved VDP R#23 for the text modes and added support for TEXTQ and MULTIQ modes, by HRA!
  • Optimized turboR PCM Device with LFSR counter.
  • Optimized CMT control on 2nd Gen machines, the SCRLK key has been re-mapped as a toggle for the Internal OPL3.
  • Added Wi-Fi support for 1st Gen machines. A special USB Wi-Fi Header/Dongle with ESP-01 can then be connected to the USB port-1 of 1chipMSX, Zemmix Neo and SX-1 (the USB port-2 is used for the USB keyboard on some Zemmix Neo).
  • Fixed damaged graphics in Fighter's Ragnarök game thanks to a bug fix in VDP R#17 management, by HRA! This fix solves various issues and allows you to successfully run games with the animated Sunrise logo.
  • Separation of the T800 from the T80 thinking about the future R800 clone.
  • Restructuring of the [ocm_sm\] folder now designed to quickly managed new 2nd Gen machines.
  • Cleaned up the source code from parts of unused code and countless optimizations to reduce space.
  • The firmware list has reached a total of sixty builds with the new SX-1 Mini/Mini+, SX-2 and SM-X Mini machines.
  • Firmware interchangeability groups are now highlighted in the 'details.txt' of the [firmware\] folder.

Notes and warnings:

  • Nextor kernel is unable to flash the PLD firmware using 'pldload.com' and the machine can be BRICKED!!
  • The current 'pldflash.com' and 'smxflash.com' are the only ones to do this, be very careful when using them.
  • In case the SD card is not detected after a hard reset, simply reinsert it on the fly or hold the reset for 2s.
  • Nextor can now automatically mount the SD card even if it has not been inserted into the slot before system boot.
  • Some firmware may not be as stable as others. When necessary, I suggest trying another keyboard layout.
  • The most of Microcabin games can run better with the 'runit.com' tool, with 'ep.com' two drives are required.
  • If you experience issues using SofaRun, you may need to increase the loading delay from the game settings.
  • Most of the features of the MSX turboR have not yet been developed and are for testing purposes only. The MULU opcodes and System Timer (S1990) are no longer available on the 1st Gen machines due to the space limit reached.
  • Currently, the MIDI interface is limited to the operation of the MIDRY software and very few others.
  • Philips Music Module does not support the tMegaSD function and only works at 3.58MHz, run SETSMART -030B40 to go.
  • The main cause of instability in the 1st Gen machines is the option "Force Use of Synchronous Clear Signals". This option was introduced in OCM-PLD v2.4 and currently cannot be disabled due to running out of resources. In the 2nd Gen machines this option has been disabled and will not be used, so they are much more stable. Since this new generation does not need more space yet, the compression of the SOF has also been disabled. If necessary, it will still be possible to activate it by modifying the structure of the COF in this way:
    "output_files/ocm_sm.sof1".
  • On the 1st Gen machines the hard reset lock function does not work with cartridges due to a hardware limitation. A hardware patch can be made by isolating pin 15 of the slots from the reset button and connecting it to pin 16. This patch is not supported by firmware prior to v3.9 nor by third parties, so I do NOT recommend using it.
  • The ESP8266 Wi-Fi BIOS has NOT been integrated into EPBIOS because its full maturity has not yet been reached.

Some known issues:

  • The sprites disable and enable after three lines instead of after one line, reported by Grauw and Andre.
  • Some PSG sounds are not played accurately and sometimes the OPLL drum kit sounds too loud.
  • The 'Break' command of ESE-PS2 module do not work during the hard reset or if you unplug the keyboard at warm.
  • The current version of MSX turboR BIOS can be started with Internal Mapper 4096kB only using Nextor kernel and generates some issues with the PSG output (simply just listen to the beep sound to confirm it).
  • DIX game won't start due to INT_n inaccuracy, a temporary patch can run it by changing 00293h from C8h to 00h.
  • Internal OPL3 does not work with VGMPlay v1.3 final version but it is still possible to use VGMPlay v1.3-rc5.

Also updated:

  • OCM-EXTRA Pack v2.8
  • OCM-SDBIOS Pack v3.3

New entry:

  • ESP8266 Wi-Fi Support Pack v1.0

Relevant links:
KdL Index!
KdL on Twitter and here.

Comments (36)

By Grauw

Ascended (10070)

Grauw's picture

24-08-2021, 19:59

Great work!

Will future full turboR support only be available on Gen2 hardware? That makes sense to me, if the 1chipMSX and Zemmix Neo are restricted to the MSX2+ feature set.

I’ve ordered an SX-2 a few weeks ago. I wonder if it also has more flash memory to remove the need for the SDBIOS?

By AxelStone

Prophet (3055)

AxelStone's picture

25-08-2021, 00:15

Yes, the acutal OCM / Zemmix is full of capacity and there is no room for more extras. It's a full featured MSX2+, that it's not bad at all. With the next gen, it's expected to jump up to Turbo R, really excited to see if it can be achieved.

About improvements of the current core, very nice that old OCM / Zemmix can support WiFi, I expected to be only available in 2nd gen machines.

By KdL

Paragon (1408)

KdL's picture

25-08-2021, 10:11

Grauw wrote:

I wonder if it also has more flash memory to remove the need for the SDBIOS?

In SX-2 there is a lot of space for the internal BIOS and I am currently using Dual-EPBIOS 2x512kB. There are another 6144kB unused in the EPCS64 SRAM.

By KdL

Paragon (1408)

KdL's picture

25-08-2021, 10:17

AxelStone wrote:

... very nice that old OCM / Zemmix can support WiFi, I expected to be only available in 2nd gen machines.

It was very difficult to free up space and make decisions to put Wi-Fi support in first generation machines. It was much easier to make a Wi-Fi dongle all in all. The documentation I made explains step by step how to build it.

By SjaaQ

Master (220)

SjaaQ's picture

25-08-2021, 11:16

Thanks KdL for your ongoing efforts in improving this firmware!

By ren

Paragon (1876)

ren's picture

25-08-2021, 11:31

Awesome work/effort! And: 'ghey' Wink

By KdL

Paragon (1408)

KdL's picture

25-08-2021, 12:27

ren wrote:

Awesome work/effort! And: 'ghey' Wink

Yup! OCM's pink photo was not my choice. But you might like it if you play Vampire Killer. oO

By SjaaQ

Master (220)

SjaaQ's picture

25-08-2021, 13:02

Not sure if you are looking for feedback but I was able to build the firmware from source and flash my SX1+mini successfully. I also replaced the OCM-BIOS with the latest version. Thanks!

By ren

Paragon (1876)

ren's picture

25-08-2021, 13:51

I didn't recognize it at first, but this is the MSX Minime (for anyone wondering).

@KdL Hmm.. not sure what VK has to do with it? :) (Or perhaps I do, let's forget about it ;))

By AxelStone

Prophet (3055)

AxelStone's picture

25-08-2021, 13:41

Totally agree, thanks so much for your effort @KdL. For me, the Zemmix is probably the best MSX I've ever had with all this features implemented.

By hamlet

Scribe (3684)

hamlet's picture

25-08-2021, 14:40

KdL wrote:

Yup! OCM's pink photo was not my choice.

The Minime is part of the OCM family which has a gathering in the photo. So the update is "something for everybody" just like Elvis said. Smile

By KdL

Paragon (1408)

KdL's picture

25-08-2021, 18:29

SjaaQ wrote:

Not sure if you are looking for feedback but I was able to build the firmware from source and flash my SX1+mini successfully. I also replaced the OCM-BIOS with the latest version. Thanks!

I didn't understand why you recompiled instead of directly using the firmware I prepared for SX-1 Mini+. But that's okay anyway. Wink

By KdL

Paragon (1408)

KdL's picture

25-08-2021, 18:23

hamlet wrote:

The Minime is part of the OCM family which has a gathering in the photo. So the update is "something for everybody" just like Elvis said. Smile

Yes, I know. Mine was just a joke.
You can use a Zemmix Neo KR firmware to update it.

By KdL

Paragon (1408)

KdL's picture

25-08-2021, 18:24

AxelStone wrote:

@KdL. For me, the Zemmix is probably the best MSX I've ever had with all this features implemented.

Thank you! Running Naked in a Field of Flowers

By AxelStone

Prophet (3055)

AxelStone's picture

25-08-2021, 21:23

Just for curiosity about WiFi modulo, Which MSX software does support it? SymbOS for example should work with it?

Thanks!

By ducasp

Champion (461)

ducasp's picture

26-08-2021, 03:43

AxelStone wrote:

Just for curiosity about WiFi modulo, Which MSX software does support it? SymbOS for example should work with it?

Thanks!

It currently works with any software that is made for TCP-IP UNAPI that doesn't require raw network connections, which in my knowledge is every UNAPI software and most MSX DOS Network software. It won't work with software that expects legacy Internestor (anyway, any specific legacy Internestor software should be ported to TCP-IP UNAPI), like the Telnet client made in Turbo Pascal (but hey, I did a nice UNAPI ANSI Color Telnet client as well).

It won't work with SymbOS, SymbOS doesn't use UNAPI, it has a specific architecture that requires a Daemon to be built specifically for each adapter. When I was originally developing the Wi-Fi solution for the SM-X, I've tried to contact Prodatron (no success getting an answer) to get any information on how to do it, as at that time I couldn't find any source code for any of the Daemons (gr8net and denyonet support was made by Prodatron, accessing directly their hardware). After a few years I was made aware by a friend that the daemons source code was available but, it was too late, I really lost interest on doing it as my free time for hobbies is not like when I've made the ESP8266 firmware and the UNAPI driver and the UNAPI rom. Perhaps I will revisit this some day, perhaps someone else would be willing to do it, if so, I'll be glad to offer support for any questions regarding the design and how to access it directly (even though both the unapi driver as well as the unapi rom have their source code available on my github)

By AxelStone

Prophet (3055)

AxelStone's picture

26-08-2021, 08:22

@ducasp Thanks for the clarification. You are right, each device needs a custom mapper, when I installed it with GR8Net I needed to select that specific device. It should be nice that SymbOS could support WiFi, it's one of the most advanced software taking advantage of MSX network capabilities.

By SjaaQ

Master (220)

SjaaQ's picture

26-08-2021, 12:13

KdL wrote:
SjaaQ wrote:

Not sure if you are looking for feedback but I was able to build the firmware from source and flash my SX1+mini successfully. I also replaced the OCM-BIOS with the latest version. Thanks!

I didn't understand why you recompiled instead of directly using the firmware I prepared for SX-1 Mini+. But that's okay anyway. Wink

Because I was expecting I had to modify the VGA levels. Which I did not have to do.

By KdL

Paragon (1408)

KdL's picture

26-08-2021, 13:32

SjaaQ wrote:

Because I was expecting I had to modify the VGA levels. Which I did not have to do.

As I wrote, this package includes a set of custom firmware to update the following machines.
1st Gen => 1chipMSX, Zemmix Neo (KR), Zemmix Neo BR, SX-1 and SX-1 Mini/Mini+.
2nd Gen => SM-X , SM-X Mini and SX-2.

Therefore SX-1 Mini and SX-1 Mini+ are natively supported by OCM-PLD v3.9 and the video levels have already been changed on their firmware. So all you had to do was just install the SX-1 Mini/Mini+ firmware included in the package. Wink

You can find it in the [firmware\] subfolder. Also check the 'details.txt'.

By ducasp

Champion (461)

ducasp's picture

26-08-2021, 21:44

AxelStone wrote:

@ducasp Thanks for the clarification. You are right, each device needs a custom mapper, when I installed it with GR8Net I needed to select that specific device. It should be nice that SymbOS could support WiFi, it's one of the most advanced software taking advantage of MSX network capabilities.

Like I've said, I've lost interest on SymbOS as when I was enthusiastic about supporting it, didn't get any answer or couldn't find any reference on how to do it. So, wouldn't hold your breath waiting for it, unless someone else is willing to pick this development up, as it is very unlikely to be done by me anytime soon

By WORP3

Paladin (828)

WORP3's picture

27-08-2021, 08:51

Quote:

New RESET model rewritten and parsed from zero. The new method improves the compatibility of external cartridges. Three actions are available: a simple click <1s for a quick reset; a long click >1s that reloads SDBIOS; a click during the initial flashing allows you to cancel SDBIOS and force the use of EPBIOS without removing the SD card.

Does this mean that the reset pin on the cartridge slots are no longer directly connected to the reset switch too, or is the cartridge reset still directly connected to the switch?

By PingPong

Prophet (3767)

PingPong's picture

27-08-2021, 09:50

what are MultiQ and TextQ modes?

By KdL

Paragon (1408)

KdL's picture

27-08-2021, 16:18

WORP3 wrote:

Does this mean that the reset pin on the cartridge slots are no longer directly connected to the reset switch too, or is the cartridge reset still directly connected to the switch?

The reset pin of the 1st Gen machines is directly connected to both the delay circuit of the hard-reset button and the FPGA. In the 2nd Gen it is managed entirely by the firmware because it only connected to the FPGA and the delay circuit is simulated. So basically the 2nd Gen has better control and I can lock the cartridge reset pin along with the hard-reset button via smart commands.

By AxelStone

Prophet (3055)

AxelStone's picture

27-08-2021, 20:28

ducasp wrote:

Like I've said, I've lost interest on SymbOS as when I was enthusiastic about supporting it, didn't get any answer or couldn't find any reference on how to do it. So, wouldn't hold your breath waiting for it, unless someone else is willing to pick this development up, as it is very unlikely to be done by me anytime soon

Yes I know, it seems that SymbOS is not very active lately. I was trying to get SymbOS SDK to check it and download was down, I tried to ask to download but no answer. So finally as you say, I lost motivation to make stuff for SymbOS.

By HRA!

Champion (271)

HRA!'s picture

27-08-2021, 22:52

PingPong wrote:

what are MultiQ and TextQ modes?

MULTIQ is a clone of MULTI.
TEXTQ is a clone of TEXT.

We are currently working on making the VDP "more like the real V9958".
There are some undefined codes in the VDP screen mode specification.
In the actual VDP, even if you specify an undefined code, it will do something.
Among those undefined codes, there are codes that have the same meaning as MULTI and TEXT, and we gave them the names MULTIQ and TEXTQ.

As one of the reference materials, I am looking at the source code of the great emulator "OpenMSX".
The origin of the names MULTIQ and TEXTQ is a description in the OpenMSX source code.

Therefore, I think this is a feature that is not used in most software. Wink

By ducasp

Champion (461)

ducasp's picture

28-08-2021, 13:38

AxelStone wrote:
ducasp wrote:

Like I've said, I've lost interest on SymbOS as when I was enthusiastic about supporting it, didn't get any answer or couldn't find any reference on how to do it. So, wouldn't hold your breath waiting for it, unless someone else is willing to pick this development up, as it is very unlikely to be done by me anytime soon

Yes I know, it seems that SymbOS is not very active lately. I was trying to get SymbOS SDK to check it and download was down, I tried to ask to download but no answer. So finally as you say, I lost motivation to make stuff for SymbOS.

As far as SymbOS applications are concerned, here at msx.org I think edoz is a great person that has good knowledge and always willing to help Smile

By Pac

Scribe (6412)

Pac's picture

28-08-2021, 19:06

Awesome improvements! Thank you all. Wink My big doubt... is already the MSX-AUDIO fully implemented? Right now I don't remember if the OPL3 soundchip is compatible with OPL1. Being the OPL3 an improved version of the OPL2 (YM3526) and according to Wikipedia:

"A very closely related chip is the Y8950, or MSX-AUDIO, which was used as an MSX expansion. It is essentially a YM3526 with ADPCM recording and playback capability."

Does this mean that OPL2 (and consequently OPL3) are 100% compatible with OPL1? Or are they slighty different? I assume the ADPCM part is not.

By KdL

Paragon (1408)

KdL's picture

29-08-2021, 11:00

The ADPCM has not yet been implemented but MSX-AUDIO can already be used in Compile and other games such as DEVA. To avoid conflicts with external cartridges such as Moonsound, the OPL3 is activated via smart commands or by pressing the Scroll Lock key. This is an exclusive of 2nd Gen machines originally added by Victor Trucco.

By Pac

Scribe (6412)

Pac's picture

29-08-2021, 17:40

Thank you.

By KdL

Paragon (1408)

KdL's picture

29-08-2021, 21:03

Given the numerous requests and since there is no glossary, I am going to specify that:
- EPBIOS is the BIOS integrated in the internal SRAM memory of the EPCS circuit;
- SDBIOS is the BIOS loaded on the SD card by the user.

For the 2nd Gen I also want to specify that Dual-EPBIOS indicates that inside there are two distinct BIOSes that can be activated with DIP-SW7. In the specific case:
- DIP-SW7 = OFF is associated with the ESE-MegaSDHC kernel;
- DIP-SW7 = ON is associated with the Nextor kernel.
However in general SDBIOS has priority, so when using it you will not notice the difference between Single-EPBIOS and Dual-EPBIOS firmware and the DIP-SW7 will only act as a selector for the Internal Mapper.

By WORP3

Paladin (828)

WORP3's picture

30-08-2021, 09:10

KdL][quote=WORP3 wrote:

The reset pin of the 1st Gen machines is directly connected to both the delay circuit of the hard-reset button and the FPGA. In the 2nd Gen it is managed entirely by the firmware because it only connected to the FPGA and the delay circuit is simulated. So basically the 2nd Gen has better control and I can lock the cartridge reset pin along with the hard-reset button via smart commands.

With the new firmware what will happen with the cartridge reset pin if I hold the reset button, will it just keep the cartridge in reset? I'm asking this as I use the long reset as a anti brick mechanism inside the MIDI-PAC.

By KdL

Paragon (1408)

KdL's picture

30-08-2021, 13:57

WORP3 wrote:

With the new firmware what will happen with the cartridge reset pin if I hold the reset button, will it just keep the cartridge in reset? I'm asking this as I use the long reset as a anti brick mechanism inside the MIDI-PAC.

Long reset (>1s) keeps the cartridge RESET_n pin in the reset state until you remove your finger from the full reset button, so I don't think there are any problems with MIDI-PAC. The reset system has been fixed because the cartridge reset did not work at all prior to this release.

By HRA!

Champion (271)

HRA!'s picture

30-08-2021, 15:01

KdL wrote:

- EPBIOS is the BIOS integrated in the internal SRAM memory of the EPCS circuit;

EPCS is Serial ROM, not SRAM. Wink

By KdL

Paragon (1408)

KdL's picture

30-08-2021, 19:11

HRA! wrote:
KdL wrote:

- EPBIOS is the BIOS integrated in the internal SRAM memory of the EPCS circuit;

EPCS is Serial ROM, not SRAM. Wink

Thanks for the correction, yes indeed EPCS is a Serial EEPROM.
I was very tired when I wrote this, maybe I was sleeping. Eek!

By KdL

Paragon (1408)

KdL's picture

30-08-2021, 18:52

OCM-PLD Pack v3.9 (2021.08.23) "REPACK2"
MD5: d724f83c70aea7c32878d7da2290bc89

- Added in the alternative qsf files the line relating to the autofire.v file that was missing due to an oversight.
- No changes to the firmware.

At the suggestion of Konamiman and to avoid new unnecessary REPACKs, I have activated a new repository on GitHub in which all the advancements preceding the release of each OCM-PLD Pack will be inserted.

OCM-PLD under development @ GitHub

By WORP3

Paladin (828)

WORP3's picture

31-08-2021, 09:23

KdL wrote:

Long reset (>1s) keeps the cartridge RESET_n pin in the reset state until you remove your finger from the full reset button, so I don't think there are any problems with MIDI-PAC. The reset system has been fixed because the cartridge reset did not work at all prior to this release.

Great to hear! Good going on this new upgrade Big smile