|[hatari-devel] Changes to improve integration between Hatari and WinUAE cpu core|
[ Thread Index |
| More lists.tuxfamily.org/hatari-devel Archives
As old UAE cpu core had a rather limited set of cpu options, parts of
the code to interact with the cpu core was called directly from m68000.c
With WinUAE cpu core, we have many more options (cpu family, CE mode,
MMU, FPU, ...) and keeping a similar way to call directly some functions
in newcpu.c was starting to be really complicated, sometimes resulting
in lot of duplicated code and too much Hatari's specific code that could
be avoided by reusing the same logic as WinUAE (for example, I noticed
that our support for softfloat fpu mode was not correct, as it could be
lost on next reset when changing some cpu options...)
Also when starting Hatari and restoring a snapshot, one could see that
some cpu init functions were called twice in several places ; not really
a problem, but some waste of ressources.
Basically, interactions with the cpu core are now made using
regs.spcflags and SPCFLAG_MODE_CHANGE, as well as using 'quit_program'.
Instead of calling ourselves the required cpu init/build functions when
some settings are changed, which was made while processing the current
instruction, we now set those 2 variables and when current instruction
is complete, do_specialties() will cleanly exit the emulation loop and
go back to "m68k_go()" where the changed preferences will be taken into
In short, this affects doing a reset (hard or soft), restoring cpu state
from a memory snapshot, patching some opcodes when Gemdos HD is enabled
and of course starting cpu emulation and changing some cpu/fpu parameters.
Please, report any problem that would happen since these changes
(although I made a lot of tests in various scenario, one never knows :) )
Regarding old UAE cpu core, I just updated it to keep working with some
of those changes, but that's all, I didn't apply the same "cleanup" process.
PS : some extra printf as well as some no-more used code are still
there, I need them for some pending changes and they will be removed