Re: [hatari-devel] Moongame, question

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


Hi,

I've continued to investigate on moongame :


> 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.


I've logged 12M instructions (2 Go of datas) for the beginning of moongame to the ILLEGAL instruction.

Then, I've used a grep "dd21a" to find where it is initialized.
In fact, it is not. I guess it does an ILLEGAL on the falcon too.

The game continues to run anyway until the main menu which runs well with DSP, but not the keyboard or the mouse. To notice : the program doesn't display the intro screen before the main menu.


I've started hatari with --trace ikbd_all

Each time I move the mouse, I get a line like :

ikbd read fffc02 data=0xff video_cyc=78664 328@153 pc=e032ec instr_cycle 0

Then, there's the Illegal

Then, I've done 2 test :
For the first one, I've stopped to move the mouse, and after the Illegal, I get the following trace :

Illegal instruction: 00e0 at 00000030 -> 0005D0D6
ikbd read fffc00 ctrl=0x2 video_cyc=55324 28@108 pc=5e77a instr_cycle 0
ikbd read fffc00 ctrl=0x2 video_cyc=151860 308@296 pc=5e77a instr_cycle 0
ikbd read fffc00 ctrl=0x2 video_cyc=10420 180@20 pc=5e77a instr_cycle 0


Second test, I haven't stopped to move the mouse, and after the Illegal, I get :

Illegal instruction: 00e0 at 00000030 -> 0005D0D6
ikbd read fffc00 ctrl=0xa3 video_cyc=55330 34@108 pc=5e77a instr_cycle 0
ikbd read fffc02 data=0x12 video_cyc=55346 50@108 pc=5e782 instr_cycle 0
ikbd read fffc00 ctrl=0x2 video_cyc=55366 70@108 pc=5e77a instr_cycle 0
ikbd read fffc00 ctrl=0xa3 video_cyc=151902 350@296 pc=5e77a instr_cycle 0
ikbd read fffc02 data=0x0 video_cyc=151918 366@296 pc=5e782 instr_cycle 0
ikbd read fffc00 ctrl=0x2 video_cyc=151938 386@296 pc=5e77a instr_cycle 0
ikbd read fffc00 ctrl=0xa3 video_cyc=10498 258@20 pc=5e77a instr_cycle 0
ikbd read fffc02 data=0x0 video_cyc=10514 274@20 pc=5e782 instr_cycle 0
ikbd read fffc00 ctrl=0x2 video_cyc=10534 294@20 pc=5e77a instr_cycle 0



In the second case, there are a few more exchanges between the acia and the 68030 before freezing.

Does this give informations ?

Regards

Laurent



Le 26/01/2012 10:32, Nicolas Pomarède a écrit :
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/