Coder Social home page Coder Social logo

zydeco / minivmac4ios Goto Github PK

View Code? Open in Web Editor NEW
498.0 36.0 53.0 1.17 MB

Mini vMac for iOS

Home Page: https://namedfork.net/minivmac

License: GNU General Public License v2.0

Objective-C 45.94% C 51.15% Makefile 0.21% Swift 2.70%
macintosh emulator m68k mini-vmac ios

minivmac4ios's Introduction

Mini vMac for iOS

Features

  • Emulates Mac Plus, Mac II or Mac 128K
  • Full simulated keyboard (including all Mac keys)
  • Full sound output
  • Uses external keyboard and mouse/trackpad if available
  • Regulable emulation speed
  • Easy(ish) to import/export disk images

Requirements

  • iOS/iPadOS 13.4 or later, or visionOS
    • Previous versions support down to iOS 7
  • ROM image from Mac Plus, Mac II and/or Mac 128K
  • Disk images with Mac software

Usage

ROM and Disk Images

You can import the ROM (vMac.ROM) and disk images (with .dsk or .img extension) into Mini vMac from other apps (iCloud Storage, Dropbox, etc), using AirDrop, iTunes File Sharing or the iOS Files app.

  • To insert disk images, swipe left with two fingers and the list of disks will appear. Icons are automatically generated based on the contents of the disk.
  • Tap an hold on a file to delete, rename or share
  • Tap the Edit button to show all files, and the Create Disk Image option

The disk image menu will attempt to find an icon from the following sources (in descending order of priority):

  1. Volume icon (System 7)
  2. Application icon, if the disk contains only one application
  3. Application matching the name of the volume (not the disk image)
  4. Application with name written in the comment field of the volume

If no icon is found, it will show a standard floppy disk icon.

Keyboard

Swipe up with two fingers to show the keyboard, and down to hide it.

The emulated keyboard features all the keys on an Apple Extended keyboard (except the Power key). The Command, Option, Control and Shift keys are sticky, to make keyboard shortcuts easier to type. You can change the appearance of the emulated keyboard in the settings.

If you have an external keyboard attached, you can use it too, although some shortcuts may interfere with iOS.

Mouse

You can choose to use the screen as a touchscreen, where tapping on the screen acts a mouse click, or as a trackpad. In trackpad mode, dragging is done by tapping twice fast and holding it down. 3D touch can also be used for clicking and dragging on supported devices.

If you use a mouse or trackpad on iPad OS 13.4 or newer, it will be used automatically.

Settings

Swipe right with two fingers to show the settings dialog, where you can change the following:

  • Speed: make the emulated machine faster than a Mac Plus
  • Mouse Type: switch between touchscreen and trackpad mode
  • Keyboard Layout: change the layout of the emulated keyboard
  • Display Scaling: choose how to scale the display
  • Emulated Machine: changes won't take effect if there are disks inserted

Installation

The easiest way is to install an IPA from releases with AltStore.

Building from source

To build the project, make sure you check out the repository and submodules:

git clone https://github.com/zydeco/minivmac4ios.git
cd minivmac4ios
git submodule update --init --recursive

The folders minivmac, libmfs and libres should not be empty. The source code zip file you can download from GitHub does not include all dependencies.

To install run the app on your device with Xcode, you'll to perform some additoinal steps:

  • Pair the device with Xcode
  • Specify your Apple ID in the Account preferences in Xcode.
  • Change the Team (to your own) and Bundle Identifier (for example, change the net.namedfork prefix to your own) in the “Mini vMac” target, under the “Signing & Capabilities” tab.
  • Enable Developer Mode on your device (iOS 16 and later).
  • On older iOS versions, trust your developer profile in the iOS Settings (under General > Device Management) after installing the app for the first time.

Adding new emulated machines

See documentation on the wiki.

Credits

minivmac4ios's People

Contributors

narbs 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minivmac4ios's Issues

UI is illegible with new dark mode

I tried to take a stab at fixing this (I think it involves removing constant colors and stuff) but I'm inexperienced with storyboards/nibs/etc

