Giter Club home page Giter Club logo

macemu's People

Contributors

amade avatar asvitkine avatar asvitkine-chromium avatar atmaxinger avatar atsampson avatar bekenn avatar bvarner avatar coderforlife avatar davidludwig avatar dbrant avatar dougg3 avatar drlex0 avatar dsumorok avatar jmaebe avatar jvernet avatar kallisti5 avatar kanjitalk755 avatar masaq- avatar pulkomandy avatar rakslice avatar rickyzhang82 avatar rizhansas avatar robxnano avatar schinkelg avatar seghaxx avatar sethlundst avatar sharq7 avatar uyjulian avatar vasi avatar zydeco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

macemu's Issues

BasiliskII macOS messed up 'thousands' colors

Yesterday I built both SheepShaver and BasiliskII with Xcode 12.4 in macOS 10.15.7. In BasiliskII the colors appear completely messed up when the Monitors control panel is set to thousands of colors. The issue is not in other color settings, it is only in BasiliskII, not in SheepShaver, and it is not in my 22 September 2020 BasiliskII build.

Param to select SDL renderer

It would be useful to have a prefs parameter to select which SDL renderer to use, for when it is necessary to override it because the default option has problems.

Curiously, SDL/prefs_sdl.cpp already has such a parameter, it just isn't hooked up to anything.

That part of DavidLudwig@1eb824a was perhaps removed but not replaced with anything.

SheepShaver On Linux Seems to Need To Treat Caps Lock Key Events Like It Does On Windows

My system config is this:

SOFTWARE:

  • elementary OS 5.1.7 Hera (with all current updates) based on Ubuntu 18.04LTS
  • Linux Kernel 5.4.0-58-generic
  • GTK 3.22.30
  • SheepShaver built from a current snapshot of master branch from this repository.

HARDWARE:

  • Ryzen 3900X
  • Radeon RX590
  • 128GB RAM
  • Matias Tactile Pro Keyboard for Mac

PROBLEM:
I recently noticed that the state of my caps lock key is being ignored when running SheepShaver on Linux. On further investigation, I discovered that the caps lock key had to be physically held down to get all caps, and as soon as I released it typing returned to lower case, effectively turning Caps Lock into an extra Shift key.

INVESTIGATION:
With this in mind, I took another look at the keyboard event handling in handle_events() in video_sdl2.cpp and noticed that the version for windows handles key up and key down caps lock events differently. To see what would happen, I changed the code that handles key up and key down events so that it always handles caps lock the way it does for windows.

This fixed the problem and I now have the caps lock key working as expected.

SOLUTIONS:
So it looks like SheepShaver needs to either have the Linux build handle caps lock press/release events the way they are on windows. Or... Possibly refine the keyboard options to let the user choose how caps lock should be handled?

I've been looking for documentation on changing the keyboard type code in the SheepShaver prefs file in case there's an existing workaround that I'm just not aware of. But I'm not having any luck with that so far.

[DISCUSSION] Plan to merge back upstream

Without SDL2 supporting metal back end, BII doesn't work in latest Mac OS X. Thanks to Apple's opinionated decision to discontinue OpenGL.

Do you have plan to merge back SDL2 features back to upstream repo? I'm interested in minimal code change which only merges SDL2 and its autoconf build process to upstream.

deadlock between `RmvTime` and timer thread

While testing some other changes in SheepShaver on Linux, I ran into this situation:

SheepShaver is hung not responding to input or redrawing.

The main thread is in

(gdb) bt
#0  __lll_lock_wait (futex=futex@entry=0xaaaab1b477e0 <wakeup_time_lock>, private=0) at lowlevellock.c:52
#1  0x0000ffff823a4b98 in __GI___pthread_mutex_lock (mutex=mutex@entry=0xaaaab1b477e0 <wakeup_time_lock>) at pthread_mutex_lock.c:80
#2  0x0000aaaab1a93390 in RmvTime(unsigned int) (tm=271287612) at ../timer.cpp:379
#3  0x0000aaaab1a90674 in EmulOp(M68kRegisters*, uint32, int) (r=r@entry=0xffffc2531490, pc=<optimized out>, selector=<optimized out>) at ../emul_op.cpp:220
#4  0x0000aaaab1ad9e38 in sheepshaver_cpu::execute_emul_op(unsigned int) (this=0xaaaae9fef360, emul_op=<optimized out>) at ../kpx_cpu/src/cpu/ppc/ppc-cpu.hpp:110
#5  0x0000000020a12068 in  ()
#6  0x0000aaaab1accc30 in basic_dyngen::execute(unsigned char*) (this=0xaaaaea0efbb0, this=0xaaaaea0efbb0, entry_point=<optimized out>)
    at ../kpx_cpu/src/cpu/jit/basic-dyngen.hpp:293
#7  powerpc_cpu::execute(unsigned int) (this=0xaaaae9fef360, entry=540092988) at ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp:594
#8  0x0000aaaab1accc30 in basic_dyngen::execute(unsigned char*) (this=0xaaaab1be8c30, this=0xaaaab1be8c30, entry_point=<optimized out>)
    at ../kpx_cpu/src/cpu/jit/basic-dyngen.hpp:293
