Re: [hatari-devel] Reeking rumber analysis

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


Hi,

This game needs more invertigation. I'm pretty sure we can find the problem and fix it.

George, you're perfectly right, it's the fading palette routine at the very beginning of the game. On the real hardware, when the screen is black, the game starts to display the first logo.

Under hatari, the fading loops forever (after black screen, it returns to a white screen and loops again).

In general, I start the game from the 256 colors screenmode.
I've tried to start from ST low resolution compatible mode, and the game freeze without palette looping (the screen stays green forever). Starting from true color gives nearly the same result (no fading, and the screen stays green forever)

It only starts to fade is I launch it from the 256 colors mode.

I'll investigate your idea (palette refreshing) tomorrow.

Eero, I'll check the value you ask for tomorrow.

Best regards

Laurent



Le 08/09/2013 23:53, George Nakos a écrit :
Hello Laurent,

That  looks like (and I'm certain that it is) a palette fading routine
for  the Falcon. The reason that it's probably failing is that perhaps
the  Falcon palette registers (starting at $ffff9800.w) aren't updated
so  the fading loop never ends. I'm not sure why this happens, but did
you  run the game from ST compatible modes? Can you try launching from
256 colour mode?


Regards,
George

Monday, September 9, 2013, 12:33:01 AM, you wrote:

Hi,
I've given a closer look at reeking rumber :
I can let it run under hatari by doing the following :
Under the GEM :
b pc=$0707d8

Then, start reeking rumbler by double clicking it

hen the breakpoint is reached, just do
r d5=0
c
and the game run
Here is the corresponding code:

The part of the code that calls the faulty function :
$06f942 : 207c 0009 3850                       movea.l   #$93850,a0
$06f948 : 4240                                 clr.w     d0
$06f94a : 323c 0100                            move.w    #$100,d1
$06f94e : 7401                                 moveq     #1,d2
$06f950 : 6100 0dd6                            bsr       $70728



The part of the code that loops forever :
$070728 : 48e7 ffe0                            movem.l d0-d7/a0-a2,-(sp)
$07072c : 4a41                                 tst.w     d1
$07072e : 6700 00ac                            beq       $707dc
$070732 : 48e7 e080                            movem.l d0-d2/a0,-(sp)
  >>
$070736 : 3f3c 0025                            move.w    #$25,-(sp)
$07073a : 4e4e                                 trap      #$e
$07073c : 544f                                 addq.w    #2,sp
$07073e : 4cdf 0107                            movem.l (sp)+,d0-d2/a0
$070742 : 43f8 9800                            lea $ffff9800.w,a1
$070746 : 3e00                                 move.w    d0,d7
$070748 : e54f                                 lsl.w     #2,d7
$07074a : d2c7                                 adda.w    d7,a1
  >>
$07074c : 45f9 0008 d8f0                       lea       $8d8f0,a2
$070752 : 3601                                 move.w    d1,d3
$070754 : 5343                                 subq.w    #1,d3
$070756 : 24d9                                 move.l    (a1)+,(a2)+
$070758 : 51cb fffc                            dbra      d3,$70756
$07075c : 7a00                                 moveq     #0,d5
$07075e : 48e7 e080                            movem.l d0-d2/a0,-(sp)
$070762 : 3802                                 move.w    d2,d4
  >>
$070764 : 3f3c 0025                            move.w    #$25,-(sp)
$070768 : 4e4e                                 trap      #$e
$07076a : 544f                                 addq.w    #2,sp
$07076c : 51cc fff6                            dbra      d4,$70764
$070770 : 4cdf 0107                            movem.l (sp)+,d0-d2/a0
$070774 : 43f9 0008 d8f0                       lea       $8d8f0,a1
$07077a : 45f8 9800                            lea $ffff9800.w,a2
$07077e : 3e00                                 move.w    d0,d7
  >>
$070780 : e54f                                 lsl.w     #2,d7
$070782 : d4c7                                 adda.w    d7,a2
$070784 : 3601                                 move.w    d1,d3
$070786 : 5343                                 subq.w    #1,d3
$070788 : 24d9                                 move.l    (a1)+,(a2)+
$07078a : 51cb fffc                            dbra      d3,$70788
$07078e : 45f9 0008 d8f0                       lea       $8d8f0,a2
$070794 : 2248                                 movea.l   a0,a1
  >>
$070796 : 3e00                                 move.w    d0,d7
$070798 : e54f                                 lsl.w     #2,d7
$07079a : d2c7                                 adda.w    d7,a1
$07079c : 3c01                                 move.w    d1,d6
$07079e : 5346                                 subq.w    #1,d6
$0707a0 : 2811                                 move.l    (a1),d4
$0707a2 : 2612                                 move.l    (a2),d3
$0707a4 : b803                                 cmp.b     d3,d4
  >>
$0707a6 : 6706                                 beq.s     $707ae
$0707a8 : 6202                                 bhi.s     $707ac
$0707aa : 5103                                 subq.b    #8,d3
$0707ac : 5803                                 addq.b    #4,d3
$0707ae : e19b                                 rol.l     #8,d3
$0707b0 : e19c                                 rol.l     #8,d4
$0707b2 : b803                                 cmp.b     d3,d4
$0707b4 : 6706                                 beq.s     $707bc
  >>
$0707b6 : 6202                                 bhi.s     $707ba
$0707b8 : 5103                                 subq.b    #8,d3
$0707ba : 5803                                 addq.b    #4,d3
$0707bc : e19b                                 rol.l     #8,d3
$0707be : e19c                                 rol.l     #8,d4
$0707c0 : b803                                 cmp.b     d3,d4
$0707c2 : 6706                                 beq.s     $707ca
$0707c4 : 6202                                 bhi.s     $707c8
  >>
$0707c6 : 5103                                 subq.b    #8,d3
$0707c8 : 5803                                 addq.b    #4,d3
$0707ca : 4843                                 swap      d3
$0707cc : b699                                 cmp.l     (a1)+,d3
$0707ce : 6702                                 beq.s     $707d2
$0707d0 : 7a01                                 moveq     #1,d5
$0707d2 : 24c3                                 move.l    d3,(a2)+
$0707d4 : 51ce ffca                            dbra      d6,$707a0
  >>
$0707d8 : 4a85                                 tst.l     d5
              <------- Here is the the test that never goes throw with hatari
$0707da : 6680                                 bne.s     $7075c
$0707dc : 4cdf 07ff                            movem.l (sp)+,d0-d7/a0-a2
$0707e0 : 4e75                                 rts

At least, the game runs under hatari except for this infinite loop that
never finishs because of this d5 register.
May this gives some ideas to somebody.
Regards
Laurent










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