FreeSO on Mac

Discussion in 'Support' started by RHY3756547, Nov 30, 2017.

  1. zoey

    zoey New Member

    Just did this for a friend of mine and myself, works great. She has a MacBook Pro (dunno which one), I have a Hackintosh Desktop with a GTX 770. I'd be willing to make a youtube video of how to do this. it's not very hard. my friend could have done it herself had she known she had to right click -> save the file instead of clicking on it to download it, and which file to download off your TeamCity server (we both downloaded the logs by accident the first time)

    Bug report: Loaded up freeso.command the first time, played for a few, remembered freeso3d.command. got out of freeso, ran freeso3d, terminal popped up then my desktop froze for a second, I saw the last two lines of text I see before I see the login window (I have my hackintosh set to boot verbose), then was back at the login screen logged out. ran freeso3d again and it's running no problem. Fireplaces are flickering but I don't know if that's a freeso bug or a "my graphics drivers are screwed because I can't read and installed a beta version of High Sierra and there's no Nvidia driver for beta versions of MacOS" bug that I have with most games when using the Default display driver.
    Last edited: Mar 16, 2018
  2. zoey

    zoey New Member

    I wrote an application to easily launch FreeSO from your dock or Applications folder with a double click, waiting on a reply from Rhys to know if I can upload it here because it requires minor changes to the instructions.

    edit: testing a fix for needing to relaunch freeso.command if there's an update that needs to be applied.

    edit 2: Got discord integration working with FreeSO on MacOS. All that I had to do was download from Discord's GitHub page Unzip it, and copy discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib to the FreeSO folder.
    So now when I'm playing FreeSO my Discord shows:

    The Icon changes based on lot type (Going to a money lot replaced the hammer with a Simolean), and shows


    when not in a lot.
    Last edited: Mar 16, 2018
    mrpenguinb likes this.
  3. zoey

    zoey New Member

    I hope I'm not crossing any lines with my modified tutorial / changed file, if I am, feel free to delete:

    is my quick and dirty youtube tutorial. I've never done a video tutorial (or video editing) before, so it's pretty crappy.

    I took @RHY3756547's tutorial and made a few changes.

    Download everything in the original post, except download my modified version of from here
    Take the FreeSO client folder (currently client-588), and rename it to FreeSO, then place the folder in your documents folder. Make sure to copy my contents too.
    Inside the FreeSO folder, you will find FreeSO and FreeSO 3D with the FreeSO icon. Place one of them either in your dock or in your Applications folder to easily launch FreeSO every time without having to navigate through the files each time.
    Continue RHY's tutorial to download TSO.

    What's different from the original macextras?:
    • Added two applications (FreeSO and FreeSO 3D) that can be placed in your dock, or copied to your Applications folder to make it easier to start FreeSO. NOTE: These applications assume you follow my tutorial as I place the FreeSO Files in a specific (known) location.
    • Modified the freeso.command files to remove the need to re-run freeso.command to apply an update. The game will run, prompt and download the update, exit, apply the update, then relaunch FreeSO. NOTE: After applying a patch, mono may (probably) both crash, and launch FreeSO. Click OK on the crash window. I'm trying to fix this.
    • Added the correct Discord-RPC for MacOS so if you use the Desktop Discord app your discord status will show what lot you're in and that you're playing FreeSO
    RHY3756547 and mrpenguinb like this.
  4. RHY3756547

    RHY3756547 FreeSO Developer Staff Member Moderator

    Looks good, but your video tutorial is freaking out here. I will update the macextras on the FreeSO wordpress server with yours. Your macextras zip only seems to contain FreeSO for some reason, not

    I think the best way forward would be to develop a full launcher app for MacOS that installs SDL and everything - maybe @Sim can look into this or open source what he has since it mostly runs on javascript (Electron?). Again, I don't develop the launcher, so I don't know how much of it can reasonably be run on linux and mac.
  5. zoey

    zoey New Member

    I can tackle that with python. Give me a day or two and I should have at least a script, if not a launcher (think how getTSO is setup with options) to show to setup everything.
  6. Jonathan Myers

    Jonathan Myers New Member

    Any update on the video tutorial or launcher? Still can't get it to work.
  7. dotequals

    dotequals New Member

    UPDATE: If you have been using FreeSO on Mac prior to Update 70 (June 9th, 2018), you must redownload
  8. JimDog

    JimDog New Member

    Is the appropriate still at Things were working for me prior to this update, but after letting the client download and apply the FreeSO 70f update and extracting into the FreeSO folder I'm now getting errors from Mono at launch. I'm running Mono Attached are the error messages.

    Update: I rolled back my FreeSO folder using Time Machine (that brought me back to version 69b) and tried things again. If I just apply the 70f update and not do anything with everything appears to work properly. The only issue I'm noticing is the two error messages in the code block below in Terminal at launch but they don't appear to be affecting anything. If I try to extract into my FreeSO folder it breaks everything and I get the error messages in the attachment when I try to launch the game using freeso.command.
    AL lib: (WW) GetProcPath: Failed to readlink /proc/self/file: No such file or directory
    AL lib: (WW) alc_initconfig: Failed to initialize backend "jack"

    Attached Files:

    Last edited: Jun 11, 2018
  9. Nicholas Roth

    Nicholas Roth New Member

    Hello, I'm having trouble with a crash at launch. It appears the game tries to display an error message with Windows Forms but cannot since it isn't implemented on macOS. I'm posting the managed stacktrace. Would love some hints as to the cause of the error:

      at <unknown> <0xffffffff>
      at (wrapper managed-to-native) System.Windows.Forms.XplatUICarbon.CGDisplayBounds (intptr) [0x00002] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at System.Windows.Forms.XplatUICarbon.get_WorkingArea () [0x00005] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at System.Windows.Forms.XplatUICarbon.get_VirtualScreen () [0x00000] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at System.Windows.Forms.XplatUI.get_VirtualScreen () [0x00000] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at System.Windows.Forms.Screen..cctor () [0x00034] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) [0x0001e] in <0f9df4881040473f9da7cf6c2e2cb8c3>:0
      at <unknown> <0xffffffff>
      at System.Windows.Forms.MessageBox/MessageBoxForm.InitFormsSize () [0x00002] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at System.Windows.Forms.MessageBox/MessageBoxForm.RunDialog () [0x0000f] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at (wrapper remoting-invoke-with-check) System.Windows.Forms.MessageBox/MessageBoxForm.RunDialog () [0x00031] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at System.Windows.Forms.MessageBox.Show (string,string) [0x0000a] in <beba0b11547e4333a33d4d8cdf7b7c51>:0
      at FSO.Windows.Program.CurrentDomain_UnhandledException (object,System.UnhandledExceptionEventArgs) [0x0002f] in <83a141855b6844c993535b211d30122f>:0
      at (wrapper delegate-invoke) <Module>.invoke_void_object_UnhandledExceptionEventArgs (object,System.UnhandledExceptionEventArgs) [0x00070] in <0f9df4881040473f9da7cf6c2e2cb8c3>:0
      at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object_object (object,intptr,intptr,intptr) [0x0001e] in <0f9df4881040473f9da7cf6c2e2cb8c3>:0
    EDIT: I ran mono in verbose mode and got this. There seems to be an exception after calling FSO.Client.GameStartProxy:Start and inside FSO.Client.FSOProgram.OnAssemblyResolve. System.Reflection.Assembly.LoadFrom seems to be causing the specific issue.

    converting method (wrapper remoting-invoke-with-check) bool System.IO.StreamReader:get_EndOfStream ()
    Method (wrapper remoting-invoke-with-check) bool System.IO.StreamReader:get_EndOfStream () emitted at 0x1070a6940 to 0x1070a69cd (code length 141) [FreeSO.exe]
    converting method (wrapper managed-to-native) int System.IO.MonoIO:Read (intptr,byte[],int,int,System.IO.MonoIOError&)
    Method (wrapper managed-to-native) int System.IO.MonoIO:Read (intptr,byte[],int,int,System.IO.MonoIOError&) emitted at 0x1070a6a60 to 0x1070a6c45 (code length 485) [FreeSO.exe]
    converting method (wrapper managed-to-managed) string string:.ctor (char[],int,int)
    Method (wrapper managed-to-managed) string string:.ctor (char[],int,int) emitted at 0x1070a6c80 to 0x1070a6cb0 (code length 48) [FreeSO.exe]
    converting method (wrapper managed-to-native) bool System.IO.MonoIO:Close (intptr,System.IO.MonoIOError&)
    Method (wrapper managed-to-native) bool System.IO.MonoIO:Close (intptr,System.IO.MonoIOError&) emitted at 0x1070a6d10 to 0x1070a6ded (code length 221) [FreeSO.exe]
    converting method byte FSO.Client.GlobalSettings:get_LanguageCode ()
    Method byte FSO.Client.GlobalSettings:get_LanguageCode () emitted at 0x1070a6e00 to 0x1070a6e17 (code length 23) [FreeSO.exe]
    converting method string FSO.Client.FSOProgram:GetClientVersion ()
    Method string FSO.Client.FSOProgram:GetClientVersion () emitted at 0x1070a6e20 to 0x1070a6f6b (code length 331) [FreeSO.exe]
    converting method (wrapper remoting-invoke-with-check) void System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
    Method (wrapper remoting-invoke-with-check) void System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) emitted at 0x1070a6fa0 to 0x1070a7040 (code length 160) [FreeSO.exe]
    converting method (wrapper remoting-invoke-with-check) void System.IO.StreamReader:.ctor (System.IO.Stream)
    Method (wrapper remoting-invoke-with-check) void System.IO.StreamReader:.ctor (System.IO.Stream) emitted at 0x1070a7060 to 0x1070a70c1 (code length 97) [FreeSO.exe]
    converting method void FSO.Client.GameStartProxy:Start (bool)
    converting method (wrapper runtime-invoke) object <Module>:runtime_invoke_object__this___object_object_byte (object,intptr,intptr,intptr)
    Method (wrapper runtime-invoke) object <Module>:runtime_invoke_object__this___object_object_byte (object,intptr,intptr,intptr) emitted at 0x1070a7100 to 0x1070a7258 (code length 344) [FreeSO.exe]
    converting method System.Reflection.Assembly FSO.Client.FSOProgram:OnAssemblyResolve (object,System.ResolveEventArgs)
    Method System.Reflection.Assembly FSO.Client.FSOProgram:OnAssemblyResolve (object,System.ResolveEventArgs) emitted at 0x1070a7290 to 0x1070a73a9 (code length 281) [FreeSO.exe]
    converting method (wrapper managed-to-native) System.Reflection.Assembly System.Reflection.Assembly:LoadFrom (string,bool)
    Method (wrapper managed-to-native) System.Reflection.Assembly System.Reflection.Assembly:LoadFrom (string,bool) emitted at 0x1070a73d0 to 0x1070a754b (code length 379) [FreeSO.exe]
    converting method (wrapper runtime-invoke) object <Module>:runtime_invoke_void__this___object_object (object,intptr,intptr,intptr)
    Method (wrapper runtime-invoke) object <Module>:runtime_invoke_void__this___object_object (object,intptr,intptr,intptr) emitted at 0x1070a7550 to 0x1070a7698 (code length 328) [FreeSO.exe]
    converting method (wrapper managed-to-native) object object:__icall_wrapper_mono_thread_interruption_checkpoint ()
    Method (wrapper managed-to-native) object object:__icall_wrapper_mono_thread_interruption_checkpoint () emitted at 0x1070a76b0 to 0x1070a7726 (code length 118) [FreeSO.exe]
    converting method (wrapper managed-to-native) object object:__icall_wrapper_mono_thread_get_undeniable_exception ()
    Method (wrapper managed-to-native) object object:__icall_wrapper_mono_thread_get_undeniable_exception () emitted at 0x1070a7730 to 0x1070a77fd (code length 205) [FreeSO.exe]
    converting method (wrapper runtime-invoke) object <Module>:runtime_invoke_void__this___object_byte (object,intptr,intptr,intptr)
    Method (wrapper runtime-invoke) object <Module>:runtime_invoke_void__this___object_byte (object,intptr,intptr,intptr) emitted at 0x1070a7880 to 0x1070a79d0 (code length 336) [FreeSO.exe]
    converting method (wrapper delegate-invoke) void <Module>:invoke_void_object_UnhandledExceptionEventArgs (object,System.UnhandledExceptionEventArgs)
    Last edited: Jun 24, 2018 at 6:44 AM

Share This Page