basically in dark mode all of the disk selection/emulator options UI it's not black on black but it's pretty close. I can attach screenshots if needed. I can guess which disk image needs to be mounted based on my knowledge of what I put in the folder but it's very hard to read.

as always, thank you for your amazing work!

Missing files errors in Xcode 8

I opened the project in Xcode 8, and I updated all the settings it wanted to update. But when I choose the target and click on run it gives me two errors with missing files:

  1. /minivmac4ios-master 2/libmfs/mfs.c
  2. /minivmac4ios-master/libres/res.c

Where do I find these two files?

Thank you for the great work you did on this project :-)

Sound doesn't work on iOS 16 when sideloading with AltStore

Hi,

For some reason, the sound doesn't appear to be working on iOS 16 on my iPhone 11 when I'm using AltStore to sideload the provided iOS release IPA. Now, granted, this might just be because I used the release instead of the source code, but the reason I did that is that compiling from source code always gives me many errors. So this needs to be fixed. Can you please do it?

Add Mac II 512x384 option

It would be great to have a Mac II 512x384 option (in addition to the existing 1024x768 and 640x480 options).

I attempted to add it myself but I don't use Xcode often and it's being incomprehensible to me again.

It would be great if it were easier to add new configurations. Maybe documenting the process of adding a new configuration would be helpful.

Add Import/Export support

... via
ExportFl - exports files from Mini vMac
ImportFl - imports files into Mini vMac

Since apps are sandboxed, this would have to grab files from/put files in the Documents folder. Possibly some tie-in to inter-app sharing?

Possible to add nearest neighbor interpolation?

Not sure if this is possible. The variants of mini vmac I've built for desktop render using OpenGL which has nearest neighbor options for rescaling - my cursory digging suggested that CGImageCreate already has a parameter to disable interpolation which is set to false already, so I suspect that the interpolation happens somewhere in the CoreGraphics drawing stack that I can't find.

I'm a sucker for clean pixels :)

Many thanks for your work on this.,

Add Sparsebundle disk image support :D

Possible that this is something I should be suggesting to Paul and you'd automatically inherit. Code for this is in the sheepshaver and BII code for OS X; seems like it should be possible as well on iOS. Low priority feature request.

BTC Mouse & Keyboard issue - lag

Great work! And seems the iPad 3 is excellent for running it as the wireless keyboard works perfectly with no limitations on iOS 9.x.

Have only one major issue with the mouse though.

Using BTC Mouse & Keyboard it works in theory however there is a delay. Whenever dragging the mouse cursor around. it takes around 3 sec for the cursor to catch up which makes it impossible to use the mouse. The mouse works perfectly outside MinivMac in iOS itself.

I have tried to change the speed of the emulation, tried to switch from MacII to Mac Plus emulation etc. as well as changing graphics filtering options. But the issue is the same. I have also tried tweaking the mouse speed in both MacOS as well as in iOS but the lag is still there no matter what combination I use. Any ideas on how to fix this!

If this could work this old iPad is the perfect classic and silent macOS device!

French Keyboard Layout

Is there any way to have a french keyboard layout? Which tool do you use to create nfkeyboardlayout files?

Update to Cydia

Hey so idk if Mini vMac was ios 13 compatible but i’m on 13.3 and when i checked to see if it was on cydia it said that it was last updated on December 2016

Could you update the app on cydia please as well as add Basilisk 2

Cmd-key shortcuts break in iPadOS 16.3

Hi, love running this on my iPad and using it for software development daily: https://68kmla.org/bb/index.php?threads/adjusting-sound-volume-with-keyboard-shortcuts-on-68k-macs.43221/#post-471713

Have a problem since the latest software update though: the iPad now appears to be stealing many Cmd-key combinations (this always happened with Cmd-Q but now appears to also intercept Cmd-F, Cmd-G, and most troubling Cmd-W) so vintage apps running under Mini vMac can't see them.

This makes Mini vMac much less useful because (for example) Cmd-F is "Find" and Cmd-G is "Find Again" in many apps ... most troublingly, Cmd-W is now a global shortcut to instantly exit an app, totally killing the emulator when I am just trying to close a window (and of course, not saving anything). It appears to be possible for some iOS apps to override this behavior (Safari uses Cmd-W just to close a tab, for example).
Is it possible for Mini vMac to prevent iPadOS from grabbing these keypresses?

