News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_jcgamestoy

Retro Virtual Machine v2.0.beta-1.r0 Released for Windows / Linux / MacOs

Started by jcgamestoy, 12:03, 22 December 18

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

XeNoMoRPH

QuoteSome fixes for things to come, and other fixes for things that weren't going right.
Quotev2.0 BETA-1 R7 10/07/2019

       
  • UPD765 Fix the format track overflow bug. Thanks to Francisco González for the report.
  • CPC6128 Fix the partial decoding of the IO port of the PAL chip. Thanks to Thomas Bressel for the report
  • UI Fixed that the emulator hangs when there are a "unknown" ;) machine in the machine.lson startup file
  • MACOS The App is "notarized" by Apple now!!!!, ahead of the macOs 10.15 Catalina requirements
your amstrad news source in spanish language : https://auamstrad.es

XeNoMoRPH

your amstrad news source in spanish language : https://auamstrad.es

XeNoMoRPH

your amstrad news source in spanish language : https://auamstrad.es

XeNoMoRPH

your amstrad news source in spanish language : https://auamstrad.es

megachur

I really want to congratulate the author of this emulator which is enriched from days to days of functionality. It's beautiful, it's user friendly: congratulations !!
I hope to see it soon in real !

Gryzor

This is nice... Nowadays I have a Mega Sg so no need for Sega emulation, but impressive nonetheless!

berks

Just wanted to add my congratulations to the author of the emulator. It's smooth, beautiful, user-friendly, ... a real 10/10


Enhorabona!

Skunkfish

This is a very slick application, I'm impressed.
But is there a little bit of keyboard lag compared to the real thing? I just played a little Dawn of Kernel and was struggling (more than usual).
An expanding array of hardware available at www.cpcstore.co.uk (and issue 4 of CPC Fanzine!)

SkulleateR

Hm, I played some games with keyboard on this like THRUST for example, I didn't notice any lag here (MacOS Version btw) ...

XeNoMoRPH

your amstrad news source in spanish language : https://auamstrad.es

XeNoMoRPH

your amstrad news source in spanish language : https://auamstrad.es

Ast

_____________________

Ast/iMP4CT. "By the power of Grayskull, i've the power"

http://amstradplus.forumforever.com/index.php
http://impdos.wikidot.com/
http://impdraw.wikidot.com/

All friends are welcome !

cpcitor

I tried 2.0 BETA-1 R7 (as written on the official website, why do they SHOUT the version number, that's unnecessary).

TL;DR: nice emulation quality, bad user interface that does the annoying non-necessary steps but gets the essential steps wrong. Very nice ground to build upon because of emulation quality (Z80, CRTC, etc). Urgent wish: add possiblity to disable eye candy.

Techno used?

What technology (language/environment/API) is used to create that?

This command:

nm RetroVirtualMachine | cut -f 3 -d " "  | grep -o "^[^_]*" | sort | uniq -c | sort -n | tail -n 20

     58 wl
     60 GLES2
     62 stbtt
     65 Wayland
     65 WAYLAND
     73 recff
     73 stbi
     88 lua
    106 mz
    119 z80ldr
    129 bit
    141 fold
    332 resource
    334 X11
    398 luaJIT
    464 res
    464 set
    579 glad
    819 lj
   2421 SDL


and this error message:

ERROR IN THE THREAD apps/rvm/code/rvm/controller/main.lua:261: Machine allready opened
stack traceback:
[C]: in function 'error'
apps/rvm/code/rvm/controller/main.lua:261: in function '__openCB'
code/ne/window.lua:888: in function 'saveResponse'
code/ne/window.lua:523: in function 'doEvent'
code/__bootAppThread.lua:102: in function 'doLoop'
[string "doLoop()"]:1: in main chunk


...suggests that :
* it's written with C for low-level (not C++)
* with most logic programmed in lua running on a built-in lua interpreter,
* targets OpenGL for input and output
* with OS portability provided by SDL.

Yet the visual style (resizing icons, boucing panels, etc) suggests HTML/CSS/JS/Electron stack, which it most certainly is not.

Perhaps another framework on top of that provides some middle layer?

Can anyone confirm the technology used? I could find no information on the website.

Personal opinion

Impressive work!

I ran a random conformance test from Kevin Thacker's website, one about Z80 emulation faithfulness and it fully succeeded. By comparison others like caprice32 fail.

On the annoying side

I'm not fond of eye candy. To me, moving backgrounds are silly, bouncing panels are just plain ridiculous, booming speakers are at best a sound monitoring feature.

The user experience is bad bad bad. Somehow powerful (create and configure several machines) but far too complicated, too many steps, unclear icons without tooltip).

10 clicks on 3 windows just to get to a running CPC6128!  >:( :picard2: :picard2: :doh:

It would be much better with simple quickstart buttons, one for each machine supported, that bring straight to a running machine with reasonable defaults.

On the plus side

It's really nice to have compatibility with 3 major graphical OSes.
The thing seem to pass Z80 conformance tests.

On the lacking side

I tried the Z80 assembly trace near-impossible to use. I still use arnold, it's still better for now despite important flaws.

On the side side ;-)

