pcsx_rearmed.git
8 days agodb: update
notaz [Tue, 21 Jan 2025 21:12:57 +0000 (23:12 +0200)]
db: update

libretro/pcsx_rearmed#515

note that lightrec already runs more cycles as it doesn't do any
gte stall things

8 days agocpu: make sure config is applied when core is changed
notaz [Tue, 21 Jan 2025 20:51:15 +0000 (22:51 +0200)]
cpu: make sure config is applied when core is changed

8 days agospu: rework reverb according to nocash docs
notaz [Mon, 20 Jan 2025 23:12:35 +0000 (01:12 +0200)]
spu: rework reverb according to nocash docs

rpi4 performs about the same

8 days agostandalone: allow to enable slowboot in config at least
notaz [Mon, 20 Jan 2025 01:08:29 +0000 (03:08 +0200)]
standalone: allow to enable slowboot in config at least

8 days agocdrom: try different seek timing
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

9 days agocdrom: drop the propagation thing
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.

9 days agocdrom: disable some hack for xa
notaz [Sat, 18 Jan 2025 23:42:35 +0000 (01:42 +0200)]
cdrom: disable some hack for xa

9 days agolightrec: Add the big-ass debugger
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>
9 days agoDisable mult/div and memset optimizations when debugging Lightrec
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>
9 days agolightrec: Add LIGHTREC_DEBUG functionality
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>
12 days agoattempt to fix CI
notaz [Sat, 18 Jan 2025 00:27:42 +0000 (02:27 +0200)]
attempt to fix CI

12 days agotry some more CIs
notaz [Sat, 18 Jan 2025 00:20:51 +0000 (02:20 +0200)]
try some more CIs

2 weeks agocore: move some more stuff to psxRegs
notaz [Thu, 16 Jan 2025 00:01:21 +0000 (02:01 +0200)]
core: move some more stuff to psxRegs

less literal pools

2 weeks agodrc: fix wrong stop check
notaz [Wed, 15 Jan 2025 23:20:30 +0000 (01:20 +0200)]
drc: fix wrong stop check

would return prematurely because of this

2 weeks agomisc: hard-reset cpu on hle change
notaz [Wed, 15 Jan 2025 23:06:43 +0000 (01:06 +0200)]
misc: hard-reset cpu on hle change

2 weeks agofix some warnings on win32
notaz [Wed, 15 Jan 2025 19:15:07 +0000 (21:15 +0200)]
fix some warnings on win32

2 weeks agodb: update
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

2 weeks agolightrec: update
notaz [Tue, 14 Jan 2025 01:27:23 +0000 (03:27 +0200)]
lightrec: update

2 weeks agogpu: adjust timing again
notaz [Tue, 14 Jan 2025 00:51:58 +0000 (02:51 +0200)]
gpu: adjust timing again

maybe I should just give up...

2 weeks agodrc: adjust timing hacks
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

2 weeks agorestore Haiku build
Benjamin FRANCOIS [Fri, 10 Jan 2025 19:56:50 +0000 (11:56 -0800)]
restore Haiku build

2 weeks agolightrec: update to match libretro branch
notaz [Thu, 9 Jan 2025 19:23:39 +0000 (21:23 +0200)]
lightrec: update to match libretro branch

3 weeks agogpu_neon: try more to not violate the arm32 abi
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

4 weeks ago3ds: fix build
notaz [Sat, 28 Dec 2024 21:43:01 +0000 (23:43 +0200)]
3ds: fix build

c++ and long s32 combines to a peril

4 weeks agogpu: further timing hacks
notaz [Fri, 27 Dec 2024 20:04:33 +0000 (22:04 +0200)]
gpu: further timing hacks

libretro/pcsx_rearmed#711
notaz/pcsx_rearmed#348

4 weeks agogpu_neon: typo fix + minor stuff
notaz [Fri, 27 Dec 2024 15:37:31 +0000 (17:37 +0200)]
gpu_neon: typo fix + minor stuff

4 weeks agocdrom: fix wrong state
notaz [Thu, 26 Dec 2024 20:18:02 +0000 (22:18 +0200)]
cdrom: fix wrong state

libretro/pcsx_rearmed#860

4 weeks agolibretro: simplify axis_range_modifier
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

5 weeks agogpu: different offset handling
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

5 weeks agogpu_neon: unbreak tests
notaz [Tue, 24 Dec 2024 17:57:57 +0000 (19:57 +0200)]
gpu_neon: unbreak tests

5 weeks agocdrom: yet another timing hack
notaz [Mon, 23 Dec 2024 12:21:47 +0000 (14:21 +0200)]
cdrom: yet another timing hack

