Just wondering.... If someone tested the routines, does it give desired results?
Or I am I far off and just being autistic and living in my own world where it works?
Doesn't work on MSX1
Maybe this code could fail after an update of openMSX? So do you think this is a stable function?
Please be clear on why you would like to detect the emulator... As Wouter explained, the goal of perfect emulation is that it cannot be detected. So a good detection routine is an emulator flaw that should be corrected.
Well a perfect emulator cannot speedup processing, save states, save screens, pause games etc... So i don't really think that's really a reason for ignoring this option. It still should be available in the openMSX options, and default off. Like i said before, would be cool to read the openMSX debug I/O port if its available.
For me its easy to explain, I want my MSX software in debug mode running on openMSX and in release state on realMSX. While in developing stage, the final release should ignore the debug mode.
I disagree: the perfect emulator can do all these things, but the running software will not be affected by it, i.e. doesn't have a way to know whether this was done or not.
Detecting an emulator is not the same as having debug options. But these do not have to be detected in the running MSX software, do they?
ok
@WIcracks,
Which one does not work on MSX1? If you increase the quantity of checking the F flag , still negative result?
I used the minimal quantity of refresh (MSX2 works), maybe increasing the value of RFRSHQ to 16 instead of 8 might resolve in the result.
Please inform!
In my opinion an emulator can ALWAYS be detected.. Depending on CPU and VDP. The base criteria is the official documentation of the/chip. If go outside the box, it is detectable. Like undocumented opcodes or undocumented VDP registers . Not to forgot, substituted registers, for example is there are only 16 registers, try register 140... different result is not emulated correctly..... MSX1 or 2.. VDP register 1, bit 7, or VDP register 9, bit 6......... Many possibilities possible!!
If it does not work on MSX1, i will buy one and test it. I am 100% sure it will work with changing the qty of checking F state.
Note: the more simplistic the cpu or vdp the more easy it is is to detect.
Detection of TMS9928A/TMS9918A/TMS9929A is possible using refresh register, 50/60HZ,
emulation is completely different type of game.
Emulation is always detectable, in one way or another......
here you go
vg8020/00
I think exact timing on a MSX1 is a interesting thing, because a lot of MSX1 use stock chips and logic, the timing can all be slightly off versus an MSX engine (yamaha) chip.
@accumulator for all of these examples, I'd like to see a demo program to prove it is working. I think most of them are either correctly emulated or also vary between real MSX models.