dingusdev / dingusppc

An experimental emulator
GNU General Public License v3.0
200 stars 21 forks source link

Apple Pippin #81

Open upintheairsheep opened 3 months ago

upintheairsheep commented 3 months ago

Can you add support for the Apple Pippin as a machine, and add the [https://retrostuff.org/2019/11/24/pippin-atmark-adb-adapter-dongles/ AppleJack] pADB (modified ADB) controller as a joystick? Pippin emulation already exists as partial support in MAME, but there is no viable Pippin emulator, so having it supported here would be nice.

dingusdev commented 3 months ago

Much of the components that make up a Pipppin are already emulated. The biggest hurdle is to find documentation on the TAOS graphics processor, which may or may not be a simple framebuffer. I might get started on a skeleton to see how far I can get.

adespoton commented 3 months ago

Looks like there's a good central reference for dumping/finding info here now: https://emulation.gametechwiki.com/index.php/Apple_Pippin -- although I'm not sure how useful it'll be, considering one of the quoted sources there appears to be me :D

Thinking about this a bit... is the Taos GPU at all related to Tao Group, which produced TAOS in Japan in the same period as the Pippin? https://en.m.wikipedia.org/wiki/Tao_Group

The Intent platform could be run either as the native operating system or as an application. Service code was delivered in a format called Virtual Processor (VP), which was translated on the device to native machine code.

The Intent portfolio included support for:

[C](https://en.m.wikipedia.org/wiki/C_(programming_language))/[C++](https://en.m.wikipedia.org/wiki/C%2B%2B) games with [OpenGL ES](https://en.m.wikipedia.org/wiki/OpenGL_ES) 3D rendering
A [Java](https://en.m.wikipedia.org/wiki/Java_(programming_language)) virtual machine which translated to native code
An [internet browser](https://en.m.wikipedia.org/wiki/Internet_browser) optimised for small screens
A music and multimedia [mixer](https://en.m.wikipedia.org/wiki/Mixing_console) called miniMIXA
A [MIDI](https://en.m.wikipedia.org/wiki/MIDI) [ringtone](https://en.m.wikipedia.org/wiki/Ringtone) engine called the Advanced Polyphone Ringtone Engine.

This really sounds like the same hardware, with the Pippin using an early version of the Intent engine for graphics processing. The hardware would make sense, given Apple's intention to make this a gaming platform that didn't require a specific hardware reference platform.

All this to say, we may have a route forward here, since Intent was designed to be platform agnostic and had implementation libraries for Java as well as a number of SDKs. https://wiki.c2.com/?TaoIntentOs may also be of use.

An intriguing bit here is that by the time it was renamed to Intent, it appears that OpenGL support was present (which I'm pretty sure wasn't there with the TAOS graphics hardware in the Pippin?)

Anyway, just recording some random thoughts on the topic in case they help someone down the line.

upintheairsheep commented 1 month ago

The Pippin BIOS can boot, but the AppleJack controller is not yet supported.

maximumspatium commented 1 month ago

FYI, I'm working on MESH SCSI controller emulation so Pippin can boot games off its internal CD-ROM drive. AFAIK, Keith Kaisershot is working on AppleJack emulation for DingusPPC. In other words, the chances are good that Pippin emulation in DingusPPC will be usable very soon.