cemu-project / Cemu

Cemu - Wii U emulator
https://cemu.info
Mozilla Public License 2.0
7.42k stars 608 forks source link

One Piece Unlimited World Red does not boot on Cemu.20 #939

Closed Djihads80 closed 4 months ago

Djihads80 commented 1 year ago
i dumped One Piece Unlimited World Red from my wii u to try it out on Cemu, unfortunately the game does not boot on the latest version, i tried running the game on Cemu 1.26.2f and it works fine, i asked on discord and they said its most likely issue with Cemu rather then my dump or my specs Here is the log file : [10:07:41.580] ------- Init Cemu 2.0-46 (experimental) ------- [10:07:41.581] Init Wii U memory space (base: 0x000001d8d75c0000) [10:07:41.581] mlc01 path: D:/Roms/Cemu/mlc01 [10:07:41.581] CPU: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz [10:07:41.581] RAM: 12147MB [10:07:41.581] Used CPU extensions: SSSE3, SSE4.1, AVX, AVX2, LZCNT, MOVBE, BMI2, AES-NI, INVARIANT-TSC [10:07:41.666] Title has missing meta .xml files. Title path: D:/Roms/Cemu/mlc01/sys/title/00050030/10010109 [10:07:41.772] Title has missing meta .xml files. Title path: D:/Roms/Cemu/mlc01/sys/title/00050030/10010109 [10:07:44.741] Mounting title 0005000010175c00 [10:07:44.741] Base: D:/Roms/ONE PIECE Unlimited World Red [Folder] [10:07:44.741] Update: Not present [10:07:44.741] DLC: D:/Roms/ONE PIECE Unlimited World Red [DLC] [Folder] [10:07:44.759] COS: System fonts found. Generated shareddata (25433KB) [10:07:44.774] Recompiler initialized [10:07:44.979] ------- Init Vulkan graphics backend ------- [10:07:45.017] Vulkan instance version: 1.3 [10:07:50.926] Using GPU: Intel(R) HD Graphics 620 [10:07:50.926] Driver version: Intel driver [10:07:50.926] VulkanLimits: UBAlignment 64 nonCoherentAtomSize 1 [10:07:50.941] Using available debug function: vkCreateDebugUtilsMessengerEXT() [10:07:50.941] Vulkan device memory info: [10:07:50.941] Heap 0 - Size 6073MB Flags 0x00000001 [10:07:50.941] Memory 0 - HeapIndex 0 Flags 0x00000001 [10:07:50.941] Memory 1 - HeapIndex 0 Flags 0x00000007 [10:07:50.941] Memory 2 - HeapIndex 0 Flags 0x0000000f [10:07:50.941] VK_FORMAT_R4G4_UNORM_PACK8 not supported [10:07:51.049] ------- Loaded title ------- [10:07:51.049] TitleId: 00050000-10175c00 [10:07:51.049] TitleVersion: v0 [10:07:51.049] TitleRegion: US [10:07:51.049] Save path: D:/Roms/Cemu/mlc01/usr/save/00050000/10175C00/user/ (not present) [10:07:51.049] Shader cache file: shaderCache/transferable/0005000010175c00.bin [10:07:51.049] gameprofile path: (not present) [10:07:51.049] RPX hash (updated): 57734908 [10:07:51.049] RPX hash (base): 57734908 [10:07:51.151] Loaded module 'opu3' with checksum 0xea2f0e46 [10:07:51.151] RPL link time: 110ms [10:07:51.194] HLE scan time: 31ms [10:07:51.194] ------- Active settings ------- [10:07:51.194] CPU-Mode: Single-core recompiler [10:07:51.194] Load shared libraries: true [10:07:51.194] Use precompiled shaders: auto [10:07:51.194] Full sync at GX2DrawDone: true [10:07:51.194] Strict shader mul: true [10:07:51.194] Async compile: true [10:07:51.194] Accurate barriers are disabled! [10:07:51.194] Console language: English [10:07:51.351] ------- Activate graphic packs ------- [10:07:51.352] Activate graphic pack: ONE PIECE Unlimited World Red/Graphics/Resolution [Presets: 1280x720 (Default)] [10:07:51.352] ------- Init Audio backend ------- [10:07:51.352] DirectSound: available [10:07:51.352] XAudio 2.8: available [10:07:51.352] Cubeb: available [10:07:51.352] ------- Init Audio input backend ------- [10:07:51.352] Cubeb: available [10:07:51.352] ------- Run title ------- [10:07:51.452] Shader cache loaded with 0 shaders. Commited mem 18MB. Took 18ms
Squall-Leonhart commented 1 year ago

Broken by https://github.com/cemu-project/Cemu/commit/fd3b5b7f279c801396b1d13c49e1eeb14380ae82 Last working 2.0-40 https://github.com/cemu-project/Cemu/commit/633e5c0e05852f1c7762797027ff0247424a57bd

@Maschell this was your change, can you take a look?

The game is trying to load a non-existant data on an external volume with your SSBU fix applied and cycling back to FSGetMountSource eternally.

Working

