Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
06439 DIP/Input Major Always Nov 29, 2016, 18:44 Mar 23, 2019, 15:56
Tester StHiryu View Status Public Platform
Assigned To AmatCoder Resolution Fixed OS Windows Vista/7/8 (64-bit)
Status [?] Resolved Driver
Version 0.179 Fixed in Version 0.208 Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary MESS-specific 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
Additional Information
Github Commit
Flags
Regression Version
Affected Sets / Systems spec128, specpl3e
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
7
User avatar
No.13448
Haze
Senior Tester
Dec 1, 2016, 13:19
edited on: Dec 1, 2016, 13:35
This I believe is one of the edge cases some emulators have to give an option to handle as the very same thing happens with certain builds of the Spectrum (even of the same model)
see 'timing differences'
http://faqwiki.zxnet.co.uk/wiki/Contended_memory

"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
http://piters.tripod.com/cassport.htm

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)
User avatar
No.13449
StHiryu
Tester
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).
User avatar
No.13451
Haze
Senior Tester
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.
User avatar
No.14890
ICEknight
Tester
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.
User avatar
No.14893
Haze
Senior Tester
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.
User avatar
No.16261
AmatCoder
Tester
Mar 23, 2019, 13:46
edited on: Mar 23, 2019, 13:49
Fixed with this commit: https://github.com/mamedev/mame/commit/178ee5c9d08e01690f8ae0708b79511dc3dd8db8

Mame emulate both issues (2/3) via Menu -> Machine Configuration -> Hardware Version. It just was wrongly inverted.
User avatar
No.16263
StHiryu
Tester
Mar 23, 2019, 15:56
Confirmed. Game runs perfect :)