jmarsh wrote on 2020-06-24, 16:15:
I think that's a bit of a mess at the moment. When X86_DYNFPU_DH_ENABLED is defined and the dyn_x86 core is active, it saves/restores the x87 state when it enters/exits the dynamic code (to the dyn_dh_fpu struct) but never actually copies everything back to the global FPU_rec struct.
So TL;DR: you need to manually copy them to/from the dyn_dh_fpu.state.st_reg array.
Ok I got an effect, reaching titles with the game in the first post, by just commenting out dyn_mmx_check define.
Apparently he is mixing host fpu status and emulated mmx status, by letting them share host regs.
The recompiler backs up host fpu status before running a block, in CPU_Core_Dyn_X86_Run > gen_dh_fpu_save
Then restores host fpu status at end of block, in CreateCacheblock > dyn_closeblock > dyn_fill_blocks
This breaks mmx status across different blocks.
you know the recompiler far better than me; do you have any suggestion on a possibly polite solution for this?