[hatari-devel] Some more demos that fail with 1.4

Eero Tamminen oak at helsinkinet.fi
Thu Mar 31 21:36:00 CEST 2011


Hi,

On torstai 31 maaliskuu 2011, Nicolas Pomarède wrote:
> Le 25/03/2011 22:17, Eero Tamminen a écrit :
> here're some reports on some of those demos
> 
> > * Pixel Twin's Mental Hangover actually crashes Hatari:
> >     http://www.pouet.net/prod.php?which=11181
> > 
> > Valgrind says:
> > ==4016== Invalid write of size 1
> > ==4016==    at 0x40264DC: memset (mc_replace_strmem.c:602)
> > ==4016==    by 0x80D18DC: Video_InterruptHandler_HBL (video.c:1942)
> > ==4016==    by 0x810CB30: m68k_go (newcpu.c:1758)
> > ==4016==    by 0x80B3A33: M68000_Start (m68000.c:241)
> > ==4016==    by 0x80B4823: main (main.c:773)
> > ==4016==  Address 0x4981d00 is 0 bytes after a block of size 614,400
> > alloc'd ==4016==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
> > ==4016==    by 0x80C2E81: Screen_Init (screen.c:517)
> > ==4016==    by 0x80B46C9: main (main.c:585)
> > 
> > (when it gets 4 bytes past the screen buffer, Hatari crashes)
> 
> Tough one, I spent some time figuring what was wrong. In fact, due to a
> very buggy loader in the boot sector, this demo can sometime consider it
> needs to load $c18f sectors with xbios(8) ! Since memory location for
> the sector is incremented by 512 bytes on each sector, you end up
> filling the whole ram (as well as the IO space !) with garbage read from
> wrong sectors.

How that can cause *Hatari* to crash here:
         else
               /* left border not removed, clear to color '0' */
               memset(pSTScreen,0,SCREENBYTES_LEFT);
?

Is pSTscreen address taken from emulated RAM without checking that
the pointed screen actually is within the emulated RAM?

Hatari crash is much more serious than demo crash. :-)


> The problem is that at the start of the boot sector D1=3e7bxxxx (number
> of sectors to read) and the loader doesn't clear the upper 16 bits...
> Now, since it works under Steem with the same TOS, I needed to
> understand why the upper 16 bits were 0 on a real STE.
> In fact, those bits in D1 are the result of initializing the TOS
> date/time by reading the real time clock at $fffc21-3f.
> 
> Since normal STF/STE didn't have an RTC, this loader worked (more or
> less by luck). When there's no RTC, D1=0 at the start of the boot.
> 
> Note that it depends on the TOS : with 1.04 or 1.62, D1!=0 but with 2.06
> the loader starts.
> 
> But after that, when all sectors are loaded, the demo check there's no
> cardridge connected to the ST (at $fa0000). Since HD emulation is at the
> same space under Hatari, it's considered as an ripping cardridge and the
> demo wipes the whole RAM with the blitter -> bus errors again.
> 
> So, to run this demo, you need to disable RTC and HD emulation.

Verified.  Without these the demo works and Hatari doesn't segfault.


> I added a note for this in compatibility.html.

I don't see this in repo, did you remember to push it?


> > * Songs of the Unexpected gets double bus error after playing the first
> > song
> > 
> >     in the main demo for a while:
> > 	http://www.pouet.net/prod.php?which=22398
> 
> I can reproduce, it's quite random and never at the same time, so a
> little hard to fix for now.
> 
> > * Aura's Hifidelity dreams seems now fine:
> > 	http://www.pouet.net/prod.php?which=996
> 
> It was an FDC problem that I fixed in 2008/12

It's a nice demo, maybe it should be listed in compat list? :-)


> > * Delirious 3 crashes on startup:
> >    http://www.pouet.net/prod.php?which=21347
> 
> Worked for me. Have you tried in STE mode ?

Yes, but actually the Pouet demo seems to be a different one than what
I had. Pouet version file name is delir_3.msa and it doesn't react where it
asks me to press either 1) or 2) i.e. demo is stuck in that screen.

The file name for version I had was delirs3a.msa.  I have no idea where
I got it (i.e. whether it's even supposed to work), sorry about that.


> > * Once the actual demo starts:
> >    http://www.pouet.net/prod.php?which=15437
> >    
> >    Bad taste dies to:
> >    Your Atari program just did something terribly stupid:
> >    VoidMem_xlate($533b0aa5)
> 
> I get this a few seconds after the yellow/red vector balls appear. Do
> you get the error at the same point ?

Yes.


>  From what I see, the demo code seems to be altered by a bad write at
> address $404c2. The resulting wrong instruction tries to add.w on an odd
> address, which creates this crash.
> 
> I will need to add some code in Hatari to track what part of the demo is
> producing this bad write.
> 
> > * AFL pro fooball doesn't anymore freeze on startup:
> >    http://lists.berlios.de/pipermail/hatari-devel/2010q2/002284.html
> >    
> >    But there's some screen update/color issue between the game halves
> >    (when running a demo game) when panels from top&  bottom are
> >    scrolled towards screen center.
> > 
> > * GGN's Kuovadis game (Daleks clone) dies at startup after screen goes
> > blank
> > 
> >    and it tries to scan disk for mods.  I'm not sure where I got the
> >    program,
> > 	
> >    GGN's page seems to be missing a link:
> > 	http://users.hol.gr/~ggn/
> 
> Havent't tested these 2 ones for now.


	- Eero



More information about the hatari-devel mailing list