notaz [Mon, 20 Jan 2025 01:06:41 +0000 (03:06 +0200)]
cdrom: try different seek timing
unclear if it's better, might need to revert
notaz [Sun, 19 Jan 2025 20:58:28 +0000 (22:58 +0200)]
cdrom: drop the propagation thing
It does more harm than good by causing instability.
Maybe make it optional someday.
notaz [Sat, 18 Jan 2025 23:42:35 +0000 (01:42 +0200)]
cdrom: disable some hack for xa
Paul Cercueil [Fri, 17 Jan 2025 00:50:05 +0000 (01:50 +0100)]
lightrec: Add the big-ass debugger
This debugger has this name because it doesn't even try to be suttle -
it will run the dynarec and interpreter versions of Lightrec in
parallel, comparing their behaviour at every exit point, and returning
any issue as soon as they appear.
By default, the emulator will print a checksum of the registers after
each exit point. When a mismatch is found, it is advised to re-start the
debugging setting the LIGHTREC_VERY_DEBUG=1 environment variable, and to
set the LIGHTREC_BEGIN_CYCLES environment variable to the cycle value of
the last known state. When the "very debug" mode is used, the
interpreter and dynarec will exit after each single block, and the
emulator will compute a checksum of the whole RAM and scratchpad and
print all registers. This two-level debugging allows to find a mismatch
point very fast, and then fine-tune until the exact breaking point is
found.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Fri, 17 Jan 2025 00:49:07 +0000 (01:49 +0100)]
Disable mult/div and memset optimizations when debugging Lightrec
These optimizations cause Lightrec's interpreter and dynarec to have
different behaviours.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Fri, 17 Jan 2025 00:25:17 +0000 (01:25 +0100)]
lightrec: Add LIGHTREC_DEBUG functionality
When set, Lightrec will be built with the debug log level, the built-in
disassembler for PSX code and JIT code (requires binutils), and support
outputing data to the big-ass debugger (if the proper environment
variables are set).
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
notaz [Sat, 18 Jan 2025 00:27:42 +0000 (02:27 +0200)]
attempt to fix CI
notaz [Sat, 18 Jan 2025 00:20:51 +0000 (02:20 +0200)]
try some more CIs
notaz [Thu, 16 Jan 2025 00:01:21 +0000 (02:01 +0200)]
core: move some more stuff to psxRegs
less literal pools
notaz [Wed, 15 Jan 2025 23:20:30 +0000 (01:20 +0200)]
drc: fix wrong stop check
would return prematurely because of this
notaz [Wed, 15 Jan 2025 23:06:43 +0000 (01:06 +0200)]
misc: hard-reset cpu on hle change
notaz [Wed, 15 Jan 2025 19:15:07 +0000 (21:15 +0200)]
fix some warnings on win32
notaz [Tue, 14 Jan 2025 01:32:04 +0000 (03:32 +0200)]
db: update
no desire to dig out the real reason; works on arm?
libretro/pcsx_rearmed#867
notaz [Tue, 14 Jan 2025 01:27:23 +0000 (03:27 +0200)]
lightrec: update
notaz [Tue, 14 Jan 2025 00:51:58 +0000 (02:51 +0200)]
gpu: adjust timing again
maybe I should just give up...
notaz [Sat, 11 Jan 2025 22:28:09 +0000 (00:28 +0200)]
drc: adjust timing hacks
also drop the difference from other cpu cores
libretro/pcsx_rearmed#858
notaz/pcsx_rearmed#349
Benjamin FRANCOIS [Fri, 10 Jan 2025 19:56:50 +0000 (11:56 -0800)]
restore Haiku build
notaz [Thu, 9 Jan 2025 19:23:39 +0000 (21:23 +0200)]
lightrec: update to match libretro branch
notaz [Mon, 6 Jan 2025 00:51:47 +0000 (02:51 +0200)]
gpu_neon: try more to not violate the arm32 abi
keep 8b stack alignment, save/restore regs, try avoiding hazards of
arm+neon accessing same cachelines on cortex-a8
notaz [Sat, 28 Dec 2024 21:43:01 +0000 (23:43 +0200)]
3ds: fix build
c++ and long s32 combines to a peril
notaz [Fri, 27 Dec 2024 20:04:33 +0000 (22:04 +0200)]
gpu: further timing hacks
libretro/pcsx_rearmed#711
notaz/pcsx_rearmed#348
notaz [Fri, 27 Dec 2024 15:37:31 +0000 (17:37 +0200)]
gpu_neon: typo fix + minor stuff
notaz [Thu, 26 Dec 2024 20:18:02 +0000 (22:18 +0200)]
cdrom: fix wrong state
libretro/pcsx_rearmed#860
notaz [Thu, 26 Dec 2024 19:03:15 +0000 (21:03 +0200)]
libretro: simplify axis_range_modifier
also default to square as that better matches psx on modern controllers
notaz [Tue, 24 Dec 2024 18:39:34 +0000 (20:39 +0200)]
gpu: different offset handling
hopefully better, please report if something breaks
libretro/pcsx_rearmed#622
notaz [Tue, 24 Dec 2024 17:57:57 +0000 (19:57 +0200)]
gpu_neon: unbreak tests
notaz [Mon, 23 Dec 2024 12:21:47 +0000 (14:21 +0200)]
cdrom: yet another timing hack
libretro/pcsx_rearmed#858
notaz [Mon, 23 Dec 2024 12:21:16 +0000 (14:21 +0200)]
cdrom: some cleanup
notaz [Thu, 19 Dec 2024 23:04:28 +0000 (01:04 +0200)]
gpu: some timing improvements
libretro/pcsx_rearmed#857
notaz/pcsx_rearmed#217
notaz [Thu, 19 Dec 2024 00:23:00 +0000 (02:23 +0200)]
gpulib: unbreak debug logs
notaz [Wed, 18 Dec 2024 23:18:26 +0000 (01:18 +0200)]
vita: disable drc thread
tc writes from a thread cause data abort, and sceKernelOpenVMDomain()
returns
80010058 which https://wiki.henkaku.xyz/vita/SceSblSsMgr mentions
as SCE_ERROR_ERRNO_ENOSYS, aka "Invalid system call number"?
notaz [Wed, 18 Dec 2024 21:47:00 +0000 (23:47 +0200)]
vita: another try
maybe the last
libretro/pcsx_rearmed#856
notaz [Tue, 17 Dec 2024 23:28:49 +0000 (01:28 +0200)]
drc: allow address 0 in thread mode
Otherwise the compile thread would spin endlessly.
Noticed it when another bug caused exec at address 0.
notaz [Tue, 17 Dec 2024 23:28:11 +0000 (01:28 +0200)]
psxinterpreter: avoid excessive icache clearing
notaz [Tue, 17 Dec 2024 19:36:52 +0000 (21:36 +0200)]
drc: avoid mov pc
DDI0406 A4.1.1 "Changing between Thumb state and ARM state" recommends
against mov pc, and recent compilers completely avoid it too.
notaz [Tue, 17 Dec 2024 19:34:32 +0000 (21:34 +0200)]
vita: yet another try to fix crashes
libretro/pcsx_rearmed#856
notaz [Tue, 17 Dec 2024 00:20:39 +0000 (02:20 +0200)]
drc: another try to fix thread cache stuff
libretro/pcsx_rearmed#856
notaz [Mon, 16 Dec 2024 01:18:07 +0000 (03:18 +0200)]
make: no line splitting
won't work on libretro-build-libnx-devkitpro , who tf knows why?
notaz [Mon, 16 Dec 2024 01:16:04 +0000 (03:16 +0200)]
attempt to fix github workflows
notaz [Mon, 16 Dec 2024 01:10:00 +0000 (03:10 +0200)]
db: another lightrec hack
notaz [Sun, 15 Dec 2024 23:39:42 +0000 (01:39 +0200)]
mdec: timing hacks
libretro/pcsx_rearmed#846
notaz [Sun, 15 Dec 2024 22:35:53 +0000 (00:35 +0200)]
vita: try to fix alloc
libretro/pcsx_rearmed#856
notaz [Sun, 15 Dec 2024 21:28:39 +0000 (23:28 +0200)]
vita: cleanup
notaz [Sun, 15 Dec 2024 20:45:44 +0000 (22:45 +0200)]
libretro: drop remnants of _async_cd
there is pcsx_rearmed_cd_readahead now
notaz [Mon, 9 Dec 2024 00:17:13 +0000 (02:17 +0200)]
gpu: allow to force-enable dithering
libretro/pcsx_rearmed#853
notaz [Sun, 8 Dec 2024 23:10:52 +0000 (01:10 +0200)]
fix build
libretro/pcsx_rearmed#855
notaz [Sat, 7 Dec 2024 00:48:28 +0000 (02:48 +0200)]
3ds: change psx vram location
should be better in theory but doesn't seem to matter in practice
notaz [Thu, 5 Dec 2024 00:52:33 +0000 (02:52 +0200)]
android build yet again...
notaz [Wed, 4 Dec 2024 22:25:40 +0000 (00:25 +0200)]
drc: disable thread for cache hack
can't mix drc with interpreter in this case
libretro/pcsx_rearmed#854
notaz [Wed, 4 Dec 2024 00:21:39 +0000 (02:21 +0200)]
partially revert
f0d65622de
GPU_UNAI_USE_FLOAT_DIV_MULTINV_FOR_ONE was a bad idea, mixing multinv
with normal div still causes issues on newer compilers, probably due
to precision or float op ordering or something
notaz [Mon, 2 Dec 2024 00:56:09 +0000 (02:56 +0200)]
gpu_unai: asm part 5
notaz [Sun, 1 Dec 2024 16:14:18 +0000 (18:14 +0200)]
gpu_unai: asm part 4
notaz [Wed, 27 Nov 2024 00:14:03 +0000 (02:14 +0200)]
gpu_unai: asm part 3
notaz [Tue, 26 Nov 2024 00:26:59 +0000 (02:26 +0200)]
gpu_unai: asm part 2
notaz [Sat, 23 Nov 2024 23:32:12 +0000 (01:32 +0200)]
gpu_unai: more asm
notaz [Wed, 20 Nov 2024 00:41:04 +0000 (02:41 +0200)]
gpu_unai: avoid unneeded gouraud calculations
notaz [Mon, 18 Nov 2024 01:15:32 +0000 (03:15 +0200)]
rect quad optimizations
notaz [Sun, 17 Nov 2024 22:04:49 +0000 (00:04 +0200)]
cspace_arm: slight improvements
...maybe
notaz [Sun, 17 Nov 2024 02:48:14 +0000 (04:48 +0200)]
try another macro for arm vfp
notaz [Sun, 17 Nov 2024 02:32:02 +0000 (04:32 +0200)]
drc: restore scratch_buf_ptr
me from 2013 outsmarted myself from 2024 with this one
notaz [Sun, 17 Nov 2024 01:33:53 +0000 (03:33 +0200)]
drc: eliminate a global from get_addr_ht
notaz [Sun, 17 Nov 2024 00:19:18 +0000 (02:19 +0200)]
gpu_unai: switch back to older DIV_MULTINV behavior
caused polygon "cracks" if compiled on gcc 10.2 (devkitARM release 55),
but seems ok on gcc 11.4 or gcc 14.2 (devkitARM release 65)
libretro/pcsx_rearmed#852
notaz [Sun, 17 Nov 2024 00:17:52 +0000 (02:17 +0200)]
arm: make sure RunFast is on
seems already to be the case on 3ds at least
notaz [Wed, 13 Nov 2024 23:20:47 +0000 (01:20 +0200)]
gpulib: try to reduce global reload
espacially bad on arm32 with -pie (which is on by default):
text data bss dec hex filename
9904 0 4444 14348 380c plugins/gpulib/gpu.o # before
9128 0 4444 13572 3504 plugins/gpulib/gpu.o # after
notaz [Thu, 14 Nov 2024 23:37:37 +0000 (01:37 +0200)]
update libchdr
notaz [Thu, 14 Nov 2024 23:29:23 +0000 (01:29 +0200)]
avoid -Wno-format in general case
need this only for libchdr wanting to print int32_t on platforms
where int32_t is long int
libretro/pcsx_rearmed#851
notaz [Sun, 10 Nov 2024 16:38:18 +0000 (18:38 +0200)]
gpu_unai: clean up ilace_mask
do_cmd_list() was no place for it.
It should also alternate odd/even lines but I leave that for later.
notaz [Sun, 10 Nov 2024 16:25:15 +0000 (18:25 +0200)]
gpu_unai: drop pixel_skip
it's not possible to enable it so no need to check it on each primitive
notaz [Sun, 10 Nov 2024 15:54:28 +0000 (17:54 +0200)]
standalone: unbreak .exe mode
notaz [Fri, 8 Nov 2024 00:41:35 +0000 (02:41 +0200)]
libretro: don't make cycle_multiplier depend on device
It causes different compatibility on different devices.
If the user wants to win some fps this way, they should just
change their config.
notaz [Fri, 8 Nov 2024 00:38:17 +0000 (02:38 +0200)]
timing hack +1
libretro/pcsx_rearmed#848
notaz [Thu, 7 Nov 2024 21:40:32 +0000 (23:40 +0200)]
3ds: allow compiling with just DEVKITPRO set
notaz [Thu, 7 Nov 2024 00:23:41 +0000 (02:23 +0200)]
cdrom: fix wrong logic with cdr.Prev
notaz [Wed, 6 Nov 2024 23:58:34 +0000 (01:58 +0200)]
fix too early notify
drc mem setup needs hw regs loaded
notaz [Tue, 5 Nov 2024 00:46:05 +0000 (02:46 +0200)]
3ds: no dynarec thread when 'auto'
notaz [Tue, 5 Nov 2024 00:42:18 +0000 (02:42 +0200)]
gpu_unai: some new asm
notaz [Fri, 1 Nov 2024 00:33:01 +0000 (02:33 +0200)]
gpu_unai: move the line loop into the driver func
no need to repeat some of the setup on each line,
this also prepares for a full asm implementation of some drivers
notaz [Fri, 1 Nov 2024 00:04:33 +0000 (02:04 +0200)]
gpulib: use mmap callbacks for platforms that have it
I think this was lost in some refactoring.
Also use minimum alignment of at least (x86) cache line size.
notaz [Fri, 1 Nov 2024 00:02:55 +0000 (02:02 +0200)]
gpu_neon: mask before compare
notaz [Fri, 1 Nov 2024 00:00:34 +0000 (02:00 +0200)]
cdriso: missing null check
notaz [Mon, 28 Oct 2024 00:27:39 +0000 (02:27 +0200)]
gpu_unai: minor tuning for 3ds
not much of a difference, but at least avoids s_invTable
notaz [Sun, 27 Oct 2024 19:52:25 +0000 (21:52 +0200)]
merge from libretro
got tired of all the conflicts
notaz [Sun, 27 Oct 2024 00:21:18 +0000 (03:21 +0300)]
gpu_unai: don't typedef le32_t as structs
Experiments show it prevents autovectorization on some compilers,
so do it in asserts build only.
notaz [Sat, 26 Oct 2024 23:41:16 +0000 (02:41 +0300)]
gpu_unai: simplify gpuClearImage
no need for alignment checks as it's not possible on real psx
notaz [Sat, 26 Oct 2024 22:32:40 +0000 (01:32 +0300)]
merge gpu_unai with gpu_unai_old
Can now switch between them during gameplay.
Specify GPU_UNAI_NO_OLD=1 to prevent compiling this in to save memory or
whatever. No big endian support.
notaz [Sat, 26 Oct 2024 20:42:05 +0000 (23:42 +0300)]
try to support older binutils
EXTERN in a linker script doesn't work on ld 2.34, works on 2.43.1
notaz [Sat, 26 Oct 2024 20:12:21 +0000 (23:12 +0300)]
try to fix apple build
notaz [Sat, 26 Oct 2024 19:57:57 +0000 (22:57 +0300)]
platforms: try to fix build
many lack weak symbols, apple has different pthread_setname_np...
notaz [Fri, 25 Oct 2024 19:25:09 +0000 (22:25 +0300)]
3ds: only invalidate icache on non-compiler core
seems enough, or is it?
notaz [Thu, 24 Oct 2024 23:29:53 +0000 (02:29 +0300)]
move more globals to psxRegs
more locality, less literal pools on ARM
notaz [Thu, 24 Oct 2024 21:14:40 +0000 (00:14 +0300)]
drc: drop pending_exception
just causing confusion
notaz [Thu, 24 Oct 2024 21:07:54 +0000 (00:07 +0300)]
drc: add another sync after running the interpreter
notaz [Thu, 24 Oct 2024 21:18:33 +0000 (00:18 +0300)]
drc: update the debug patches
notaz [Wed, 23 Oct 2024 23:33:38 +0000 (02:33 +0300)]
3ds: drop pre-rosalina code
no reason not to run an up-to-date cfw
notaz [Wed, 23 Oct 2024 23:25:47 +0000 (02:25 +0300)]
3ds: use range clearing for small ranges
Seems to be wastefull to throw away the entire icache when just a few
new insns are compiled. Not that this gives any noticeable perf
difference though.
notaz [Tue, 22 Oct 2024 20:53:38 +0000 (23:53 +0300)]
mdec: compiler-friendlier clamp
that whole thing begs to be rewritten but ohwell
notaz [Tue, 22 Oct 2024 18:44:27 +0000 (21:44 +0300)]
standalone: neon dithering should be on by default
on switch too
notaz [Tue, 22 Oct 2024 18:43:03 +0000 (21:43 +0300)]
chd: override config
relies on -Iinclude being before -Ideps/libchdr/include
notaz [Tue, 22 Oct 2024 17:45:03 +0000 (20:45 +0300)]
gpulib: try to reduce flips
notaz [Tue, 22 Oct 2024 16:29:26 +0000 (19:29 +0300)]
arm: provide bgr888_to_rgb565 for v6