Re: [hatari-devel] Sokoban VGA (Falcon)

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


Hi Thomas,

Is that game freely available for download somewhere?

Yes, you can get it from http://christophe.bray.free.fr/informatique/falcon/falcon_jeux.htm

It's the entry 80



Could you do a "info blitter" in the debugger when you reach the TAS
instruction?


I've put a breakpoint at address pc = $e12bcc, then, when the code reach this address, I've done a disasm to see the next few instructions,
then info blitter
then C1 (and I get the exception error again.

It seems reproductible.


CPU=$e0258e, VBL=3166, FrameCycles=68, HBL=0, LineCycles=68, DSP=$51
> b pc=$e12bcc
CPU condition breakpoint 1 with 1 condition(s) added:
    pc = $e12bcc

> c
Returning to emulation...

1. CPU breakpoint condition(s) matched 1 times.
    pc = $e12bcc

CPU=$e12bcc, VBL=3274, FrameCycles=2064, HBL=5, LineCycles=48, DSP=$a7

> d

$e12bcc : 4ad5                                 tas       (a5)
$e12bce : 4e71                                 nop
$e12bd0 : 6bfa                                 bmi.s     $e12bcc
$e12bd2 : 2c0c                                 move.l    a4,d6
$e12bd4 : 671c                                 beq.s     $e12bf2
$e12bd6 : 4bed ffc4                            lea $ffc4(a5),a5
$e12bda : 2adc                                 move.l (a4)+,(a5)+
$e12bdc : 2adc                                 move.l (a4)+,(a5)+

> info blitter

src addr:  0x2de9fe
dst addr:  0xff9800
words:     33
lines:     1
src X-inc: -2
src Y-inc: -962
dst X-inc: -2
dst Y-inc: -962
end mask1: 0xffff
end mask2: 0xffff
end mask3: 0xffff
HOP:       0x02
LOP:       0x03
control:   0x80
skew:      0xc0
Note: internally changed register values aren't visible to breakpoints or in memdump output until emulated code reads or writes them!)

> c 1
Returning to emulation for 1 CPU instructions...
Exception 2 (e12bcc) at e12bce -> e00fb6!

CPU=$e00fb6, VBL=3274, FrameCycles=2232, HBL=5, LineCycles=216, DSP=$ad
>



Regards

Laurent




Le 07/10/2013 22:58, Thomas Huth a écrit :
Am Mon, 07 Oct 2013 00:35:32 +0200
schrieb Laurent Sallafranque <laurent.sallafranque@xxxxxxx>:

Hi,

I've given a quick look at Sokoban (Falcon), and I get the following
error:
Is that game freely available for download somewhere?

Exception 2 (e12bcc) at e12bce -> e00fb6!
That's an bus error... can you determine where it comes from (e.g. by
putting a breakpoint with gdb and do a backtrace when it triggers?).

The executed code before the error is a linea #7 (Bit block transfer)
And the program stops on the TAS instruction.

I suspect the TAS instruction not to return to the correct PC
address, but I haven't digged more for now (maybe there's a patch of
this instruction in winuae, or in the old cpu).
I hardly believe that TAS itself is wrong (although the code for the
cycle-exact 68000 mode seems to be dodgy, but that does not matter here
since you run in 68030 mode instead).
The code you've added below seems to try to start the blitter. So I
think the problem could be related to the blitter instead.
Could you do a "info blitter" in the debugger when you reach the TAS
instruction?

The last instructions before the crash


$06aac6 : a007                                 linea
#7                        ; Bit block transfer
[...]
$e12bcc : 4ad5                                 tas       (a5)
Debugger: *CPU breakpoint*
  >
  > r
    D0 0000007E   D1 00000004   D2 00000000   D3 FFFF0000
    D4 00000001   D5 00000000   D6 00000000   D7 000080C0
    A0 002DEA41   A1 00FF9841   A2 00000002   A3 00000002
    A4 00000000   A5 00FF8A3C   A6 00083E02   A7 00087768
A5 = 0xff8a3c is the blitter control register ... TAS is obviously used
to test whether it is already running and to start it if it was not
running yet.

  Thomas






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