#9  powerpc_cpu::execute(unsigned int) (this=0xaaaab1ae83e0, entry=3929737344) at ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp:594
#10 0x0000aaaaea0efbb0 in  ()
#3  0x0000aaaab1a90674 in EmulOp (r=r@entry=0xffffc2531490, pc=<optimized out>, selector=<optimized out>) at ../emul_op.cpp:220
220                             r->d[0] = RmvTime(r->a[0]);
(gdb) list
215
216                     case OP_INSTIME:                        // InsTime() replacement
217                             r->d[0] = InsTime(r->a[0], r->d[1]);
218                             break;
219                     case OP_RMVTIME:                        // RmvTime() replacement
220                             r->d[0] = RmvTime(r->a[0]);
221                             break;
222                     case OP_PRIMETIME:                      // PrimeTime() replacement
223                             r->d[0] = PrimeTime(r->a[0], r->d[0]);
224                             break;
#2  0x0000aaaab1a93390 in RmvTime (tm=271287612) at ../timer.cpp:379
379             pthread_mutex_lock(&wakeup_time_lock);
(gdb) list
374             semaphore_wait(wakeup_time_sem);
375             thread_suspend(timer_thread);
376     #endif
377     #if PRECISE_TIMING_POSIX
378             timer_thread_suspend();
379             pthread_mutex_lock(&wakeup_time_lock);
380     #endif
381             if (ReadMacInt16(tm + qType) & 0x8000) {
382
383                     // Yes, make task inactive and remove it from the Time Manager queue

i.e. the main thread has run RmvTime which has just suspended the timer thread and is now waiting on wakeup_time_lock.

Meanwhile in the timer thread

(gdb) thread 16
[Switching to thread 16 (Thread 0xffff227fbe60 (LWP 15700))]
#0  0x0000ffff810f944c in __GI___sigsuspend (set=0xaaaab1b47848 <suspend_handler_mask>) at ../sysdeps/unix/sysv/linux/sigsuspend.c:26
26      ../sysdeps/unix/sysv/linux/sigsuspend.c: No such file or directory.
(gdb) bt
#0  0x0000ffff810f944c in __GI___sigsuspend (set=0xaaaab1b47848 <suspend_handler_mask>) at ../sysdeps/unix/sysv/linux/sigsuspend.c:26
#1  0x0000ffff824105b8 in <signal handler called> ()
#2  0x0000aaaab1a92f78 in timer_func(void*) (arg=<optimized out>) at ../timer.cpp:593
#3  0x0000ffff823a24fc in start_thread (arg=0xffffc2531a9f) at pthread_create.c:477
#4  0x0000ffff811960cc in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
(gdb) up
#1  <signal handler called>
(gdb) up
#2  0x0000aaaab1a92f78 in timer_func (arg=<optimized out>) at ../timer.cpp:593
593                             wakeup_time = wakeup_time_max;
(gdb) list
588                     timer_current_time(system_time);
589                     if (timer_cmp_time(wakeup_time, system_time) < 0) {
590
591                             // Timer expired, trigger interrupt
592                             pthread_mutex_lock(&wakeup_time_lock);
593                             wakeup_time = wakeup_time_max;
594                             pthread_mutex_unlock(&wakeup_time_lock);
595                             SetInterruptFlag(INTFLAG_TIMER);
596                             TriggerInterrupt();
597                     }

The timer thread is in the middle of the critical section on wakeup_time_lock but it has received the suspend from the main thread's timer_thread_suspend() and is now suspended so it is never going to release the lock.

A deadlock.

Build fails for non-X11 GTK

Building fails on Mac OS X with GTK present.

main_unix.cpp:136:10: fatal error: 'X11/Xlib.h' file not found
#include <X11/Xlib.h>
         ^~~~~~~~~~~~
2 warnings and 1 error generated.
make: *** [obj/main_unix.o] Error 1

GTK was detected by autotools and the GTK GUI was enabled automatically, but the GTK it found is Quartz-based, not X11 based; the system does not have X11 by default.

SheepShaver on Windows crashes on inbound packet while uninitialized

SheepShaver on Windows crashes on inbound packet when the Ethernet driver is not loaded on the Mac OS side, such as during boot or after it is unloaded due to a configuration change.

(new world ROM)

Illegal instruction at 40810000, opcode = 4cdf1808

(old world ROM)

Illegal instruction at 40810000, opcode = 02020002

When a frame inbound to the emulated Mac is being handled, the functions provided in ether.h call vectors that are set up when the stream module is loaded on the Mac side. If the module is not loaded, those vectors are uninitialized and it leads to this crash.

For all platforms except Windows, the ether_*.cpp implementations check ether_driver_opened provided by ether.h before processing inbound packets to avoid this.

SS Windows "keycodes true" (but no keycode file) produces warning

In the latest code, if I launch SheepShaver for Windows with a prefs file that has "keycodes true" but no keycodefile listed, a warning appears:

Cannot open keycode translation file BasiliskII_keycodes (No such file or directory).

Should this appear at all? And shouldn't it say SheepShaver_keycodes, now that the file has changed its name?

Feature request: support for multiple tap devices in Windows

Hi,

Sheepshaver and Basilisk for Windows support networking through a bridged/shared tap device when the (openvpn) tap device is installed.
The tap device can be selected in the GUI network tab. This sets ether to tap and finds the etherguid automatically. However, I have two tap devices bridged with my default ethernet connection. I can only select one and the same tap device in the GUI.
It would be nice if Basilisk/SheepShaver would list all tap devices available and add the appropriate etherguid to the prefs. That way two Basilisk/SheepShaver instances could be networked over the bridge. Assuming they both use a different tap device ;-)

EDIT: I retract this request, it seems this functionality is already available ;-) It was just my 2nd tap device installation that was faulty.

Best,
Howard

Centralize development

I noticed you are quite a few commits ahead of the main fork of this project, and that the main project is in a poor state of maintenance. I'm trying to set this up as a more conventional open-source project at https://github.com/emaculation/BasiliskII

Can I help integrate your work into that repo?

Some files on the 'make links' list also have different checked in versions in SheepShaver

In the course of working through what is necessary to build BasiliskII and SheepShaver with GTK prefs app in mingw32, when dealing with the Windows git working copy's placeholder files for symlinks to properly do make links, I found that some of the files present were not placeholder files at all but were already existing source files.

The files:

  • src/CrossPlatform/sigsegv.cpp
  • src/Unix/Darwin/lowmem.cpp

are on SheepShaver/Makefile's list of files to symlink from BasiliskII to SheepShaver in make links, as well as already present as a checked in file in SheepShaver.

These should presumably be removed from the list in make links, or else if the checked in changes in SheepShaver are unwanted they should be removed from SheepShaver and symlinks to BasiliskII checked in in place for the platforms that do not ordinarily need make links.

Tap on a real trackpad not very well detected in emu

On my mbp, the tapping on the trackpad is not very well detected on the emu side...

here is a changed adb.cpp using a circular buffer to memorize the mouse button actions
as attachment.

It works quite good on sheepshaver with os9.0.4.

On basilisk and os8.1 selecting an entry in a menu is not very nicely detected. The culprit could be the os8.1 as on os9.0.4 it is ok and every other 'tapping as clicking' is detected

P.S. I need to use an old Xcode 10.1 to have a good binary. With Xcode 11.3 I got some troubles : ie acrobat 4.05 can not open correctly its read-me.pdf on sheepshaver.

Olivier
adb.cpp.txt

Gamma ramp adjusts entire display

As of ffee1eb, support for passing through guest gamma settings was added via SDL_SetWindowGammaRamp. I very much like the additional feature and support for guest OS controls; however, it can cause noticeable display flickering when alternating between SheepShaver and other applications, especially in windowed mode. I found screen recordings don't capture the change but recorded a brief demonstration with an external camera:

gamma_change

Strangely, SDL's wiki states this is intended behavior:

Despite the name and signature, this method sets the gamma ramp of the entire display, not an individual window.

If anybody else is experiencing this, I'm wondering about a couple options:

  1. Ideally, an SDL function to apply gamma settings to the window. I'd guess displays can't do this in hardware, so it'd have to be a software remedy, but it may prove too difficult or computationally intensive to be practical. I haven't found such an API in SDL yet.

  2. Adjusting the guest OS gamma level. I don't see any gamma controls in the native Monitor settings and will search for a utility on Macintosh Garden, but it may be functionality to implement in Sheepshaver since it provides the virtual display.

  3. Perhaps an option to disable the gamma passthrough, at least in window mode. I don't think it'll be noticeable in fullscreen to anyone but do worry about it being potentially distracting when using windowed mode on some displays.

Basilisk sdl2 & gtk2 segfault in pthread_mutex_lock

When running Basilisk from 7ad9ab0 on a stock Debian 10 i686 system, I get a segfault right at launch, within the gtk_main() call for the settings GUI.

Thread 1 "BasiliskII" received signal SIGSEGV, Segmentation fault.
0xb7f9e756 in __GI___pthread_mutex_lock (mutex=0x0)
    at ../nptl/pthread_mutex_lock.c:67
67      ../nptl/pthread_mutex_lock.c: No such file or directory.
(gdb) bt
#0  0xb7f9e756 in __GI___pthread_mutex_lock (mutex=0x0)
    at ../nptl/pthread_mutex_lock.c:67
#1  0xb6a7613a in  () at /lib/i386-linux-gnu/libX11.so.6
#2  0xb6a90d39 in XrmQGetResource () at /lib/i386-linux-gnu/libX11.so.6
#3  0xb6a6cc2d in XGetDefault () at /lib/i386-linux-gnu/libX11.so.6
#4  0xb77a58de in  () at /lib/i386-linux-gnu/libcairo.so.2

