it also worth insert a bunch of nop's after write to CCR register, at least Katana games always do it this way.
speaking more about this particular game, it does more weird things - after selecting one of 3 minigames it does
a) load game binary to upper RAM area
b) execute arch_exec_at routine, which copy loaded binary to start of RAM and jump there.
but between a) and b) executed another routine, which trashes very start of loaded game binary (there written 2x some pointers). that routine called not once but quite often, possible it is timer or sound/music player callback.
I'm not really sure how and why it works on real DC, possible thanks to not properly disabled/validated cache in mentioned earlier routine, so 2 bugs together makes somewhat working code
btw, something similar I've seen earlier in Sturmwind, and my thoughts was its some kind of anti-emulator protection, but here it more looks like just a glitch, so maybe they are similar glitches in both games.