(Video at bottom of text).
Hello. This is probably wayyy, wayyy too early and crappy looking to post about, but in case anyone is interested I would like to show a video of a system I am working on, and mention some of the ideas I have for it. Basically I wanted to play around with C++ some more after many years of mostly avoiding it and using other things like C# and Node.js. This gives me a chance to learn new C++ features and integrate easily with lots of stuff. Including libretro.
I have been watching youtube channels like Lazy Game Reviews etc. and was jealous of the vintage computer collections. I made a few visits to eBay and local thrift shops and realized it was not going to be easy to run out and start grabbing a bunch of inexpensive vintage computers that actually worked. So instead of waiting for eBay stuff I decided to try to build a _virtual_ vintage computer collection.
I have been building my own 3D Libretro front-end starting with Irrlicht Engine. The great thing about Irrlicht is that even though it is very old and not flashy, it has built in support to load several 3d model file formats. I figured out how to get MAME Libretro to load up with multiple cores running at the same time. This involves copying DLLs (lol) and some C++ templates, plus a few places that just need to be long lists of case options. Anyway I think its pretty cool being able to load up multiple MAME or other libretro cores at the same time. Obviously this has performance consequences so maybe is a bit of a gimmick in some circumstances, but it is cool. MAME is designed as a command line application and so as a libretro DLL is quite crashy. I hacked a bit on it so that I could just pass in normal MAME command lines. And after a lot of debugging to figure out where the files had to go, have been successful in loading up Coco2 and its cartridges as well as other MESS computers I tried (through my hacked MAME-libretro core).
In order to make this a truly customizable system, I found an open source BASIC interpreter called My-Basic by Wang Renxin and modified it. To make it more retro, I added line numbers, enabled GOTO line number (still have to work on that). I also added a number of commands, like REZ to load a 3D model, LINE3D for 3D lines, and EMULATE to start emulating a libretro (including MAME) system.
The demo looks like crap right now, I know. I have a lot of plans for features to add that will enable me to create a much, much more awesome demo. MAME has lua support built in. I plan to hack into my MAME-libretro core a hook into that lua script code, to run arbitrary lua script. With lua you can also read and write memory from MAME cores. So I will add a BASIC command that wraps around luascript to read and write mem, probably call it PEEK and POKE (like POKE SOME_EMULATOR, MEMADDR, BYTE or something). With this capability, it should be possible to do a number of things, such as having one MAME 80s computer controlling another one, or having a Spectrum assembly program outputting BASIC commands to draw and rotate 3D lines in my environment.
I also plan to add in the PDFium library which is Chromium's PDF renderer, and set up a 3D book page flip thing so that I can import old computer manuals and display them. I also plan to add OpenVR support.
Hello. This is probably wayyy, wayyy too early and crappy looking to post about, but in case anyone is interested I would like to show a video of a system I am working on, and mention some of the ideas I have for it. Basically I wanted to play around with C++ some more after many years of mostly avoiding it and using other things like C# and Node.js. This gives me a chance to learn new C++ features and integrate easily with lots of stuff. Including libretro.
I have been watching youtube channels like Lazy Game Reviews etc. and was jealous of the vintage computer collections. I made a few visits to eBay and local thrift shops and realized it was not going to be easy to run out and start grabbing a bunch of inexpensive vintage computers that actually worked. So instead of waiting for eBay stuff I decided to try to build a _virtual_ vintage computer collection.
I have been building my own 3D Libretro front-end starting with Irrlicht Engine. The great thing about Irrlicht is that even though it is very old and not flashy, it has built in support to load several 3d model file formats. I figured out how to get MAME Libretro to load up with multiple cores running at the same time. This involves copying DLLs (lol) and some C++ templates, plus a few places that just need to be long lists of case options. Anyway I think its pretty cool being able to load up multiple MAME or other libretro cores at the same time. Obviously this has performance consequences so maybe is a bit of a gimmick in some circumstances, but it is cool. MAME is designed as a command line application and so as a libretro DLL is quite crashy. I hacked a bit on it so that I could just pass in normal MAME command lines. And after a lot of debugging to figure out where the files had to go, have been successful in loading up Coco2 and its cartridges as well as other MESS computers I tried (through my hacked MAME-libretro core).
In order to make this a truly customizable system, I found an open source BASIC interpreter called My-Basic by Wang Renxin and modified it. To make it more retro, I added line numbers, enabled GOTO line number (still have to work on that). I also added a number of commands, like REZ to load a 3D model, LINE3D for 3D lines, and EMULATE to start emulating a libretro (including MAME) system.
The demo looks like crap right now, I know. I have a lot of plans for features to add that will enable me to create a much, much more awesome demo. MAME has lua support built in. I plan to hack into my MAME-libretro core a hook into that lua script code, to run arbitrary lua script. With lua you can also read and write memory from MAME cores. So I will add a BASIC command that wraps around luascript to read and write mem, probably call it PEEK and POKE (like POKE SOME_EMULATOR, MEMADDR, BYTE or something). With this capability, it should be possible to do a number of things, such as having one MAME 80s computer controlling another one, or having a Spectrum assembly program outputting BASIC commands to draw and rotate 3D lines in my environment.
I also plan to add in the PDFium library which is Chromium's PDF renderer, and set up a 3D book page flip thing so that I can import old computer manuals and display them. I also plan to add OpenVR support.