-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Weird freezing with Circle of Blood CD on Linux #177
Comments
Nothing can be done without reproducibility.
Drop mounting is possible even without an optical drive. |
Did you try to reproduce on Linux?
It's not working for me. When it reaches this line Maybe worth noting that I'm using Arch Linux. |
Possibly related, but on Linux, when I expand something on the desktop with Stuffit, the expanded folder does not appear on the desktop until I restart. |
Also, not sure if it helps, but here are all the opcodes it ran before running into the 0x0 opcode. Left column is pc_p, and right column is the opcode. |
Another update: On windows it worked fine. I installed it and copied the dsk to Linux. On Linux starting game, but freezes nearly immediately. |
I tried it on Debian 12.
Working well under Debian. |
I see, didn't know Basilisk uses the UAE 68k implementation. So then it is a bug in UAE's implementation? Is this something you think you are going to work on?
Do you have a physical cd-rom drive on your PC? I had the same issue under Windows. If no cdrom is already mounted, drop mounting does not work on Windows either. |
Certainly, the problem isn't necessarily within the UAE core, but it's also difficult to pinpoint.
I don't know because I have never encountered such a phenomenon.
I might debug if I find any clues.
The reason why it was okay even without a CDROM drive was because there was the following line in
|
Just the whole vibe of this port of the game is weird, like why did they make a CD installer that would not run from read only storage? Why does it throw up a window using Metrowerks I/O stub thing to tell you this like a hello world example? Curious. |
I've never managed to get the 68k version of the installer to work in Basilisk II on Linux, even making my settings as close as possible to the Mac OS X build where it sometimes works and ignoring illegal memory accesses which I don't usually do. It ends up at an illegal instruction or sometimes a hang. You can work around this by doing by hand what the installer does for a minimal install.
Then:
In the main program 68k version there is also a crash on first launch with the same illegal instruction as the installer. However you can work around it:
This makes the game bring up a menu on launch like when there is an existing save, which avoids the crash; you can still choose Start from that menu to start a new game from the opening cinematic like you would get on first launch. Anyway, all of that is to say I wonder if this is literally some kind of file-not-found error state that the game code handles incorrectly that is resulting in invalid jumps because of some emulation difference and hits some fortuitous nop sled to a safe place on a real machine. For comparison, this problem doesn't affect the PPC version in SheepShaver. |
The thing in common for the installer failure case between Mac OS X and Linux is execution is getting into the zeros in the same way: The a-trap vector (at However in Basilisk II on Linux it happens every time you run the installer, and in Basilisk II on Mac OS X it only happens some of the time (with no pattern to the successes and failures or correlation of them to anything I can think to check). The code fragment doing the stomping looks like:
... On the successful runs a similar code sequence executes from a similar address on the way out of the installer, at which time it does not touch the a-trap vector. So perhaps it is a knock-on effect of whatever is going wrong in the installer rather than the cause. As an aside:
And it's not a jump so it's not an infinite loop on its own. But obviously if you jump into some random block of zeroed address space an arbitrary distance from anything you might be there executing in a straight line for a long time. So when it comes to opcode logging you probably need to get a few consecutive 0 opcodes in before it's of interest, because you're going to see some in the normal system boot-up. |
On Linux, I mount https://macintoshgarden.org/games/broken-sword-the-shadow-of-the-templarscircle-of-blood as a
cdrom
. Then copy the installation executable to the desktop, and run the installer on the desktop, after which Basilisk II hangs. This is with the commits of 8th of October. Checked with gdb, and Basilisk II is in an infinite loop running opcode 0x0. Not sure how it gets there. The weird part is that I had a similar issue on Mac. Then I deleted BasiliskII.app and re-downloaded it, and after running it again, it was not hanging anymore...Note that this is with a Quadra 950 ROM, with a 68040 cpu.
Another issue is that I don't have a physical cdrom on my PC, so /dev/cdrom does not exist. That means I cannot drag and drop a cd rom image because there is no drive already (
drives.empty()
).The text was updated successfully, but these errors were encountered: