Viewing Issue Advanced Details
|ID||Category [?]||Severity [?]||Reproducibility||Date Submitted||Last Update|
|06615||Graphics||Major||Always||Jun 11, 2017, 23:42||Jul 17, 2017, 01:12|
|Tester||john_iv||View Status||Public||Platform||MAME (Self-compiled)|
|Assigned To||Resolution||Open||OS||Windows 10 (64-bit)|
|Version||0.186||Fixed in Version||Build||64-bit|
|Summary||06615: scud: Scud Racer regression, now just a black screen on launch.|
As before, I use the 'scud' set to benchmark. Phil fixed it a few revs. back when it was crashing. Now however it just displays a black screen when attempting to play (fwiw, the bench results are off too if run as 'mame64.exe scud -bench 90').
|Steps To Reproduce||
1. mame64 scud
Launch scud and display demo.
|Affected Sets / Systems||scud|
Jul 17, 2017, 00:50
PPC execution is stuck on this instruction:
FFF00174 mftb r5,tbl
This issue is a side-effect of this change:
"Convert Sega Model 1 Sound Board and Z80-based Digital Sound Board to use proper UART-based serial interfaces"
The UART introduced a high-frequency clock (500KHz), which has caused the scheduling quanta to be greatly reduced. The mftb instruction requires 100 cycles to execute but due to the way it is handled in the PPC DRC, there are never enough cycles in a scheduling period for it to execute and thus advance to the next instruction.
Moving generate_update_cycles() to the end of the instruction sequence of mftb resolves the issue but I'm not familiar enough with PowerPC or MAME's DRC to be confident that this is the correct fix.
Jul 17, 2017, 01:12
Yeah, that's not correct.
Perhaps all that is required is to change the allow_exception parameter of the early call to generate_update_cycles() to false to allow the instruction to run regardless of the cycles remaining?