Sakura-IT / SonnetAmiga

Reimplementation of WarpOS supporting Sonnet Crescendo 7200 and other PowerPC PCI cards (mirror of CVS development repository).
MIT License
39 stars 3 forks source link

Some games start and/or end with a recoverable 0100000F guru when in full screen mode. #24

Closed DvdBoon closed 8 years ago

DvdBoon commented 8 years ago

Appears in:

ADoomPPC (when exiting) WipeOut2097 demo (5 times at the start) Earth 2140 Demo (2 times start, 1 time end)

Have to verify if it isn't related to my system only.

rkujawa commented 8 years ago

According to exec/alerts.s it means: Memory header not located. [ Usually an invalid address passed to FreeMem() ].

Perhaps someone called FreeMem() to free PPC memory at exit? Probably not a problem in Phase5 designs, where memory is shared between CPUs.

Does the guru display actual address where error occurred? Does it look like address in Sonnet memory?

DvdBoon commented 8 years ago

Funny, in WipeOut it is because voodoo memory gets an Endian switch which messes up the memory header from the voodoo pci dma memory and subsequently also the memory list.

DvdBoon commented 8 years ago

Moving the pcidma memory from pci.library to the back fixed the problem for WipeOut and Earth2140 demo. Doom fails on a CloseDevice() still with a 0100000F guru.

rkujawa commented 8 years ago

I can't really comment on memory management issues in WarpOS and/or pci.library APIs as I never really investigated them. However, I'm pretty sure that Voodoo 3 has a register that allow automated endian swapping to be done by the hardware. Maybe pci.library or P96 driver manipulates this register, whenever little endian data is needed.

Bit 12 in lfbMode register is related to this.

DvdBoon commented 8 years ago

Seeing it solved almost all problems except for ADoomPPC I'm betting it's a problem within ADoom itself. Keeping this issue open for now.

togflops commented 8 years ago

I don't have this issue with ADoomPPC. I can run the timedemo as many times until the memory issue comes up. I've tried it at 640x480, 800x600, 800x480 and 960x540a at 8bpp. I do have the issue with Tinymeter if it is running when I open a 16bpp screen with Vmpeg I get a recoverable alert 0100000C sanity check on memory list failed. Maybe unrelated.

DvdBoon commented 8 years ago

The memory list gets corrupted when the gfx mem is switched to little endian. That is why the gfx mem is moved to the end of the list. Maybe it is worthwhile to just remove it after sonnet.library has installed itself in case of a Voodoo.

DvdBoon commented 8 years ago

As indicated. Problem solved. Remaining crash of ADoomPPC (on my system) is not sonnet.library related.