ptitSeb / box64

Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices
https://box86.org
MIT License
3.57k stars 255 forks source link

Unimplemented Opcode (00 EB 0D 90) 64 86 8B 30 03 00 00 80 F9 02 75 2E 64 0F B6 #1156

Open RkShaRkz opened 8 months ago

RkShaRkz commented 8 months ago

While trying to run darwinia 10k (darwinia 10000th anniversary version) i ran into this problem.

In fact, the common log just says this:

Rename process to "darwinia"
Redirecting overridden malloc from symtab function for /storage/roms/ports/darwinia10k/darwinia
Using native(wrapped) libdl.so.2
Using native(wrapped) libm.so.6
Using emulated /roms/ports/darwinia10k/libs/libsentry.so
Using emulated /roms/ports/darwinia10k/box64/x64/libstdc++.so.6
Using emulated /roms/ports/darwinia10k/box64/x64/libgcc_s.so.1
Using native(wrapped) libpthread.so.0
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libutil.so.1
Using native(wrapped) librt.so.1
Using emulated /roms/ports/darwinia10k/libs/libcurl.so
Using native(wrapped) libz.so.1
Using emulated /roms/ports/darwinia10k/libs/libssl.so.1.1
Using emulated /roms/ports/darwinia10k/libs/libcrypto.so.1.1
Warning: Global Symbol ZSTD_trace_decompress_begin not found, cannot apply R_X86_64_GLOB_DAT @0x10075bb98 ((nil)) in /storage/roms/ports/darwinia10k/darwinia
Warning: Global Symbol ZSTD_trace_decompress_end not found, cannot apply R_X86_64_GLOB_DAT @0x10075bba0 ((nil)) in /storage/roms/ports/darwinia10k/darwinia
1896|0x1005ee000: Unimplemented Opcode (00 EB 0D 90) 64 86 8B 30 03 00 00 80 F9 02 75 2E 64 0F B6

and i'm unsure whether the crash-on-start is caused by the libz missing simbols or the unimplemented opcode, but i'm guessing it's the opcode.

ksco commented 8 months ago

64 86 8B 30 03 00 00 is xchg byte ptr fs:[rbx+0x330], cl, it's not yet implemented in box64 yes.

ptitSeb commented 8 months ago

Ok, I added this opcode on the interpreter only for now. It should allow the program to load further.

RkShaRkz commented 8 months ago

While the program definatelly continues further, and the game seems to start running, it crashes shortly after that (before main menu or intro is shown) and the following info can be seen with LOG=3

Run X86 (0x557d2a50), RIP=0x1005932ea, Stack=0x10118f698 is32bits=0
Run X86 (0x557d2a50), RIP=0x100593321, Stack=0x10118f698 is32bits=0
End of X86 run (0x557d2a50), RIP=0x100593321, Stack=0x10118f698, unimp=1, emu->fork=0, emu->uc_link=(nil), emu->quit=0
2304|0x100593321: Unimplemented Opcode (03 00 00 C3) 64 66 45 39 9C F2 74 03 00 00 74 14 48 8D BC
 return 0x0
End of X86 run (0x557d2a50), RIP=0x100593321, Stack=0x10118f698, unimp=0, emu->fork=0, emu->uc_link=(nil), emu->quit=1
RkShaRkz commented 8 months ago

cc @ptitSeb @ksco the original problem has been resolved however the binary is running into a different unimplemented opcode. Do i just leave it as a part of this issue, or we mark this issue resolved and I open a new issue?

ksco commented 8 months ago

Oh sorry I missed this, I'll add the missing opcode. I think it's OK to stay on this issue, as it's the same kinda issue.

ksco commented 8 months ago

Added that opcode above, can you try again?

RkShaRkz commented 8 months ago

Added that opcode above, can you try again?

ofc. i'll let you know what happens sometime tomorrow, or sunday if life gets in the way :)

RkShaRkz commented 8 months ago

Added that opcode above, can you try again?

Ok, it's not complaining about any more unimplemented things, however it's crashing. I'm investigating the real reason why, but so far i think it's hitting a SIGSEGV after failing to create a .darwinia folder in root.

Feel free to resolve the issue as far as i'm concerned :) @ksco

ksco commented 8 months ago

I own this game on both GOG and Steam, but I don’t think it’s the same version as yours, could you send me a copy via the email on my profile? It’s a small game, hoping this isn’t too much trouble for you.

RkShaRkz commented 8 months ago

I own this game on both GOG and Steam, but I don’t think it’s the same version as yours, could you send me a copy via the email on my profile? It’s a small game, hoping this isn’t too much trouble for you.

sent.

ksco commented 8 months ago

I took a look, but don't know where the segfault came from. :(

oh btw windows version of the game work great with box64 + wine.

RkShaRkz commented 7 months ago

I took a look, but don't know where the segfault came from. :(

oh btw windows version of the game work great with box64 + wine.

Did you hit the segfault at all or... ?

since i'm running this on an ARM device, is wine included with box64 out of the box or... ?

also, regular x86 darwinia 2.0.0.5 works fine with box86.

we're mainly using box86/box64 as a translation layer to run linux games on arm devices, however we still have zero games working with box64. but if it has wine out of the box then perhaps windows games can be tried as well.

but i think we just can't use wine, since i think it needs x11, and we don't have x11 on the device. in fact, anything that needs x11 is a no-go. if it doesn't need x11 then i don't know why it hasn't been tried yet and have no good excuse :D