Re: [hatari-devel] Moongame, question

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Le 25/01/2012 23:43, Laurent Sallafranque a écrit :
Hi,

I've given another try to Moongame.

The mouse doesn't move in the main menu.
The program always display : Illegal instruction 00e0 at 00000030 ->
0005D0D6
It's always the same error at the same place.

The disasm code is (I've added some comments, they may be false):

$05e6b6 : 48e7 fffe movem.l d0-d7/a0-a6,-(sp)

$05e6ba : 11f8 044f 8201 move.b $044f.w,$ffff8201.w // Video screen
memory position (High byte)
$05e6c0 : 11f8 0450 8203 move.b $0450.w,$ffff8203.w // Video screen
memory position (Mid byte)
$05e6c6 : 2e39 000d d222 move.l $dd222,d7
$05e6cc : 46fc 2700 move #$2700,sr

$05e6d0 : 0838 0000 fc00 btst #0,$fffffc00.w // Keyboard ACIA control
$05e6d6 : 6706 beq.s $5e6de
$05e6d8 : 1238 fc02 move.b $fffffc02.w,d1 // Keyboard ACIA data
$05e6dc : 60f2 bra.s $5e6d0

$05e6de : 21f9 000d d216 0118 move.l $dd216,$0118.w
$05e6e6 : 0038 0008 fa17 ori.b #8,$fffffa17.w // MFP Vector Register ???
$05e6ec : 21f9 000d d21a 0070 move.l $dd21a,$0070.w
$05e6f4 : 21c7 fa06 move.l d7,$fffffa06.w // only $fffffa07 seems to
exist ???

$05e6f8 : 46fc 2300 move #$2300,sr

$05e6fc : 4cf9 00ff 000d d22a movem.l $dd22a,d0-d7
$05e704 : 48f8 00ff 0180 movem.l d0-d7,$0180.w
$05e70a : 4cf9 00ff 000d d24a movem.l $dd24a,d0-d7
$05e712 : 48f8 00ff 01a0 movem.l d0-d7,$01a0.w

$05e718 : 7eff moveq #$ff,d7
$05e71a : 51cf fffe dbra d7,$5e71a

$05e71e : 4cdf 7fff movem.l (sp)+,d0-d7/a0-a6
$05e722 : 4e75 rts



The running trace displays :

[...]

cpu video_cyc=160290 159778@314 : 0005E71A 51cf fffe DBF .W D7,#$fffe ==
$0005E71A (F)
cpu video_cyc=160296 159784@314 : 0005E71A 51cf fffe DBF .W D7,#$fffe ==
$0005E71A (F)
cpu video_cyc=160302 159790@314 : 0005E71A 51cf fffe DBF .W D7,#$fffe ==
$0005E71A (F)
cpu video_cyc=160308 159796@314 : 0005E71A 51cf fffe DBF .W D7,#$fffe ==
$0005E71A (F)
cpu video_cyc=160314 159802@314 : 0005E71A 51cf fffe DBF .W D7,#$fffe ==
$0005E71A (F)
cpu video_cyc=160320 159808@314 : 0005E71A 51cf fffe DBF .W D7,#$fffe ==
$0005E71A (F)
cpu video_cyc= 98 98@ 0 : 00000000 602e BT .B #$0000002e == $00000030 (T)
cpu video_cyc= 104 104@ 0 : 00000030 00e0 ILLEGAL.L
cpu video_cyc= 128 128@ 0 : 0005D0D6 4eb9 0008 0c82 JSR.L $00080c82
cpu video_cyc= 138 138@ 0 : 00080C82 48e7 ffc0 MOVEM.L D0-D7/A0-A1,-(A7)
cpu video_cyc= 184 184@ 0 : 00080C86 4eb9 0005 e724 JSR.L $0005e724
cpu video_cyc= 194 194@ 0 : 0005E724 48e7 fffe MOVEM.L D0-D7/A0-A6,-(A7)
cpu video_cyc= 260 260@ 0 : 0005E728 4eb9 0005 e79e JSR.L $0005e79e
cpu video_cyc= 270 270@ 0 : 0005E79E 48e7 0380 MOVEM.L D6/D7/A0,-(A7)
cpu video_cyc= 288 288@ 0 : 0005E7A2 7cff MOVE.L #$ffffffffffffffff,D6
cpu video_cyc= 290 290@ 0 : 0005E7A4 51ce 0004 DBF .W D6,#$0004 ==
$0005E7AA (F)
cpu video_cyc= 296 296@ 0 : 0005E7AA 41f9 000d d7aa LEA.L $000dd7aa,A0
cpu video_cyc= 302 302@ 0 : 0005E7B0 3e3c 003f MOVE.W #$003f,D7

[...]


The dbf at 5e71a is interrupted by a new VBL (video_cyc=0), but the exception executes code at RAM $0, this is highly wrong and is the cause for the crash.

For me, the problem is in
$05e6ec : 21f9 000d d21a 0070 move.l $dd21a,$0070.w

I think $dd21a is not correctly initialized and contains $0 instead of the address of the VBL handler.

Nicolas




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/