notaz [Thu, 29 Sep 2022 18:36:54 +0000 (21:36 +0300)]
cdrom: ignore repeated read cmds
libretro/pcsx_rearmed#691
notaz [Wed, 21 Sep 2022 21:35:28 +0000 (00:35 +0300)]
cdrom: change GetlocL behavior
notaz/pcsx_rearmed#263
notaz [Sat, 17 Sep 2022 20:28:46 +0000 (23:28 +0300)]
cdrom: treat seek the same as other commands
much simpler this way
notaz [Sat, 17 Sep 2022 20:18:47 +0000 (23:18 +0300)]
cdrom: allow to interrupt initial scan sequence
probably wrong but ohwell...
notaz [Sat, 17 Sep 2022 19:46:03 +0000 (22:46 +0300)]
cdrom: actually reject commands when not ready
before it would still execute them and just do an error response
notaz [Fri, 16 Sep 2022 19:59:25 +0000 (22:59 +0300)]
main: log missing CPU features
will probably be too late but ohwell
notaz [Thu, 15 Sep 2022 23:34:58 +0000 (02:34 +0300)]
gpu_neon: rm wrong cost qualifier
notaz [Thu, 15 Sep 2022 23:31:37 +0000 (02:31 +0300)]
cdrom: adjust timing
notaz [Thu, 15 Sep 2022 21:03:40 +0000 (00:03 +0300)]
don't cast between long and pointers for win64
long is 32 bit there
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
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 [Fri, 9 Sep 2022 23:26:04 +0000 (02:26 +0300)]
standalone: allow lightrec for testing
lightrec is not (yet?) here, just to reduce diff from libretro fork
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:39:24 +0000 (02:39 +0300)]
gte: minor diff from libretro
notaz [Fri, 9 Sep 2022 19:11:30 +0000 (22:11 +0300)]
psxinterpreter: reduce the use of globals
they induce penalties with -fPIC
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 22:54:28 +0000 (01:54 +0300)]
cdrom: take a minor change from libretro
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 [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.
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 22:50:54 +0000 (01:50 +0300)]
mark libretro makefile as unmaintained here
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
Paul Cercueil [Fri, 3 Jun 2022 17:26:28 +0000 (18:26 +0100)]
CI: Pass SDL_CONFIG to the ./configure script
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Paul Cercueil [Fri, 29 Apr 2016 20:06:36 +0000 (22:06 +0200)]
configure: Detect the toolchain's sdl-config tool
Instead of calling the host's sdl-config, which doesn't work when
cross-compiling, call the sdl-config program that's installed in the
compiler's sysroot.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
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>
notaz [Mon, 18 Jul 2022 21:21:44 +0000 (00:21 +0300)]
drc: some more libnx support
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
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 [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
notaz [Wed, 1 Jun 2022 21:25:32 +0000 (00:25 +0300)]
drc: update some logging and patches
notaz [Mon, 14 Mar 2022 22:04:27 +0000 (00:04 +0200)]
release r23
notaz [Sun, 13 Mar 2022 23:24:50 +0000 (01:24 +0200)]
frontend: omap: fix glitches on mode changes
Where was I 10 years ago? Why am I so old?
notaz [Sun, 13 Mar 2022 21:40:48 +0000 (23:40 +0200)]
cdriso: handle chd subchannels, when available
libretro/pcsx_rearmed#535
only raw mode tested
notaz [Sun, 13 Mar 2022 21:10:52 +0000 (23:10 +0200)]
cdriso: merge some libretro changes
no async read for now
notaz [Sun, 13 Mar 2022 20:46:31 +0000 (22:46 +0200)]
always enable chd support
notaz [Tue, 1 Mar 2022 22:49:11 +0000 (00:49 +0200)]
drc: fix some wrong inv address calculations
Fixes:
882a08fc49541450bc403b2e920e4bccc257dfdf
notaz/pcsx_rearmed#243
notaz [Sat, 26 Feb 2022 23:54:39 +0000 (01:54 +0200)]
unbreak nodynarec build
oops
notaz [Sat, 26 Feb 2022 22:10:57 +0000 (00:10 +0200)]
drc: try to avoid some block trapping
notaz [Thu, 24 Feb 2022 21:28:11 +0000 (23:28 +0200)]
drc: rework jump_out lists
should waste less memory for malloc overheads
notaz [Wed, 23 Feb 2022 23:08:35 +0000 (01:08 +0200)]
drc: rework expire code
Should be quite a bit simpler now, and no longer wastes ~4MB of
translation cache for aggressive block expiring. However more stuff
in cache means longer lists which may slow things down if
recompilation is happening nonstop, so further tuning might be needed.
notaz [Tue, 22 Feb 2022 22:26:51 +0000 (00:26 +0200)]
drc: more precise invalidation checking for the invstub case
notaz [Mon, 21 Feb 2022 23:23:09 +0000 (01:23 +0200)]
drc: rework block tracking
Mostly to remove that horrible generated code parsing.
Also seems to generate less code now.
notaz [Sat, 19 Feb 2022 22:46:51 +0000 (00:46 +0200)]
drc: get rid of SPAN
Should have done it 10 years ago, it's a huge maintenance burden for
something than almost never happens.
notaz [Sat, 19 Feb 2022 22:11:52 +0000 (00:11 +0200)]
drc: restore all block entry points at once
and add some stats
notaz [Sat, 19 Feb 2022 19:37:23 +0000 (21:37 +0200)]
drc: don't delay block restoration
Not sure why it was done the way it was (maybe something N64 related?),
but it occasionally caused dyna_linker to repeatedly walk the jump_in
list. What's worse, if the dirty block was deemed to expire soon,
it would never be restored and dyna_linker repeated jump_in walking
would never end, causing severe slowdown.
notaz [Thu, 17 Feb 2022 00:14:03 +0000 (02:14 +0200)]
Revert "clear Index0 data FIFO flag (#241)"
This reverts commit
50ae51487697da0d2f9c93295f89d2f10694b6d8.
It broke Driver 2.
notaz [Tue, 15 Feb 2022 23:20:31 +0000 (01:20 +0200)]
drc: try not to end the block prematurely
Fixes:
4919de1e88095f00466f6674323d518fc520b0db
(was not really broken, only load delay detection can't work with
blocks that are too small)
notaz [Tue, 15 Feb 2022 21:17:42 +0000 (23:17 +0200)]
psxinterpreter: unbreak load delay handling
Fixes:
943a507a4156b8f5b00e4431152e41eeb4dc6f3d
notaz [Sat, 12 Feb 2022 20:58:23 +0000 (22:58 +0200)]
drc: add a clock override for Super Robot Taisen Alpha
libretro/pcsx_rearmed#610
notaz [Sun, 6 Feb 2022 23:41:12 +0000 (01:41 +0200)]
drc: try to make some passes not as slow, part 2
notaz [Sun, 6 Feb 2022 20:38:54 +0000 (22:38 +0200)]
drc: put passes in their own functions
mostly for profiling
notaz [Sat, 5 Feb 2022 22:10:18 +0000 (00:10 +0200)]
drc: try to make some passes not as slow
notaz [Thu, 3 Feb 2022 00:04:52 +0000 (02:04 +0200)]
drc: use optimized get_reg
arm32-only for now
notaz [Wed, 2 Feb 2022 21:40:48 +0000 (23:40 +0200)]
drc: rm unneeded &63 masking
64bit leftover