Thanks for the great work on this terrific tool!

Apple Pencil support

Hey, it would be great to have pencil support integrated into the main branch at some point. I still use HyperCard for lifedrawing. I implemented detection in my fork, https://github.com/vaporstack/minivmac4ios

but it is a limited implementation. Basically all I do is check the bluetooth stack for a pencil, (PencilDetector.c from SO) and if it's present, ignore all non pencil touches, which most users probably don't want (but I do!)

However I couldn't figure out how to add a user toggle for it. I think this is a highly specific feature that should probably be opt-in either via settings or a pop up dialog box (or both).

Many thanks for your excellent work. :)

No icon on JB 9.3.3

Hello.

I installed mini v mac on a jailbroken 9.3.3 ipad using Cydia, but do not see an icon on the homescreens. Tried reinstalling, uninstalling and fresh install.

Thanks.

Bundles for each supported computer?

It would be great if there were bundles incuded for each supported computer, as there aren't that many.

Users could then configure each for RAM and screen dimensions.

If too many bundles are an issue then perhaps only a few could be added as Frameworks to the final build phase, with the rest being omitted.

I could help with this if required.

CALayerInvalidGeometry

Whenever I pop the current source into Xcode and compile to run on my 9.7" iPad Pro (running iOS 9.3), I get the following error:

"Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan nan]'"

The error points to the main line of code: return UIApplicationan(argc, argv, @"MNVMApplication", NSStringFromClass([AppDelegate class]));; and gives a SIGABRT signal at Thread 1.

When I run the code in an iPad Air 2 simulator, it works perfectly. I'm not sure if this is a bug specific to the iPad Pro or if I've done something wrong. Please advise.

Sideloading

Idk if this is an issue with the ipa or altstore but ive tried it and it can't side load

it just says an error occured

Add networking support (is this even possible?)

Mini vMac core has Tun/Tap support. Since Tor works on iOS, some sort of network proxying is possible, but I'm not sure if something as low level as tun/tap is possible without jailbreaking. It might just need a device management profile or a VPN profile to enable networking, however.

Web site out of date

Hi,

Your web site is out of date. For example, the version history there doesn't mention anything after 2016, though you've made new releases since then.

No Bluetooth Keyboard support on v2.1.1 on iOS 8

Hi Dude

I was checking for all the new features you added to your ios port on my I pad Air 2,
eg.. More Speed options, No more crashes when you create disk images and many other good things.
But the only thing missing was the Bluetooth keyboard support, that was working fine on the release 2.1

I am Emulating Mac II Finder 7.5.5 wit 256 colors, no sound, very good speed, I believe this is one of the best ports for Ipad and Iphone. lots of games runs perfectly in full color.

You are doing a very good job

Thank you so much for this port

Add multi-touch mouse-down

It's useful in other software to keep the mouse held down when switching fingers. This would also be useful in Trackpad mode here (like a real trackpad) so that if you reach the edge of the screen, you can press down with a second finger and continue a drag.

Suggestion for Additional Mouse Option.

Hello again,

This may seem a little niche, but could it be possible for a bluetooth mouse option that follows a BTC Mouse cursor (or equivalent) in iOS? This would make it easier to play games such as The Colony.

Thanks for your time, and your hard work on this great emulator!

Upload to the App Store?

Hey!

Love the app and haven’t found any issues as of yet, are you considering uploading this app to the App Store since the rules have changed?

Thanks,
Callum

Update to Mini vMac 3.5.8

Thank you for making this iOS port of Mini vMac! Would you consider updating your code to the latest stable version of Mini vMac, 3.5.8?

Fix github release asset names

This may come off as sounding petty or unimportant, but I'm developing an application that automatically grabs the latest IPA releases using a whitelist of Github apps (that's the shortened explanation anyways). But essentially, the Github releases for this app always have the file extension {name}.ipa.zip when my application assumes that its should simply be a .ipa. An .ipa is already a zipped archive, and you are simply exposing this fact.

So what I'm trying to say is, could you simply name the github asset {name).ipa in the future?

If not, just close the issue and move on. Thanks!

