|クラッシュ/フリーズ||重要 (ゲーム)||解決済み||修正済み||2008-01-28 16:49||2008-01-28 16:49|
|テスター||-Misc Reporters-||担当者|| ||ソース||pkscram.cpp|
pkscram - PKすくらんぶる
|詳 細||Let it run through and the first bit with the girl in the goals and after the animal kicks the ball the girls head becomes all glitched and then the game freezes up with a buzzing sound since 0.109.|
Follow-up by couriersud: A couple remarks here:
On 0114u1 with sdlmame and gcc 4.1.2 20060928 the game will hang as described. Tested with -O0 -O1 and -O3.
Using a debug build I was able to locate at least the endless loop the game will enter:
7fa8: bra 7fa8
I suspect a gcc bug here. Between 0108 and 0114u1 there are only minor differences in the 68000 core. I backported some of the 0108 code but this did not cure the issue.
Using a build with another compiler (please no bashing) I get no hangs but slightly distorted graphics.
I have also attached the error log which contains a number of "unmapped memory writes" from addresses 0xAB2 and 0xAB4. These addresses belong to the routine drawing the graphics to the screen.
In the end it came down to an interrupt timing issue.
I was able to reproduce hangs in the following mame versions:
114u1: after 520s
108: after 818s
106: after 818s
100: after 845s
So obviously the driver never really worked.
After some debugging the following become obvious:
a) The time until a hang depends on the scanline the interrupt is fired.
b) It depends on how long the line is held active.
Further debugging showed that bit 14 of the output register is obviously acting as a vblank interrupt enable.
I have submitted the changes to mamedev. In the meantime,
I had the game up and running over 19000s game time.