Arculator v2.0 released!
Re: Arculator v2.0 released!
Nice idea but Wine won't run on Catalina or later at the moment: https://wiki.winehq.org/MacOS
Given SDL & wxWidgets are widely used I'm hoping recompiling Arculator is relatively straightforward but I'd like to get a view from someone more knowledgeable than I before I waste a lot of time on a dead end.
Given SDL & wxWidgets are widely used I'm hoping recompiling Arculator is relatively straightforward but I'd like to get a view from someone more knowledgeable than I before I waste a lot of time on a dead end.
Re: Arculator v2.0 released!
Regarding compiling for macOS with X11 dependencies then there is now an alpha release update to XQuartz: https://www.xquartz.org/releases/XQuart ... lpha5.html
Normally, it is quite easy to get code that builds on Linux to build and run on macOS, if you just make sure that you have installed the prerequisite libraries using a package manager like Homebrew, and do everything from the command line, just as you would to build on Linux. Once I have a working executable then I typically use a tool like Platypus to wrap a startup script in an app. It is not necessary to use Xcode for a quick and dirty “port”. I don’t have time now but might have a go in a couple of days to see what happens.
Normally, it is quite easy to get code that builds on Linux to build and run on macOS, if you just make sure that you have installed the prerequisite libraries using a package manager like Homebrew, and do everything from the command line, just as you would to build on Linux. Once I have a working executable then I typically use a tool like Platypus to wrap a startup script in an app. It is not necessary to use Xcode for a quick and dirty “port”. I don’t have time now but might have a go in a couple of days to see what happens.
BBC Master 128, BBC Model B i7, PMS B2P-6502 2nd proc., PiTubeDirect (both internal and external), RetroClinic Multi-OS Selector, Sundby 256k RAM/ROM card, MMFS, Gotek, Music 500, Hoglet RGBtoHDMI, ...
Re: Arculator v2.0 released!
Hi,Phipli wrote: ↑Sun Jan 03, 2021 1:53 pm Its OK, the version at https://github.com/pdjstone/arculator works if you make the changes in this thread.
Thanks for the awesome work folks
I dowloaded the Arcultor Master and it compike okay on my Linux Mint 19.3 Laptop, there was no core dumps when I tried to create a new emulator profile.
I created a 30220 with 3.11 Rom versions, all booted up to the desktop.
Great work guys...
Regards,
Derek
Derek
Re: Arculator v2.0 released!
Thanks mlouka, that tip actually helped me; instead of trying to build wxWidgets from source like the page recommends I used homebrew to install wxmac.
The linux source code from pdjstone's repository all compiled happily enough, I've forced it to x86_64 build even though I'm on Apple Silicon as was getting mismatched architectures at linking time so forcing consistency seemed to help. I got a few OpenAL deprecated warnings but no errors due to that deprecation which was pleasing; how that plays out at run-time I'm not sure.
Unfortunately at runtime I immediately get a lot of errors like:
objc[39848]: Class wxNSAppController is implemented in both /usr/local/Cellar/wxmac/3.0.5.1_1/lib/libwx_osx_cocoau_core-3.0.0.5.0.dylib (0x10f92cc50) and /usr/local/Cellar/wxmac/3.0.5.1_1/lib/libwx_osx_cocoau_core-3.0.dylib (0x10e247c50). One of the two will be used. Which one is undefined.
followed by
./src/common/object.cpp(251): assert "classTable->Get(m_className) == NULL" failed in Register(): Class "wxHtmlHelpController" already in RTTI table - have you used IMPLEMENT_DYNAMIC_CLASS() multiple times or linked some object file twice)?
Followed by a segmentation fault.
I don't understand why it thinks I've linked it twice?
Feels like I'm getting closer but no cigar yet! Would be great if someone more hands on than me gave it a go as I suspect it's not far away at all.
The linux source code from pdjstone's repository all compiled happily enough, I've forced it to x86_64 build even though I'm on Apple Silicon as was getting mismatched architectures at linking time so forcing consistency seemed to help. I got a few OpenAL deprecated warnings but no errors due to that deprecation which was pleasing; how that plays out at run-time I'm not sure.
Unfortunately at runtime I immediately get a lot of errors like:
objc[39848]: Class wxNSAppController is implemented in both /usr/local/Cellar/wxmac/3.0.5.1_1/lib/libwx_osx_cocoau_core-3.0.0.5.0.dylib (0x10f92cc50) and /usr/local/Cellar/wxmac/3.0.5.1_1/lib/libwx_osx_cocoau_core-3.0.dylib (0x10e247c50). One of the two will be used. Which one is undefined.
followed by
./src/common/object.cpp(251): assert "classTable->Get(m_className) == NULL" failed in Register(): Class "wxHtmlHelpController" already in RTTI table - have you used IMPLEMENT_DYNAMIC_CLASS() multiple times or linked some object file twice)?
Followed by a segmentation fault.
I don't understand why it thinks I've linked it twice?
Feels like I'm getting closer but no cigar yet! Would be great if someone more hands on than me gave it a go as I suspect it's not far away at all.
Re: Arculator v2.0 released!
I just compiled it on MacOS Catalina and by sheer luck I had all dependencies installed.
I added my RiscOS 3.11 roms, started Arculator, created an A3010 and when I run it, it crashes with the following message:
Any ideas?
I added my RiscOS 3.11 roms, started Arculator, created an A3010 and when I run it, it crashes with the following message:
Code: Select all
SDL_CreateWindowFrom could not be created! Error: NSWindow drag regions should only be invalidated on the Main Thread!
Video renderer init failed%
Re: Arculator v2.0 released!
Hello I was wondering how I can bypass having to select the CFG every time arculator opens and also will you be adding command line support. I use gameex and when I select a game to play I have to choose config then drive 0 to load game and play. Would love to boot directly to game. Thx for all the work on the new version it is much improved!
Re: Arculator v2.0 released!
Trendy21 wrote: ↑Sat Jan 30, 2021 5:35 am Hello I was wondering how I can bypass having to select the CFG every time arculator opens and also will you be adding command line support. I use gameex and when I select a game to play I have to choose config then drive 0 to load game and play. Would love to boot directly to game. Thx for all the work on the new version it is much improved!
I asked this very same question earlier in this forum.
Hopefully we can have game shortcuts it isn't to hard to send commands to the old arculator, waiting for the next update.SarahWalker wrote: ↑Mon Jan 25, 2021 8:21 am Nope. I meant to add command line support, but forgot before the v2.0 release. Sorry!
Re: Arculator v2.0 released!
I have now tried myself. After fixing the links to automake, building went smoothly but I get the same error as you on running. So the configuration dialog works fine, and I can also start from the command-line using a name configuration to bypass the configuration dialog window. The problem lies in the creation of the SDL window as macOS since 10.14 is strict on GUI updates being done on the main thread. Unfortunately SDL itself doesn’t handle that behind the scenes itself. A quick search revealed people having trouble with this same issue with SDL on other platforms too. Although I briefly tried to get a basic overview of how the initialization was taking place, and was able to confirm that SDL is detecting both OpenGL and software renderers (in additional to Metal), I am not familiar enough with the code or SDL to see a quick fix for adjusting the creation of the window to be sure that it is done from the main thread. I see that there is a file in Arculator that handles the SDL window initialization for Win32 and handles threading there in a Windows-specific way and I guess that it might be necessary to do something similar for macOS.
robcfg wrote: ↑Fri Jan 29, 2021 11:33 pm I just compiled it on MacOS Catalina and by sheer luck I had all dependencies installed.
I added my RiscOS 3.11 roms, started Arculator, created an A3010 and when I run it, it crashes with the following message:
Any ideas?Code: Select all
SDL_CreateWindowFrom could not be created! Error: NSWindow drag regions should only be invalidated on the Main Thread! Video renderer init failed%
BBC Master 128, BBC Model B i7, PMS B2P-6502 2nd proc., PiTubeDirect (both internal and external), RetroClinic Multi-OS Selector, Sundby 256k RAM/ROM card, MMFS, Gotek, Music 500, Hoglet RGBtoHDMI, ...
Re: Arculator v2.0 released!
Great work both of you, thanks for that, I'll persist and try and work out what's wrong with my setup so I can build it too.
Reading up on the 'not the main thread updating the UI' problem, I was interested to find this last comment with someone attempting to build Sarah's other excellent PCem for MacOS hitting a similar error and their attempt to comment out the set_window_title() call that was triggering it: https://pcem-emulator.co.uk/phpBB3/viewtopic.php?t=2999
I suspect CreateWindowFrom is a bit more fundamental and hard to comment out without problems!
I've not been able to investigate further yet while I can't build it; if we're lucky then it's just initialisation calls that need to be moved to the main thread. If we hit repeated calls during the actual emulation that might be harder to dispatch to the main thread. If you can get it opened up in the XCode debugger you may be able to identify the scale of the issue and potential solutions as described here under 'Detect Improper UI Updates on Background Threads':
https://developer.apple.com/documentati ... sues_early
Reading up on the 'not the main thread updating the UI' problem, I was interested to find this last comment with someone attempting to build Sarah's other excellent PCem for MacOS hitting a similar error and their attempt to comment out the set_window_title() call that was triggering it: https://pcem-emulator.co.uk/phpBB3/viewtopic.php?t=2999
I suspect CreateWindowFrom is a bit more fundamental and hard to comment out without problems!
I've not been able to investigate further yet while I can't build it; if we're lucky then it's just initialisation calls that need to be moved to the main thread. If we hit repeated calls during the actual emulation that might be harder to dispatch to the main thread. If you can get it opened up in the XCode debugger you may be able to identify the scale of the issue and potential solutions as described here under 'Detect Improper UI Updates on Background Threads':
https://developer.apple.com/documentati ... sues_early
Re: Arculator v2.0 released!
So having tracked down that there's a problem with the current brew install of wxmac for MacOS Big Sur (that was causing my multiple libraries issue) that is solved if you install it with 'brew install --build-from-source wxmac', I was able to build Arculator and reproduce the SDL thread issue.
All the action's in wx-sdl2.c in arc_main_thread() so for a dirty dirty hack I've make a one line edit to arc_start_main_thread() to just call arc_main_thread() instead of spawning it in a new thread. This way all the SDL calls are on the Main UI thread which stops MacOS bleating and Arculator works beautifully (in a debug build at least, I've not attempted a release yet but I'm sure it'll work).
The only problem I'm running into is that attempting to close the window doesn't work so I have to force quit which I'm fairly sure is a result of the hack causing it to fail to respond to MacOS events properly. Command-Tab seems to happily release the mouse and I can recapture it again by clicking on the window.
See attached screenshot for the evidence and the hack. Better solutions welcome!
This seems to get me what I need for the time being though isn't really the polished releasable binary I'd love to have for such a quality emulator. Those drive sound samples just make me grin from ear to ear!
All the action's in wx-sdl2.c in arc_main_thread() so for a dirty dirty hack I've make a one line edit to arc_start_main_thread() to just call arc_main_thread() instead of spawning it in a new thread. This way all the SDL calls are on the Main UI thread which stops MacOS bleating and Arculator works beautifully (in a debug build at least, I've not attempted a release yet but I'm sure it'll work).
The only problem I'm running into is that attempting to close the window doesn't work so I have to force quit which I'm fairly sure is a result of the hack causing it to fail to respond to MacOS events properly. Command-Tab seems to happily release the mouse and I can recapture it again by clicking on the window.
See attached screenshot for the evidence and the hack. Better solutions welcome!
This seems to get me what I need for the time being though isn't really the polished releasable binary I'd love to have for such a quality emulator. Those drive sound samples just make me grin from ear to ear!
Re: Arculator v2.0 released!
What was the change you made?
Re: Arculator v2.0 released!
To get round the MacOS restriction it was just changing the function arc_start_main_thread() to comment out the SDL_CreateThread call and calling arc_main_thread() directly as per the screenshot.
I've made a couple more changes to get wxWidgets to yield to the OS so that things like the popup menu work and which is probably good behaviour and seems to mitigate any issues from running everything on the Main thread.
There's still a couple of minor MacOS UI-related bugs left that I haven't figured out and may be a consequence of what I've changed but once I've had chance to put it's through it's paces a bit more I'll see if I can release it somewhere for those who are interested. Preferably with a patch to Sarah's github or similar as forking code is the root of all evil!
I've made a couple more changes to get wxWidgets to yield to the OS so that things like the popup menu work and which is probably good behaviour and seems to mitigate any issues from running everything on the Main thread.
There's still a couple of minor MacOS UI-related bugs left that I haven't figured out and may be a consequence of what I've changed but once I've had chance to put it's through it's paces a bit more I'll see if I can release it somewhere for those who are interested. Preferably with a patch to Sarah's github or similar as forking code is the root of all evil!
Re: Arculator v2.0 released!
On my MacBook, it launches the emulation window, but remains black and the rainbow wheel appears until I force quit it.
Re: Arculator v2.0 released!
Any chance of getting the keyboard MCU dumped from this?steve3000 wrote: ↑Wed Aug 05, 2020 10:22 pmIt is, and that A500 is sitting on my desk at the moment (on loan from Xavier). I think the full HDD image is on doomsday86.com, it chugs away on boot up, loading the modules. Would be nice to have that emulated in Arculator as a curiosity if anything. It feels very much half way between a Beeb and an Archimedes...(although much heavier!)SarahWalker wrote: ↑Wed Aug 05, 2020 2:13 pm It's probably missing a number of modules that are loaded from disc. Arthur / RISC OS development ROMs are like that.
- Nigel
BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.
BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.
Re: Arculator v2.0 released!
Very experimental Docker container for running Arculator: https://github.com/lrowe/arculator/tree ... tor-docker
So this is more of a mostly failed experiment than a solution for running Arculator on the Mac, but I figured it might be worth sharing in case anyone else is able to build on it and is at least useful for checking any changes I make to the build on Mac still work on Linux.
Running in docker on Mac Big Sur (I have an Arm Mac so use the Docker M1 tech preview and brew running as arm.)
% docker build -t arculator .
Install latest XQuartz 2.8.0_rc2 from xquartz.org
In XQuartz preferences, security:
- disable 'authenticate connections'
- enable 'allow connections from network clients'
% defaults write org.xquartz.X11 enable_iglx -bool true
Quit and restart XQuartz.
% xhost +
% docker run -it --mount type=bind,source="$(pwd)/roms",target=/app/roms --mount type=bind,source="$(pwd)/hostfs",target=/app/hostfs --mount type=bind,source="$(pwd)/configs",target=/app/configs arculator
Problems
* No sound yet. May be able to configure something with pulseaudio.
* Going fullscreen breaks things enough I needed to restart before X11 from Docker worked again.
* Captured mouse goes offscreen as soon as you move at all, making arculator unusable.
So this is more of a mostly failed experiment than a solution for running Arculator on the Mac, but I figured it might be worth sharing in case anyone else is able to build on it and is at least useful for checking any changes I make to the build on Mac still work on Linux.
Running in docker on Mac Big Sur (I have an Arm Mac so use the Docker M1 tech preview and brew running as arm.)
% docker build -t arculator .
Install latest XQuartz 2.8.0_rc2 from xquartz.org
In XQuartz preferences, security:
- disable 'authenticate connections'
- enable 'allow connections from network clients'
% defaults write org.xquartz.X11 enable_iglx -bool true
Quit and restart XQuartz.
% xhost +
% docker run -it --mount type=bind,source="$(pwd)/roms",target=/app/roms --mount type=bind,source="$(pwd)/hostfs",target=/app/hostfs --mount type=bind,source="$(pwd)/configs",target=/app/configs arculator
Problems
* No sound yet. May be able to configure something with pulseaudio.
* Going fullscreen breaks things enough I needed to restart before X11 from Docker worked again.
* Captured mouse goes offscreen as soon as you move at all, making arculator unusable.
- IanJeffray
- Posts: 6017
- Joined: Sat Jun 06, 2020 3:50 pm
- Contact:
Re: Arculator v2.0 released!
I want an Arculator with 4MB ROM space support (per philpem's fix) but I've been struggling to build this on Windows 10 today. Eventually I got what appeared to be suitable versions of OpenAL, wxWidgets etc, to get as far as a full "clean" build, but:
I suspect this may be down to versions of libraries/compiler/etc but I've sunk significantly more time in to this than I should have trying to sort it out myself - has anyone else tried to build it on Windows?
Any hints from Sarah would obviously be very welcomed.
Woe.I suspect this may be down to versions of libraries/compiler/etc but I've sunk significantly more time in to this than I should have trying to sort it out myself - has anyone else tried to build it on Windows?
Any hints from Sarah would obviously be very welcomed.
- IanJeffray
- Posts: 6017
- Joined: Sat Jun 06, 2020 3:50 pm
- Contact:
Re: Arculator v2.0 released!
git clone, aclocal, autoconf, automake, configure, make. Built and ran as smooth as butter in Linux. The difference is shocking. Apart from the mouse implementation which is scaled to hell, it's working pretty nicely with Xming over a 10G network That'll do.
Re: Arculator v2.0 released!
What format do the rom files need to be in? It doesn't like the ones I've been using for RPCEmu (No ROMs available error). Thanks for any assistance
- IanJeffray
- Posts: 6017
- Joined: Sat Jun 06, 2020 3:50 pm
- Contact:
Re: Arculator v2.0 released!
Can you share ROMs with RPCemu? Arculator emulats Archimedes series machines, not RiscPC.
The ROM should just be a file called "ROM" placed in the appropriate folder.
-
- Posts: 311
- Joined: Tue May 21, 2013 3:47 pm
- Contact:
Re: Arculator v2.0 released!
Is anybody aware of a known issue copying large numbers of files between hard disc images? The emulator hangs for me on certain files (always the same files), yet at other times manages to copy lots of files just fine. I know the source image is fine, and I've tried multiple targets.
-
- Posts: 311
- Joined: Tue May 21, 2013 3:47 pm
- Contact:
Re: Arculator v2.0 released!
FWIW, I've narrowed this down to the RiscOS Developments IDEFS podule emulation. If I use ZIDEFS instead, I don't get the hangs.AndyGarton wrote: ↑Tue May 18, 2021 10:57 pm Is anybody aware of a known issue copying large numbers of files between hard disc images? The emulator hangs for me on certain files (always the same files), yet at other times manages to copy lots of files just fine. I know the source image is fine, and I've tried multiple targets.
Re: Arculator v2.0 released!
Thought I would have a look at this and have downloaded the Windows zip. Checked it in VirusTotal and get:
Trojan.Malware.300983.susgen from one result MaxSecure
Can anyone shed light on this please?
Chris
Trojan.Malware.300983.susgen from one result MaxSecure
Can anyone shed light on this please?
Chris
I Maintain the 8 Bit Software (8BS) website and have mucked about with Acorn 8 bit machines from the off. Writing software and editing disc based magazines and other stuff like that. I have a personal website too chrisr.co.uk
- IanJeffray
- Posts: 6017
- Joined: Sat Jun 06, 2020 3:50 pm
- Contact:
Re: Arculator v2.0 released!
The very first hit on Google when searching for that virus is an explanation that it's often a false-positive for VirusTotal...
Re: Arculator v2.0 released!
Thanks I found that but just wondered if anyone knew for definite it is a false positive. I will just use it on the device I use for stuff I'm not sure about.
Chris
Chris
I Maintain the 8 Bit Software (8BS) website and have mucked about with Acorn 8 bit machines from the off. Writing software and editing disc based magazines and other stuff like that. I have a personal website too chrisr.co.uk
Re: Arculator v2.0 released!
In my experience, it's pretty common to see false positives on legit applications that AV programs haven't encountered very often. The more people that use that app, the more AV scans and signature uploads are done, the more confident the AV can be in its classification.
I run a little online shop called "Vintage Imitation Parts" to sell a few Acorn Archimedes and BBC Micro related bits and pieces, such as my imitation keyboard surrounds and just recently my imitation function strips.
Take a look! vintage.imitation.parts
Take a look! vintage.imitation.parts
Re: Arculator v2.0 released!
I'm trying to test Joystick emulation under v2.0 but am not having much success. The only one I've got to work is RTFM.
Acorn, PowerPad and Serial Port/VT don't seem to be recognised. Would it be possible to post the relevent Joystick Modules that Arculator was tested with to rule out version mismatches and confirm if any particular machine config is required.
I've already spotted Acorn is only supported under A3010, I'm assuming this is down to the way the Joystick Module detects them and not restricted simply for hardware accuracy?
Acorn, PowerPad and Serial Port/VT don't seem to be recognised. Would it be possible to post the relevent Joystick Modules that Arculator was tested with to rule out version mismatches and confirm if any particular machine config is required.
I've already spotted Acorn is only supported under A3010, I'm assuming this is down to the way the Joystick Module detects them and not restricted simply for hardware accuracy?
Re: Arculator v2.0 released!
Hi folks,
Just wanted to share that I have got arculator running happily on the latest MacOS
(And thanks to some of the clues in this thread!)
I'd be interested if anyone could give it a try and let me know if it works for them / what issues you run into.
You can find it here:
https://github.com/richstokes/arculator-mac
Just wanted to share that I have got arculator running happily on the latest MacOS
(And thanks to some of the clues in this thread!)
I'd be interested if anyone could give it a try and let me know if it works for them / what issues you run into.
You can find it here:
https://github.com/richstokes/arculator-mac
Re: Arculator v2.0 released!
Thanks for giving it ago, would love to get a reliable build working on the Mac. I had to additionally do the following one at a time each time it failed for the script to run without error...
xcode-select --install
brew install wget
brew install coreutils # to get nproc
when it then failed with the following while building wxwidgets I've given up for now. This is on a Macbook Air M1 - I've not figured out where the flag is I'm missing.
ld: warning: ignoring file /usr/local/lib/libX11.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
ld: warning: ignoring file /usr/local/Cellar/pcre2/10.36/lib/libpcre2-32.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
xcode-select --install
brew install wget
brew install coreutils # to get nproc
when it then failed with the following while building wxwidgets I've given up for now. This is on a Macbook Air M1 - I've not figured out where the flag is I'm missing.
ld: warning: ignoring file /usr/local/lib/libX11.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
ld: warning: ignoring file /usr/local/Cellar/pcre2/10.36/lib/libpcre2-32.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
Re: Arculator v2.0 released!
Thanks for the feedback! Have added those missing requirements to the install script.
I've not ran into the X11 error you're seeing, nor do I have an M1 mac to try and replicate it with. I wonder if there's a flag to tell it to build for macOS-x86_64, since thats what I'm using. And then MacOS can translate it to run on the arm chip.
That said, let me know if you do figure it out -- I'd love to make the mac install script more robust.
I've not ran into the X11 error you're seeing, nor do I have an M1 mac to try and replicate it with. I wonder if there's a flag to tell it to build for macOS-x86_64, since thats what I'm using. And then MacOS can translate it to run on the arm chip.
That said, let me know if you do figure it out -- I'd love to make the mac install script more robust.