notaz [Thu, 15 Sep 2022 18:48:14 +0000 (21:48 +0300)]
try to enable gpu_neon on x86
notaz [Thu, 15 Sep 2022 18:12:10 +0000 (21:12 +0300)]
misc: patch some issues indicated by clang
notaz [Thu, 15 Sep 2022 16:11:11 +0000 (19:11 +0300)]
frontend: handle double res rendering, enable on x86_64
notaz [Sun, 11 Sep 2022 22:40:24 +0000 (01:40 +0300)]
gpu_neon: brand new x86 SSE2+ implementation
notaz [Tue, 16 Aug 2022 21:11:39 +0000 (00:11 +0300)]
gpu_neon: adjust some comments and things
notaz [Thu, 15 Sep 2022 16:25:01 +0000 (19:25 +0300)]
cdrom: delay the missed irq more
Paul Cercueil [Mon, 12 Sep 2022 20:26:25 +0000 (22:26 +0200)]
Update lightrec
20220912 (#688)
* lightrec: Remove leftover debug stuff
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
* lightrec: Fix lightrec_can_hw_direct() table
It was slightly wrong, which caused crashes in the intro FMV of
Sled Storm (and maybe other games).
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
* git subrepo pull --force deps/lightrec
subrepo:
subdir: "deps/lightrec"
merged: "
962ba05793"
upstream:
origin: "https://github.com/pcercuei/lightrec.git"
branch: "master"
commit: "
962ba05793"
git-subrepo:
version: "0.4.3"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "
2f68596"
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Sun, 11 Sep 2022 16:33:38 +0000 (18:33 +0200)]
Update lightrec
20220911 (#687)
* Fix <sys/mman.h> symlink
Using a symlink made it impossible to compile on Windows with MinGW.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
* lightrec: Fix crash on Windows and WiiU
Fix crash on platforms that don't use Lightrec's custom map.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
* lightrec: Fix has_interrupt() using PCSX' registers
It should use Lightrec's internal CP0 registers instead.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
* git subrepo pull --force deps/lightrec
subrepo:
subdir: "deps/lightrec"
merged: "
071973e3ac"
upstream:
origin: "https://github.com/pcercuei/lightrec.git"
branch: "master"
commit: "
071973e3ac"
git-subrepo:
version: "0.4.3"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "
2f68596"
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Sun, 11 Sep 2022 09:12:45 +0000 (11:12 +0200)]
Update lightrec
20220910 (#686)
* git subrepo pull --force deps/lightning
subrepo:
subdir: "deps/lightning"
merged: "
b1dfc564e2"
upstream:
origin: "https://github.com/pcercuei/gnu_lightning.git"
branch: "pcsx_rearmed"
commit: "
b1dfc564e2"
git-subrepo:
version: "0.4.3"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "
2f68596"
* include: update lightning.h
Update lightning.h with a copy generated from the latest master.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
* git subrepo pull --force deps/lightrec
subrepo:
subdir: "deps/lightrec"
merged: "
e122276183"
upstream:
origin: "https://github.com/pcercuei/lightrec.git"
branch: "master"
commit: "
e122276183"
git-subrepo:
version: "0.4.3"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "
2f68596"
* lightrec: Update to latest Lightrec API
Remove the debug features since they aren't really useful in the
libretro core.
Update the glue code to use the updated API functions; and implement
lightrec_can_hw_direct() for a slight performance increase.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
notaz [Sat, 10 Sep 2022 14:53:54 +0000 (17:53 +0300)]
some big endian fixes
"kinda sucks but it works" kind of thing
notaz [Sat, 10 Sep 2022 13:46:05 +0000 (16:46 +0300)]
spu: fix wrong volume shift
libretro/pcsx_rearmed#685
notaz [Fri, 9 Sep 2022 23:37:50 +0000 (02:37 +0300)]
fix build
forgot to add 'extern'
notaz [Fri, 9 Sep 2022 23:26:04 +0000 (02:26 +0300)]
standalone: allow lighrec for testing
./configure
make DYNAREC=lightrec
notaz [Fri, 9 Sep 2022 19:11:30 +0000 (22:11 +0300)]
psxinterpreter: reduce the use of globals
they induce penalties with -fPIC
notaz [Fri, 9 Sep 2022 22:58:53 +0000 (01:58 +0300)]
psxinterpreter: sync with upstream
for easier merging
notaz [Thu, 8 Sep 2022 17:09:04 +0000 (20:09 +0300)]
easier logging of unhandled stuff
notaz [Thu, 8 Sep 2022 18:13:25 +0000 (21:13 +0300)]
cdrom: partially emulate the fifo
notaz [Thu, 8 Sep 2022 15:17:06 +0000 (18:17 +0300)]
dma: try more accurate timings
seems to help Legend of Mana
notaz [Thu, 8 Sep 2022 15:01:34 +0000 (18:01 +0300)]
cdrom: get rid of pTransfer
it could easily crash the emu (misbehaving game or even malicious ISO)
notaz [Tue, 6 Sep 2022 21:47:55 +0000 (00:47 +0300)]
cdrom: don't reschedule irqs
trigger shortly after ack instead, like nocash describes
notaz [Mon, 5 Sep 2022 20:47:10 +0000 (23:47 +0300)]
cdrom: clean up command handling
notaz [Mon, 5 Sep 2022 16:41:52 +0000 (19:41 +0300)]
cdrom: try to eliminate playback timing drifting
notaz [Tue, 6 Sep 2022 23:09:08 +0000 (02:09 +0300)]
psxcounters: try to eliminate another source of audio drift
notaz [Wed, 7 Sep 2022 23:50:36 +0000 (02:50 +0300)]
spu: cleanup some irq hacks
Note that bIgnoreLoop is still needed or
"Misadventures Of Tron Bonne" may hang after cutscenes.
Before this commit the game will sometimes cut off dialogues.
notaz [Tue, 6 Sep 2022 15:25:42 +0000 (18:25 +0300)]
spu: sync on xa playback start
this avoids nasty underflows at the start of the stream
notaz [Sun, 4 Sep 2022 23:03:24 +0000 (02:03 +0300)]
spu: support master volume
notaz [Sun, 4 Sep 2022 21:40:58 +0000 (00:40 +0300)]
spu: rename dwChannelOn to something more suitable
notaz [Sun, 4 Sep 2022 21:02:28 +0000 (00:02 +0300)]
spu: remove some strange rounding
Seems wrong.
Also deal with now possible div by 0 in scan_for_irq().
notaz [Sat, 3 Sep 2022 15:37:53 +0000 (18:37 +0300)]
cdrom: remove confusing comment
No need for a wall-of-text comment for something as basic as seeking.
It also said "disabling it with `&& false` for now" when there is no
such code here.
notaz [Sat, 3 Sep 2022 15:33:09 +0000 (18:33 +0300)]
cdrom: remove another hack
The hack just makes Worms Pinball unstable, and Crusaders of Might
and Magic no longer seems to need it.
notaz [Fri, 2 Sep 2022 20:13:44 +0000 (23:13 +0300)]
cdrom: get rid of cdrPlayInterrupt
unify with cdrReadInterrupt and name it cdrPlaySeekReadInterrupt
... althoug these are not actually interrupts, more like events,
but keep this weird PCSX's naming convention
notaz [Thu, 1 Sep 2022 21:47:56 +0000 (00:47 +0300)]
cdrom: try to clean up the seeking mess
regressions are likely (this is cdrom code - pcsx's weak spot),
so feel free to revert if I'm not responsive
notaz [Wed, 31 Aug 2022 23:09:49 +0000 (02:09 +0300)]
cdrom: should use the last Setloc loc and SeekL
notaz/pcsx_rearmed#253
notaz [Wed, 31 Aug 2022 23:02:21 +0000 (02:02 +0300)]
cdrom: some debugging aid
notaz [Fri, 2 Sep 2022 23:09:14 +0000 (02:09 +0300)]
cdrom: sync with upstream
Without this can't cherry-pick stuff from there.
notaz [Tue, 30 Aug 2022 21:02:47 +0000 (00:02 +0300)]
Revert "Revert "misc: get rid of an unaligned read""
This reverts commit
af0df01112a234b848be5fe87a2066bb938d356c.
notaz [Mon, 29 Aug 2022 23:58:32 +0000 (02:58 +0300)]
plugins: try to untangle the CALLBACK mess
on ARM it doesn't matter so calling conventions were never maintained,
so just get rid of __stdcall
notaz [Tue, 30 Aug 2022 00:00:51 +0000 (03:00 +0300)]
spu: get rid of iXAPitch
it makes no sense after SPU was fully synced to the core, and now it
just pulls unwanted windows.h dependency on win32.
LibretroAdmin [Mon, 29 Aug 2022 23:26:03 +0000 (01:26 +0200)]
Revert "misc: get rid of an unaligned read"
This reverts commit
5bb56b1a0ec9c4875a4b9f532d79ee477a5a6e8e.
notaz [Sun, 28 Aug 2022 20:51:40 +0000 (23:51 +0300)]
misc: get rid of an unaligned read
96c6ec7055ecef55b3dd221c86b796512bf52107 introduced an unaligned read
which is undefined behavior in C, even if most hardware allows it
(but some very old ARMs don't). Perf. doesn't matter here so read
byte-by-byte.
notaz/pcsx_rearmed#261
notaz [Sat, 13 Aug 2022 21:07:11 +0000 (00:07 +0300)]
gpu_neon: fix another abi violation
before the flush_render_block_buffer call the stack is misaligned,
so push an odd num of regs to realign
notaz [Sat, 13 Aug 2022 21:05:07 +0000 (00:05 +0300)]
gpu_neon: fix wrong block counting
notaz [Thu, 11 Aug 2022 19:52:54 +0000 (22:52 +0300)]
drc: fix a silly mistake of overwriting a reg
notaz [Wed, 10 Aug 2022 19:39:41 +0000 (22:39 +0300)]
drc: rework smc checks again
the way it was done before wasn't good enough for
Mega Man Legends 2 at least
notaz [Wed, 10 Aug 2022 19:32:11 +0000 (22:32 +0300)]
drc: fix wrong masking in set_jump_target
notaz [Tue, 9 Aug 2022 17:42:39 +0000 (20:42 +0300)]
cspace: add forgotten length decrement
notaz [Mon, 8 Aug 2022 23:56:05 +0000 (02:56 +0300)]
make: switch apple platforms to neon gpu too
let's see it it builds
notaz [Mon, 8 Aug 2022 23:44:32 +0000 (02:44 +0300)]
Android.mk: try enable neon gpu for arm64 Android too
notaz [Mon, 8 Aug 2022 23:38:59 +0000 (02:38 +0300)]
make: switch most arm64 platforms to neon gpu
notaz [Mon, 8 Aug 2022 23:05:19 +0000 (02:05 +0300)]
make: adjust in preparation to enable neon on arm64
notaz [Mon, 8 Aug 2022 21:07:27 +0000 (00:07 +0300)]
cspace: generic implementation with vector extensions
notaz [Mon, 8 Aug 2022 18:16:59 +0000 (21:16 +0300)]
gpu_neon: integration for arm64
notaz [Sun, 17 Jul 2022 22:26:25 +0000 (01:26 +0300)]
gpu_neon: new intrinsics-only implementation
~80-95% performance of the asm version on cortex-a72,
but maybe less of a portability nightmare (+arm64 support)
notaz [Sat, 23 Jul 2022 15:22:33 +0000 (18:22 +0300)]
gpu_neon: place asm func prototypes into a separate header
for the upcoming intrinsics implementation
notaz [Sun, 17 Jul 2022 22:18:52 +0000 (01:18 +0300)]
gpu_neon: don't include vector_ops.h in the main header
that stuff is only used in the C-only prototype
notaz [Mon, 1 Aug 2022 21:08:49 +0000 (00:08 +0300)]
gpu_neon: fix some more abi violations
notaz [Tue, 2 Aug 2022 21:51:35 +0000 (00:51 +0300)]
drc: patch up some potential issues on the switch
notaz [Sat, 23 Jul 2022 22:31:08 +0000 (01:31 +0300)]
gpu_neon: try to make the compiler save some callee-save regs
... which the asm isn't doing properly
notaz [Fri, 29 Jul 2022 22:07:21 +0000 (01:07 +0300)]
dfxvideo: patch up some unsafe macros
(old?)-ARM version of GETLE32() was causing wrong shifting due to
implicit signed int promotion.
libretro/pcsx_rearmed#676
LibretroAdmin [Tue, 26 Jul 2022 13:10:51 +0000 (15:10 +0200)]
Update .gitlab-ci.yml
notaz [Mon, 18 Jul 2022 22:30:14 +0000 (01:30 +0300)]
mman: align and clear for 3ds also
callers expect cleared mem
notaz [Mon, 18 Jul 2022 21:21:44 +0000 (00:21 +0300)]
drc: some more libnx support
notaz [Mon, 18 Jul 2022 21:03:44 +0000 (00:03 +0300)]
libnx: make mmap act more like on Linux
Paul Cercueil [Sat, 16 Jul 2022 20:05:41 +0000 (22:05 +0200)]
Update lightrec
20220716 (#672)
* lightrec: Simply invalidate code and reset registers for plugin reset
Instead of destroying the Lightrec instance and creating a new one,
simply invalidate the code and reset all registers to their default
values.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
* git subrepo pull --force deps/lightrec
subrepo:
subdir: "deps/lightrec"
merged: "
7545b5a7"
upstream:
origin: "https://github.com/pcercuei/lightrec.git"
branch: "master"
commit: "
7545b5a7"
git-subrepo:
version: "0.4.3"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "
2f68596"
notaz [Fri, 15 Jul 2022 23:53:27 +0000 (02:53 +0300)]
switch: define HAVE_LIBNX
somehow assumed it was done already
notaz [Thu, 14 Jul 2022 22:35:48 +0000 (01:35 +0300)]
libnx: try to enable the ari64 dynarec
If it crashes please report (logs required).
notaz [Thu, 14 Jul 2022 22:33:46 +0000 (01:33 +0300)]
make: make the assignment work
'?=' keeps the previous assignment, which is probably not what was
intended.
notaz [Thu, 14 Jul 2022 21:41:58 +0000 (00:41 +0300)]
drc: simplify cache flush for some platforms
untested, may break 3DS, if it happens please report
notaz [Thu, 14 Jul 2022 21:24:34 +0000 (00:24 +0300)]
drc: some libnx support
CometHunter92 [Tue, 14 Jun 2022 16:39:19 +0000 (18:39 +0200)]
compile the core with the PEOpS plugin for x86 and arm64 platforms (#670)
LibretroAdmin [Sun, 12 Jun 2022 16:59:57 +0000 (17:59 +0100)]
Merge pull request #669 from pcercuei/lightrec-fix-bios-munmap
lightrec: Fix unmap size of BIOS
Paul Cercueil [Sun, 12 Jun 2022 15:59:14 +0000 (16:59 +0100)]
psxmem: Use Lightrec memory map even for interpreter
The CPU emulation method (interpreter or dynarec) can be switched at
runtime. Therefore we must use Lightrec's memory map even when the
interpreter is used.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Sun, 12 Jun 2022 15:05:02 +0000 (16:05 +0100)]
lightrec: Fix unmap size of BIOS
The BIOS was mapped as 2 MiB, since we want to use a huge page if
possible. Therefore it should also be unmapped as 2 MiB, otherwise the
upper 1.5 MiB will still be mapped after de-init, which will make it
impossible to map the BIOS once again.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
LibretroAdmin [Sat, 11 Jun 2022 09:46:40 +0000 (10:46 +0100)]
Merge pull request #668 from pcercuei/update-lightrec-
20220607
Update lightrec
20220607
Paul Cercueil [Fri, 10 Jun 2022 23:17:16 +0000 (00:17 +0100)]
git subrepo pull --force deps/lightrec
subrepo:
subdir: "deps/lightrec"
merged: "
30bad28d"
upstream:
origin: "https://github.com/pcercuei/lightrec.git"
branch: "master"
commit: "
30bad28d"
git-subrepo:
version: "0.4.3"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "
2f68596"
Paul Cercueil [Mon, 30 May 2022 17:08:10 +0000 (18:08 +0100)]
frontend: Remove duplicated code
The same function bgr888_to_rgb565() was present twice, protected by
different macros.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Sat, 11 Jun 2022 08:40:13 +0000 (09:40 +0100)]
plugins: Fix build of unai/neon
The gpu.status does not use bit-fields anymore following
61124a6d ("Get rid of bit fields in union") because it was not
endian-safe.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
LibretroAdmin [Sat, 11 Jun 2022 01:08:36 +0000 (02:08 +0100)]
Merge pull request #665 from QuarkTheAwesome/libretro-merge-be
Fix PCSX core and dfxvideo for big-endian systems
LibretroAdmin [Sat, 11 Jun 2022 01:08:15 +0000 (02:08 +0100)]
Merge pull request #663 from bslenul/rumble-fix
Rumble should only work with 'dualshock' device type
notaz [Mon, 6 Jun 2022 22:59:51 +0000 (01:59 +0300)]
cdriso: hack .chd track handling to match .cue
libretro/pcsx_rearmed#648
notaz [Mon, 6 Jun 2022 21:45:57 +0000 (00:45 +0300)]
cdrom: don't read and play simultaneously
notaz/pcsx_rearmed#250
notaz [Mon, 6 Jun 2022 20:53:38 +0000 (23:53 +0300)]
lightrec: try to clean up intergarion, fix -O0
notaz/pcsx_rearmed#251
Paul Cercueil [Tue, 24 May 2022 21:22:48 +0000 (22:22 +0100)]
cdrom: Fix PBP support on big-endian platforms
The data contained in the PBP is in little-endian format. Therefore,
everything in the PBP's header must be read with the byte-swap macros,
for PBP support to work on big-endian systems.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Sat, 21 May 2022 16:52:47 +0000 (17:52 +0100)]
dfxvideo: Restore support for big-endian arch
The hardware registers, emulated RAM or emulated VRAM are all in
little-endian format. Therefore, each access must be done with one of
the byte-swap macros, for the plugin to work on big-endian systems.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Sat, 21 May 2022 17:58:14 +0000 (18:58 +0100)]
frontend: Fix colorspace conversion routines on big-endian
The bgr555_to_rgb565() and bgr888_to_rgb565() functions were only
working correctly on little-endian systems.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Thu, 26 May 2022 13:07:41 +0000 (14:07 +0100)]
misc: Use GCC builtins for byte-swap operations
Instead of using custom code to byte-swap values, use the built-in
function provided by GCC.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Fri, 13 Sep 2019 21:13:43 +0000 (23:13 +0200)]
gpulib: Add proper support for big-endian
Update the gpulib code to work properly on big-endian architectures.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Fri, 13 Sep 2019 21:09:11 +0000 (23:09 +0200)]
Get rid of bit fields in union
Long story short, bit fields aren't endian-safe.
More info: http://mjfrazer.org/mjfrazer/bitfields/
Simplify that by just using a few macros to access the needed bits.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Fri, 13 Sep 2019 21:01:57 +0000 (23:01 +0200)]
Make sure hardware registers are manipulated as little-endian
The hardware registers should be represented in little-endian format.
Therefore, on big-endian systems the values need to be byte-swapped.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Wed, 11 Sep 2019 15:33:14 +0000 (17:33 +0200)]
Fix PCSX on big-endian systems
The __BIGENDIAN__ macro was never defined anywhere, and the
__BIG_ENDIAN__ macro isn't set anymore by recent versions of GCC.
Replace them by checking __BYTE_ORDER__ against __ORDER_BIG_ENDIAN__.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
bslenul [Sun, 5 Jun 2022 09:41:55 +0000 (11:41 +0200)]
Rumble should only work with 'dualshock' device type
LibretroAdmin [Sat, 4 Jun 2022 23:54:41 +0000 (00:54 +0100)]
Merge pull request #662 from pcercuei/update-lightrec-
20220604
Update GNU Lightning
Paul Cercueil [Sat, 4 Jun 2022 23:30:15 +0000 (00:30 +0100)]
git subrepo pull --force deps/lightning
subrepo:
subdir: "deps/lightning"
merged: "
7fce9abb"
upstream:
origin: "https://github.com/pcercuei/gnu_lightning.git"
branch: "pcsx_rearmed"
commit: "
7fce9abb"
git-subrepo:
version: "0.4.3"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "
2f68596"
libretroadmin [Sat, 4 Jun 2022 21:56:57 +0000 (23:56 +0200)]
(Windows) Not building, include tlsf.c by default
libretroadmin [Sat, 4 Jun 2022 21:51:59 +0000 (23:51 +0200)]
(Android) Fix includes
libretroadmin [Sat, 4 Jun 2022 21:50:10 +0000 (23:50 +0200)]
(Android) include tlsf.c
LibretroAdmin [Sat, 4 Jun 2022 21:48:57 +0000 (22:48 +0100)]
Merge pull request #661 from pcercuei/update-lightrec-
20220604
Update lightrec
20220604
Paul Cercueil [Sat, 4 Jun 2022 20:12:14 +0000 (21:12 +0100)]
lightrec: Enable code buffer support
Map a 8 MiB code buffer at (base + 0x80.0000), right after the emulated
RAM. In this code buffer, Lightrec will write the recompiled code for
the host machine.
In general, the code buffer support is very useful when the host
platform has only a small RW+X memory area available for JIT purposes,
like it's the case on the WiiU.
On Linux, this isn't a concern, but having a code buffer does still
bring a benefit: if both the start address and the end address of the
code buffer's address fit in 32 bits, then Lightrec's code LUT can be
shrunk in half (2.5 MiB instead of 5 MiB), as it only needs to store
32-bit pointers.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Sat, 4 Jun 2022 20:02:05 +0000 (21:02 +0100)]
git subrepo pull --force deps/lightrec
subrepo:
subdir: "deps/lightrec"
merged: "
a8fe7568"
upstream:
origin: "https://github.com/pcercuei/lightrec.git"
branch: "master"
commit: "
a8fe7568"
git-subrepo:
version: "0.4.3"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "
2f68596"
notaz [Thu, 2 Jun 2022 20:22:19 +0000 (23:22 +0300)]
psxcounters: try to support a dynarec with a very long timeslice
The dynarec instead should probably not run for thousands of cycles
doing no interrupt checks, but maybe this hack will be enough.
libretro/pcsx_rearmed#658