Can OpenMSX do this superimpose? (webcam + screen 0/1 text)

By andrear1979

Expert (98)

andrear1979 さんの画像

15-05-2018, 00:50

Hi guys,

I found this old Youtube video of BlueMSX. Can OpenMSX do such a superimpose? I suppose answer is "no", but then: how could one do something similar?

I understand my question may sound too broad, so I'd restrict and simplify it a bit:

  • I'm just looking for general directions, so don't feel forced to write any TCL :) (but links to docs or already-existing TCL fragments are of course welcome)
  • let's ignore solutions that modify OpenMSX C++ source code
  • let's ignore all issues about performance, framerate and video capture ("video input" could just be a raw video file, any fps would be OK)

My tentative guess:

  • enable Video9000 extension
  • type in console: set videosource Video9000
  • type in BASIC:
  • use a TCL script to write content in the video memory used by GFX9000

How would you do it? Thanks in advance for any info, comment or link you will share! Cheers,



By Vampier

Prophet (2415)

Vampier さんの画像

20-05-2018, 08:08

you can do a debug write to the video memory and overwrite color 0 but for a non graphical screen that would be hard to create.

I know openMSX can superimpose using a laser-disc but unfortunately external data-sources (like webcam/video capture card) are not supported. I believe the reason was because openMSX is multiform and there don't seem any cross platform libraries that support this feature (same goes for networking)

By Manuel

Ascended (19691)

Manuel さんの画像

20-05-2018, 08:50

openMSX can do superimpose indeed, but we have only implemented it for laser-disc use. It would be relatively easy to add support for superimpose on machines like Philips NMS 8280, but only when superimposing from an external OGV video file (like with laser-disc).

When doing superimpose on a real machine (and thus also on openMSX), the VRAM is not affected. Writing video content to VRAM is more a form of digitization than of superimposing, so I don't think that will give a desired effect. (You'll have to convert the video data to the format (with its limitations) of the VRAM, this is what a digitizer does on the real hardware too...)

So, adding this really does require some C++ coding. See also