[20:12:27.510] coreinit.FSInit()
[20:12:27.510] coreinit.FSAddClient(0x1a0000c0, 0)
[20:12:27.510]      coreinit.FSAddClient -> 0
[20:12:27.510] Unsupported lib call: coreinit.FSSetStateChangeNotification
[20:12:27.510] coreinit.FSInitCmdBlock(0x1a001800)
[20:12:27.510] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe2011b4, 0)
[20:12:27.510]      coreinit.FSGetMountSource -> 0
[20:12:27.510] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe2011b4, "", 128, 0)
[20:12:27.511]      coreinit.FSMount -> 0
[20:12:27.511] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe2011b4, 0)
[20:12:27.511]      coreinit.FSGetMountSource -> -2
[20:12:27.511] coreinit.FSAddClient(0x1a002340, 0)
[20:12:27.511]      coreinit.FSAddClient -> 0
[20:12:27.511] coreinit.FSInitCmdBlock(0x1017c200)
[20:12:27.514] Unsupported lib call: coreinit.UCOpen
[20:12:27.514] Unsupported lib call: coreinit.UCClose
[20:12:27.514] IOSU_ACT: using account default in first slot
[20:12:27.514] coreinit.FSAddClient(0x100b1eb8, 0)
[20:12:27.514]      coreinit.FSAddClient -> 0
[20:12:27.514] coreinit.FSInitCmdBlock(0x100b35b8)
[20:12:27.514] Unsupported lib call: proc_ui.ProcUIInit
[20:12:27.514] Unsupported lib call: proc_ui.ProcUIRegisterCallbackCore
[20:12:27.514] Unsupported lib call: proc_ui.ProcUISetMEM1Storage
[20:12:27.514] Unsupported lib call: padscore.KPADDisableDPD
[20:12:27.514] Unsupported lib call: padscore.WPADEnableURCC
[20:12:27.514] Unsupported lib call: vpad.VPADInit
[20:12:27.514] Unsupported lib call: gx2.GX2InitDepthBufferHiZEnable
[20:12:27.514] Unsupported lib call: gx2.GX2SetTVScale
[20:12:27.515] Unsupported lib call: vpad.VPADInitGyroZeroDriftMode
[20:12:27.515] Unsupported lib call: vpad.VPADSetGyroDirectionMag
[20:12:27.515] Unsupported lib call: vpad.VPADEnableGyroAccRevise
[20:12:27.515] Unsupported lib call: vpad.VPADSetGyroAccReviseParam
[20:12:27.515] Unsupported lib call: vpad.VPADEnableGyroDirRevise
[20:12:27.515] Unsupported lib call: vpad.VPADSetGyroAngle
[20:12:27.515] Unsupported lib call: gx2.GX2SetTVEnable
[20:12:27.515] Unsupported lib call: gx2.GX2SetDRCEnable
[20:12:27.515] coreinit.FSInitCmdBlock(0x1a003aec)
[20:12:27.515] coreinit.FSOpenFile(0x1a002340, 0x1a003aec, "/vol/content/preload_eu/boot.jarc", "r", 0x1a003ae8, 4294967295)
[20:12:27.516] [OSConsole] OSDynLoad_Acquire() use [104]
[20:12:27.516] [OSConsole] ErrorViewer::ThreadInit Done.
[20:12:27.516] Open file /vol/content/preload_eu/boot.jarc (access: r result: ok handle: 0x1)
[20:12:27.516]      coreinit.FSOpenFile -> 0
[20:12:27.516] coreinit.FSGetStat(0x1a002340, 0x1a003aec, "/vol/content/preload_eu/boot.jarc", 0x101577a4, 4294967295)
[20:12:27.516]      coreinit.FSGetStat -> 0

Not working

[20:14:57.768] coreinit.FSInit()
[20:14:57.768] coreinit.FSAddClient(0x1a0000c0, 0)
[20:14:57.768]      coreinit.FSAddClient -> 0
[20:14:57.768] Unsupported lib call: coreinit.FSSetStateChangeNotification
[20:14:57.768] coreinit.FSInitCmdBlock(0x1a001800)
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
[20:14:57.768] coreinit.FSGetMountSource(0x1a0000c0, 0x1a001800, 0, 0xe201124, 0)
[20:14:57.768]      coreinit.FSGetMountSource -> 0
[20:14:57.768] coreinit.FSMount(0x1a0000c0, 0x1a001800, 0xe201124, "/vol/external01", 128, 0)
[20:14:57.768]      coreinit.FSMount -> 0
Maschell commented 1 year ago

I think this is related to this problem, which also happens on a real console:

https://github.com/wiiu-env/MochaPayload/blob/c222954efe08fea79930cc7865ce6aadd41d6c76/source/ios_mcp/source/mcp_loadfile.c#L192-L200 See this part in Mocha where I patch IOSU to give full /dev/fsa access to every title (except this game). When this game has access to the sd card, it soft locks.

This suggests to me that the game is doing something weird. Parsing and implementing the /dev/fsa permissions is probably the most accurate way to fix this? (This would probably also include implementing sd mounting properly)

Squall-Leonhart commented 1 year ago

Makes sense, the game never moves on from trying to boot data that isn't present.

Maschell commented 7 months ago

Should be fixed by https://github.com/cemu-project/Cemu/commit/74e8d205b07247b851c716ad285d938f4bc277b5, can you check the latest release if it boots now?