Senryoku / Deecy

Experimental Dreamcast emulator written in Zig
3 stars 0 forks source link

Soulcalibur hangs after the first round against Inferno #7

Closed Senryoku closed 1 month ago

Senryoku commented 7 months ago

In arcade mode, after winning the first round against Inferno, the game hangs. I guess it has to do with the way its moveset is randomly selected? (It's not random for the first round IIRC)

Senryoku commented 7 months ago

Setting the number of rounds to one allowed me to finish the arcade mode. Pretty sure it has to do with swapping movesets.

It's stuck on "Now loading...", I don't see any GD-ROM access, but I might just be missing some logging. Or it's something else entirely.

Senryoku commented 7 months ago

There some GD-ROM access right before the freeze, but they use the usual syscalls:

info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=393929 size=16 destination=0x0C27DC00
debug(gdrom):   GDROM Mainloop - No command queued
info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=397658 size=16 destination=0x0C285C00
debug(gdrom):   GDROM Mainloop - No command queued
info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=393945 size=16 destination=0x0C27DC00
debug(gdrom):   GDROM Mainloop - No command queued
info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=397674 size=16 destination=0x0C285C00
Senryoku commented 7 months ago

The intro cutscene is also cut short after some DMA, I wonder if this is linked?

info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=465836 size=451 destination=0x0C8BCC60
info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=460130 size=16 destination=0x0C27DC00
info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=460327 size=16 destination=0x0C285C00
info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=465836 size=451 destination=0x0C8BCC60
info(gdrom):   GDROM Mainloop - DMARead
info(gdrom):     GDROM DMARead sector=487050 size=149 destination=0x0CA7CC60
Senryoku commented 7 months ago

Also, the boot ROM hangs waiting on something, and in this case I very, very strongly suspect this has to do with the GDROM.

Senryoku commented 2 months ago

Dumping a trace here (I lost the trimmed and annotated ones I worked on before :')) Inferno.txt

Note that this also happens using LLE bios (and that switching to the interpreter during the freeze doesn't help).

Senryoku commented 1 month ago

Fixed with ff7a986baf851cba3f5a923b2143e65e846190d2