Skip to content

Add support for M1 Macs#19

Closed
calmsacibis995 wants to merge 6 commits into
pruten:masterfrom
calmsacibis995:m1-working
Closed

Add support for M1 Macs#19
calmsacibis995 wants to merge 6 commits into
pruten:masterfrom
calmsacibis995:m1-working

Conversation

@calmsacibis995

@calmsacibis995 calmsacibis995 commented Jan 14, 2023

Copy link
Copy Markdown

This is a build of Shoebill that has M1 support, with the debugger being left out due to missing symbols.

@calmsacibis995 calmsacibis995 changed the title Add partial support for M1-based Macs Add support for M1 Macs Jan 17, 2023
@calmsacibis995

calmsacibis995 commented Jan 17, 2023

Copy link
Copy Markdown
Author

Maybe if this gets merged, it will become version 0.0.6. Requires at least Big Sur to run.

@Huntman616

Copy link
Copy Markdown

@calmsacibis995 sorry I haven't been working on this project as much as I should have since I took over from the original developer I could use some more help and collaboration so I sent an invite to you to help update the code so I can run on New Mac's my machine is currently running macOS 13.5 but every little bit of help I can get on this project is appreciated. I also saw your profile. I myself am a collector of vintage computers, and I am interested in emulation of those systems.

@mitchblank

Copy link
Copy Markdown

I can verify that this branch (along with the two 1-liner fixes to fpu.c I mention in #15 and #20) seems to at least start OK on an M1 Macbook Pro running MacOS 15.4

Only immediate issue I have is that at least under the default graphics settings, the display is only in the bottom-left corner of the window:
Screenshot 2025-04-09 at 00 12 08

This is especially annoying because the normal Ctrl+Pinch magnifier shortcut doesn't function when Shoebill is foregrounded... although you can switch to another app, magnify, and then switch to Shoebill

I doubt that graphics issue is M1-related directly though; probably more likely that the OpenGL code isn't scaling something for HiDPI displays that it should. So I think everything in this PR is good.

kkeker pushed a commit to kkeker/shoebill that referenced this pull request Mar 21, 2026
- Add arm64 architecture to core/Makefile, replacing i386 (dead on modern macOS)
- Update Xcode project: MACOSX_DEPLOYMENT_TARGET=14.0, SDKROOT=macosx,
  VALID_ARCHS="x86_64 arm64", enable CLANG_ENABLE_OBJC_WEAK
- Fix memset() argument swap in fpu_initialize() (issue pruten#20, reported by @mitchblank)
- Fix K&R-style _native_tentox(a) -> _native_tentox(double a) (issue pruten#15)
- Rename HACKY_MATH_X86 to HACKY_MATH_NATIVE since double+math.h works on all archs
- Bump version to 0.1.0

Based on ARM64 build work from PR pruten#19 by @calmsacibis995.
Tested: libshoebill_core.a builds clean (zero warnings) as universal arm64+x86_64.

Made-with: Cursor
kkeker pushed a commit to kkeker/shoebill that referenced this pull request Mar 22, 2026
Major update bringing Shoebill to modern macOS with Apple Silicon support,
a native SwiftUI interface, and extensive emulation core optimizations.
Verified to boot A/UX 3.1 to desktop on macOS 15 / Apple M-series.

ARM64 & Build:
- Universal binary (arm64 + x86_64) for core library
- Fixed FPU memset() argument swap (pruten#20) and K&R declaration (pruten#15)
- Renamed HACKY_MATH_X86 to HACKY_MATH_NATIVE
- Updated deployment target to macOS 14.0

SwiftUI Application (ShoebillApp/):
- Modern Metal-based framebuffer rendering
- HiDPI/Retina display support
- Full ADB keyboard mapping and mouse capture
- PRAM persistence via Application Support
- Settings UI for ROM, disks, display resolution
- App icon

Core Optimizations:
- CPU dispatch: single direct 64K table replaces two-level indirection
- PMMU cache: 4-way set-associative with pseudo-LRU (was direct-mapped)
- SoftFloat 2b upgraded to 3e via backward-compatible API shim
- Audio: Apple Sound Chip output via Core Audio AudioQueue API
- Timer APIs: gettimeofday() replaced with clock_gettime(CLOCK_MONOTONIC)
- Ethernet: usleep busy-polling replaced with pthread_cond_timedwait
- VBL interrupt delivery with proper thread-safety

SDL GUI & Debugger:
- Replaced deprecated OpenGL with SDL_Renderer + SDL_Texture
- Debugger migrated from GLUT to SDL2
- Fixed ch_reset linker error with libedit

Incorporates build changes from PR pruten#19 by @calmsacibis995.
Fixes pruten#15, pruten#20.

Made-with: Cursor
@calmsacibis995

Copy link
Copy Markdown
Author

This PR will be closed, as it is superseded by #22.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants