summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-03-09Add workaround for Android ARM buildsDavid Guillen Fandos
While we are at it, use ARM mode for better performance.
2021-03-08Remove libcoDavid Guillen Fandos
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-08Fix a ghost bug with some gamesDavid Guillen Fandos
Affects at least SM Adv 4 on PSP, which doesn't load at all. I think the MIPS pipeline does not like invalidating the Icache and using it immediately after (seems to read an old value sometimes?). Rewired it to not do that and instead jump to the handler directly.
2021-03-06Fix x86 dynarec, broken by d10c4afeDavid Guillen Fandos
The dynarec expects function args to be located in registers instead of the stack, which is not the default calling convetion in GCC/clang.
2021-03-05ARM dynarec: Do not use the stack at allDavid Guillen Fandos
Fix a C func call while at it. This is a prerequisite to make the dynarec re-entrant and get rid of libco
2021-03-05Remove dead codeDavid Guillen Fandos
Turns out this was not even used! No need to fix it then!
2021-03-05Reduce executable size by 90%David Guillen Fandos
Turns out most of that file ends up in JIT section, which is RWX and not a very nice way to run code really (security issues aside). This also makes possible to build that file with -ggdb otherwise it complains about stuff.
2021-03-04Minor improvements in ARM stubsDavid Guillen Fandos
This gets rid of stack usage (except for callback invocations) in the dynarec execution code. A requirement to make the dynarec re-entrant.
2021-02-26Remove more dead codeDavid Guillen Fandos
2021-02-23Small fixes to division by zeroDavid Guillen Fandos
This causes crashes in PSP quite often in many games. Other CPUs might (depending on the processor state) silently return zero or some undefined value. The fix is borrowed from ReGBA's codebase
2021-02-15Merge pull request #93 from davidgfnet/masterAutechre
More cleanups (mostly whitespace and unused stuff)
2021-02-15More cleanups (mostly whitespace and unused stuff)David Guillen Fandos
2021-02-13Merge pull request #92 from davidgfnet/masterAutechre
Minor cleanup in ARM and MIPS
2021-02-12Minor cleanup in ARM and MIPSDavid Guillen Fandos
Fix some small issues, mainly associated with undefined behaviour expressions
2021-02-10Merge pull request #91 from davidgfnet/masterAutechre
Fix ARM dynarec
2021-02-10Move r15 to reg_a0 (instead of reg_mem)David Guillen Fandos
I think this does not make a difference at all in the code, since PC is treated in a special way anyway (reloaded with an immediate when read and treated as an indirect branch when written). However for the sake of completeness I'm undoing what I did. (The comma fix stays :P)
2021-02-10Fix ARM dynarecDavid Guillen Fandos
Turns out there were a couple of very interesting and hard to track bugs. A missing comma made the reg list too short, leaving the 31th element at the mercy of the linker ordering algorithm, which seems to work in some cases depending on the compiler version. Also the cache flush code seemed not to work on my machine (OGA), not sure why it wored in the past :/
2021-01-27Fix libco for arm64twinaphex
2021-01-09Update .gitlab-ci.ymlAutechre
2021-01-09Update .gitlab-ci.ymlAutechre
2021-01-03Update .gitlab-ci.ymlAutechre
2020-12-19Updatetwinaphex
2020-12-06Updatetwinaphex
2020-12-06Update .gitlab-ci.ymltwinaphex
2020-12-03Add 3DS target to .gitlab-ci.ymljdgleaver
2020-11-27Merge pull request #87 from jdgleaver/dingux-gitlab-ciAutechre
Add OpenDingux target to .gitlab-ci.yml
2020-11-27Add OpenDingux target to .gitlab-ci.ymljdgleaver
2020-11-10Update .gitlab-ci.ymltwinaphex
2020-11-09Merge pull request #85 from jdgleaver/frame-mix-fastAutechre
Optimise interframe blending
2020-11-09Optimise interframe blendingjdgleaver
2020-10-29Merge pull request #84 from negativeExponent/path_separatorAutechre
Use correct path separator
2020-10-28Use correct path separatornegativeExponent
2020-10-27Merge pull request #83 from jdgleaver/auto-frameskipAutechre
Overhaul frameskip options
2020-10-24Overhaul frameskip optionsjdgleaver
2020-10-24Updatetwinaphex
2020-10-24Merge pull request #82 from jdgleaver/android-libcoAutechre
Set 'USE_LIBCO=1' in Android JNI build file
2020-10-23Set 'USE_LIBCO=1' in Android JNI build filejdgleaver
2020-10-23Merge pull request #81 from jdgleaver/libco-altAutechre
Add build-time option to run the emulator in a thread instead of libco (fixes OpenDingux target)
2020-10-23OpenDingux: Fix makefile targetjdgleaver
2020-10-23Add build-time option to run the emulator in a thread instead of libco ↵jdgleaver
(fixes OpenDingux target)
2020-10-18Update .gitlab-ci.ymlAutechre
2020-10-09Merge pull request #80 from negativeExponent/rtc_updateAutechre
Update RTC emulation
2020-10-09Update RTC emulationnegativeExponent
- Based on notes, gpSP's RTC does was based on vba. - I've updated relevant sections of it based on latest vba. reference issue: https://github.com/libretro/gpsp/issues/79
2020-10-08Update Makefiletwinaphex
2020-10-08Add more forward declarationstwinaphex
2020-10-08Add forward declarationstwinaphex
2020-10-08Add .gitlab-ci.ymltwinaphex
2020-10-08Update MakefileAutechre
2020-10-06Cleanupstwinaphex
2020-10-06Merge branch 'master' of https://github.com/libretro/gpsptwinaphex