Viewing Issue Advanced Details
|ID||Category [?]||Severity [?]||Reproducibility||Date Submitted||Last Update|
|06439||DIP/Input||Major||Always||Nov 29, 2016, 18:44||Mar 28, 2018, 19:20|
|Tester||StHiryu||View Status||Public||Platform||MESS (Unofficial Binary)|
|Assigned To||Resolution||Open||OS||Windows Vista/7/8 (64-bit)|
|Version||0.179||Fixed in Version||Build||64-bit|
|Summary||06439: spec128, specpl3e: In the game Abu Simbel Profanation, the character keeps jumping all the time after start a game|
|Description||Playing Abu Simbel Profanation from World Of Spectrum (AbuSimbelProfanation(SmallCase-Different).tzx), after loading the intro is skipped, and when you start to play, the character keeps jumping all the time. Seems an input issue...|
|Steps To Reproduce||
-Start spec128 or specpl3e with the AbuSimbelProfanation(SmallCase-Different).tzx
-In the starting menu select LOADER, press intro, and in the builtin mame menu select Tape control, Play Tape
-Once the game is loaded, press 3 to play with keyboard
|Affected Sets / Systems||spec128, specpl3e|
|There are no relationsihp linked to this issue.|
Dec 1, 2016, 13:19
edited on: Dec 1, 2016, 13:35
see 'timing differences'
It has been observed that on ULA based machines, the timings may be one tstate later than normal. All timings given in this document are for "early timing"; for "late timing", simply add one to add T-state counts given. Machines based on the Amstrad gate array do not exhibit this behaviour.
The physical reason for this difference is that as the ULA heats up, it drifts from "early timing" to "late timing" due to increased thermal resistance. A machine that has been left off for some time and just switched on will always exhibit "early timing". Some emulators have a "late timing" option to switch the ULA to a "hot" state. "
I could be wrong about this game being the edge case, it might be a different edge case, but as MAME doesn't emulate *any* of the contended state issues (our Z80 core simply isn't capable of doing so with any level of accuracy) then you're going to get quite a lot of issues.
*****edit***** actually I think this one was a different issue, again a machine specific thing, but maybe not the above edge case
either way it sounds like it isn't meant to work on the spec128 or specpls3 drivers because it doesn't work on that revision of original hardware? (or any of them that used the newer ULA chip, even the later releases of the older models)
(note, there are an awful lot of games that won't work on the 128k machines if you use the 'loader' anyway, because they expect you to be in 48k basic mode, this one however looks to simply be incompatible with those machines in any mode)
Dec 1, 2016, 17:37
edited on: Dec 1, 2016, 17:40
I think that's not the problem, tried in spectrum driver (which only allows 48k) and it happens the same.
And by the way, I've forgotten to say that I've tried the tzx image with the zxspin in a 128k and works perfectly. However. this emulator has the same behaviour that mame/mess if you use the others tzx variants from WorldOfSpectrum (So only the AbuSimbelProfanation(SmallCase-Different).tzx works fine).
Dec 1, 2016, 19:12
edited on: Dec 1, 2016, 19:12
it sounds like we only emulate the 'issue 3' type ULA regardless of model (actually, more likely, we don't try to emulate any and our behavior more closely matches the issue)
either way, I don't actually think it's worth reporting bugs in the Spectrum drivers at this point, we know they're grossly inaccurate despite the simplicity of the system, and will continue to be grossly inaccurate until we have a sub-cycle exact z80 and emulation model where everything can be stalled etc. without that the timing of the system is make-believe and all bets are off.
Mar 28, 2018, 17:07
edited on: Mar 28, 2018, 19:24
|Now that ZX Spectrum emulation has been improved in the latest release, it may be a good time to note that this issue still persists in 0.196.|
Mar 28, 2018, 19:20
|right, the complex parts of the timing differences are not emulated yet, only a more effective means of doing partial updates.|