Some screen artifacts emulation are too much in my opinion. The "beam" option is not actually a CPC artifact. It might be perhaps an interference between the exact frequency of the CPC (observable via light from screen) vs the exact frequency of the local power source (observable via light from incandescent bulbs around). Anyway, IIRC I don't experience it. Anyway, the RGB mask was much uglier in real life: too big photophors, typically misaligned with pixels, even at an angle, and also misalignment between red, green and blur.

Conclusion

Nice work, great potential to become THE Amstrad CPC emulator.

I would use it for my tests if we could access the lua interpreter and do something interesting with it.

Anyway, to become the ultimate CPC emulator, it would have to become open-source.
Had a CPC since 1985, currently software dev professional, including embedded systems.

I made in 2013 the first CPC cross-dev environment that auto-installs C compiler and tools: cpc-dev-tool-chain: a portable toolchain for C/ASM development targetting CPC, later forked into CPCTelera.

jcgamestoy

Quote from: cpcitor on 05:29, 10 December 19
I tried 2.0 BETA-1 R7 (as written on the official website, why do they SHOUT the version number, that's unnecessary).

TL;DR: nice emulation quality, bad user interface that does the annoying non-necessary steps but gets the essential steps wrong. Very nice ground to build upon because of emulation quality (Z80, CRTC, etc). Urgent wish: add possiblity to disable eye candy.


Hi, I'm the author of this creature.


You're absolutely right about the version number, it was a big mistake to put it that way. The idea was that it will be clear that the emulator was unfinished, for the next version I'll use a "flatter" version number like v2.1.0.


As for the user interface there are people who love it madly and others who hate it deeply. I'm really glad you looked beyond that and saw the accuracy of the emulation.  :)


Quote from: cpcitor on 05:29, 10 December 19
Techno used?

What technology (language/environment/API) is used to create that?

This command:

nm RetroVirtualMachine | cut -f 3 -d " "  | grep -o "^[^_]*" | sort | uniq -c | sort -n | tail -n 20

     58 wl
     60 GLES2
     62 stbtt
     65 Wayland
     65 WAYLAND
     73 recff
     73 stbi
     88 lua
    106 mz
    119 z80ldr
    129 bit
    141 fold
    332 resource
    334 X11
    398 luaJIT
    464 res
    464 set
    579 glad
    819 lj
   2421 SDL


and this error message:

ERROR IN THE THREAD   apps/rvm/code/rvm/controller/main.lua:261: Machine allready opened
stack traceback:
   [C]: in function 'error'
   apps/rvm/code/rvm/controller/main.lua:261: in function '__openCB'
   code/ne/window.lua:888: in function 'saveResponse'
   code/ne/window.lua:523: in function 'doEvent'
   code/__bootAppThread.lua:102: in function 'doLoop'
   [string "doLoop()"]:1: in main chunk


...suggests that :
* it's written with C for low-level (not C++)
* with most logic programmed in lua running on a built-in lua interpreter,
* targets OpenGL for input and output
* with OS portability provided by SDL.

Yet the visual style (resizing icons, boucing panels, etc) suggests HTML/CSS/JS/Electron stack, which it most certainly is not.

Perhaps another framework on top of that provides some middle layer?

Can anyone confirm the technology used? I could find no information on the website.




You've been very, very close.


I use C for the low level of Opengl and for all the emulation.


Lua (more precisely LUAJIT www.luajit.org) for the rest. It's the fastest VM and it makes me very easy to add new features.


And you're also right that I don't use electron etc. I use my own intermediate layer (made in lua) for the whole user interface. In other words, all the UI is handmade and it's another of the things I have fun doing apart from making the emulator.


As for SDL I used it only for joysticks and sound. In the next version I have eliminated it completely, now I use GLFW for the joysticks and miniaudio for the sound. The management / creation of windows is done by hand because it gives me more control.


Quote from: cpcitor on 05:29, 10 December 19

Personal opinion

Impressive work!

I ran a random conformance test from Kevin Thacker's website, one about Z80 emulation faithfulness and it fully succeeded. By comparison others like caprice32 fail.

On the annoying side

I'm not fond of eye candy. To me, moving backgrounds are silly, bouncing panels are just plain ridiculous, booming speakers are at best a sound monitoring feature.

The user experience is bad bad bad. Somehow powerful (create and configure several machines) but far too complicated, too many steps, unclear icons without tooltip).

10 clicks on 3 windows just to get to a running CPC6128!  >:( :picard2: :picard2: :doh:

It would be much better with simple quickstart buttons, one for each machine supported, that bring straight to a running machine with reasonable defaults.

On the plus side

It's really nice to have compatibility with 3 major graphical OSes.
The thing seem to pass Z80 conformance tests.

On the lacking side

I tried the Z80 assembly trace near-impossible to use. I still use arnold, it's still better for now despite important flaws.

On the side side ;-)

