Few options for emulating SGI systems are available, with MAME being the emulator furthest along.
There were graphics fixes in MAME 0.213 which allow Alias Power Animator 7.5 to run. Unfortunately, these also caused graphics regressions e.g. inverting the interface in Alias 6 (shows as black) and not displaying the grid in Softimage. Use 0.212 to make these applications work.
Networking was introduced in MAME 0.220, however it was not functioning correctly if the MTU was set to 1500 (as default), only with MTU set at 1496. This was fixed by not transmitting FCS from MAME 0.232 onwards.
Dynamic recompilation was (re)introduced in MAME 0.241. This increases the emulation speed substantially, however it does not seem to boot IRIX 6.5 reliably.
- Use MAME 0.240 to emulate IRIX 6.5 reliably w/networking but without DRC (slower).
- Use the latest MAME version to emulate IRIX 5.3 w/networking and DRC (fast!).
- Use MAME 0.212 if you get graphics errors and want to run specific graphics applications.
MAME mainly supports Indy and Indigo2 with XL graphics, which run IRIX 5.3 and 6.5 well.
MAME can run IRIX 4 on an emulated Indigo2, however IRIX 4 does not support XL graphics, so you need to use a terminal interface. In theory you should be able to use X11-forwaring over the network to show graphics on a different system, and possibly even forward 3D graphics through IrisGL to another SGI (or emulated SGI).
Command line options
Running headless with terminal on the serial port
To disable graphics (run the SGI headless) and enable a basic MAME emulated terminal on the serial port, use the commandline options
-gio64_gfx "" -ioc2:rs232b terminal
You will gain some emulation speed by disabling graphics. Alternatively can also enable "setenv console d" in the prom beforehand for "diagnostic" console and terminal output, without disabling graphics.
You may need to enable the terminal keyboard in the MAME option menu, under "Input Settings", "Keyboard Selection" "root:ioc2::rs232b:terminal:keyboard".
The standard mame terminal emulation has limited options, e.g. for copy paste, and a has a "classic" green colored text which you might or might not like.
To allow connections to the serial port from more advanced terminal emulators within Windows, you can use the following:
-ioc2:rs232b null_modem -bitb socket.localhost:1234
You can then connect to "localhost" and port 1234 using e.g. Tera Term or PuTTY.
Alternatively you can connect to a COM port instead, using a virtual COM-port for Windows, e.g. com0com. This is supposedly is a bit more reliable regarding cursor movement than the port method above. See: https://blog.thestateofme.com/2022/05/25/attaching-a-terminal-emulator-to-a-mame-serial-port/
-ioc2:rs232b null_modem -bitb COM6 [if COM port 6]
To enable dual head mode when emulating the Indigo2 (two emulated xl24 adapters with screens side by side in glorious 2560x1024 resolution) use:
-gio64_gfx xl24 -gio64_exp0 xl24
Quoting pmackinlay (MAME developer):
"MAME’s TAP code just maps the emulated Ethernet device to one end of a TAP pair, letting you decide what to do with the other end in the host operating system. You can route or bridge it or whatever you want. To make it do anything useful, you generally need to configure the emulated system’s network stack in a way that makes sense to whatever you have done on the other side."
For some reason the recommended method of using the TAP adapter from OpenVPN does not work with OpenVPN versions from 2.5 onwards. Running mame -listnetwork shows "no adapters". You can instead use the previous version OpenVPN 2.4.12.
Windows also seems to have some problems with bridging the TAP adapter and the Ethernet connection, and you may experience crashes and "Blue Screens of Death". However Internet Connection Sharing (ICS) in Windows seems to work with the TAP adapter from OpenVPN 2.4.12.
To enable the speed percentage counter, enable menus within MAME (press scroll lock) and then F11.
What does the percentage counter in MAME mean? Quoting pmackinlay:
"[the counter does not show the amount of frames drawn] the percentage shown is how fast the emulated system is running as a fraction of its hardware speed. 100% means it should be running with the same effective speed as the real hardware, while <100% means the emulation can't keep up with hardware."
Tips and tricks
Using the "-sound none" commanline option seems to have no or little effect on performance. Quoting MAME developer MooglyGuy:
"Back in the day, running with -nosound caused MAME to specifically exclude certain driver hardware when running the game. More recently, the decision was made for MAME to always emulate the sound hardware - mostly to reduce bug reports from people running with -nosound. So, nowadays, there shouldn't be much (if any) difference between running with -sound none and running with normal MAME. In the past, though, it might have gained you some frames per second, at the cost of potentially fucking up the emulation of the game itself."