pcsx_rearmed.git
2 years agocdrom: clean up command handling
notaz [Mon, 5 Sep 2022 20:47:10 +0000 (23:47 +0300)]
cdrom: clean up command handling

2 years agocdrom: try to eliminate playback timing drifting
notaz [Mon, 5 Sep 2022 16:41:52 +0000 (19:41 +0300)]
cdrom: try to eliminate playback timing drifting

2 years agopsxcounters: try to eliminate another source of audio drift
notaz [Tue, 6 Sep 2022 23:09:08 +0000 (02:09 +0300)]
psxcounters: try to eliminate another source of audio drift

2 years agospu: cleanup some irq hacks
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.

2 years agospu: sync on xa playback start
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

2 years agospu: support master volume
notaz [Sun, 4 Sep 2022 23:03:24 +0000 (02:03 +0300)]
spu: support master volume

2 years agospu: rename dwChannelOn to something more suitable
notaz [Sun, 4 Sep 2022 21:40:58 +0000 (00:40 +0300)]
spu: rename dwChannelOn to something more suitable

2 years agospu: remove some strange rounding
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().

2 years agocdrom: remove confusing comment
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.

2 years agocdrom: remove another hack
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.

2 years agocdrom: get rid of cdrPlayInterrupt
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

2 years agocdrom: try to clean up the seeking mess
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

2 years agocdrom: should use the last Setloc loc and SeekL
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

2 years agocdrom: some debugging aid
notaz [Wed, 31 Aug 2022 23:02:21 +0000 (02:02 +0300)]
cdrom: some debugging aid

2 years agocdrom: sync with upstream
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.

2 years agoRevert "Revert "misc: get rid of an unaligned read""
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.

2 years agoplugins: try to untangle the CALLBACK mess
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

2 years agospu: get rid of iXAPitch
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.

2 years agoRevert "misc: get rid of an unaligned read"
LibretroAdmin [Mon, 29 Aug 2022 23:26:03 +0000 (01:26 +0200)]
Revert "misc: get rid of an unaligned read"

This reverts commit 5bb56b1a0ec9c4875a4b9f532d79ee477a5a6e8e.

2 years agomisc: get rid of an unaligned read
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

2 years agogpu_neon: fix another abi violation
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

2 years agogpu_neon: fix wrong block counting
notaz [Sat, 13 Aug 2022 21:05:07 +0000 (00:05 +0300)]
gpu_neon: fix wrong block counting

2 years agodrc: fix a silly mistake of overwriting a reg
notaz [Thu, 11 Aug 2022 19:52:54 +0000 (22:52 +0300)]
drc: fix a silly mistake of overwriting a reg

2 years agodrc: rework smc checks again
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

2 years agodrc: fix wrong masking in set_jump_target
notaz [Wed, 10 Aug 2022 19:32:11 +0000 (22:32 +0300)]
drc: fix wrong masking in set_jump_target

2 years agocspace: add forgotten length decrement
notaz [Tue, 9 Aug 2022 17:42:39 +0000 (20:42 +0300)]
cspace: add forgotten length decrement

2 years agomake: switch apple platforms to neon gpu too
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

2 years agoAndroid.mk: try enable neon gpu for arm64 Android too
notaz [Mon, 8 Aug 2022 23:44:32 +0000 (02:44 +0300)]
Android.mk: try enable neon gpu for arm64 Android too

2 years agomake: switch most arm64 platforms to neon gpu
notaz [Mon, 8 Aug 2022 23:38:59 +0000 (02:38 +0300)]
make: switch most arm64 platforms to neon gpu

2 years agomake: adjust in preparation to enable neon on arm64
notaz [Mon, 8 Aug 2022 23:05:19 +0000 (02:05 +0300)]
make: adjust in preparation to enable neon on arm64

2 years agocspace: generic implementation with vector extensions
notaz [Mon, 8 Aug 2022 21:07:27 +0000 (00:07 +0300)]
cspace: generic implementation with vector extensions

2 years agogpu_neon: integration for arm64
notaz [Mon, 8 Aug 2022 18:16:59 +0000 (21:16 +0300)]
gpu_neon: integration for arm64

2 years agogpu_neon: new intrinsics-only implementation
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)

