Commit Graph

27 Commits

Author SHA1 Message Date
David Guillen Fandos 64d0a066b4 Move interpreter to use CXX so that we can simplify some bits 2023-11-03 00:09:08 +01:00
David Guillen Fandos 97435283d2 Branch video to be a CXX source file.
Purposely disable all CXX linking to ensure the binary remains the same
2023-07-14 20:16:37 +02:00
libretroadmin 175f00d527 Update libretro-common 2023-02-21 19:01:03 +01:00
David Guillen Fandos bcd3d1ca29 [aarch64] Adding new aarch64 dynarec!
This is based on the MIPS dynarec (more or less) with some ARM
borrowings. Seems to be quite fast (under my testing fixed results:
faster than ARM on A1 but not a lot faster than the interpreter on
Android Snapdragon 845) but still some optimizations are missing at the
moment.

Seems to pass my testing suite and compatibility wise is very similar to
arm.
2021-12-12 13:18:13 +01:00
David Guillen Fandos 3a7fedb8fb Simplify MMAP machinery for Win/Lin/Mac/Android
This gets rid of the bloated memmap_win32.c in favour of a much simpler
wrapper. This will be needed in the future since the wrapper does not
support MAP_FIXED maps (necessary for some platforms)
2021-11-05 18:23:05 +01:00
David Guillen Fandos 15cc02e03c [MIPS] Move and restructure mips backend 2021-10-30 22:59:33 +02:00
David Guillen Fandos 6c195cdcaa Add libretro-common and VFS functions for read/write
Remove small unused stuff while at it.
2021-09-30 18:31:11 +02:00
David Guillen Fandos 7068cbc95b New savestate implementation
This uses BSON as savestate format, to allow external tools to parse it
(so that we can add proper test of the states). The BSON is not 100%
correct according to spec (no ordered keys) but can be parsed by most
libraries.

This fixes also a bug in the savestate palette color recalculation that
was wrongly overwritting the original palette (which could cause some
problems on some games).

Also fixes some potential issues by serializing some more stuff and
cleans up unused stuff.

Testing shows that states look good and there's only minor differences
in audio ticks, related to buffer sizes (since buffer flushes are
de-synced from video frames due to different frequency).
2021-08-24 17:15:27 +02:00
David Guillen Fandos 261b2db9bb Cleanup Makefiles a bit 2021-05-19 20:11:35 +02:00
David Guillen Fandos f6f3a91039 Adding Normmatt's BIOS as a built-in BIOS
Add options to select whether to boot from BIOS (default is no, as it is
now) and whether to use the original bios or the builtin one (default is
auto, which tries to use the official but falls back to the builtin if
not found).
2021-03-22 21:45:52 +01:00
David Guillen Fandos 56dc6ecb70 Remove libco
This removes libco and all the usages of it (+pthreads).
Rewired all dynarecs and interpreter to return after every frame so that
libretro can process events. This required to make dynarec re-entrant.

Dynarecs were updated to check for new frame on every update (IRQ, cycle
exhaustion, I/O write, etc). The performance impact of doing so should
be minimal (and definitely outweight the libco gains). While at it,
fixed small issues to get a bit more perf: arm dynarec was not idling
correctly, mips was using stack when not needed, etc.

Tested on PSP (mips), OGA (armv7), Linux (x86 and interpreter). Not
tested on Android though.
2021-03-08 18:44:03 +01:00
jdgleaver 00406feed9 Add build-time option to run the emulator in a thread instead of libco (fixes OpenDingux target) 2020-10-23 15:37:48 +01:00
jdgleaver aa7feb70ca Add optional colour correction + interframe blending 2020-09-21 18:03:58 +01:00
bmaupin a60de42f3a Get dynarec working again for PSP 2019-10-20 14:58:51 -04:00
twinaphex cf973d0c5f Rename cpu_orig.c to cpu.c 2014-12-14 02:51:43 +01:00
twinaphex 5820d8be94 Create memmap_win32.c for Win32 systems - a mman wrapper 2014-12-13 05:50:15 +01:00
twinaphex 9fcd576a97 Use cpu_orig.c in release builds for now - apparently grouping all
these case ranges made fps slower, not faster. Keep working on
cpu.c to attain a smaller interpreter core so we can eventually
make this a lot more efficient
2014-12-12 16:59:09 +01:00
twinaphex 657c7bee5c Create define ARM_ARCH_BLENDING_OPTS - so that we can optionally
compile in the ARM ASM blend file
2014-12-11 19:12:09 +01:00
twinaphex 5b59ef3acc Reimplement cache invalidation code 2014-12-11 18:47:48 +01:00
twinaphex 19f05cf36a ARM needs special optimized routines for video blending, etc. 2014-12-10 18:39:54 +01:00
twinaphex 6ad4f13fbc Only compile in cpu_threaded.c for HAVE_DYNAREC targets 2014-12-10 17:10:17 +01:00
twinaphex 51d78afa09 Add HAVE_DYNAREC ifdef 2014-12-10 17:06:09 +01:00
twinaphex a16cbdc416 Rename memory.c to gba_memory.c 2014-12-10 05:05:41 +01:00
aliaspider afff31b508 fix arm target compile errors. 2014-12-10 01:03:14 +01:00
Twinaphex dee3a94edb Start adding ARCH_ARM rules 2014-12-09 22:48:03 +01:00
twinaphex 8d2578eefc Add CPU_ARCH rules to Makefile.common 2014-12-09 22:37:07 +01:00
twinaphex a660cbd4c8 Update Makefile/Makefile.common 2014-12-09 22:25:29 +01:00