Some screen artifacts emulation are too much in my opinion. The "beam" option is not actually a CPC artifact. It might be perhaps an interference between the exact frequency of the CPC (observable via light from screen) vs the exact frequency of the local power source (observable via light from incandescent bulbs around). Anyway, IIRC I don't experience it. Anyway, the RGB mask was much uglier in real life: too big photophors, typically misaligned with pixels, even at an angle, and also misalignment between red, green and blur.

Conclusion

Nice work, great potential to become THE Amstrad CPC emulator.

I would use it for my tests if we could access the lua interpreter and do something interesting with it.

Anyway, to become the ultimate CPC emulator, it would have to become open-source.




The central idea of the emulator (and the user interface) are the virtual machines.


It is true that you have to make many clicks to create a machine but it is a process that you only have to do once. The rest is esqueumorphism (as in the good old days of Apple). The idea is that the user knows how to use the machines remembering what he did with the original models.


Anyway you can boot a CPC6128 from the command line with a single command:


RetroVirtualMachine -b=cpc6128


As for the shader, all effects can be deactivated.


As for emulation. The public version still has some small flaws regarding the emulation of the CRTC, and also only emulates the CRTC-0.


The new version I'm working on (and that I hope to finish when real life allows me) already implements the CRTC in all its models, as well as the ASIC of the CPC+. Although in the latter I still have to do a lot of research work.


Thank you very much for your comments. And delighted to be able to answer all your questions.


Gryzor

I love the gfx filters, though I do know they're not necessarily part of the CPC experience and I only use a couple of them. They're fun!

As for the interface, indeed some things may be superfluous but they do get out of the way easily so no big deal. I really don't mind the logic of composing a machine instead of starting the emulator with a vanilla model and offering settings, though I think it could be done within a single page instead of having to go through the various steps.

Thanks for the awesome project!

cpcitor

Quote from: jcgamestoy on 18:55, 10 December 19
As for SDL I used it only for joysticks and sound. In the next version I have eliminated it completely, now I use GLFW for the joysticks and miniaudio for the sound. The management / creation of windows is done by hand because it gives me more control.

Héhé, I happened to have contributed a little to miniaudio, you can see a few commits on mine in its git history (under my real name see the corresponding issues I opened : https://github.com/dr-soft/miniaudio/issues?q=is%3Aissue+author%3Afidergo-stephane-gourichon+is%3Aclosed especially https://github.com/dr-soft/miniaudio/issues/57 ).

So, there's already a little something from me in retrovirtualmachine. ;-)


Quote from: jcgamestoy on 18:55, 10 December 19
Thank you very much for your comments. And delighted to be able to answer all your questions.

Thanks a lot for answering!
Had a CPC since 1985, currently software dev professional, including embedded systems.

I made in 2013 the first CPC cross-dev environment that auto-installs C compiler and tools: cpc-dev-tool-chain: a portable toolchain for C/ASM development targetting CPC, later forked into CPCTelera.

XeNoMoRPH

your amstrad news source in spanish language : https://auamstrad.es

Gryzor


Fessor

Is there a way to set the pixel aspect ratio to 1: 1 and / or to switch off post-processing of the image? I tried to adjust the window size to achieve a 640x400 screen and get rid of scaling effects; However, RVM represents 640x434 pixels.
I would love to have a sharp picture at RVM like at Winape.

roudoudou

My pronouns are RASM and ACE

Fessor

Quote from: roudoudou on 20:39, 29 January 20
switch to DEV mode, the icon with the hammer
And there?The displayed screen shrinks, but doesnt change anything;  postprocessing is still active and also this aspect-ratio leading to an unsharp picture.


roudoudou

My pronouns are RASM and ACE

Fessor

Quote from: roudoudou on 12:35, 30 January 20
Click the hammer...
Done that, and as i said, nothing changed. the 640x400 of the CPC are displayed as 640x434
Im on (K)ubuntu 18.04. I dont think it will look different on Windows.

roudoudou

Post processing is disabled but i guess there is still a ratio correction due to the pixel ratio of your screen. I have slightly  differents values 640x332
Note that pixels on a Real CTM are not square.


My pronouns are RASM and ACE

jcgamestoy


Not yet, in the next version I will add a option to have a 1:1 output.


Currently RVM uses the real Aspect Ratio of a cpc, (if I have not failed in my calculations) because in the analog world pixels are never square  ;)



As a curiosity, if you load the same loading screen on a ZX 48k or 128k you will see that the aspect ratio is not the same (as on real machines).


In the future version also a cpc 6128+ and a gx4000 do not have the same aspect ratio. But I'm going to add an option to disable it and another one to make the window size in integer multiples

Quote from: Fessor on 20:02, 29 January 20
Is there a way to set the pixel aspect ratio to 1: 1 and / or to switch off post-processing of the image? I tried to adjust the window size to achieve a 640x400 screen and get rid of scaling effects; However, RVM represents 640x434 pixels.
I would love to have a sharp picture at RVM like at Winape.

Powered by SMFPacks Menu Editor Mod