2 years agogpu_neon: place asm func prototypes into a separate header
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

2 years agogpu_neon: don't include vector_ops.h in the main header
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

2 years agogpu_neon: fix some more abi violations
notaz [Mon, 1 Aug 2022 21:08:49 +0000 (00:08 +0300)]
gpu_neon: fix some more abi violations

2 years agodrc: patch up some potential issues on the switch
notaz [Tue, 2 Aug 2022 21:51:35 +0000 (00:51 +0300)]
drc: patch up some potential issues on the switch

2 years agogpu_neon: try to make the compiler save some callee-save regs
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

2 years agodfxvideo: patch up some unsafe macros
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

2 years agoUpdate .gitlab-ci.yml
LibretroAdmin [Tue, 26 Jul 2022 13:10:51 +0000 (15:10 +0200)]
Update .gitlab-ci.yml

2 years agomman: align and clear for 3ds also
notaz [Mon, 18 Jul 2022 22:30:14 +0000 (01:30 +0300)]
mman: align and clear for 3ds also

callers expect cleared mem

2 years agodrc: some more libnx support
notaz [Mon, 18 Jul 2022 21:21:44 +0000 (00:21 +0300)]
drc: some more libnx support

2 years agolibnx: make mmap act more like on Linux
notaz [Mon, 18 Jul 2022 21:03:44 +0000 (00:03 +0300)]
libnx: make mmap act more like on Linux

2 years agoUpdate lightrec 20220716 (#672)
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"

2 years agoswitch: define HAVE_LIBNX
notaz [Fri, 15 Jul 2022 23:53:27 +0000 (02:53 +0300)]
switch: define HAVE_LIBNX

somehow assumed it was done already

2 years agolibnx: try to enable the ari64 dynarec
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).

2 years agomake: make the assignment work
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.

2 years agodrc: simplify cache flush for some platforms
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

2 years agodrc: some libnx support
notaz [Thu, 14 Jul 2022 21:24:34 +0000 (00:24 +0300)]
drc: some libnx support

2 years agocompile the core with the PEOpS plugin for x86 and arm64 platforms (#670)
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)

2 years agoMerge pull request #669 from pcercuei/lightrec-fix-bios-munmap
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

2 years agopsxmem: Use Lightrec memory map even for interpreter
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>
2 years agolightrec: Fix unmap size of BIOS
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>
2 years agoMerge pull request #668 from pcercuei/update-lightrec-20220607
LibretroAdmin [Sat, 11 Jun 2022 09:46:40 +0000 (10:46 +0100)]
Merge pull request #668 from pcercuei/update-lightrec-20220607

Update lightrec 20220607

2 years agogit subrepo pull --force deps/lightrec
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"

2 years agofrontend: Remove duplicated code
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>
2 years agoplugins: Fix build of unai/neon
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>
2 years agoMerge pull request #665 from QuarkTheAwesome/libretro-merge-be
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

2 years agoMerge pull request #663 from bslenul/rumble-fix
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

2 years agocdriso: hack .chd track handling to match .cue
notaz [Mon, 6 Jun 2022 22:59:51 +0000 (01:59 +0300)]
cdriso: hack .chd track handling to match .cue

libretro/pcsx_rearmed#648

2 years agocdrom: don't read and play simultaneously
notaz [Mon, 6 Jun 2022 21:45:57 +0000 (00:45 +0300)]
cdrom: don't read and play simultaneously

notaz/pcsx_rearmed#250

2 years agolightrec: try to clean up intergarion, fix -O0
notaz [Mon, 6 Jun 2022 20:53:38 +0000 (23:53 +0300)]
lightrec: try to clean up intergarion, fix -O0

notaz/pcsx_rearmed#251

2 years agocdrom: Fix PBP support on big-endian platforms
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>
2 years agodfxvideo: Restore support for big-endian arch
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>
2 years agofrontend: Fix colorspace conversion routines on big-endian
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>
2 years agomisc: Use GCC builtins for byte-swap operations
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>
2 years agogpulib: Add proper support for big-endian
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>
2 years agoGet rid of bit fields in union
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>
2 years agoMake sure hardware registers are manipulated as little-endian
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>
2 years agoFix PCSX on big-endian systems
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>
2 years agoRumble should only work with 'dualshock' device type
bslenul [Sun, 5 Jun 2022 09:41:55 +0000 (11:41 +0200)]
Rumble should only work with 'dualshock' device type