... snip ....

#61 0xb78a18c5 in  () at /lib/i386-linux-gnu/libgdk-x11-2.0.so.0
#62 0xb7310e65 in g_main_context_dispatch ()
    at /lib/i386-linux-gnu/libglib-2.0.so.0
#63 0xb7311269 in  () at /lib/i386-linux-gnu/libglib-2.0.so.0
#64 0xb7311609 in g_main_loop_run () at /lib/i386-linux-gnu/libglib-2.0.so.0
#65 0xb7a6f675 in gtk_main () at /lib/i386-linux-gnu/libgtk-x11-2.0.so.0
#66 0x780b861d in PrefsEditor() () at prefs_editor_gtk.cpp:544
#67 0xb7efccb0 in  () at /lib/i386-linux-gnu/libSDL2-2.0.so.0
(gdb)

Rearranging main_unix.cpp's main() a bit, moving the #ifdef USE_SDL section containing the SDL_Init() call to after PrefsEditor() is done, makes this problem go away.

What is "swap_opt_cmd false"?

While testing a new SheepShaver for macOS build, I noticed a new(?) line "swap_opt_cmd false" in the prefs file.
What is it?

Windows version configure issues

  • While testing MSYS2 SDL2 package versions, I accidentally tested without SDL installed at all, and found that the SDL check in configure is mangled in the case where SDL is not present
checking for sdl2-config... no
./configure: line 5933: you: command not found
./configure: line 5947: --cflags: command not found
./configure: line 5949: --static-libs: command not found
  • Also, when autogen.sh is run, autoconf warns about finding AC_SUBST within a parameter that should not have side effects. Sure enough, the -fno-strict-aliasing cache check has a side-effecting macro AC_SUBST for setting -fno-strict-aliasing in SLIRP_CFLAGS, but it is inside of the cache miss case where there need to not be side-effecting macros because those effects won't be cached. In the case where configure remembers from a previous run that -fno-strict-aliasing is supported, it will not be set in SLIRP_CFLAGS again.

