Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Work on X86_64 support #3451

Closed
wants to merge 171 commits into from
Closed

Conversation

Copy link
Contributor

@beaumanvienna beaumanvienna commented Jun 8, 2020

  • Dedicated pull request for x64 support
  • Contains commits for #3434 "defines for x86 opcodes added", as the same files are involved. Actual changes start on June 07
  • Related to #3308 "Make the interpreter work on x86_64 Unix".
  • Status: The x64 recompilers work on Windows, macOS and Linux. Gameplay works fine.

Give it a try, guys! We would like to know if it runs on your 64-bit OS as well. Please checkout this here branch or @tellowkrinkle's JIT64 branch.

We are preparing Tellow's branch to be pulled in. The changes will be split into four PRs. Three out of four have been issued so far: #3512 #3523 #3524


#warning "JC: modified"
Copy link
Contributor

@arcum42 arcum42 Jun 8, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#warning isn't supported by Visual Studio.

@tellowkrinkle
Copy link
Member

@tellowkrinkle tellowkrinkle commented Jun 8, 2020

If you could make the .odt in common/doc into a .md or some other plain-text-based file that would be great

IMO the easiest way to get x86Emitter generating the x86-64 instructions you ask it to is with unit tests (rather then running it, letting it crash, and then looking at the results in a debugger), which I've started work on here

@pixelherodev
Copy link
Contributor

@pixelherodev pixelherodev commented Jun 8, 2020

Hmm, you shouldn't be changing the addressing form used in the source.

    xSHL( eax, 2 );  // 3 on x64 (8-byte alignment)
    xMOV( ecx, eax );
    xMOV( eax, (sptr)recLUT); 
    xADD( ecx, eax );
    xMOV( ecx, ptr[ecx] );

This should remain as SiB addressing, instead of being shifted to require multiple separate operations. Shifting it like this is a massive performance cost, as not only does it increase the instruction count, it also requires register renaming and creates artificial instruction dependences.

Instead, I'd replace the constant four in the original source with a definition POINTER_WIDTH, which is defined to four on x86 and eight on x64.

@pixelherodev
Copy link
Contributor

@pixelherodev pixelherodev commented Jun 8, 2020

Also, the s32 -> sptr changes were a mistake. Notice the comment:

sptr Displacement; // address displacement // 4B max even on 64 bits

The maximum value, even on x64, is four bytes. s32 is correct here. It's a signed 32-bit value (which we happen to use as a pointer), and not a "signed pointer," which implies native width (64-bit).

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Jun 8, 2020

@arcum42 I will remove the warning directives. That's probably why the check failed. Thanks!
@tellowkrinkle: I will change the .odt accordingly. I wanted to update it with the look-up tables. I found this wiki here https://wiki.pcsx2.net/PCSX2_Documentation/PCSX2_EE_Recompiler but I my doc needs more details on the table structure/content.
@pixelherodev Yes, the 32 displacement is a key topic for the port. And agreed, the current code

xMOV( eax, (sptr)recLUT);

is a bit goofy with recLUT being an 8-byte pointer. Maybe change to

xMOV( rax, (sptr)recLUT);

? (And yes, above cast would be uptr. All I needed was a 64-bit pointer there. Will be changed)
I noticed in the 32-bit code there is an overflow in the last instruction

        xMOV( eax, ptr[&cpuRegs.pc]);       // a = pc = (0x58b86878)[0]
	xMOV( ebx, eax );                   // b = a
	xSHR( eax, 16 );                    // a = a >> 16
	xMOV( ecx, ptr[recLUT + (eax*4)] ); // c = (recLUT + (a * 4))[0]
	xJMP( ptr32[ecx+ebx] );             // jump ( (c + b)[0] )

Ebx is loaded with the stack pointer 0xbfc0 0000, then the value retrieved from recLUT causes ecx+ebx to overflow. So the s32 displacement topic is still giving me a headache. So far, it did fix the two "mov 64bit-offset" / "mov 64-bit immediate" in _DynGen_DispatcherReg, see above byte code. When you guys say "there are only 32bit displacements", is that referring to the EE? I guess this comes back to my question about what to do with the LUTs...

I'm not so much worried about performance at the moment. I noticed when I printf many thousands of debug lines to the terminal (I had 10 or 20 in there for each pseudo assembly code so that the buffer of the terminal wasn't enough), the load time for the game becomes long, but the game itself was fine. Also, I understood you wanted to replace the entire part, so I won't focus too much on optimizations "in the old code".

@pixelherodev
Copy link
Contributor

@pixelherodev pixelherodev commented Jun 8, 2020

@beaumanvienna I mean, there is literally no mechanism for a 64-bit displacement on x64. This has nothing to do with PCSX2 or the EmotionEngine. All displacements must be 32-bit. (There are absolute 64-bit forms, but nothing relative 64-bit).

Mrlinkwii and others added 3 commits Jun 9, 2020
This makes Next Generation Tennis 2003 (Roland Garros French Open 2003) and Spongebob Battle for Bikini Bottom (PAL) work.
@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Jun 10, 2020

It works now! The jitted code from _DynGen_DispatcherReg retrieves the correct pointer from recLUT, which is recLutReserve_RAM + 64MB - cpuReg.pc, reads the function pointer from there, which is JITCompile(), and jumps to this function accordingly. If you're wondering why the code is subtracting 0x800000000 from the pointer retrieved from recLUT, this has to do with the overflow under i386 I mentioned earlier. On i386 the equation is

trunc32(pc + recLUT_value) = recLutReserve_RAM + 32MB

whereby the truncation corresponds to subtracting 0x1 0000 0000. This overflow doesn't happen on x64. I think there's another overflow happening in recLUT_SetPage, that happens on both architectures:

reclut[page] = (uptr)&mapbase[(mappage - page) << 14]; 

Under i386 they cancel each other out. Here's the code:

    xMOV( eax, ptr[&cpuRegs.pc]);    
    xMOV( ebx, eax );
    xSHR( eax, 16 );
    
    #ifdef __M_X86_64
      xSHL( eax, 3 );
    #else
      xSHL( eax, 2 );
    #endif
    xMOV( ecx, eax );
    xMOV( eax, (uptr)recLUT); 
    xADD( ecx, eax );
    xMOV( ecx, ptr[ecx] );
    xMOV( eax, (uptr)0x800000000); 
    xSUB( ecx, eax );
    
    xADD( ecx, ebx );
    xMOV( ecx, ptr[ecx] );
    xJMP( ecx );

@pixelherodev
Copy link
Contributor

@pixelherodev pixelherodev commented Jun 10, 2020

Nicely done :)

…hanged according to previous commit; merged with tellowkrinkle's branch 64bitInterpreterUnix
@tellowkrinkle
Copy link
Member

@tellowkrinkle tellowkrinkle commented Jun 11, 2020

Personally I think we should be looking at what the old code was supposed to do to decide which things need to change and how. (And since we're going through all this, maybe add comments to the old code saying what it's trying to do so the next person doesn't have to figure it out for themselves)
Here's the old code with my understanding of it (may be completely wrong, I've never touched this section of the codebase):

xMOV( eax, ptr[&psxRegs.pc] ); // Load the PS2 PC into eax
xMOV( ebx, eax );              // ... and ebx
xSHR( eax, 16 );               // psxRecLUT is a 2-level page table so first get the top 16 bits
xMOV( ecx, ptr[psxRecLUT + (eax*4)] ); // ... and use them to index psxRecLUT
// Normally we would want to jump to ((uptr*)ecx)[(ebx & 0xFFFF)/4]
// but as an optimization ecx already has the top bits of ebx subtracted from it
// so we can just add and jump
xJMP( ptr32[ecx+ebx] );

Based on these, a few things with the new code:

  • The PS2 PC is 32 bits, not 64. I don't know what your opinion is on the "should e** registers be 32 or 64 bits" argument, but as it stands, right now they're 64-bit. We should either do the switch over to 32-bit e** registers (and change all uses that need to be 64-bit to the r** registers), define some new 32-bit registers, or use eax.GetNonWide()
    • Note: My personal opinion on how to do this switch cleanly is to define some new registers (maybe e**d) to temporarily be our 32-bit registers, migrate all uses of e** to either r** or e**d, then delete the e** registers and use an IDE's rename function to rename all uses of e**d back to e**
  • I'm pretty sure the whole thing you described was an optimization to go faster. The unoptimized version would have stored page-table-pointers directly here (with reclut[page] = (uptr)mapbase) and would have anded ebx with 0xFFFF before jumping. Instead we can calculate correct number to wrap around a 64-bit integer in BaseblockEx.h and continue to use the optimization.