2 years agoMerge pull request #662 from pcercuei/update-lightrec-20220604
LibretroAdmin [Sat, 4 Jun 2022 23:54:41 +0000 (00:54 +0100)]
Merge pull request #662 from pcercuei/update-lightrec-20220604

Update GNU Lightning

2 years agogit subrepo pull --force deps/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"

2 years ago(Windows) Not building, include tlsf.c by default
libretroadmin [Sat, 4 Jun 2022 21:56:57 +0000 (23:56 +0200)]
(Windows) Not building, include tlsf.c by default

2 years ago(Android) Fix includes
libretroadmin [Sat, 4 Jun 2022 21:51:59 +0000 (23:51 +0200)]
(Android) Fix includes

2 years ago(Android) include tlsf.c
libretroadmin [Sat, 4 Jun 2022 21:50:10 +0000 (23:50 +0200)]
(Android) include tlsf.c

2 years agoMerge pull request #661 from pcercuei/update-lightrec-20220604
LibretroAdmin [Sat, 4 Jun 2022 21:48:57 +0000 (22:48 +0100)]
Merge pull request #661 from pcercuei/update-lightrec-20220604

Update lightrec 20220604

2 years agolightrec: Enable code buffer support
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>
2 years agogit subrepo pull --force deps/lightrec
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"

2 years agopsxcounters: try to support a dynarec with a very long timeslice
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

2 years agodrc: update some logging and patches
notaz [Wed, 1 Jun 2022 21:25:32 +0000 (00:25 +0300)]
drc: update some logging and patches

2 years agoMake this backwards compatible with older Linux kernels
libretroadmin [Tue, 31 May 2022 18:35:06 +0000 (20:35 +0200)]
Make this backwards compatible with older Linux kernels

2 years ago(Android) Only build in libpcsxcore/lightrec/mem.c when
libretroadmin [Mon, 30 May 2022 19:23:48 +0000 (21:23 +0200)]
(Android) Only build in libpcsxcore/lightrec/mem.c when
LIGHTREC_CUSTOM_MAP is set to 1

2 years agoDisable LIGHTREC_CUSTOM_MAP on all Android versions
libretroadmin [Mon, 30 May 2022 19:20:25 +0000 (21:20 +0200)]
Disable LIGHTREC_CUSTOM_MAP on all Android versions

2 years ago(Android)
libretroadmin [Mon, 30 May 2022 19:14:50 +0000 (21:14 +0200)]
(Android)
- Always set LIGHTREC_CUSTOM_MAP
- Compile in libpcsxcore/lightrec/mem.c

2 years ago(Android) Define LIGHTREC_CUSTOM_MAP
libretroadmin [Mon, 30 May 2022 19:10:48 +0000 (21:10 +0200)]
(Android) Define LIGHTREC_CUSTOM_MAP

2 years agoMerge pull request #659 from pcercuei/update-lightrec-20220530
LibretroAdmin [Mon, 30 May 2022 18:34:58 +0000 (19:34 +0100)]
Merge pull request #659 from pcercuei/update-lightrec-20220530

Fix Lightrec build on Windows and Linux

2 years agoFix Lightrec build on Windows and Linux
Paul Cercueil [Mon, 30 May 2022 18:22:17 +0000 (19:22 +0100)]
Fix Lightrec build on Windows and Linux

Some distributions of Linux don't have the MFD_HUGETLB flag in
<linux/memfd.h>, probably because their kernel headers installed are too
old. In that case, we locally define MFD_HUGETLB to the value it should
have.

On Windows, the HAVE_MMAP macro set for GNU Lightning was also used in
libretro-common/vfs/vfs_implementation.c, causing build issues. Address
this problem by only defining HAVE_MMAP for Lightning source files.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2 years agoMerge pull request #657 from pcercuei/update-lightrec-20220529
LibretroAdmin [Mon, 30 May 2022 17:56:24 +0000 (18:56 +0100)]
Merge pull request #657 from pcercuei/update-lightrec-20220529

Update lightrec 20220529

2 years agoUpdate Lightning/Lightrec includes to the latest upstream versions
Paul Cercueil [Sun, 29 May 2022 11:51:26 +0000 (12:51 +0100)]
Update Lightning/Lightrec includes to the latest upstream versions

Lightning now also requires HAVE_MMAP to be defined.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2 years agogit subrepo pull --force deps/lightrec
Paul Cercueil [Mon, 30 May 2022 17:00:15 +0000 (18:00 +0100)]
git subrepo pull --force deps/lightrec

subrepo:
  subdir:   "deps/lightrec"
  merged:   "49ef275a"
upstream:
  origin:   "https://github.com/pcercuei/lightrec.git"
  branch:   "master"
  commit:   "49ef275a"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"

2 years agogit subrepo pull --force deps/lightning
Paul Cercueil [Sun, 29 May 2022 11:48:50 +0000 (12:48 +0100)]
git subrepo pull --force deps/lightning

subrepo:
  subdir:   "deps/lightning"
  merged:   "2a199e4d"
upstream:
  origin:   "https://github.com/pcercuei/gnu_lightning.git"
  branch:   "pcsx_rearmed"
  commit:   "2a199e4d"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"

2 years agoMakefile: Fix build on Windows and Android
Paul Cercueil [Mon, 30 May 2022 17:23:02 +0000 (18:23 +0100)]
Makefile: Fix build on Windows and Android

Fix build under MinGW where the rt library wasn't found, and on Android
where the dynarec isn't Lightrec but Ari64.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2 years agoMerge pull request #654 from pcercuei/lightrec-mmap-zero
LibretroAdmin [Mon, 30 May 2022 15:14:02 +0000 (16:14 +0100)]
Merge pull request #654 from pcercuei/lightrec-mmap-zero

Lightrec: Make memory map as perfect as possible

2 years agopsxmem: Add support for Lightrec's custom mem init sequence
Paul Cercueil [Wed, 11 May 2022 15:31:05 +0000 (16:31 +0100)]
psxmem: Add support for Lightrec's custom mem init sequence

Adapt the current psxmem.c code to support Lightrec's custom memory
init functions.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2 years agolightrec: Add new memory init functions
Paul Cercueil [Wed, 11 May 2022 15:54:16 +0000 (16:54 +0100)]
lightrec: Add new memory init functions

Lightrec can greatly benefit from having the RAM/BIOS/scratchpad and RAM
mirrors mapped to specific addresses. For the same value of (offset):

- If the RAM is mapped to (offset), the BIOS is mapped to
  (offset + 0x1fc00000) and the scratchpad to (offset + 0x1f800000), the
  generated code will be better;

- If the RAM is also mirrored to (offset + 0x200000), (offset + 0x400000)
  and (offset + 0x600000), the generated code will be even better;

- If the offset is 0x0, the generated code will be even better.

Additionally, the new memory init code will attempt to use huge pages
when possible, in order to greatly reduce the overhead of the MMU.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2 years agoAdd support for mapping emulated RAM to address 0x0
Paul Cercueil [Wed, 11 May 2022 15:24:03 +0000 (16:24 +0100)]
Add support for mapping emulated RAM to address 0x0

This requires a few changes, since a pointer whose value is 0x0 will be
detected as a NULL pointer. The read/write LUTs are now initialized with
0xff, and all pointers are now checked against a new INVALID_PTR macro.

Mapping the emulated RAM to the address 0x0 will allow Lightrec to
generate much better code.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2 years agoMerge pull request #653 from jdgleaver/core-options-v2
Autechre [Wed, 4 May 2022 17:43:10 +0000 (18:43 +0100)]
Merge pull request #653 from jdgleaver/core-options-v2

Update core options to v2 format

2 years agoUpdate core options to v2 format
jdgleaver [Wed, 4 May 2022 16:59:14 +0000 (17:59 +0100)]
Update core options to v2 format

2 years agoMerge pull request #652 from pcercuei/update-lightrec-20220427
Autechre [Wed, 27 Apr 2022 22:56:04 +0000 (23:56 +0100)]
Merge pull request #652 from pcercuei/update-lightrec-20220427

Update lightrec 20220427