BasiliskII macOS uses /opt/homebrew/*/libgmp.10.dylib

BasiliskII now does build fine and runs fine on my M1 Mac.

But after notarizing the way I did so far, I cannot launch the notarized BasiliskII:

Crashed Thread:        0

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    DYLD, [0x5] Code Signature

Application Specific Information:
dyld: launch, loading dependent libraries

Dyld Error Message:
  Library not loaded: /opt/homebrew/*/libgmp.10.dylib
  Referenced from: /Users/USER/*/BasiliskII.app/Contents/MacOS/BasiliskII
  Reason: no suitable image found.  Did find:
	/opt/homebrew/*/libgmp.10.dylib: code signature in (/opt/homebrew/*/libgmp.10.dylib) not valid for use in process using Library Validation: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)
	/opt/homebrew/*/libgmp.10.dylib: stat() failed with errno=1

Binary Images:
       0x1042c8000 -        0x104363fff +com.emaculation.basiliskii (Basilisk II 1.0, SDL2 port - 0) <CC3DCDCC-5B29-303E-8914-F9D2C81E43C9> /Users/USER/*/BasiliskII.app/Contents/MacOS/BasiliskII
       0x104534000 -        0x1045b3fff  dyld (852) <CF624584-51D6-329D-91C5-6BEDFADFB2D2> /usr/lib/dyld

If I notarize while disabling library validation in order for the app to be able to use third-party frameworks outside the bundle, the resulting BasiliskII app runs fine again.

Would this mean that BasiliskII will not run on a machine that does not have homebrew installed?
If that is so, this build is not suitable for distribution.

Basilisk GUI accumulates `keycodefile` lines in prefs file

Using the Basilisk configuration GUI in Linux, the keycodefile line(s) are doubled and accumulate, causing size of the prefs file (and launch time) to increase over time.

This appears to be the combined effect of two problems:

  1. These prefs are defined both in the common_prefs_items and platform_prefs_items for Unix, so they get output to the prefs file twice:
  • keycodes
  • keycodefile
  • mousewheelmode
  • mousewheellines
  1. The common_prefs_items entries for all of these items but keycodes are missing a value for the multiple field so the description falls into multiple, making multiple true. This setting only has an effect for string prefs, so just keycodefile; its effect is to preserve all the lines previously in the prefs file.

Full screen freezing in Mojave & Catalina

The current build is affected by freezing (with black screen and pinwheel) when launched in fullscreen mode. The problem has been detected in macOS Mojave 10.14.5 through to Catalina 10.15 on various models of iMac, MacBook Pro and Mac Mini (and across AMD, Nvidia and Intel graphics).

More information is available here:

https://www.emaculation.com/forum/viewtopic.php?f=20&t=10392&start=25

The freezing occurs when the graphics setting is 'dga', regardless of the specific resolution.

Port RickyZhang's 24-bit patches?

rickyzhang82@342fbbc

I don't think there's anything there that should break in this version, and it does two things: it re-enables System 6 support in SDL2 BII, and it incorporates Paul's Mini vMac display handling, which unbinds the display from the emulator memory, fixing a few BII performance issues related to non-standard display resolutions.

Feature Request: Prevent Swapping Command & Option Keys When Using A Mac Keyboard on Linux

I'm having a problem related to #28, but I'm not sure if it should be under that issue or a new one. So I'm doing both. Feel free to delete whichever one you feel is best.

My system config is this:
SOFTWARE:

  • elementary OS 5.1.7 Hera (with all current updates) based on Ubuntu 18.04LTS
  • Linux Kernel 5.4.0-48-generic
  • GTK 3.22.30
  • SheepShaver built from a current snapshot of master branch from this repository.

HARDWARE:

  • Ryzen 3900X
  • Radeon RX590
  • 128GB RAM
  • Matias Tactile Pro Keyboard for Mac

As you can see above, I'm using a keyboard made for Macs on my Linux system. I'm trying to get my SheepShaver Mac to use the correct command and option keys on my Mac keyboard.

Other builds I've been running previously (from vasi, as posted on the e-maculation forums) have swapped the command and option keys and also would only respond to the left command and option keys, ignoring the right-hand command and option keys.

I ran across issue #28 while searching for a solution, and downloaded a snapshot to see if your SheepShaver was any better. I looked at the code in video_sdl2.cpp and found the places where the keycodes were being swapped unless the __APPLE__ macro is defined.

Since swapping those keys isn't appropriate for the Mac keyboard I'm using, I commented out the #ifdef __APPLE__ lines and their related #else blocks, so that just the lines of code that set the keycodes correctly and correctly sets the opt_down and cmd_down variables remained. I also unswapped the command and option keycodes in the "sdl x11" section of the "keycodes" file.

This mostly worked!

But there is an odd bug that I cant' figure out so far: when I press a command-key combination it seems to be sending the regular keypress first and then immediately follows it with the correct command-key combo that I pressed. For Example:

  1. At the Finder Desktop, Press command-N to create a new folder. This creates a folder presenting the "untitled" text for you to edit.
  2. WITHOUT pressing any other keys or clicking the mouse anywhere, press command-I to open the Get Info window.
  3. You'll see that the name of the folder has been changed to an "i" and THEN the Get Info window was opened for the folder.
  4. Pressing command-w to close the Get Info window will again change the folder name, this time to "w", before acting on the command-w press to close the window.

The order that these key events happens in can be verified like this:

  1. In the Finder (at Desktop or with a folder window active, it doesn't matter) with nothing selected, press command-i.
  2. The Finder will process the plain "i" keypress by selecting the icon with the closest matching name , and then opening the Get Info window.

Like i said earlier, I don't know if this should be under issue #28 or in its own issue.

Also, I'm not sure whether it should be a bug or a feature request to not swap the command and option keys when a Mac keyboard is being used regardless of whether the system itself is a Mac.

Thanks!

Hi @kanjitalk755 I just want to give you a huge thanks -- I have built both Basilisk II and SheepShaver on MacOS as 64-bit builds and they run significantly better than some older builds I have. 😄

I'm not sure what your process for debugging is, but I am more than happy to send you information if you give me some pointers to the best method (lldb core dump?)

SDL1 build?

I reported an issue on the Emaculation forums where the SDL2 builds of SheepShaver are causing some odd behavior with jumping title bars when launching in full screen mode. I was told that this is an inherent issue for SDL2 and there is currently no known work around.

I was wondering if there is an option, perhaps a prefix for the make command, that will allow an SDL1 build of SheepShaver from current source? Or is that just not possible given the overall advances in the codebase?

SheepShaver for Windows issues

Hi,

I just compiled SheepShaver for Windows using msys2 32 bit.
Initial testing shows some issues with the build. I use a new world rom.
-I cannot boot from CD image or real CD.
-I have no sound in Mac OS 9.0 or 8.6.

8.6 has a long pause during boot (checking sound hardware?) and hangs when selecting alert sounds.
In Mac OS 9.0 the sound extension doesn't show a version number and opening the sound control panel shows an error of type -199. SheepShaver then crashes.

Best,
Howard

Building BasiliskII on Linux Aarch64 (PineBook Pro)

Hello!

I posted over on a forum thread at emaculation about building BasiliskII on a linux aarch64 machine.

I had to update the automake config.guess and config.sub files in order to properly run the ./configure script, you can find my changes here. Once I ran the ./configure script (with these flags: --enable-sdl-video --enable-sdl-audio --disable-vosf --enable-jit-compiler=no), I am able to build successfully. However, upon lauching the BasiliskII binary, I get the error ERROR: Not enough free memory. no matter how much memory I have available.

I did some digging and the error seems to come from line 645 in src/Unix/main_unix.cpp. There is a failed call to vm_acquire_mac. I put the function definition below:

// NOTE: VM_MAP_32BIT is only used when compiling a 64-bit JIT on specific platforms
void *vm_acquire_mac(size_t size)
{
        return vm_acquire(size, VM_MAP_DEFAULT | VM_MAP_32BIT);
}

Below is the output of running uname -a on my machine:

Linux [HOSTNAME REDACTED] 5.8.14-1-MANJARO-ARM #1 SMP Wed Oct 7 09:18:37 CEST 2020 aarch64 GNU/Linux

Does anybody have any leads on how to fix this?

Building 32-bit vs. 64-bit on 64-bit Linux

I am on 64-bit Ubuntu 18.10, trying to build SheepShaver against SDL 2. Building a 64-bit version is successful, but the emulator segfaults on startup. Building a 32-bit version fails because of an error related to pthreads.

If I try to built a 32-bit version, I get the following output from autogen.sh:

 ./autogen.sh --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
 + Running aclocal: done.
 + Running autoheader: done.
 + Running autoconf: done.
 + Running 'configure --host=i686-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32':
checking build system type... x86_64-unknown-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for i686-linux-gnu-gcc... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for i686-linux-gnu-g++... no
checking for i686-linux-gnu-c++... no
checking for i686-linux-gnu-gpp... no
checking for i686-linux-gnu-aCC... no
checking for i686-linux-gnu-CC... no
checking for i686-linux-gnu-cxx... no
checking for i686-linux-gnu-cc++... no
checking for i686-linux-gnu-cl.exe... no
checking for i686-linux-gnu-FCC... no
checking for i686-linux-gnu-KCC... no
checking for i686-linux-gnu-RCC... no
checking for i686-linux-gnu-xlC_r... no
checking for i686-linux-gnu-xlC... no
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for file... /usr/bin/file
checking for perl... /usr/bin/perl
checking for PowerPC target CPU... no
checking for mon... no
configure: WARNING: Could not find mon, ignoring --with-mon.
checking for sem_init in -lposix4... no
checking for cos in -lm... yes
checking for sdl2-config... /usr/bin/sdl2-config
checking for pthread_create in -lpthread... no
checking for pthread_create in -lc_r... no
checking for pthread_create in -lPTL... no
configure: error: You need pthreads to run SheepShaver.

However, I have a 32-bit version of libc6-dev installed that should include libpthread:

$ ls -l /usr/lib/i386-linux-gnu | grep pthread
-rw-r--r-- 1 root root  5110126 Aug 23 21:52 libpthread.a
lrwxrwxrwx 1 root root       35 Aug 23 21:52 libpthread.so -> /lib/i386-linux-gnu/libpthread.so.0

If, on the other hand, I build a regular (64-bit) version, I can build SheepShaver just fine, with the following output from autogen.sh:

$ ./autogen.sh
 + Running aclocal: done.
 + Running autoheader: done.
 + Running autoconf: done.
 + Running 'configure ':
   ** If you wish to pass arguments to ./configure, please
   ** specify them on the command line.
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for file... /usr/bin/file
checking for perl... /usr/bin/perl
checking for PowerPC target CPU... no
checking for mon... no
configure: WARNING: Could not find mon, ignoring --with-mon.
checking for sem_init in -lposix4... no
checking for cos in -lm... yes
checking for sdl2-config... /usr/bin/sdl2-config
checking for pthread_create in -lpthread... yes
checking for pthread_cancel... yes
checking for pthread_cond_init... yes
checking for pthread_testcancel... yes
checking for pthread_mutexattr_setprotocol... yes
checking for pthread_mutexattr_settype... yes
checking for pthread_mutexattr_setpshared... yes
checking for sem_init... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking pkg-config is at least version 0.7... yes
checking for GTK+ - version >= 1.3.15... yes (version 2.24.32)
checking for esd-config... no
checking for ESD - version >= 0.2.8... no
*** The esd-config script installed by ESD could not be found
*** If ESD was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the ESD_CONFIG environment variable to the
*** full path to esd-config.
configure: WARNING: Could not find ESD, disabling ESD support.
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking stdint.h usability... yes
checking stdint.h presence... yes
checking for stdint.h... yes
checking mach/vm_map.h usability... no
checking mach/vm_map.h presence... no
checking for mach/vm_map.h... no
checking mach/mach_init.h usability... no
checking mach/mach_init.h presence... no
checking for mach/mach_init.h... no
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking unistd.h usability... yes
checking unistd.h presence... yes
checking for unistd.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking byteswap.h usability... yes
checking byteswap.h presence... yes
checking for byteswap.h... yes
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/filio.h usability... no
checking sys/filio.h presence... no
checking for sys/filio.h... no
checking sys/bitypes.h usability... yes
checking sys/bitypes.h presence... yes
checking for sys/bitypes.h... yes
checking for sys/wait.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/poll.h usability... yes
checking sys/poll.h presence... yes
checking for sys/poll.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking for netinet/in.h... yes
checking for linux/if.h... yes
checking for linux/if_tun.h... yes
checking for net/if.h... yes
checking for net/if_tun.h... no
checking AvailabilityMacros.h usability... no
checking AvailabilityMacros.h presence... no
checking for AvailabilityMacros.h... no
checking IOKit/storage/IOBlockStorageDevice.h usability... no
checking IOKit/storage/IOBlockStorageDevice.h presence... no
checking for IOKit/storage/IOBlockStorageDevice.h... no
checking fenv.h usability... yes
checking fenv.h presence... yes
checking for fenv.h... yes
checking sys/stropts.h usability... yes
checking sys/stropts.h presence... yes
checking for sys/stropts.h... yes
checking stropts.h usability... yes
checking stropts.h presence... yes
checking for stropts.h... yes
checking whether byte ordering is bigendian... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking size of short... 2
checking size of int... 4
checking size of long... 8
checking size of long long... 8
checking size of float... 4
checking size of double... 8
checking size of void *... 8
checking for off_t... yes
checking for loff_t... yes
checking for size_t... yes
checking return type of signal handlers... void
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for socklen_t... yes
checking whether struct sigaction has sa_restorer... yes
checking for strdup... yes
checking for strerror... yes
checking for strlcpy... no
checking for cfmakeraw... yes
checking for nanosleep... yes
checking for sigaction... yes
checking for signal... yes
checking for mmap... yes
checking for mprotect... yes
checking for munmap... yes
checking for vm_allocate... no
checking for vm_deallocate... no
checking for vm_protect... no
checking for exp2f... yes
checking for log2f... yes
checking for exp2... yes
checking for log2... yes
checking for floorf... yes
checking for roundf... yes
checking for ceilf... yes
checking for truncf... yes
checking for floor... yes
checking for round... yes
checking for ceil... yes
checking for trunc... yes
checking for poll... yes
checking for inet_aton... yes
checking for mach_task_self... no
checking for task_self... no
checking for library containing clock_gettime... none required
checking for clock_gettime... yes
checking for clock_nanosleep... yes
checking strings.h usability... yes
checking strings.h presence... yes
checking for strings.h... yes
checking login.h usability... no
checking login.h presence... no
checking for login.h... no
checking sys/bsdtty.h usability... no
checking sys/bsdtty.h presence... no
checking for sys/bsdtty.h... no
checking sys/stat.h usability... yes
checking sys/stat.h presence... yes
checking for sys/stat.h... yes
checking util.h usability... no
checking util.h presence... no
checking for util.h... no
checking pty.h usability... yes
checking pty.h presence... yes
checking for pty.h... yes
checking for _getpty... no
checking for vhangup... yes
checking for strlcpy... (cached) no
checking for /dev/ptc... no
checking FIONBIO vs. O_NONBLOCK for non-blocking I/O... O_NONBLOCK
checking whether compiler supports byte bit-fields... yes
checking whether compiler supports framework Carbon... no
checking whether compiler supports framework IOKit... no
checking whether compiler supports framework CoreFoundation... no
checking whether compiler supports framework CoreAudio... no
checking whether compiler supports framework AudioUnit... no
checking whether compiler supports framework AudioToolbox... no
checking whether compiler supports framework AppKit... no
checking whether TUN/TAP is supported... yes
checking whether mmap supports MAP_ANON... yes
checking whether mmap supports MAP_ANONYMOUS... yes
checking whether mprotect works... yes
checking how to disable position-independent code... cannot
checking whether __PAGEZERO can be Low Memory area 0x0000-0x3000... no
checking whether we can map Low Memory area 0x0000-0x3000... no
checking whether signal handlers need to be reinstalled... no
checking whether sigaction handlers need to be reinstalled... no
checking whether your system supports Mach exceptions... no
checking whether your system supports Windows exceptions... no
checking whether your system supports extended signal handlers... yes
checking whether we can skip instruction in SIGSEGV handler... yes
checking for addressing mode to use... real
checking floating point format... IEEE (little-endian)
checking for true... /bin/true
checking for GCC 2.7 or higher... yes
checking for GCC 3.0 or higher... yes
checking for GCC 4.0 or higher... yes
checking for ICC... no
checking the format of compiler generated objects... elf
checking whether the compiler supports -fno-strict-aliasing... yes
checking whether the compiler supports -mdynamic-no-pic... no
checking whether dyngen can be used... yes
checking whether linker script is usable... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating ../MacOSX/Info.plist
config.status: creating config.h

SheepShaver configuration summary:

SDL support ...................... : video audio
SDL major-version ................ : 2
BINCUE support ................... : no
LIBVHD support ................... : no
FBDev DGA support ................ : no
XFree86 DGA support .............. : no
XFree86 VidMode support .......... : no
Using PowerPC emulator ........... : yes
Enable JIT compiler .............. : yes
Enable video on SEGV signals ..... : yes
ESD sound support ................ : no
GTK user interface ............... : gtk2
mon debugger support ............. : no
Addressing mode .................. : real
Bad memory access recovery type .. : siginfo

Configuration done. Now type "make".

However, when I run the 64-bit version of SheepShaver, I get a segfault:

$ sudo ./SheepShaver 
SheepShaver V2.5 by Christian Bauer and Mar"c" Hellwig

(SheepShaver:8024): Gtk-WARNING **: 22:17:21.464: Unable to locate theme engine in module_path: "adwaita",

(SheepShaver:8024): Gtk-WARNING **: 22:17:21.474: Unable to locate theme engine in module_path: "adwaita",
Reading ROM file...
WARNING: Cannot open /dev/cdrom (Datei oder Verzeichnis nicht gefunden)
Using SDL/pulseaudio audio output
Using SDL_Renderer driver: opengl
Detected CPU features: MMX SSE SSE2 SSE3 SSSE3
PowerPC CPU emulator by Gwenole Beauchesne
SIGSEGV
  pc 0x780c756d
  ea 0x40de9200
 r0 00000000   r1 05ff7dba   r2 00000000   r3 06000400
 r4 00002278   r5 fffffffa   r6 00004e75   r7 ffffffe8
 r8 00000000   r9 00000026  r10 0000006a  r11 0040855c
r12 00000000  r13 00000000  r14 000061fc  r15 003ffffe
r16 000c3958  r17 000013ff  r18 000c2d28  r19 4081787e
r20 05ff7dcc  r21 06000190  r22 06000400  r23 00000000
r24 00001401  r25 00000020  r26 00000000  r27 ffff87b4
r28 00000000  r29 40de9200  r30 40c60000  r31 68fff000
 f0 0,00000   f1 0,00000   f2 0,00000   f3 0,00000
 f4 0,00000   f5 0,00000   f6 0,00000   f7 0,00000
 f8 0,00000   f9 0,00000  f10 0,00000  f11 0,00000
f12 0,00000  f13 0,00000  f14 0,00000  f15 0,00000
f16 0,00000  f17 0,00000  f18 0,00000  f19 0,00000
f20 0,00000  f21 0,00000  f22 0,00000  f23 0,00000
f24 0,00000  f25 0,00000  f26 0,00000  f27 0,00000
f28 0,00000  f29 0,00000  f30 0,00000  f31 0,00000
 lr 40de9200  ctr 00000000   cr 40101c22  xer 00000000
 pc 40de9200 fpscr 00000000
  0x40de91e0:  Speicherzugriffsfehler

Apple Silicon support

Hi,

I've managed to build SDL2 and SheepShaver for Apple Silicon in Xcode. I just had to re-add 'arm64' to VALID_ARCH. Unfortunately I've not been able to get it running successfully.

  1. The -pagezero_size linker option seems to produce binaries that segfault immediately. I used Unix/Darwin/testlmem.sh to experiment and I think this option just won't work for aarch64 - but I am willing for my opinion to be corrected!

  2. Trying to get SheepShaver running without -pagezero_size always results in "ERROR: Cannot map first Kernel Data area: Cannot allocate memory.". I tried adding some extra #ifdef (aarch64) where there was code to use gZeroPage and gKernelData but I then ended up with segfaults in the Mach message / segfault handler (accessing ppc_cpu before it was initialised).

So, really, I'm shooting in the dark as my knowledge of SS and PPC emulation is rather limited. Happy to help in any way to progress this, though.

I've been working with master/4cf65a3faf22babd5aa403b02d33ce1c7e5f324c. Thanks

Macbook Air, M1,
Big Sur 11.2
Xcode 12.4

BasiliskII buidling error: 'mpfr.h' file not found

I tried to build BasiliskII on my new M1 iMac.

I installed mpfr as instructed. Still, building BasiliskII fails with this error:

'mpfr.h' file not found
types.h
In file included from /Users/ronald/Desktop/macemu-master/BasiliskII/src/uae_cpu_2021/newcpu.cpp:47:
In file included from ../uae_cpu_2021/fpu/fpu.h:51:

When I try to install mpfr again, I get:
mpfr 4.1.0 is already installed and up-to-date

Searching my disk I find:
mpfr.h and mpf2mpfr.h (files) in: usr/local/Cellar/mpfr/4.1.0/include
mpfr.h and mpf2mpfr.h (aliases) in: usr/local/include

Issue (freeze) when launching SheepShaver and BasiliskII in full screen mode

My latest (31 January 2021) builds of both SheepShaver and BasiliskII freeze when launched in full screen mode.
I get a black screen with beach ball and need to force quit the applications. Another user mentioned a message "Application not responding".
See: https://www.emaculation.com/forum/viewtopic.php?f=20&p=69319#p69319

This seems very similar to the freeze on full screen launch that was discussed here: https://www.emaculation.com/forum/viewtopic.php?f=20&t=10392 and that was solved by you on 25 July 2020.

Feature request: For SDL2, in keycode mode, allow remapping of modifier keys

In SDL2 keyboard handling, for the case where keycodes is enabled, host modifier keys are specifically excluded from the cases that provided mapping:

if (use_keycodes && !is_modifier_key(event.key)) {

if (use_keycodes && !is_modifier_key(event.key)) {

This prevents re-mapping of modifier keys. This is inconvenient.

This was put in for SDL in b6e1e6e , at the same time as some SDL Mac OS X keyboard fixes, so perhaps the modifier change is for SDL on Mac OS X also? Is it necessary to avoid a problem of some kind?

Is this also true for SDL2?

If the exception for modifiers is not needed for SDL2 it could simply be removed.

Alternatively, if it is necessary to handle modifiers as keysyms for whatever reason, another approach would be to add logic that infers the keysym remappings for modifiers from the keycodes table and applies them on the keysyms side.

Put settings in your `.travis.yml` file you reasonably expect to work or remove it

Every time I merge your branch, travis-ci.org connected to my account dutifully picks up your .travis.yml file and tries to do a build using the settings in it. Currently that is:

  • It uses Ubuntu 14.04 LTS (trusty) from 2014
  • It installs GTK 2 and SDL 1.2 packages
  • It configures with --enable-sdl-video --enable-sdl-audio --disable-vosf --disable-jit-compiler --with-x --with-gtk --with-mon
  • Your video_sdl.cpp is broken, so the build fails.
./../SDL/video_sdl.cpp: In function ‘bool VideoInit(bool)’:
./../SDL/video_sdl.cpp:1168:99: error: cannot allocate an object of abstract type ‘SDL_monitor_desc’
  SDL_monitor_desc *monitor = new SDL_monitor_desc(VideoModes, (video_depth)color_depth, default_id);
                                                                                                   ^
./../SDL/video_sdl.cpp:361:7: note:   because the following virtual functions are pure within ‘SDL_monitor_desc’:
 class SDL_monitor_desc : public monitor_desc {
       ^
In file included from ./../SDL/video_sdl.cpp:63:0:
./../include/video.h:256:15: note: 	virtual void monitor_desc::set_gamma(uint8*, int)
  virtual void set_gamma(uint8 *gamma, int num) = 0;
               ^
./../SDL/video_sdl.cpp: In function ‘void update_display_static(driver_base*)’:
./../SDL/video_sdl.cpp:1944:26: warning: comparison between ‘const enum video_depth’ and ‘enum<anonymous>’ [-Wenum-compare]
   if (VIDEO_MODE_DEPTH < VIDEO_DEPTH_8BIT) {
                          ^
make: *** [obj/video_sdl.o] Error 1
make: *** Waiting for unfinished jobs....

If you don't want to maintain .travis.yml with settings that building is supported with, would it be okay to remove the file to prevent the noise it keeps making? 😄

SheepShaver fails to build in Arch Linux

When running make (after running autogen.sh), g++ will immediately return this error:

g++ -I../kpx_cpu/include -I../kpx_cpu/src -DUSE_JIT -I../include -I. -I../CrossPlatform -I../slirp -DHAVE_CONFIG_H -D_REENTRANT -DDATADIR=\"/usr/local/share/SheepShaver\" -g -O2 -I/usr/include/SDL2 -D_REENTRANT -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/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/atk-1.0 -pthread  -c ../video.cpp -o obj/video.o
../video.cpp: In function ‘bool VideoSnapshot(int, int, uint8*)’:
../video.cpp:127:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  127 |   uint8 *screen = (uint8 *)private_data->saveBaseAddr;
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../video.cpp: In function ‘int16 VideoStatus(uint32, VidLocals*)’:
../video.cpp:744:10: error: narrowing conversion of ‘kDisplayModeIDFindFirstResolution’ from ‘unsigned int’ to ‘int’ [-Wnarrowing]
  744 |     case kDisplayModeIDFindFirstResolution:
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:200: obj/video.o] Error 1

I have sdl2 installed, so I honestly don't know what could be causing the problem. Any help is much appreciated.

Notarizing SheepShaver fails consistently

When I try notarizing SheepShaver, built from the latest source, I get this error message back from Apple:

	/var/folders/k_/2g9vj9yr8xj0jj0059b__5600000gn/T/5D8FDA33-EB0E-4AE8-8236-B874589306DB/PRODUCT_BUNDLE_IDENTIFIER.itmsp - Error Messages:
		ERROR ITMS-4302: "The software asset has an invalid primary bundle identifier: '$(PRODUCT_BUNDLE_IDENTIFIER)'" at SoftwareAssets/EnigmaSoftwareAsset

I tried three times after building again. Get the same message each time. I did everything as I always do.
As always, I set the Bundle identifier to "com.emaculation.sheepshaver" to match my certificate, in Xcode both in General tab and in Info.

How does EnigmaSoftware get in here?

BasiliskII from the latest source has no problems with notarizing.

unable to build audio_sdl.cpp - unknown dependency?

I am trying to build SheepShaver on my computer running Linux Mint 19.3 from a clone of the source made on 15-Feb-2021. I followed the Linux build instructions here. No errors were reported until the final make (I never got to the strip command). It also seemed to go well until it hit the file ../SDL/audio_sdl.cpp, at which point I received the following error:

g++ -DBINCUE  -I../kpx_cpu/include -I../kpx_cpu/src -DUSE_JIT -I../include -I. -I../CrossPlatform -I../slirp -DHAVE_CONFIG_H -D_REENTRANT -DDATADIR=\"/usr/local/share/SheepShaver\" -g -O2 -I/usr/include/SDL2 -D_REENTRANT  -c ../SDL/audio_sdl.cpp -o obj/audio_sdl.o
../SDL/audio_sdl.cpp: In function ‘int play_startup(void*)’:
../SDL/audio_sdl.cpp:372:95: sorry, unimplemented: non-trivial designated initializers not supported
  desired = { .freq = 44100, .format = AUDIO_S16, .channels = 1, .samples= 4096 }, obtained;
                                                                                ^
Makefile:197: recipe for target 'obj/audio_sdl.o' failed
make: *** [obj/audio_sdl.o] Error 1

I'm no expert, but this looks like it might be some sort of unsatisfied dependency. I was unable to find a list of dependencies for pre-install. Additional information will be provided on request as soon as someone tells me what is needed and how to get it!

no audio in SheepShaver?!

I built both from source, with SDL2 frameworks in place.

Basilisk II has (good) audio now...

but SheepShaver is still silent with no audio output device at all :-(

Is it possible to patch SheepShaver with SDL audio as Basilisk II ??

Segfault on launch with newworld ROM

Since 5b31736 there is an invalid read of 0x50f14000 on launch with newworld ROMs (I've tried 1.4 and 1.6).

This is on Windows and Linux, JIT and no-JIT, with and without the bincue feature enabled, etc.

Reverting the change to rsrc_patches.cpp in 5b31736 makes the problem go away.

$ ./SheepShaver.5b31736785586493e3a98c2eca91f1e548765dbe.exe
SIGSEGV
  pc 0109ae00
  ea 61f14000
 r0 00000000   r1 17ff5890   r2 00000000   r3 50f14000
 r4 00000040   r5 fffffffa   r6 00003540   r7 ffffffe8
 r8 00110477   r9 61776163  r10 0000bf8c  r11 00000384
r12 0000001e  r13 61776163  r14 00000000  r15 00000001
r16 001e0f4e  r17 000a7ef0  r18 0011fdc0  r19 0010d05a
r20 17ff5a9e  r21 001a68b6  r22 17ff59da  r23 00000000
r24 001e0f7e  r25 00000000  r26 00000000  r27 000050f1
r28 001be0c4  r29 40c89e00  r30 40c60000  r31 68fff000
 f0 0.00000   f1 0.00000   f2 0.00000   f3 0.00000
 f4 0.00000   f5 0.00000   f6 0.00000   f7 0.00000
 f8 0.00000   f9 0.00000  f10 0.00000  f11 0.00000
f12 0.00000  f13 0.00000  f14 0.00000  f15 0.00000
f16 0.00000  f17 0.00000  f18 0.00000  f19 0.00000
f20 0.00000  f21 0.00000  f22 0.00000  f23 0.00000
f24 0.00000  f25 0.00000  f26 0.00000  f27 0.00000
f28 0.00000  f29 0.00000  f30 0.00000  f31 0.00000
 lr 40c89e00  ctr 00000000   cr 40001c22  xer 00000000
 pc 40c6628c fpscr 00000000
SheepShaver V2.5 by Christian Bauer and Mar"c" Hellwig
Reading ROM file...
Using SDL_Renderer driver: software
Detected CPU features: MMX SSE SSE2 SSE3 SSSE3
PowerPC CPU emulator by Gwenole Beauchesne
WARNING: Unknown DiskStatus(6)
  0x40c6626c:  sth     r4,0(r3)
  0x40c66270:  addco.  r4,r4,r0
  0x40c66274:  bgelr+  cr2
  0x40c66278:  b       0x40c6d0d4
  0x40c6627c:  nop
  0x40c66280:  rlwimi  r29,r27,3,13,28
  0x40c66284:  mtlr    r29
  0x40c66288:  lhau    r27,2(r24)
 >0x40c6628c:  stb     r4,0(r3)
  0x40c66290:  addco.  r4,r4,r0
  0x40c66294:  bgelr+  cr2
  0x40c66298:  b       0x40c6d0d4
  0x40c6629c:  lhau    r27,2(r24)
  0x40c662a0:  addco.  r4,r4,r0
  0x40c662a4:  lhau    r6,2(r24)
  0x40c662a8:  stw     r4,0(r27)

Latest BII code won't build in Xcode under Mojave or Catalina

Hello, with current code, builds of BII fail under Xcode with this message:

clang: error: no such file or directory: '/Users/edward/Library/Developer/Xcode/DerivedData/BasiliskII-cpozzywkzeiuxuazxfpwpsojbaeg/Build/Products/Release/gencpu_output/defs68k.c'
clang: error: no input files

SheepShaver builds successfully, but not BasiliskII.

keycodes for SDL2 Linux/X11

Questions rather that an issue:

  1. What is the header needed for SDL2 Linux/X11 builds to use SDL2 scancodes to Mac keycodes translations in keycodes files? (Like "sdl cocoa" for macOS and "sdl windows" for Windows).

  2. Will that header work only for your SDL2 port or will it also work for SDL2 ports from other branches?

Suggestion: enable "ignore illegal memory access" and disable JIT compiler by default

I think it could be beneficial to have "ignore illegal memory access" enabled and to have the JIT compiler disabled by default in the GUI when the emulator. These settings would likely increase stability. They are steps that new users are generally advised to take when setting up the emulator anyways.

A bit of discussion on this has happened over here - https://emaculation.com/forum/viewtopic.php?f=6&t=10847&p=68117

Windows MSYS2 build fails to link with current packaged SDL2

I noticed that my Windows CI build job was failing on the main BII and SS executables with a linker errors:
...

g++ -o BasiliskII.exe -Wl,-Bstatic 	obj/main.o obj/main_windows.o obj/prefs.o obj/prefs_items.o obj/prefs_windows.o obj/sys_windows.o obj/rom_patches.o obj/slot_rom.o obj/rsrc_patches.o obj/emul_op.o obj/macos_util.o obj/xpram.o obj/xpram_windows.o obj/timer.o obj/timer_windows.o obj/adb.o obj/serial.o obj/serial_windows.o obj/ether.o obj/ether_windows.o obj/sony.o obj/disk.o obj/cdrom.o obj/scsi.o obj/scsi_dummy.o obj/video.o obj/video_sdl.o obj/video_sdl2.o obj/video_blit.o obj/audio.o obj/audio_sdl.o obj/clip_windows.o obj/extfs.o obj/extfs_windows.o obj/user_strings.o obj/user_strings_windows.o obj/vm_alloc.o obj/sigsegv.o obj/posix_emu.o obj/util_windows.o obj/prefs_editor_dummy.o obj/BasiliskII.o obj/cache.o obj/eject_nt.o obj/ntcd.o obj/arp.o obj/dump.o obj/dynsockets.o obj/ftp.o obj/icmp.o obj/interfaces.o obj/iphelp.o obj/ipsocket.o obj/mibaccess.o obj/router.o obj/tcp.o obj/udp.o obj/packet32.o obj/basilisk_glue.o obj/memory.o obj/newcpu.o obj/readcpu.o obj/fpu_ieee.o obj/cpustbl.o obj/cpudefs.o obj/cpuemu1.o obj/cpuemu2.o obj/cpuemu3.o obj/cpuemu4.o obj/cpuemu5.o obj/cpuemu6.o obj/cpuemu7.o obj/cpuemu8.o obj/cpuemu1_nf.o obj/cpuemu2_nf.o obj/cpuemu3_nf.o obj/cpuemu4_nf.o obj/cpuemu5_nf.o obj/cpuemu6_nf.o obj/cpuemu7_nf.o obj/cpuemu8_nf.o obj/compemu1.o obj/compemu2.o obj/compemu3.o obj/compemu4.o obj/compemu5.o obj/compemu6.o obj/compemu7.o obj/compemu8.o obj/compemu_support.o obj/compemu_fpp.o obj/compstbl.o obj/cpustbl_nf.o obj/slirp-bootp.o obj/slirp-ip_output.o obj/slirp-tcp_input.o obj/slirp-cksum.o obj/slirp-mbuf.o obj/slirp-tcp_output.o obj/slirp-debug.o obj/slirp-misc.o obj/slirp-tcp_subr.o obj/slirp-if.o obj/slirp-sbuf.o obj/slirp-tcp_timer.o obj/slirp-ip_icmp.o obj/slirp-slirp.o obj/slirp-tftp.o obj/slirp-ip_input.o obj/slirp-socket.o obj/slirp-udp.o -lws2_32 -lwsock32 -liphlpapi -L/mingw32/lib -lmingw32 -ldxerr8 -ldinput8 -lshell32 -lsetupapi -ladvapi32 -luuid -lversion -loleaut32 -lole32 -limm32 -lwinmm -lgdi32 -luser32 -lm -Wl,--no-undefined -pipe -lmingw32 -lSDL2main -lSDL2 -mwindows
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windows.c.obj):(.text+0x1d6): undefined reference to `_imp__CoInitializeEx@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windows.c.obj):(.text+0x232): undefined reference to `_imp__CoUninitialize@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x54): undefined reference to `ImmGetIMEFileNameA@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xa4): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xd0): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2be): undefined reference to `ImmGetIMEFileNameA@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x46c): undefined reference to `GetFileVersionInfoSizeA@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x4a9): undefined reference to `GetFileVersionInfoA@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x4e5): undefined reference to `VerQueryValueA@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x6ae): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x6db): undefined reference to `ImmNotifyIME@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x708): undefined reference to `ImmNotifyIME@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x71a): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x774): undefined reference to `ImmSetCompositionStringW@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x81c): undefined reference to `ImmAssociateContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xa07): undefined reference to `_imp__SysFreeString@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xbde): undefined reference to `_imp__SysFreeString@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xca5): undefined reference to `_imp__CoCreateInstance@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xd83): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xd95): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0xe38): undefined reference to `_imp__CoCreateInstance@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1189): undefined reference to `_imp__SysFreeString@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x192b): undefined reference to `ImmAssociateContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1bdb): undefined reference to `ImmAssociateContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1cb5): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1cea): undefined reference to `ImmSetCompositionWindow@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1cfc): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1f11): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x1fc8): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x205e): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2094): undefined reference to `ImmGetCandidateListW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x20bb): undefined reference to `ImmReleaseContext@8'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2183): undefined reference to `ImmGetContext@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x21d9): undefined reference to `ImmGetCompositionStringW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2205): undefined reference to `ImmGetCompositionStringW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2268): undefined reference to `ImmGetCompositionStringW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2296): undefined reference to `ImmGetCompositionStringW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_windowskeyboard.c.obj):(.text+0x2484): undefined reference to `ImmGetCandidateListW@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x33): undefined reference to `_imp__timeBeginPeriod@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x65): undefined reference to `_imp__timeEndPeriod@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0xca): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x12d): undefined reference to `_imp__timeEndPeriod@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x17f): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x237): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x2b5): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x36f): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_systimer.c.obj):(.text+0x447): undefined reference to `_imp__timeGetTime@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x32b): undefined reference to `_imp__SetupDiGetClassDevsA@16'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x36d): undefined reference to `_imp__SetupDiEnumDeviceInterfaces@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x3a5): undefined reference to `_imp__SetupDiGetDeviceInterfaceDetailA@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x3e5): undefined reference to `_imp__SetupDiGetDeviceInterfaceDetailA@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x405): undefined reference to `_imp__SetupDiEnumDeviceInfo@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x42c): undefined reference to `_imp__SetupDiGetDeviceRegistryPropertyA@28'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(hid.c.obj):(.text+0x495): undefined reference to `_imp__SetupDiDestroyDeviceInfoList@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_dinputhaptic.c.obj):(.text+0x1170): undefined reference to `_imp__CoCreateInstance@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0xb6): undefined reference to `_imp__waveOutReset@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0xe1): undefined reference to `_imp__waveOutClose@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0xf7): undefined reference to `_imp__waveInReset@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x11b): undefined reference to `_imp__waveInClose@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x174): undefined reference to `_imp__waveInUnprepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x19f): undefined reference to `_imp__waveInUnprepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x1d4): undefined reference to `_imp__waveOutUnprepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x1fe): undefined reference to `_imp__waveOutUnprepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x2b6): undefined reference to `_imp__waveInAddBuffer@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x318): undefined reference to `_imp__waveOutWrite@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x433): undefined reference to `_imp__waveOutGetErrorTextW@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x5e3): undefined reference to `_imp__waveInOpen@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x637): undefined reference to `_imp__waveOutOpen@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x71c): undefined reference to `_imp__waveInPrepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x745): undefined reference to `_imp__waveInAddBuffer@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x7aa): undefined reference to `_imp__waveOutOpen@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x7f7): undefined reference to `_imp__waveInOpen@24'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x839): undefined reference to `_imp__waveOutPrepareHeader@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x893): undefined reference to `_imp__waveInStart@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x90c): undefined reference to `_imp__waveInGetNumDevs@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x940): undefined reference to `_imp__waveInGetDevCapsW@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x992): undefined reference to `_imp__waveOutGetNumDevs@0'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0x9c8): undefined reference to `_imp__waveOutGetDevCapsW@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_winmm.c.obj):(.text+0xa76): undefined reference to `_imp__waveInAddBuffer@12'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_wasapi.c.obj):(.text+0x223): undefined reference to `_imp__CoTaskMemFree@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_wasapi_win32.c.obj):(.text+0x140): undefined reference to `_imp__PropVariantClear@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_wasapi_win32.c.obj):(.text+0x478): undefined reference to `_imp__CoTaskMemFree@4'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_wasapi_win32.c.obj):(.text+0x5b8): undefined reference to `_imp__CoCreateInstance@20'
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.2.0/../../../../i686-w64-mingw32/bin/ld.exe: C:/msys64/mingw32/lib\libSDL2.a(SDL_dinputjoystick.c.obj):(.text+0xf93): undefined reference to `_imp__CoCreateInstance@20'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:121: BasiliskII.exe] Error 1
Command exited with code 2

The CI build job currently installs version mingw-w64-i686-SDL2-2.0.12-4 of the SDL2 package, and when I update my local MSYS2 environment to this version, it has the same problem.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.