Preset for 16M, 640x480 and 16M, 1024x768 Mac II

Hi !

I would like to ask if it is possible to add presets for 16M, 640x480 and 16M, 1024x768 on the Mac II configuration... It would be perfect for some "memory hungry" applications...

Thank you so much !

Even 32M and 64M configurations would allow for more advanced stuff, like, playing "Captain Bumper 68k" ! 😄 (which requires 34M of memory)... Thanks !

Add inter-app audio support

Should be possible to enable the audio output to be captured by inter-app audio. Not sure if it would be possible to hook up a virtual microphone via inter-app audio, as I don't think Paul has exposed a virtual microphone in the emulator core -- and the original hardware used serial or SCSI for the Plus, and later ADB for microphone input.

Error while installing

When I try to install the ipa file, it gives me an error saying “Could not install Mini vMac because it’s integrity could not be verified”. How to fix this, or is it an issue with everybody?

Emulated trig functions are wrong?

Hi, still love this and use it every single day.
I think the emulated cosine function is somehow wrong. See screenshot, I wrote a trivial program to compute cos(π) in Symantec C++ 7 (using the C compiler) and consistently get +1 instead of -1. Cos(1) gives 0.84 which is also wrong (should be about 0.54). I tried running a random 3rd party fancified calculator DA (Calculator+, also in screenshot) and get the same wrong values.

Sines appear wrong also.

Any help appreciated.

IMG_0406

Mini vMac doesn't change emulated machines on reboot

Changing the emulated machine doesn't take effect upon restart, I have to force quit the app using the iOS task manager.

I tried looking through the source to see if I could find the cause since pull requests are nicer than opening issues, but no luck (yet)

Document build process

Could you update the readme to document the build process?

For example, explain that you need to download from git (not from a tarball) and also fetch the submodules. This has come up before in #14 and #16 but there, the users experienced build failures which made it clear that files were missing. Today, I am building with Xcode 13.2.1 and, unexpectedly, the build succeeds despite the missing files and then Xcode shows the error:

Executable Not Found

/Users/…/Library/Developer/Xcode/DerivedData/Mini_vMac-ddsiulpblselfncmyzrihvlcjnuc/Build/Products/Debug-iphoneos/Mini vMac.app is not a valid path to an executable file. Please rebuild the project to ensure that all required executables are created. Check your project settings to ensure that a valid executable will be built.

After fetching the submodules and building again, it gets further.

It was also necessary to go to the Signing & Capabilities tab and change the team from yours to my personal team and change the bundle identifier to something unique to me.

Finally, after getting the app onto my iPad, Xcode wouldn't launch it, with the cryptic error "Security". Tapping the icon on the iPad home screen provided more context, saying the developer was untrusted and that I could fix it in Settings. Specifically, what I had to do was go to Settings, General, Device Management, my developer profile, and indicate that this developer was trusted.

I knew these things at one point but it's been years since I did any iOS development and I had forgotten. Having this stuff spelled out clearly in the readme would help newbies and the forgetful.

I know Apple likes to move stuff around, so the process may be different in other Xcode or iOS versions. I'm using iOS 9.3.5.

Dynamic screen resolution for portrait/landscape?

Right now I have two variations of Macintosh Plus:

  1. 512x342 (standard)
  2. 512x684 (double height)

Run-in on 12.9" iPad Pro @ 2048x2732 pixels it fits almost exactly (@4x would be 2048x2760)

So I was wondering if it would be feasible to have the emulator dynamically change its resolution when the iPad is rotated.

Currently I am switching emulators whenever I want to change orientation, which is less than ideal.

Keyboard Shortcut issue

Amazing being able to run your old macOS apps on an iPad! :-D

An issue I noticed. When connecting a magic keyboard and magic mouse (which is much more productive and makes It act like a real Mac) many of the basic shortcuts are overwritten. Like command-w for closing windows (it quits the app), and command-q does nothing. Use these constantly. Tried disabling keyboard shortcuts in Settings > Keyboard but that doesn't change it.

Any ideas or workaround?

No Macintosh hd icon

there isn't a hd icon on the Macintosh desk top. it would be really nice if you would add the option to make a disk image or a hard disk image

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.