libretro/pcsx_rearmed#858

5 weeks agocdrom: some cleanup
notaz [Mon, 23 Dec 2024 12:21:16 +0000 (14:21 +0200)]
cdrom: some cleanup

5 weeks agogpu: some timing improvements
notaz [Thu, 19 Dec 2024 23:04:28 +0000 (01:04 +0200)]
gpu: some timing improvements

libretro/pcsx_rearmed#857
notaz/pcsx_rearmed#217

6 weeks agogpulib: unbreak debug logs
notaz [Thu, 19 Dec 2024 00:23:00 +0000 (02:23 +0200)]
gpulib: unbreak debug logs

6 weeks agovita: disable drc thread
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"?

6 weeks agovita: another try
notaz [Wed, 18 Dec 2024 21:47:00 +0000 (23:47 +0200)]
vita: another try

maybe the last
libretro/pcsx_rearmed#856

6 weeks agodrc: allow address 0 in thread mode
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.

6 weeks agopsxinterpreter: avoid excessive icache clearing
notaz [Tue, 17 Dec 2024 23:28:11 +0000 (01:28 +0200)]
psxinterpreter: avoid excessive icache clearing

6 weeks agodrc: avoid mov pc
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.

6 weeks agovita: yet another try to fix crashes
notaz [Tue, 17 Dec 2024 19:34:32 +0000 (21:34 +0200)]
vita: yet another try to fix crashes

libretro/pcsx_rearmed#856

6 weeks agodrc: another try to fix thread cache stuff
notaz [Tue, 17 Dec 2024 00:20:39 +0000 (02:20 +0200)]
drc: another try to fix thread cache stuff

libretro/pcsx_rearmed#856

6 weeks agomake: no line splitting
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?

6 weeks agoattempt to fix github workflows
notaz [Mon, 16 Dec 2024 01:16:04 +0000 (03:16 +0200)]
attempt to fix github workflows

6 weeks agodb: another lightrec hack
notaz [Mon, 16 Dec 2024 01:10:00 +0000 (03:10 +0200)]
db: another lightrec hack

6 weeks agomdec: timing hacks
notaz [Sun, 15 Dec 2024 23:39:42 +0000 (01:39 +0200)]
mdec: timing hacks

libretro/pcsx_rearmed#846

6 weeks agovita: try to fix alloc
notaz [Sun, 15 Dec 2024 22:35:53 +0000 (00:35 +0200)]
vita: try to fix alloc

libretro/pcsx_rearmed#856

6 weeks agovita: cleanup
notaz [Sun, 15 Dec 2024 21:28:39 +0000 (23:28 +0200)]
vita: cleanup

6 weeks agolibretro: drop remnants of _async_cd
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

7 weeks agogpu: allow to force-enable dithering
notaz [Mon, 9 Dec 2024 00:17:13 +0000 (02:17 +0200)]
gpu: allow to force-enable dithering

libretro/pcsx_rearmed#853

7 weeks agofix build
notaz [Sun, 8 Dec 2024 23:10:52 +0000 (01:10 +0200)]
fix build

libretro/pcsx_rearmed#855

7 weeks ago3ds: change psx vram location
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

8 weeks agoandroid build yet again...
notaz [Thu, 5 Dec 2024 00:52:33 +0000 (02:52 +0200)]
android build yet again...

8 weeks agodrc: disable thread for cache hack
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

8 weeks agopartially revert f0d65622de
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

8 weeks agogpu_unai: asm part 5
notaz [Mon, 2 Dec 2024 00:56:09 +0000 (02:56 +0200)]
gpu_unai: asm part 5

8 weeks agogpu_unai: asm part 4
notaz [Sun, 1 Dec 2024 16:14:18 +0000 (18:14 +0200)]
gpu_unai: asm part 4

8 weeks agogpu_unai: asm part 3
notaz [Wed, 27 Nov 2024 00:14:03 +0000 (02:14 +0200)]
gpu_unai: asm part 3

8 weeks agogpu_unai: asm part 2
notaz [Tue, 26 Nov 2024 00:26:59 +0000 (02:26 +0200)]
gpu_unai: asm part 2

2 months agogpu_unai: more asm
notaz [Sat, 23 Nov 2024 23:32:12 +0000 (01:32 +0200)]
gpu_unai: more asm

2 months agogpu_unai: avoid unneeded gouraud calculations
notaz [Wed, 20 Nov 2024 00:41:04 +0000 (02:41 +0200)]
gpu_unai: avoid unneeded gouraud calculations

2 months agorect quad optimizations
notaz [Mon, 18 Nov 2024 01:15:32 +0000 (03:15 +0200)]
rect quad optimizations

2 months agocspace_arm: slight improvements
notaz [Sun, 17 Nov 2024 22:04:49 +0000 (00:04 +0200)]
cspace_arm: slight improvements

...maybe

2 months agotry another macro for arm vfp
notaz [Sun, 17 Nov 2024 02:48:14 +0000 (04:48 +0200)]
try another macro for arm vfp

2 months agodrc: restore scratch_buf_ptr
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

2 months agodrc: eliminate a global from get_addr_ht
notaz [Sun, 17 Nov 2024 01:33:53 +0000 (03:33 +0200)]
drc: eliminate a global from get_addr_ht

2 months agogpu_unai: switch back to older DIV_MULTINV behavior
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

2 months agoarm: make sure RunFast is on
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

2 months agogpulib: try to reduce global reload
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

2 months agoupdate libchdr
notaz [Thu, 14 Nov 2024 23:37:37 +0000 (01:37 +0200)]
update libchdr

2 months agoavoid -Wno-format in general case
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

2 months agogpu_unai: clean up ilace_mask
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.

2 months agogpu_unai: drop pixel_skip
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

2 months agostandalone: unbreak .exe mode
notaz [Sun, 10 Nov 2024 15:54:28 +0000 (17:54 +0200)]
standalone: unbreak .exe mode

2 months agolibretro: don't make cycle_multiplier depend on device
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.

2 months agotiming hack +1
notaz [Fri, 8 Nov 2024 00:38:17 +0000 (02:38 +0200)]
timing hack +1

libretro/pcsx_rearmed#848

2 months ago3ds: allow compiling with just DEVKITPRO set
notaz [Thu, 7 Nov 2024 21:40:32 +0000 (23:40 +0200)]
3ds: allow compiling with just DEVKITPRO set

2 months agocdrom: fix wrong logic with cdr.Prev
notaz [Thu, 7 Nov 2024 00:23:41 +0000 (02:23 +0200)]
cdrom: fix wrong logic with cdr.Prev

2 months agofix too early notify
notaz [Wed, 6 Nov 2024 23:58:34 +0000 (01:58 +0200)]
fix too early notify

drc mem setup needs hw regs loaded

2 months ago3ds: no dynarec thread when 'auto'
notaz [Tue, 5 Nov 2024 00:46:05 +0000 (02:46 +0200)]
3ds: no dynarec thread when 'auto'

2 months agogpu_unai: some new asm
notaz [Tue, 5 Nov 2024 00:42:18 +0000 (02:42 +0200)]
gpu_unai: some new asm

2 months agogpu_unai: move the line loop into the driver func
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

2 months agogpulib: use mmap callbacks for platforms that have it
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.

2 months agogpu_neon: mask before compare
notaz [Fri, 1 Nov 2024 00:02:55 +0000 (02:02 +0200)]
gpu_neon: mask before compare

2 months agocdriso: missing null check
notaz [Fri, 1 Nov 2024 00:00:34 +0000 (02:00 +0200)]
cdriso: missing null check

2 months agogpu_unai: minor tuning for 3ds
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

3 months agomerge from libretro
notaz [Sun, 27 Oct 2024 19:52:25 +0000 (21:52 +0200)]
merge from libretro

got tired of all the conflicts

3 months agogpu_unai: don't typedef le32_t as structs
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.

3 months agogpu_unai: simplify gpuClearImage
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

3 months agomerge gpu_unai with gpu_unai_old
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.

3 months agotry to support older binutils
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

3 months agotry to fix apple build
notaz [Sat, 26 Oct 2024 20:12:21 +0000 (23:12 +0300)]
try to fix apple build

3 months agoplatforms: try to fix 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...

3 months ago3ds: only invalidate icache on non-compiler core
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?

3 months agomove more globals to psxRegs
notaz [Thu, 24 Oct 2024 23:29:53 +0000 (02:29 +0300)]
move more globals to psxRegs

more locality, less literal pools on ARM

3 months agodrc: drop pending_exception
notaz [Thu, 24 Oct 2024 21:14:40 +0000 (00:14 +0300)]
drc: drop pending_exception

just causing confusion

3 months agodrc: add another sync after running the interpreter
notaz [Thu, 24 Oct 2024 21:07:54 +0000 (00:07 +0300)]
drc: add another sync after running the interpreter

3 months agodrc: update the debug patches
notaz [Thu, 24 Oct 2024 21:18:33 +0000 (00:18 +0300)]
drc: update the debug patches

3 months ago3ds: drop pre-rosalina code
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

3 months ago3ds: use range clearing for small ranges
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.

3 months agomdec: compiler-friendlier clamp
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