Personally, here's what I think the code should look like (using e** as 32-bit registers and r** as 64-bit registers):

xMOV( eax, ptr[&psxRegs.pc] ); // Load the PS2 PC into eax
xMOV( ebx, eax );              // ... and ebx
xSHR( eax, 16 );               // psxRecLUT is a 2-level page table so first get the top 16 bits
xMOV( rcx, ptr[psxRecLUT + (rax*sizeof(uptr))] ); // ... and use them to index psxRecLUT
// Normally we would want to jump to ((uptr*)ecx)[(ebx & 0xFFFF)/4]
// but as an optimization rcx already has the top bits of ebx subtracted from it
// so we can just add and jump
xJMP( ptrNative[rcx+rbx*(sizeof(uptr)/4)] );

Note: We don't currently have a ptrNative but we should (or something like it)

@gregory38
Copy link
Contributor

@gregory38 gregory38 commented Jun 11, 2020

psx (aka iop) optimization are useless.honestly iop should be a subset of ee.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Jun 11, 2020

@gregory38 We are trying to port the recompilers to x86. Optimizations are not the primary focus, we're still struggling to make it work in general. We fixed a bunch of broken emitted code, some 4-byte/8-byte pointer issues, and partially the entries in the LUT, but it is still work in progress. recLUT and recLUTReserve_RAM are now 8-byte wide. We are discussing the pseudo assembler and C-code on how to address those changes. There's a lot discussion about eXx registers vs the rXx registers. Also, the convenient SIB 32 addressing cannot always be used as before. But we got this :-) I noticed you are a reviewer on tellowkrinkle's PR about making the interpreter work on x64/Unix. My branch here is already synced up with most of tellowkrinkle's changes. Those changes did fix for example the xFastcall instruction in JITCompile. The current status is that we can

  • enter the emitted code
  • do the first double-table jump (recLUT->recLUTReserve->JITCompile)
  • jump out of the emitted code to recRecompile.

PC_GETBLOCK is still broken, not only because it assumes 4-byte table elements, but also because we have a weird offset of 0x800000000 in the recLUT elements.

A last thing I wanted to mention, this PR will have zero-performance impact on the i386 "production" branch. We use either the C compiler to change from four to eight bytes or __M_X86_64, where not possible. This way you guys can probably pull it in more easily.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Jun 12, 2020

@tellowkrinkle

// uptr* fp = reclut[ pc >> 16] + pc*sizeof(uptr)/4;
// jump fp[0];
xMOV( eax, ptr[&psxRegs.pc] ); // Load the PS2 PC into eax
xMOV( ebx, eax );              // ... and ebx
xSHR( eax, 16 );               // psxRecLUT is a 2-level page table so first get the top 16 bits
xMOV( rcx, ptr[psxRecLUT + (rax*sizeof(uptr))] ); // ... and use them to index psxRecLUT
// Normally we would want to jump to ((uptr*)ecx)[(ebx & 0xFFFF)/4]
// but as an optimization rcx already has the top bits of ebx subtracted from it
// so we can just add and jump
xJMP( ptrNative[rcx+rbx*(sizeof(uptr)/4)] );

Yes, rbx has to be adjusted, too. I fully agree. This is still missing in my suggested code. The base offset retrieved from recLUT needs also to be changed then. That was very helpful, thank you!

@gregory38
Copy link
Contributor

@gregory38 gregory38 commented Jun 12, 2020

For the pc. It depends if you need sign extension. But it would be more cache efficient to use only 4B.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Jun 12, 2020

Thanks, Gregory!

From my understanding, we have a 4-byte PS2 pc and 8-byte look-up table elements. The code in Baseblock.h should be ok. It's basically the C version of the pseudo assembler code above. In my code, I overlooked the pc*sizeof(BASEBLOC)/4 part.So the access to recLUTReserve_RAM (via PC_GETBLOCK) should advance in steps of eight bytes:

iR5900-32.cpp:
i = startpc;
             ...
    
	while(1) {
		BASEBLOCK* pblock = PC_GETBLOCK(i);
                         ...
		i += 4;
	}

But what do the values 0x2000, 0x000, 0x8000, and 0xa000 in iR5900-32.cpp stand for?

	for ( int i = 0x1fc0; i < 0x2000; i++ )
	{
		recLUT_SetPage(recLUT, hwLUT, recROM, 0x0000, i, i - 0x1fc0);
		recLUT_SetPage(recLUT, hwLUT, recROM, 0x8000, i, i - 0x1fc0);
		recLUT_SetPage(recLUT, hwLUT, recROM, 0xa000, i, i - 0x1fc0);
	}

I did understand that recROM is 4MB, corresponding to 64 pages (0x2000-0x40=0x1fc0), each used to jump into a 64k page in recLUTReserve_RAM

@gregory38
Copy link
Contributor

@gregory38 gregory38 commented Jun 12, 2020

Ram is mirrored.
0x8000_0000 area is physical and cached. Kernel
0 is virtual memory which is often mapped 1:1 to the physical mem
0xa000_0000 iirc is for supervisor mode (middle between kernel and user)
0xb000_0000 is uncached (rom)

@gregory38
Copy link
Contributor

@gregory38 gregory38 commented Jun 12, 2020

Top of my head mips memory is 8 segments of 512 MB

Nucleoprotein
Copy link

@Nucleoprotein Nucleoprotein commented on 4e4a097 Jun 13, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like copy-paste error - it should not be cpuRegs.PERF.n.pccr.b.U1 ???

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Jun 13, 2020

@arcum42 / @tellowkrinkle I changed the format of the documentation to markup and revised it per your feedback. I also added comments to the code as discussed and fixed the bug in the pseudo assembler code about the missing multiplication pc*sizeof(uptr)/4.

  • recLUT_SetPage revised for good, no more weird offsets

It runs now until where the recompile process is started and fails in recompileNextInstruction (here) with "SIB target is too far away, needs an indirect register" (x86emiter.cpp).

Move Additional colclip info, dithering, FixedTEX0 to extra debug logs.
It will allow to keep track of more important stuff going on and they
can be enabled with ENABLE_EXTRA_LOG if needed.

Change context creation log type from stderr to stdout.
@rien333
Copy link

@rien333 rien333 commented Sep 30, 2020

If you have GDB, a symbolicated backtrace would be nice here

Hope this is okay.

... # some stuff  right before the crash
loadmodule: id 28, ret 0
loadmodule: fname cdrom0:¥M¥PADMAN.IRX;1 args 0 arg
sifcmd sceSifRegisterRpc: rpc_id 80000400
RegisterLibraryEntries:   padman version 2.03
sifcmd sceSifRegisterRpc: rpc_id 80000100
sifcmd sceSifRegisterRpc: rpc_id 80000101
loadmodule: id 29, ret 0
loadmodule: fname cdrom0:¥M¥LIBSD.IRX;1 args 0 arg
RegisterLibraryEntries:    libsd version 1.04
loadmodule: id 30, ret 0
loadmodule: fname cdrom0:¥M¥SDRDRV.IRX;1 args 0 arg
SDR driver version 2.0.0 (C)SCEI
 Exit rsd_main
