libretro / picodrive

Fast MegaDrive/MegaCD/32X emulator
Other
38 stars 60 forks source link

Virtua Racing Deluxe (Japan) hangs during attract mode when dynarec is enabled #229

Closed vaguerant closed 3 weeks ago

vaguerant commented 1 month ago

The Japanese version and only the Japanese version, issue cannot be reproduced with USA game. After about 20 seconds of uninterrupted execution, the Ranking table hangs when it gets to 11th place.

Virtua Racing Deluxe (Japan)-240603-021953

Additional notes

The hang does not affect the "parent" system, only the emulated 32X is locked up--RetroArch menu functions normally, etc. It also only seems to occur on a fresh boot of the game; hitting Restart after the hang allows the attract mode to run through with no issues.

Disabling the dynarec also allows the attract mode to run through 11th place and beyond without issues.

Tested

This issue has been confirmed on:

irixxxx commented 1 month ago

That might already be fixed. Try building a version from the release-testing branch in my repo.

vaguerant commented 1 month ago

Am attempting to, but haven't been successful in building it as yet. When it comes time to link RetroArch and PicoDrive ...

LD objs/wiiu/retroarch_wiiu.elf
g++ main.o -O3 -Wall -std=c++14 -DNDEBUG -lz -o elf2rpl
make[1]: Leaving directory '/libretro/RetroArch/wiiu/wut/elf2rpl'
./libretro_wiiu.a(libchdr_chd.o): In function `zstd_codec_free':
libchdr_chd.c:(.text.zstd_codec_free+0x4): undefined reference to `ZSTD_freeDStream'
./libretro_wiiu.a(libchdr_chd.o): In function `cdzs_codec_free':
libchdr_chd.c:(.text.cdzs_codec_free+0x20): undefined reference to `ZSTD_freeDStream'
libchdr_chd.c:(.text.cdzs_codec_free+0x38): undefined reference to `ZSTD_freeDStream'
./libretro_wiiu.a(libchdr_chd.o): In function `zstd_codec_init':
libchdr_chd.c:(.text.zstd_codec_init+0x14): undefined reference to `ZSTD_createDStream'
./libretro_wiiu.a(libchdr_chd.o): In function `zstd_codec_decompress':
libchdr_chd.c:(.text.zstd_codec_decompress+0x38): undefined reference to `ZSTD_initDStream'
libchdr_chd.c:(.text.zstd_codec_decompress+0x3c): undefined reference to `ZSTD_isError'
libchdr_chd.c:(.text.zstd_codec_decompress+0x74): undefined reference to `ZSTD_decompressStream'
libchdr_chd.c:(.text.zstd_codec_decompress+0x78): undefined reference to `ZSTD_isError'
./libretro_wiiu.a(libchdr_chd.o): In function `cdzs_codec_init':
libchdr_chd.c:(.text.cdzs_codec_init+0x30): undefined reference to `ZSTD_createDStream'
libchdr_chd.c:(.text.cdzs_codec_init+0x40): undefined reference to `ZSTD_createDStream'
./libretro_wiiu.a(libchdr_chd.o): In function `cdzs_codec_decompress':
libchdr_chd.c:(.text.cdzs_codec_decompress+0x84): undefined reference to `ZSTD_initDStream'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x88): undefined reference to `ZSTD_isError'
libchdr_chd.c:(.text.cdzs_codec_decompress+0xcc): undefined reference to `ZSTD_decompressStream'
libchdr_chd.c:(.text.cdzs_codec_decompress+0xd0): undefined reference to `ZSTD_isError'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x11c): undefined reference to `ZSTD_initDStream'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x120): undefined reference to `ZSTD_isError'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x170): undefined reference to `ZSTD_decompressStream'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x174): undefined reference to `ZSTD_isError'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x2cc): undefined reference to `ZSTD_initDStream'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x2d0): undefined reference to `ZSTD_isError'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x2f0): undefined reference to `ZSTD_initDStream'
libchdr_chd.c:(.text.cdzs_codec_decompress+0x2f4): undefined reference to `ZSTD_isError'
collect2: error: ld returned 1 exit status
Makefile.wiiu:342: recipe for target 'objs/wiiu/retroarch_wiiu.elf' failed
irixxxx commented 1 month ago

Have you updated the submodules?

vaguerant commented 1 month ago

I have, but to be sure, I just ran a git submodule update --recursive --init and built again. No change.

vaguerant commented 1 month ago

Just to rule it out, cc1174c988c9d815e4108bb61f863db7131534fe is recent and zstd-related but does not appear to be relevant here. I just rolled back to 3b480be4c0ef9dd82df9d9634987ee02e8eed028 (1 commit earlier) and it shows the same issue.

EDIT: Damn it, submodules again. My libchdr is still newer after rolling back, rolling back submodules also for a rebuild, will edit with result.

EDIT2: Successful build. I now strongly suspect this change is relevant.

EDIT3: Getting back on topic, I can no longer trigger the hang this issue is actually about on 3b480be4c0ef9dd82df9d9634987ee02e8eed028, so this issue will be resolved by the next merge from your repo.

irixxxx commented 3 weeks ago

merged