sifcmd sceSifRegisterRpc: rpc_id 80000701
loadmodule: id 31, ret 0
loadmodule: fname cdrom0:¥M¥KL2.IRX;1 args 0 arg
sifcmd sceSifRegisterRpc: rpc_id 12346
loadmodule: id 32, ret 0
(UpdateVSyncRate) Mode Changed to NTSC.
(UpdateVSyncRate) FPS Limit Changed : 59.94 fps
Set GS CRTC configuration. NTSC 640x448 @ 59.940 (59.82) Interlaced (FRAME)
RegisterIntrHandler: intr INT_dmaSPU, handler 7d5a4
RegisterIntrHandler: intr INT_dmaSPU2, handler 7d5a4
RegisterIntrHandler: intr INT_SPU, handler 7cc14
Set GS CRTC configuration. NTSC 640x448 @ 59.940 (59.82) Interlaced (FRAME)
j8 greater than 0x7f!! [1]
PCSX2: /tmp/makepkg/pcsx2/src/pcsx2/common/src/x86emitter/legacy.cpp:103: void x86SetJ8(u8*): Assertion `0' failed.

Thread 9 "EE Core" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffe0c7d640 (LWP 268678)]
0x00007ffff6665615 in raise () from /usr/lib/libc.so.6
(gdb) bt
#0  0x00007ffff6665615 in raise () at /usr/lib/libc.so.6
#1  0x00007ffff664e862 in abort () at /usr/lib/libc.so.6
#2  0x00007ffff664e747 in _nl_load_domain.cold () at /usr/lib/libc.so.6
#3  0x00007ffff665dbf6 in  () at /usr/lib/libc.so.6
#4  0x00005555559bd557 in x86SetJ8(unsigned char*) (j8=j8@entry=0x5555a007b82c "")
    at /tmp/makepkg/pcsx2/src/pcsx2/common/src/x86emitter/legacy.cpp:103
#5  0x00005555558cd276 in R5900::Dynarec::OpcodeImpl::COP1::DOUBLE::ToPS2FPU_Full(int, bool, int, bool, bool)
    (reg=reg@entry=9, flags=flags@entry=true, absreg=absreg@entry=10, acc=acc@entry=false, addsub=addsub@entry=true) at /tmp/makepkg/pcsx2/src/pcsx2/pcsx2/x86/iFPUd.cpp:249
#6  0x00005555558ce3d8 in R5900::Dynarec::OpcodeImpl::COP1::DOUBLE::ToPS2FPU(int, bool, int, bool, bool)
    (reg=reg@entry=9, flags=flags@entry=true, absreg=absreg@entry=10, acc=acc@entry=false, addsub=addsub@entry=true) at /tmp/makepkg/pcsx2/src/pcsx2/pcsx2/x86/iFPUd.cpp:259
#7  0x00005555558d789d in R5900::Dynarec::OpcodeImpl::COP1::DOUBLE::recFPUOp(int, int, int, bool)
    (info=info@entry=32798, regd=regd@entry=0, op=op@entry=0, acc=acc@entry=false)
    at /tmp/makepkg/pcsx2/src/pcsx2/pcsx2/x86/iFPUd.cpp:437
#8  0x00005555558d81d5 in R5900::Dynarec::OpcodeImpl::COP1::DOUBLE::recADD_S_xmm(int) (info=info@entry=32798)
    at /tmp/makepkg/pcsx2/src/pcsx2/pcsx2/x86/iFPUd.cpp:451
#9  0x0000555555946778 in eeFPURecompileCode(void (*)(int), void (*)(), int)
    (xmmcode=0x5555558d81ba <R5900::Dynarec::OpcodeImpl::COP1::DOUBLE::recADD_S_xmm(int)>, fpucode=<optimized out>, xmminfo=xmminfo@entry=208) at /tmp/makepkg/pcsx2/src/pcsx2/pcsx2/x86/ix86-32/iR5900Templates.cpp:722
#10 0x00005555558b1d3e in R5900::Dynarec::OpcodeImpl::COP1::recADD_S() ()
    at /tmp/makepkg/pcsx2/src/pcsx2/pcsx2/x86/iFPU.cpp:610
#11 0x0000555555916ce1 in recompileNextInstruction(int) (delayslot=delayslot@entry=0)
    at /tmp/makepkg/pcsx2/src/pcsx2/pcsx2/x86/ix86-32/iR5900-32.cpp:1394
#12 0x0000555555920c0b in recRecompile(u32) (startpc=3198120)
    at /tmp/makepkg/pcsx2/src/pcsx2/pcsx2/x86/ix86-32/iR5900-32.cpp:2051
#13 0x00005555611b002b in eeRecDispatchers ()
#14 0x0000000000000000 in  ()
(gdb)

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 1, 2020

When you say

I think the 64bit, 1.7 version of PCSX2 breaks something specific to that game. I also tried your x86_64-support branch, but same problem

you mean the latest upstream version, right?

EDIT:It works for me with the latest upstream. I tried on a Core-i7/Nvidia GTX machine and on a Ryzen 5/Radeon 5700 machine, both with Arch. Works. Actually, only kind of. 2 minutes into the game at the 2nd ledge (after the block you have to smash and the cave) the little helper thingies that are supposed to boost you up are misplaced. They're at the exit of the cave, one is even half in the ground, not at the ledge like here
EDIT: I also tested it on an Intel(R) Xeon(R) CPU E31220 / AMD Oland machine, also with Arch. It works.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 1, 2020

@rien333 I also tested this on my two laptops with Ubuntu and Mint. I cannot reproduce the issue on any of my 5 machines. Apparently, Dobie had the same issue with j8 boundaries broken. If you could let us know your compile instructions, please. Are you using any options for PCSX2? Hardware/OpenGL or SoftwareOpen/GL?

This is the bug I get. The green elevator thingies are misplaced. Also a known & fixed bug from Dobie:
https://streamable.com/q4briu

@rien333
Copy link

@rien333 rien333 commented Oct 1, 2020

I think the 64bit, 1.7 version of PCSX2 breaks something specific to that game. I also tried your x86_64-support branch, but same problem

you mean the latest upstream version, right?

When I said that I tried your x86_64 branch, I meant that I cloned the code from this github page. The 1.7.0 version(s) I tried corresponds to the last two iterations of the PKGBUILD in the arch community repo. There's is a line in each PKGBUILD that specifies the commit that was used.

If you could let us know your compile instructions, please. Are you using any options for PCSX2?

Just the options listed in aforementioned PKGBUILDs. I have actually also build pcsx2 with slightly different, more vanilla options, but I haven't messed with every single configuration option used in the official PKGBUILDs. I'm pretty sure I've also tried to produce the most vanilla build possible (basically removing everything, except for -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr). If any of the options in the PKGBUILD look problematic, let me know. Though I've generally build PCSX2 from source, I've also used the pre-build binary from the community repo. This, I think, would mean that we've tested the same binary.

Are you using any options for PCSX2? Hardware/OpenGL or SoftwareOpen/GL?

No special options, no. I've made sure to reset all my options to "factory settings" a few times (moving my config, and hitting "Clear all settings..." in the menu).

I just tried softwareOpen/GL, but I get the same j8 greater than 0x7f!! error as I do with hardware OpenGL. Pretty strange stuff.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 1, 2020

Do you know for sure that your iso works with the 32-bit version? Maybe you copied from a USB stick and forgot to sync or something like that.

Ok, I will feed the build scripts you mentioned into extra-x86_64-build tonight, let's see if I can reproduce it then.

I have included PCSX2 in an emulator bundle I provide. The version there was rebased last week, so it's pretty fresh. There is a PKGBUILD script available, if you want to try that. Yesterday I actually tested mainly with that version, maybe you noticed at the end of the video I posted.

@rien333
Copy link

@rien333 rien333 commented Oct 1, 2020

Do you know for sure that your iso works with the 32-bit version? Maybe you copied from a USB stick and forgot to sync or something like that.

Nope, totally sure it worked with the 32bit flatpak version of PCSX2 I installed. Same BIOS as well. Perhaps there is a subtle, hidden problem with my OS environment that flatpak somehow avoids though (i.e. the new x86_64 code might not be at fault, but some other change in e.g. a system lib is). Then again, 3/4 of the other games I tried work perfectly fine.

I have included PCSX2 in an emulator bundle I provide. The version there was rebased last week, so it's pretty fresh. There is a PKGBUILD script available, if you want to try that.

I will give that a try now.

Don't sweat it if you have no idea what's causing my issue. Perhaps a fix will come along eventually, or other users may run into similar problems when the x86_64 version of this emulator becomes more popular. Thanks for investigating this problem though!

@rien333
Copy link

@rien333 rien333 commented Oct 1, 2020

I have included PCSX2 in an emulator bundle I provide. The version there was rebased last week, so it's pretty fresh. There is a PKGBUILD script available, if you want to try that.

After a pretty long build process, I got an error somewhere along the final stages of trying to build your "marley" emulator frontend (all emulators compiled fine, I think). I could open an issue over at marley's github if you want.

Here is the last part of the compilation log (I just ran makepkg on the PKGBUILD, more or less):

Compilation log
g++ -DPACKAGE_NAME=\"marley\" -DPACKAGE_TARNAME=\"marley\" -DPACKAGE_VERSION=\"0.1.5\" -DPACKAGE_STRING=\"marley\ 0.1.5\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"marley\" -DVERSION=\"0.1.5\" -DPACKAGE=\"marley\" -DVERSION=\"0.1.5\" -I.   -D_FORTIFY_SOURCE=2 --std=c++17 -O2 -fno-pie -no-pie -I/usr/include/SDL2/ -I../mednafen -Idolphin/Source/Core -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -pthread  -march=skylake -O2 -pipe -fno-stack-protector -fno-plt -MT resources/pcsx2_res.o -MD -MP -MF $depbase.Tpo -c -o resources/pcsx2_res.o resources/pcsx2_res.cpp &&\
mv -f $depbase.Tpo $depbase.Po
In file included from /usr/include/gtk-2.0/gtk/gtkobject.h:37,
                 from /usr/include/gtk-2.0/gtk/gtkwidget.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkcontainer.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkbin.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkwindow.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkdialog.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkaboutdialog.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:33,
                 from src/gui.cpp:29:
/usr/include/gtk-2.0/gtk/gtktypeutils.h:236:64: warning: ‘GTypeDebugFlags’ is deprecated [-Wdeprecated-declarations]
  236 | void            gtk_type_init   (GTypeDebugFlags    debug_flags);
      |                                                                ^
In file included from /usr/include/glib-2.0/gobject/gobject.h:24,
                 from /usr/include/glib-2.0/gobject/gbinding.h:29,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from src/gui.cpp:29:
/usr/include/glib-2.0/gobject/gtype.h:685:3: note: declared here
  685 | } GTypeDebugFlags GLIB_DEPRECATED_TYPE_IN_2_36;
      |   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-2.0/gtk/gtktoolitem.h:31,
                 from /usr/include/gtk-2.0/gtk/gtktoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtk.h:126,
                 from src/gui.cpp:29:
/usr/include/gtk-2.0/gtk/gtktooltips.h:73:12: warning: ‘GTimeVal’ is deprecated: Use 'GDateTime' instead [-Wdeprecated-declarations]
   73 |   GTimeVal last_popdown;
      |            ^~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/galloca.h:32,
                 from /usr/include/glib-2.0/glib.h:30,
                 from /usr/include/glib-2.0/gobject/gbinding.h:28,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from src/gui.cpp:29:
/usr/include/glib-2.0/glib/gtypes.h:545:26: note: declared here
  545 | typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);
      |                          ^~~~~~~~
In file included from /usr/include/gtk-2.0/gtk/gtkobject.h:37,
                 from /usr/include/gtk-2.0/gtk/gtkwidget.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkcontainer.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkbin.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkwindow.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkdialog.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkaboutdialog.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:33,
                 from src/marley.cpp:35:
/usr/include/gtk-2.0/gtk/gtktypeutils.h:236:64: warning: ‘GTypeDebugFlags’ is deprecated [-Wdeprecated-declarations]
  236 | void            gtk_type_init   (GTypeDebugFlags    debug_flags);
      |                                                                ^
In file included from /usr/include/glib-2.0/gobject/gobject.h:24,
                 from /usr/include/glib-2.0/gobject/gbinding.h:29,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from src/marley.cpp:35:
/usr/include/glib-2.0/gobject/gtype.h:685:3: note: declared here
  685 | } GTypeDebugFlags GLIB_DEPRECATED_TYPE_IN_2_36;
      |   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-2.0/gtk/gtktoolitem.h:31,
                 from /usr/include/gtk-2.0/gtk/gtktoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtk.h:126,
                 from src/marley.cpp:35:
/usr/include/gtk-2.0/gtk/gtktooltips.h:73:12: warning: ‘GTimeVal’ is deprecated: Use 'GDateTime' instead [-Wdeprecated-declarations]
   73 |   GTimeVal last_popdown;
      |            ^~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/galloca.h:32,
                 from /usr/include/glib-2.0/glib.h:30,
                 from /usr/include/glib-2.0/gobject/gbinding.h:28,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from src/marley.cpp:35:
/usr/include/glib-2.0/glib/gtypes.h:545:26: note: declared here
  545 | typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);
      |                          ^~~~~~~~
In file included from /usr/include/gtk-2.0/gtk/gtkobject.h:37,
                 from /usr/include/gtk-2.0/gtk/gtkwidget.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkcontainer.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkbin.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkwindow.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkdialog.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkaboutdialog.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:33,
                 from src/emu.cpp:44:
/usr/include/gtk-2.0/gtk/gtktypeutils.h:236:64: warning: ‘GTypeDebugFlags’ is deprecated [-Wdeprecated-declarations]
  236 | void            gtk_type_init   (GTypeDebugFlags    debug_flags);
      |                                                                ^
In file included from /usr/include/glib-2.0/gobject/gobject.h:24,
                 from /usr/include/glib-2.0/gobject/gbinding.h:29,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from src/emu.cpp:44:
/usr/include/glib-2.0/gobject/gtype.h:685:3: note: declared here
  685 | } GTypeDebugFlags GLIB_DEPRECATED_TYPE_IN_2_36;
      |   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-2.0/gtk/gtktoolitem.h:31,
                 from /usr/include/gtk-2.0/gtk/gtktoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtk.h:126,
                 from src/emu.cpp:44:
/usr/include/gtk-2.0/gtk/gtktooltips.h:73:12: warning: ‘GTimeVal’ is deprecated: Use 'GDateTime' instead [-Wdeprecated-declarations]
   73 |   GTimeVal last_popdown;
      |            ^~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/galloca.h:32,
                 from /usr/include/glib-2.0/glib.h:30,
                 from /usr/include/glib-2.0/gobject/gbinding.h:28,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from src/emu.cpp:44:
/usr/include/glib-2.0/glib/gtypes.h:545:26: note: declared here
  545 | typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);
      |                          ^~~~~~~~
src/emu.cpp: In function ‘void initPPSSPP()’:
src/emu.cpp:551:9: warning: ignoring return value of ‘char* getcwd(char*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  551 |   getcwd(cwd, sizeof(cwd));
      |   ~~~~~~^~~~~~~~~~~~~~~~~~
src/emu.cpp:553:8: warning: ignoring return value of ‘int chdir(const char*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  553 |   chdir(ppsspp_dir.c_str());
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~
src/emu.cpp:556:9: warning: ignoring return value of ‘int system(const char*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  556 |   system(command.c_str());
      |   ~~~~~~^~~~~~~~~~~~~~~~~
src/emu.cpp:558:8: warning: ignoring return value of ‘int chdir(const char*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  558 |   chdir(cwd);
      |   ~~~~~^~~~~
src/emu.cpp: In function ‘void initDOLPHIN()’:
src/emu.cpp:609:9: warning: ignoring return value of ‘char* getcwd(char*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  609 |   getcwd(cwd, sizeof(cwd));
      |   ~~~~~~^~~~~~~~~~~~~~~~~~
src/emu.cpp:611:8: warning: ignoring return value of ‘int chdir(const char*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  611 |   chdir(dolphin_dir.c_str());
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~
src/emu.cpp:614:9: warning: ignoring return value of ‘int system(const char*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  614 |   system(command.c_str());
      |   ~~~~~~^~~~~~~~~~~~~~~~~
src/emu.cpp:616:8: warning: ignoring return value of ‘int chdir(const char*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  616 |   chdir(cwd);
      |   ~~~~~^~~~~
In file included from /usr/include/gtk-2.0/gtk/gtkobject.h:37,
                 from /usr/include/gtk-2.0/gtk/gtkwidget.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkcontainer.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkbin.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkwindow.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkdialog.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkaboutdialog.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:33,
                 from src/controller.cpp:32:
/usr/include/gtk-2.0/gtk/gtktypeutils.h:236:64: warning: ‘GTypeDebugFlags’ is deprecated [-Wdeprecated-declarations]
  236 | void            gtk_type_init   (GTypeDebugFlags    debug_flags);
      |                                                                ^
In file included from /usr/include/glib-2.0/gobject/gobject.h:24,
                 from /usr/include/glib-2.0/gobject/gbinding.h:29,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from src/controller.cpp:32:
/usr/include/glib-2.0/gobject/gtype.h:685:3: note: declared here
  685 | } GTypeDebugFlags GLIB_DEPRECATED_TYPE_IN_2_36;
      |   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-2.0/gtk/gtktoolitem.h:31,
                 from /usr/include/gtk-2.0/gtk/gtktoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtk.h:126,
                 from src/controller.cpp:32:
/usr/include/gtk-2.0/gtk/gtktooltips.h:73:12: warning: ‘GTimeVal’ is deprecated: Use 'GDateTime' instead [-Wdeprecated-declarations]
   73 |   GTimeVal last_popdown;
      |            ^~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/galloca.h:32,
                 from /usr/include/glib-2.0/glib.h:30,
                 from /usr/include/glib-2.0/gobject/gbinding.h:28,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from src/controller.cpp:32:
/usr/include/glib-2.0/glib/gtypes.h:545:26: note: declared here
  545 | typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);
      |                          ^~~~~~~~
g++ --std=c++17 -O2 -fno-pie -no-pie -I/usr/include/SDL2/ -I../mednafen -Idolphin/Source/Core -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -pthread  -march=skylake -O2 -pipe -fno-stack-protector -fno-plt --std=c++17 -O2 -fno-pie -no-pie -s -L/usr/lib/x86_64-linux-gnu -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -o marley src/marley.o src/gui.o src/controller.o src/statemachine.o src/emu.o src/wii.o resources/res.o resources/pcsx2_res.o mednafen/src/libmednafen_marley.a ppsspp/build/lib/libglslang.a ppsspp/build/lib/libxxhash.a ppsspp/build/lib/liblibzip.a ppsspp/build/lib/libspirv-cross-cpp.a ppsspp/build/lib/libspirv-cross-glsl.a ppsspp/build/lib/libdiscord-rpc.a ppsspp/build/lib/libudis86.a ppsspp/build/lib/libOSDependent.a ppsspp/build/lib/libspirv-cross-core.a ppsspp/build/lib/libspirv-cross-msl.a ppsspp/build/lib/libsfmt19937.a ppsspp/build/lib/libPPSSPPSDL.a ppsspp/build/lib/libspirv-cross-hlsl.a ppsspp/build/lib/libcityhash.a ppsspp/build/lib/libkirk.a ppsspp/build/lib/libarmips.a ppsspp/build/lib/libnative.a ppsspp/build/lib/libOGLCompiler.a ppsspp/build/lib/libgason.a ppsspp/build/lib/libxbrz.a ppsspp/build/lib/libSPVRemapper.a ppsspp/build/lib/libCore.a ppsspp/build/lib/libHLSL.a ppsspp/build/lib/libCommon.a ppsspp/build/lib/libSPIRV.a ppsspp/build/lib/libsnappy.a ppsspp/ffmpeg/linux/x86_64/lib/libavcodec.a ppsspp/ffmpeg/linux/x86_64/lib/libavutil.a ppsspp/ffmpeg/linux/x86_64/lib/libswscale.a ppsspp/ffmpeg/linux/x86_64/lib/libavformat.a ppsspp/ffmpeg/linux/x86_64/lib/libswresample.a ppsspp/build/lib/libminiupnpc.a ppsspp/build/lib/libglslang.a ppsspp/build/lib/libxxhash.a ppsspp/build/lib/liblibzip.a ppsspp/build/lib/libspirv-cross-cpp.a ppsspp/build/lib/libspirv-cross-glsl.a ppsspp/build/lib/libdiscord-rpc.a ppsspp/build/lib/libudis86.a ppsspp/build/lib/libOSDependent.a ppsspp/build/lib/libspirv-cross-core.a ppsspp/build/lib/libspirv-cross-msl.a ppsspp/build/lib/libsfmt19937.a ppsspp/build/lib/libPPSSPPSDL.a ppsspp/build/lib/libspirv-cross-hlsl.a ppsspp/build/lib/libcityhash.a ppsspp/build/lib/libkirk.a ppsspp/build/lib/libarmips.a ppsspp/build/lib/libnative.a ppsspp/build/lib/libOGLCompiler.a ppsspp/build/lib/libgason.a ppsspp/build/lib/libxbrz.a ppsspp/build/lib/libSPVRemapper.a ppsspp/build/lib/libCore.a ppsspp/build/lib/libHLSL.a ppsspp/build/lib/libCommon.a ppsspp/build/lib/libSPIRV.a ppsspp/build/lib/libsnappy.a ppsspp/ffmpeg/linux/x86_64/lib/libavcodec.a ppsspp/ffmpeg/linux/x86_64/lib/libavutil.a ppsspp/ffmpeg/linux/x86_64/lib/libswscale.a ppsspp/ffmpeg/linux/x86_64/lib/libavformat.a ppsspp/ffmpeg/linux/x86_64/lib/libswresample.a ppsspp/build/lib/libminiupnpc.a ppsspp/build/lib/libglslang.a ppsspp/build/lib/libxxhash.a ppsspp/build/lib/liblibzip.a ppsspp/build/lib/libspirv-cross-cpp.a ppsspp/build/lib/libspirv-cross-glsl.a ppsspp/build/lib/libdiscord-rpc.a ppsspp/build/lib/libudis86.a ppsspp/build/lib/libOSDependent.a ppsspp/build/lib/libspirv-cross-core.a ppsspp/build/lib/libspirv-cross-msl.a ppsspp/build/lib/libsfmt19937.a ppsspp/build/lib/libPPSSPPSDL.a ppsspp/build/lib/libspirv-cross-hlsl.a ppsspp/build/lib/libcityhash.a ppsspp/build/lib/libkirk.a ppsspp/build/lib/libarmips.a ppsspp/build/lib/libnative.a ppsspp/build/lib/libOGLCompiler.a ppsspp/build/lib/libgason.a ppsspp/build/lib/libxbrz.a ppsspp/build/lib/libSPVRemapper.a ppsspp/build/lib/libCore.a ppsspp/build/lib/libHLSL.a ppsspp/build/lib/libCommon.a ppsspp/build/lib/libSPIRV.a ppsspp/build/lib/libsnappy.a ppsspp/ffmpeg/linux/x86_64/lib/libavcodec.a ppsspp/ffmpeg/linux/x86_64/lib/libavutil.a ppsspp/ffmpeg/linux/x86_64/lib/libswscale.a ppsspp/ffmpeg/linux/x86_64/lib/libavformat.a ppsspp/ffmpeg/linux/x86_64/lib/libswresample.a ppsspp/build/lib/libminiupnpc.a mupen64plus/Source/input-sdl/_obj/config.o mupen64plus/Source/input-sdl/_obj/sdl_key_converter.o mupen64plus/Source/input-sdl/_obj/plugin.o mupen64plus/Source/input-sdl/_obj/autoconfig.o mupen64plus/Source/input-sdl/_obj/osal_dynamiclib_unix.o mupen64plus/Source/video-glide64mk2/_obj/Glitch64/OGLtextures.o mupen64plus/Source/video-glide64mk2/_obj/Glitch64/OGLcombiner.o mupen64plus/Source/video-glide64mk2/_obj/Glitch64/OGLgeometry.o mupen64plus/Source/video-glide64mk2/_obj/Glitch64/OGLglitchmain.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TextureFilters_hq2x.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/Ext_TxFilter.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxDbg.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxReSample.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxImage.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/tc-1.1+/fxt1.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/tc-1.1+/s2tc/s2tc_libtxc_dxtn.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/tc-1.1+/s2tc/s2tc_algorithm.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/tc-1.1+/wrapper.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/tc-1.1+/texstore.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxFilterExport.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TextureFilters_hq4x.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxCache.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TextureFilters_2xsai.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TextureFilters.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxUtil.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxTexCache.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxHiResCache.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxQuantize.o mupen64plus/Source/video-glide64mk2/_obj/GlideHQ/TxFilter.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/rdp.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/FBtoScreen.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/Debugger.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/TexBuffer.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/Ini.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/DepthBufferRender.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/Combine.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/Keys.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/Config.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/CRC.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/TexCache.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/osal_dynamiclib_unix.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/Util.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/3dmath.o mupen64plus/Source/video-glide64mk2/_obj/Glide64/Main.o mupen64plus/Source/core/_obj/osal/files_unix.o mupen64plus/Source/core/_obj/osal/dynamiclib_unix.o mupen64plus/Source/core/_obj/md5/md5.o mupen64plus/Source/core/_obj/asm_defines/asm_defines.o mupen64plus/Source/core/_obj/osd/oglft_c.o mupen64plus/Source/core/_obj/osd/osd.o mupen64plus/Source/core/_obj/api/config.o mupen64plus/Source/core/_obj/api/vidext.o mupen64plus/Source/core/_obj/api/frontend.o mupen64plus/Source/core/_obj/api/debugger.o mupen64plus/Source/core/_obj/api/callbacks.o mupen64plus/Source/core/_obj/api/common.o mupen64plus/Source/core/_obj/device/r4300/r4300_core.o mupen64plus/Source/core/_obj/device/r4300/cp1.o mupen64plus/Source/core/_obj/device/r4300/interrupt.o mupen64plus/Source/core/_obj/device/r4300/idec.o mupen64plus/Source/core/_obj/device/r4300/tlb.o mupen64plus/Source/core/_obj/device/r4300/recomp.o mupen64plus/Source/core/_obj/device/r4300/cp0.o mupen64plus/Source/core/_obj/device/r4300/pure_interp.o mupen64plus/Source/core/_obj/device/r4300/cached_interp.o mupen64plus/Source/core/_obj/device/r4300/x86_64/dynarec.o mupen64plus/Source/core/_obj/device/r4300/x86_64/assemble.o mupen64plus/Source/core/_obj/device/r4300/x86_64/dyna_start.o mupen64plus/Source/core/_obj/device/r4300/x86_64/regcache.o mupen64plus/Source/core/_obj/device/rdram/rdram.o mupen64plus/Source/core/_obj/device/rcp/pi/pi_controller.o mupen64plus/Source/core/_obj/device/rcp/ai/ai_controller.o mupen64plus/Source/core/_obj/device/rcp/vi/vi_controller.o mupen64plus/Source/core/_obj/device/rcp/mi/mi_controller.o mupen64plus/Source/core/_obj/device/rcp/ri/ri_controller.o mupen64plus/Source/core/_obj/device/rcp/si/si_controller.o mupen64plus/Source/core/_obj/device/rcp/rsp/rsp_core.o mupen64plus/Source/core/_obj/device/rcp/rdp/rdp_core.o mupen64plus/Source/core/_obj/device/rcp/rdp/fb.o mupen64plus/Source/core/_obj/device/memory/memory.o mupen64plus/Source/core/_obj/device/pif/cic.o mupen64plus/Source/core/_obj/device/pif/pif.o mupen64plus/Source/core/_obj/device/pif/bootrom_hle.o mupen64plus/Source/core/_obj/device/pif/n64_cic_nus_6105.o mupen64plus/Source/core/_obj/device/gb/gb_cart.o mupen64plus/Source/core/_obj/device/gb/mbc3_rtc.o mupen64plus/Source/core/_obj/device/gb/m64282fp.o mupen64plus/Source/core/_obj/device/device.o mupen64plus/Source/core/_obj/device/dd/dd_controller.o mupen64plus/Source/core/_obj/device/cart/cart_rom.o mupen64plus/Source/core/_obj/device/cart/cart.o mupen64plus/Source/core/_obj/device/cart/eeprom.o mupen64plus/Source/core/_obj/device/cart/af_rtc.o mupen64plus/Source/core/_obj/device/cart/flashram.o mupen64plus/Source/core/_obj/device/cart/sram.o mupen64plus/Source/core/_obj/device/controllers/paks/mempak.o mupen64plus/Source/core/_obj/device/controllers/paks/transferpak.o mupen64plus/Source/core/_obj/device/controllers/paks/rumblepak.o mupen64plus/Source/core/_obj/device/controllers/paks/biopak.o mupen64plus/Source/core/_obj/device/controllers/game_controller.o mupen64plus/Source/core/_obj/plugin/dummy_input.o mupen64plus/Source/core/_obj/plugin/plugin.o mupen64plus/Source/core/_obj/plugin/dummy_rsp.o mupen64plus/Source/core/_obj/plugin/dummy_video.o mupen64plus/Source/core/_obj/plugin/dummy_audio.o mupen64plus/Source/core/_obj/main/savestates.o mupen64plus/Source/core/_obj/main/sdl_key_converter.o mupen64plus/Source/core/_obj/main/screenshot.o mupen64plus/Source/core/_obj/main/workqueue.o mupen64plus/Source/core/_obj/main/eventloop.o mupen64plus/Source/core/_obj/main/main.o mupen64plus/Source/core/_obj/main/util.o mupen64plus/Source/core/_obj/main/rom.o mupen64plus/Source/core/_obj/main/cheat.o mupen64plus/Source/core/_obj/backends/plugins_compat/audio_plugin_compat.o mupen64plus/Source/core/_obj/backends/plugins_compat/input_plugin_compat.o mupen64plus/Source/core/_obj/backends/clock_ctime_plus_delta.o mupen64plus/Source/core/_obj/backends/file_storage.o mupen64plus/Source/core/_obj/backends/api/video_capture_backend.o mupen64plus/Source/core/_obj/backends/dummy_video_capture.o mupen64plus/Source/core/_obj/oglft/OGLFT.o mupen64plus/Source/core/_obj/minizip/zip.o mupen64plus/Source/core/_obj/minizip/ioapi.o mupen64plus/Source/core/_obj/minizip/unzip.o mupen64plus/Source/ui-console/_obj/plugin.o mupen64plus/Source/ui-console/_obj/core_interface.o mupen64plus/Source/ui-console/_obj/main.o mupen64plus/Source/ui-console/_obj/debugger.o mupen64plus/Source/ui-console/_obj/osal_files_unix.o mupen64plus/Source/ui-console/_obj/osal_dynamiclib_unix.o mupen64plus/Source/ui-console/_obj/compare_core.o mupen64plus/Source/ui-console/_obj/cheat.o mupen64plus/Source/rsp-hle/_obj/audio.o mupen64plus/Source/rsp-hle/_obj/alist_audio.o mupen64plus/Source/rsp-hle/_obj/re2.o mupen64plus/Source/rsp-hle/_obj/alist_nead.o mupen64plus/Source/rsp-hle/_obj/alist_naudio.o mupen64plus/Source/rsp-hle/_obj/plugin.o mupen64plus/Source/rsp-hle/_obj/hvqm.o mupen64plus/Source/rsp-hle/_obj/alist.o mupen64plus/Source/rsp-hle/_obj/hle.o mupen64plus/Source/rsp-hle/_obj/jpeg.o mupen64plus/Source/rsp-hle/_obj/mp3.o mupen64plus/Source/rsp-hle/_obj/memory.o mupen64plus/Source/rsp-hle/_obj/osal_dynamiclib_unix.o mupen64plus/Source/rsp-hle/_obj/cicx105.o mupen64plus/Source/rsp-hle/_obj/musyx.o mupen64plus/Source/audio-sdl/_obj/circular_buffer.o mupen64plus/Source/audio-sdl/_obj/volume.o mupen64plus/Source/audio-sdl/_obj/main.o mupen64plus/Source/audio-sdl/_obj/sdl_backend.o mupen64plus/Source/audio-sdl/_obj/resamplers/trivial.o mupen64plus/Source/audio-sdl/_obj/resamplers/src.o mupen64plus/Source/audio-sdl/_obj/resamplers/resamplers.o mupen64plus/Source/audio-sdl/_obj/osal_dynamiclib_unix.o dolphin/build/Source/Core/DolphinNoGUI/libdolphin-emu-nogui.a dolphin/build/Source/Core/Core/libcore.a dolphin/build/Source/Core/UICommon/libuicommon.a dolphin/build/Source/Core/../../Externals/imgui/libimgui.a dolphin/build/Source/Core/VideoBackends/Null/libvideonull.a dolphin/build/Source/Core/VideoBackends/OGL/libvideoogl.a dolphin/build/Source/Core/VideoBackends/Software/libvideosoftware.a dolphin/build/Source/Core/VideoBackends/Vulkan/libvideovulkan.a dolphin/build/Source/Core/VideoCommon/libvideocommon.a dolphin/build/Source/Core/Core/libcore.a dolphin/build/Source/Core/VideoBackends/Null/libvideonull.a dolphin/build/Source/Core/VideoBackends/OGL/libvideoogl.a dolphin/build/Source/Core/VideoBackends/Software/libvideosoftware.a dolphin/build/Source/Core/VideoBackends/Vulkan/libvideovulkan.a dolphin/build/Source/Core/VideoCommon/libvideocommon.a dolphin/build/Source/Core/AudioCommon/libaudiocommon.a dolphin/build/Source/Core/../../Externals/soundtouch/libSoundTouch.a dolphin/build/Source/Core/../../Externals/FreeSurround/libFreeSurround.a dolphin/build/Source/Core/../../Externals/cubeb/libcubeb.a dolphin/build/Source/Core/DiscIO/libdiscio.a dolphin/build/Source/Core/InputCommon/libinputcommon.a dolphin/build/Source/Core/../../Externals/hidapi/libhidapi.a dolphin/build/Source/Core/../../Externals/glslang/libglslang.a dolphin/build/Source/Core/../../Externals/imgui/libimgui.a dolphin/build/Source/Core/../../Externals/xxhash/libxxhash.a dolphin/build/Source/Core/Common/libcommon.a dolphin/build/Source/Core/../../Externals/enet/libenet.a dolphin/build/Source/Core/../../Externals/pugixml/libpugixml.a  dolphin/build/Source/Core/../../Externals/fmt/libfmt.a  dolphin/build/Source/Core/../../Externals/bzip2/libbzip2.a dolphin/build/Source/Core/../../Externals/Bochs_disasm/libbdisasm.a dolphin/build/Source/Core/../../Externals/cpp-optparse/libcpp-optparse.a dolphin/build/Source/Core/../../Externals/minizip/libminizip.a dolphin/build/Source/Core/../../Externals/discord-rpc/src/libdiscord-rpc.a -lGLEW -lGL -lstdc++ -lGLU -lfreetype -lboost_system -lboost_filesystem -lsamplerate pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Cache.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/COP0.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/COP2.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Counters.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/GameDatabase.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Dump.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Elfheader.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/FiFo.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/FPU.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Gif.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Gif_Logger.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Gif_Unit.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/GS.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/GSState.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Hw.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/HwRead.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/HwWrite.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Interpreter.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IopBios.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IopCounters.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IopDma.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IopGte.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IopHw.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IopIrq.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IopMem.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IopSio2.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Mdec.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Memory.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/MMI.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/MTGS.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/MTVU.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/MultipartFileReader.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/OutputIsoFile.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Patch.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Patch_Memory.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Pcsx2Config.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/PluginManager.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/PrecompiledHeader.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/R3000A.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/R3000AInterpreter.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/R3000AOpcodeTables.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/R5900.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/R5900OpcodeImpl.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/R5900OpcodeTables.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/SaveState.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ShiftJisToUnicode.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Sif.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Sif0.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Sif1.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/sif2.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Sio.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/SourceLog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/SPR.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/System.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Vif0_Dma.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Vif1_Dma.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Vif1_MFIFO.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Vif.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Vif_Codes.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Vif_Transfer.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Vif_Unpack.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/vtlb.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VU0.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VUmicro.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VU0micro.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VU0microInterp.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VU1micro.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VU1microInterp.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VUflags.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VUmicroMem.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/VUops.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/BlockdumpFileReader.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/CdRom.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/CDVDaccess.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/CDVD.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/CDVDisoReader.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/InputIsoFile.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/OutputIsoFile.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/ChunksCache.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/CompressedFileReader.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/CsoFileReader.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/GzippedFileReader.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/IsoFS/IsoFile.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/IsoFS/IsoFSCDVD.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/CDVD/IsoFS/IsoFS.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/DebugInterface.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/DisassemblyManager.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/ExpressionParser.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/MIPSAnalyst.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/MipsAssembler.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/MipsAssemblerTables.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/MipsStackWalk.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/Breakpoints.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/SymbolMap.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/DisR3000A.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/DisR5900asm.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/DisVU0Micro.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/DisVU1Micro.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/DebugTools/BiosDebugData.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppAssert.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppConfig.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppCorePlugins.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppCoreThread.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppEventSources.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppGameDatabase.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppUserMode.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppInit.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppMain.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/AppRes.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/ConsoleLogger.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/CpuUsageProvider.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/AboutBoxDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/AssertionDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/BaseConfigurationDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/ConfirmationDialogs.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/ConvertMemoryCardDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/CreateMemoryCardDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/FirstTimeWizard.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/ImportSettingsDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/LogOptionsDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/McdConfigDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/PickUserModeDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Dialogs/SysConfigDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Debugger/BreakpointWindow.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Debugger/CtrlDisassemblyView.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Debugger/CtrlRegisterList.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Debugger/CtrlMemView.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Debugger/DebuggerLists.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Debugger/DisassemblyDialog.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Deb
ugger/DebugEvents.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/ExecutorThread.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/FrameForGS.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/GlobalCommands.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/i18n.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/IsoDropTarget.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/MainFrame.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/MainMenuClicks.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/MemoryCardFile.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/MemoryCardFolder.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/MessageBoxes.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/MSWstuff.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/BaseApplicableConfigPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/BiosSelectorPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/CpuPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/DirPickerPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/GameFixesPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/GSWindowPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/LogOptionsPanels.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/MemoryCardListPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/MemoryCardListView.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/MiscPanelStuff.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/PathsPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/PluginSelectorPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/SpeedhacksPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Panels/VideoPanel.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/RecentIsoList.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/Saveslots.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/SysState.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/UpdateUI.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IPU/IPU.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IPU/IPU_Fifo.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IPU/IPUdither.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IPU/IPUdma.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IPU/mpeg2lib/Idct.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IPU/mpeg2lib/Mpeg.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/IPU/yuv2rgb.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ps2/BiosTools.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ps2/pgif.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ps2/LegacyDmac.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ps2/Iop/IopHwRead.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ps2/Iop/IopHwWrite.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ps2/Iop/PsxBios.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Recording/InputRecording.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Recording/InputRecordingFile.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Recording/NewRecordingFrame.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Recording/PadData.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Recording/RecordingControls.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Recording/RecordingInputManager.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Recording/VirtualPad.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/System/SysCoreThread.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/System/SysThreadBase.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Utilities/FileUtils.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/BaseblockEx.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iCOP0.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iCore.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iFPU.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iFPUd.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iMisc.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iMMI.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iR3000A.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iR3000Atables.cpp.o pc
sx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/iR5900Misc.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ir5900tables.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iCore-32.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900-32.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900Arit.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900AritImm.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900Branch.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900Jump.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900LoadStore.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900Move.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900MultDiv.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900Shift.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/iR5900Templates.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/ix86-32/recVTLB.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/newVif_Dynarec.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/newVif_Unpack.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/newVif_UnpackSSE.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/x86/microVU.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ZipTools/thread_gzip.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/ZipTools/thread_lzma.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/gui/CpuUsageProviderLnx.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Linux/LnxConsolePipe.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Linux/LnxKeyCodes.cpp.o pcsx2/build/pcsx2/CMakeFiles/PCSX2.dir/Linux/LnxFlatFileReader.cpp.o pcsx2/build/pcsx2/libPCSX2.a pcsx2/build/common/src/x86emitter/libx86emitter.a pcsx2/build/common/src/Utilities/libUtilities.a pcsx2/build/common/src/Utilities/libUtilities_NO_TLS.a pcsx2/build/plugins/onepad/libonepad.a pcsx2/build/plugins/GSdx/libGSdx.a -lQt5Widgets -lasound -llzo2 -lavformat -lavcodec -lswscale -lavutil -lQt5Gui -lQt5Core -lcurl -lICE -lX11 -lXext -lSM -lGLX -lminiupnpc -lusb-1.0 -levdev -ludev -lXi -lsfml-network -lsfml-system -ludev -lc -lpng -ldl -lrt -lXrandr -lpulse -lsndio -lpthread -lSDL2 -lz -lEGL -lGL -lGLU -lOpenGL -ljack -lzstd -lEGL -llzma -lbluetooth -lmbedtls -lmbedx509 -lmbedcrypto -lSDL2 -lSDL2_image -lSDL2_ttf -lasound -lm -ldl -lpthread -ljack -lsndfile -lz -lwx_baseu-3.0  -lwx_gtk2u_core-3.0 -lwx_gtk2u_adv-3.0 -lgdk-x11-2.0 -lgtk-x11-2.0 -lglib-2.0 -lgobject-2.0 -latk-1.0 -lgio-2.0 -lgthread-2.0 -lgmodule-2.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lpangocairo-1.0 -lpangoft2-1.0 -lpangoxft-1.0 -laio -llzma -lXfixes -lxcb -lX11-xcb 
g++: error: dolphin/build/Source/Core/../../Externals/fmt/libfmt.a: No such file or directory
make[2]: *** [Makefile:1398: marley] Error 1
make[2]: Leaving directory '/tmp/makepkg/marley-git/src/marley'
make[1]: *** [Makefile:1529: all-recursive] Error 1
make[1]: Leaving directory '/tmp/makepkg/marley-git/src/marley'
make: *** [Makefile:1291: all] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 1, 2020

I could open an issue over at marley's github if you want.

Yes, that would be great. It will build in a clean chroot. Try the extra-x86_64-build script from https://wiki.archlinux.org/index.php/DeveloperWiki:Building_in_a_clean_chroot

Regarding the compile time, there are some notes in the readme.md about setting MAKEFLAGS.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 2, 2020

The compile options from the PKBUILD script you mentioned

cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DDOC_DIR=/usr/share/doc/pcsx2 \
    -DGAMEINDEX_DIR=/usr/share/pcsx2 \
    -DPLUGIN_DIR=/usr/lib/pcsx2 \
    -DDISABLE_ADVANCE_SIMD=ON \
    -DDISABLE_BUILD_DATE=ON \
    -DDISABLE_PCSX2_WRAPPER=ON \
    -DENABLE_TESTS=OFF \
    -DEXTRA_PLUGINS=ON \
    -DGTK3_API=ON \
    -DSDL2_API=ON \
    -DPACKAGE_MODE=ON \
    -DREBUILD_SHADER=ON \
    -DUSE_LTO=OFF \
    -DUSE_VTUNE=OFF \
    -DXDG_STD=ON \
    -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config-gtk3 \
    -Wno-dev

give me
image

I tried first with the extra-x86_64-build script and then manually with

git clone https://github.com/PCSX2/pcsx2/
cd pcsx2
mkdir build && cd build && cmake .. $OPTIONS_AS_ABOVE 
make 
cd plugins
cp ./USBnull/libUSBnull-0.7.0.so ./spu2-x/src/libspu2x-2.0.0.so \
 ./onepad_legacy/libonepad-legacy.so ./onepad/libonepad.so \
./LilyPad/libLilyPad-0.11.0.so ./GSdx/libGSdx.so \
./dev9ghzdrk/libdev9ghzdrk-0.4.so \
./dev9null/libdev9null-0.5.0.so . 
cd .. && ./pcsx2/PCSX2

Could you do a manual build per the above, but with cmake -DCMAKE_BUILD_TYPE=Release ..? This works for me, Klonoa 2 opens but has the green elevator balls placed incorrectly.

@HarukaMa
Copy link

@HarukaMa HarukaMa commented Oct 2, 2020

It seems this branch have quite a few conflicts with master and it seems many of them are with Tellow's commits. What's the status of this PR w.r.t. to master at this point?

I have a local commit related to cdvd but that part was recently largely changed in master, so I may need to rebase the branch to master to test it, but seemingly it's not possible at the moment with conflicts in codegen part as I don't have related knowledge to locally merge them.

@rien333
Copy link

@rien333 rien333 commented Oct 2, 2020

@beaumanvienna

Could you do a manual build per the above, but with make -DCMAKE_BUILD_TYPE=Release ..? This works for me, Klonoa 2 opens but has the green elevator balls placed incorrectly.

(I assume you mean cmake instead of make?)

Okay, I thought I tried this, but when following your instructions and calling cmake without any config options except DCMAKE_BUILD_TYPE=Release the game actually works! Great! I will do some trail and error later today to see what exactly caused my problem.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 2, 2020

What's the status of this PR w.r.t. to master at this point?

The changes for the x64 port have been merged into master. So, basically, we are done here. The port seems to be stable. This thread here was more a means to bring everybody together and make the x64 bit port happen. The only actual changes that I'm aware of are some opcode define to replace magic numbers. Long story short, you need to rebase with master. It's all in there.

@rien333 Nice to hear it starts now. Do you have the bug with the misplaced object?

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 2, 2020

(I assume you mean cmake instead of make?)

yes

@rien333
Copy link

@rien333 rien333 commented Oct 28, 2020

BTW: even though the cmake step in the arch linux build process did not change (which we established seemed to be part of the reason why Klonoa didn't launch), I got the game to work in the official Arch community build by disabling "Automatic game fixes" everywhere. Perhaps there is a problem in one of those fixes? And perhaps the reason why you had difficulty reproducing my issue was because your "automatic game fixes" settings differed?

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 28, 2020

"automatic game fixes" settings differed?

I left those on default. I actually tested Klonoa just yesterday, coincidence :-) It runs but the green elevator thingies are still misplaced. Can you confirm this bug? The version I tested with is from Sunday (0448b49). I'm rebasing PCSX2 for Marley, the cmake settings are:
cmake -DCMAKE_BUILD_TYPE=Release -DBUILTIN_PAD=ON -DBUILTIN_GS=ON -DGTK3_API=ON ..
On a side note, it required some minor modifications to get onepad and GSdx to compile as static libs: c8b9876 ff870c8

If you posted your cmake settings please one more time, I can try to reproduce this bug.

@kattjevfel
Copy link

@kattjevfel kattjevfel commented Oct 28, 2020

@rien333
Copy link

@rien333 rien333 commented Oct 28, 2020

I left those on default.

Ah bummer. Still odd that the game launches fine if I turn them off.

It runs but the green elevator thingies are still misplaced. Can you confirm this bug?

Yeah, I also noticed that. Couldn't really progress beyond the first level. I checked out Klonoa again because I found someone with the exact same issue.. They were also unable to progress beyond the first level (with automatic game fixes off), and report the same j8 greater than 0x7f!! error (with automatic game fixes on).

If you posted your cmake settings please one more time, I can try to reproduce this bug.

I'm running the precompiled binary from the arch repos. I think you also tried that binary at one point. @kattjevfel already linked you the PKGBUILD, I see (which contains the cmake settings that were used).

I'll retry running Klonoa in Marley over the weekend.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Oct 28, 2020

Let me finish the rebase first. I will let you know.

Normally, WeirdBeard is maintaining the AUR. I had tried to connect @kattjevfel and WeirdBeard before, not sure if they ever met or not. Maybe there are two different PKGBUILDs, one from WeirdBeard (official) and the one you use?

@tadanokojin @arcum42 I can submit the above changes for -DBUILTIN_PAD=ON -DBUILTIN_GS=ON upstream if you want me to. I noticed you are about to restructure the plugins. Not sure what the gameplan is...

@kattjevfel
Copy link

@kattjevfel kattjevfel commented Oct 28, 2020

Normally, WeirdBeard is maintaining the AUR. I had tried to connect @kattjevfel and WeirdBeard before, not sure if they ever met or not. Maybe there are two different PKGBUILDs, one from WeirdBeard (official) and the one you use?

I did join the discord and talk with them, yes. But let's just say I don't agree with a lot of things there and I ended up leaving. I now only use the official package from the community repo, maintained by alucryd.

@kenshen112
Copy link
Contributor

@kenshen112 kenshen112 commented Oct 28, 2020

Just curious. What didn't you agree with him about?

@rien333
Copy link

@rien333 rien333 commented Oct 28, 2020

Normally, WeirdBeard is maintaining the AUR. Maybe there are two different PKGBUILDs, one from WeirdBeard (official) and the one you use?

I'm not using the package from the AUR. I also never have, because that builds a 32bit binary. As I said, I've been using the binary from the official community repo (the PKGBUILD used to create said binary was previously linked). The AUR is never official, I guess.

As mentioned, there is indeed a difference between the PKGBUILD in the community repo and the one the AUR, though that doesn't matter much here, because the AUR package has always been configured to build a 32bit binary (which works fine for Klonoa, hence this issue).

@kenshen112
Copy link
Contributor

@kenshen112 kenshen112 commented Oct 28, 2020

Ah, I'd heard the opposite. I heard it was the AUR repo that was the official package for pcsx2. Also I retesting that the other builds 64 bit. Seems a bit unstable for a package that's supposed to maintain from my understanding 1.6 only

@kattjevfel
Copy link

@kattjevfel kattjevfel commented Oct 28, 2020

Just curious. What didn't you agree with him about?

Not so much about him in person, but the community in general seemingly seeing 64-bit as a bother and would rather keep 32-bit forever. Perhaps a lot of it is sysadmin vs developer, but still.

Ah, I'd heard the opposite. I heard it was the AUR repo that was the official package for pcsx2. Also I retesting that the other builds 64 bit. Seems a bit unstable for a package that's supposed to maintain from my understanding 1.6 only

Official in the eyes of arch, but unofficial in the eyes of pcsx2 devs.

@rien333
Copy link

@rien333 rien333 commented Oct 28, 2020

Seems a bit unstable for a package that's supposed to maintain from my understanding 1.6 only

I have to say that community package indeed enables "experimental" options one would normally expect to find in an AUR package, but so far, I'm actually really happy with how it works. The options also make sense in the context of the rest of the arch eco system. Except that Klonoa has been a bit tricky to get running.

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Nov 1, 2020

@rien333 @arcum42 @kattjevfel @gregory38

I found a bug in the Debian rules file I use to package PCSX2 for Marley. It was adding compiler flags that would crash PCSX2 with "Illegal instruction". I could confirm this bug on four machines. I had to override/reset the MAKEFLAGS option with

export DEB_BUILD_MAINT_OPTIONS=

See also https://github.com/beaumanvienna/marley/blob/6d455489547f74cabaefa7f19c73bff9689fbd8c/debian/rules#L8

It might be the same with other packaging tools such as pkgbuild.

@beaumanvienna beaumanvienna marked this pull request as draft Dec 28, 2020
@Anuskuss
Copy link

@Anuskuss Anuskuss commented Jan 5, 2021

I wasn't following this in a long time but why did you close this @beaumanvienna? Is everything important merged?
Also, you guys should probably mention in the README that you can get a x64 build from the GitHub Actions instead of just linking to orphis (probably update the website as well).

@beaumanvienna
Copy link
Contributor Author

@beaumanvienna beaumanvienna commented Jan 5, 2021

Everything is merged. This is mentioned in the first post of this thread all the way up. We kept this thread here open to collect feedback. It should be fine now.

@tadanokojin
Copy link
Member

@tadanokojin tadanokojin commented Jan 6, 2021

for the record I added a discussion about this:
#4102

might be an idea to move there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet