ksherlock / ample

Apple Emulator Frontend for MAME
88 stars 6 forks source link

Add MAME configs for UNIX workstations and servers #24

Open ajacocks opened 1 year ago

ajacocks commented 1 year ago

Would you consider adding the configurations for the following UNIX workstations and servers to Ample? It's such a fantastic front end, and it'd be great to do all of my non-gaming MAME emulation using it:

1) ibm/rtpc 2) ibm/rs6k7009 3) hp/hp9k310 4) hp/hp9k320 5) hp/hp9k330 6) hp/hp9k332 7) hp/hp9k340 8) hp/hp9k360 9) hp/hp9k370 10) hp/hp9k380 11) hp/hp9k382 12) dec/d2k300axp 13) dec/d2k500axp 14) dec/dpcaxp150 15) dec/ds2100 16) dec/ds3100 17) dec/ds5k133 18) dec/pdp11qb 19) dec/pdp11ub 20) dec/pdp11ub2 21) intergraph/ip2000 22) intergraph/ip2400 23) intergraph/ip2500 24) intergraph/ip2700 25) intergraph/ip2800 26) intergraph/ip6000 27) intergraph/ip6400 28) intergraph/ip6700 29) intergraph/ip6800 30) mips/rc2030 31) mips/rc3230 32) mips/rs2030 33) mips/rs3230 34) sgi/crimson 35) sgi/indigo2_4415 36) sgi/indy_4610 37) sgi/indy_4613 38) sgi/indy_5015 39) sgi/indigo 40) sgi/pi4d30 41) sgi/pi4d35 42) sgi/indigo_r4000 43) sgi/indigo_r4400 44) sgi/pi4d20 45) sgi/pi4d25 46) sgi/iris3130 47) sgi/4d410 48) sgi/o2 49) sgi/octane 50) sgi/pi4d50 51) sgi/pi4d70 52) sony/nws3860 53) sony/nws1580 54) sony/nws3260 55) sony/nws3410 56) sony/nws5000x 57) sun/sun1 58) sun/sun2_120 59) sun/sun2_50 60) sun/sun3_110 61) sun/sun3_150 62) sun/sun3_260 63) sun/sun3_50 64) sun/sun3_60 65) sun/sun3_e 66) sun/sun3_460 67) sun/sun3_80 68) sun/sun4_110 69) sun/sun4_20 70) sun/sun4_25 71) sun/sun4_300 72) sun/sun4_400 73) sun/sun4_40 74) sun/sun4_50 75) sun/sun4_60 76) sun/sun4_65 77) sun/sun4_75 78) sun/sun_s10 79) sun/sun_s20

This is a lot of drivers, I know. So, would you alternatively consider making the interface driven from config files, so that I could create a UNIX drivers list, along with their associated configs (RAM, boards, etc.)?

ksherlock commented 1 year ago

That is a big list.

The UI is driven by config files (example) which are pre-generated from the mame -listxml output because -listxml is often inconsistent and lies about some things so I don't want to do it at runtime.

However, there is a hardcoded list of slots within Ample so that needs to be changed before it will work for arbitrary machines. That is something I've been meaning to address so I'll work on that.

ksherlock commented 12 months ago

Do any of them work? Most are flagged as MACHINE_NOT_WORKING or MACHINE_IS_SKELETON.

ajacocks commented 12 months ago

Yep! Quite a few work rather well.

Offhand:

I'd be happy to help, if there is something that I can do

ksherlock commented 12 months ago

Here is a version of Ample Lite with most of the machines above. You'll need to bring your own MAME.

ajacocks commented 11 months ago

Looks good! I tested with MAME 0.260 from https://sdlmame.lngn.net/

I used the following launch shell script:

#!/bin/bash

#
# Obtain path to script.
#
# Note that 'grealpath' provides reliable soft-link resolution, without requiring
# any Bash gymnastics.
#
script_file=$(/opt/local/bin/grealpath "${0}")
script_dir=$(dirname "${script_file}")

cmd="${script_dir}/mame"
bgfx_path="${script_dir}/bgfx"
languagepath="${script_dir}/language"
pluginspath="${script_dir}/plugins"
artpath="${script_dir}/artwork"
hashpath="${script_dir}/hash"
ctrlrpath="${script_dir}/ctrlr"

cmdline=()
cmdline+=( "${cmd}" )
cmdline+=( -bgfx_path "${bgfx_path}" )
cmdline+=( -languagepath "${languagepath}" )
cmdline+=( -pluginspath "${pluginspath}" )
cmdline+=( -artpath "${artpath}" )
cmdline+=( -hashpath "${hashpath}" )
cmdline+=( -ctrlrpath "${ctrlrpath}" )

# Note that Mame handles duplicate arguments, using the last one found.
# Net-Net, there's no need to check whether the user specified the same
# parameters, as theirs will take precedence.

"${cmdline[@]}" \
"${@}"

I used https://arcade.vastheman.com/minimaws/machine/ as a reference, and verified by running manually from the shell.

Testing the systems with default config, one by one, yielded these results:

  1. DEC VT52 - works fine
  2. DEC VT100 - works fine
  3. DEC VT101 - works fine
  4. DEC VT102 - works fine
  5. DEC VT240 - works fine
  6. DECstation 2100 - initializes correctly and hangs (as expected)
  7. DECstation 3100 - initializes correctly and hangs (as expected)
  8. DECstation 5000/133 - initializes correctly (with expected errors) and gets to SRM
  9. PDP-11 (QBUS) - works fine, except that attaching scsi disks to the TTI QTS-1 fails due to command-line generation problems
    • Ample generates this for for a qts-1 scsi host in sbus slot 1:
      • mame.sh pdp11qb -skip_gameinfo -nosamples -window -nomax -video bgfx -rs232 null_modem -qbus:1 qts1 -:scsibus:0 aplcdsc
    • The correct command-line should be:
      • mame.sh pdp11qb -skip_gameinfo -nosamples -window -nomax -video bgfx -rs232 null_modem -qbus:1 qts1 -qbus:1:qts1:scsibus:0 aplcdsc
      • There should also be a BIOS version choice for the QTS-1 of 1.7 or 2.3, and an RS-232 interface
  10. the pdp11ub and pdp11ub2 seem to be exact clones, and not actual unibus pdps, so we can probably mark these as non-working for now
  11. HP 9000/310 - works fine
  12. HP 9000/320 - works, but there seems to be an extra pair of ' characters in the CLI generator somewhere. For example:
    • mame.sh hp9k320 -skip_gameinfo -nosamples -window -nomax -video bgfx -sl1 98550 -sl2 '' -hard1 /Users/ajacocks/Documents/hp9k320-hdd.img -cdrm1 /Users/ajacocks/Downloads/hpux9_install.iso
  13. HP 9000/330 - works fine
  14. HP 9000/332 - works fine
  15. HP 9000/340 - works fine, seems to be some quoting issues in the CLI generator, maybe this applies to all?
  16. HP 9000/360 - works fine
  17. HP 9000/370 - works fine, doesn't find a boot device, maybe MAME?
  18. HP 9000/370 - works fine
  19. HP 9000/382 - works fine
  20. IBM PC RT 010 - can't select 5.25" disks for 5.25" drives. 3.5" drives seem to allow disk selection. Seems to suffer from similar CLI issues as the qbus pdp-11
    • for example, this:
      • mame.sh rtpc010 -skip_gameinfo -nosamples -window -nomax -video bgfx -:fdc:1 '' -flop1 '/Users/ajacocks/Downloads/IBM AIX 2.1.1 (5.25-1.2mb) [IBM RT]/maint/disk01.img'
    • should be:
      • mame.sh rtpc010 -skip_gameinfo -nosamples -window -nomax -video bgfx -isa6 fdc -isa6:fdc:fdc:0 35hd -isa6:fdc:fdc:1 525hd
    • I need to go through the floppy selection logic with a finer-toothed comb. 3.5" HD floppy drives don't seem to show up in the command-line, but 3.5" DD ones do
  21. IBM PC RT 015 - same as 010
  22. IBM PC RT 020 - same as 010
  23. IBM PC RT 025 - same as 010
  24. IBM PC RT A25 - same as 010
  25. Intergraph machines power on, but will need more investigation, as I am not familar with CLIX
  26. MIPS RC2030 - works fine
  27. MIPS RS2030 - works fine
  28. MIPS RC3230 - works fine
  29. MIPS Magnum 3000 - works fine
  30. SGI IRIS Indigo - works fine
  31. SGI Indigo 2 - works fine
  32. SGI IRIS Indigo R4000 - works fine
  33. SGI IRIS Indigo R4400 - black screen, likely MAME
  34. SGI Indy R4600 100 - works fine
  35. SGI Indy R4600 133 - works fine
  36. SGI Indy R5000 - works fine
  37. SGI Personal IRIS 4D/20 - works fine
  38. SGI Personal IRIS 4D/25 - works fine
  39. SGI Personal IRIS 4D/30 - black screen, likely MAME
  40. SGI Personal IRIS 4D/35 - works fine
  41. Sony NWS-3260 - works fine
  42. Sony NWS-3410 - flashing green cursor
  43. Sony NWS-1580 - works fine
  44. Sony NWS-5000X - works fine
  45. Sun-1 - works fine
  46. Sun 2/50 - works fine
  47. Sun 2/120 - works fine
  48. Sun 3/50 - works fine
  49. Sun 3/60 - works fine
  50. Sun 3/110 - works fine
  51. Sun 3/75-180 - works fine
  52. Sun 3/260 - works fine
  53. Sun 3/E - black screen
  54. Sun 3/80 - black screen
  55. Sun IPC - works fine
  56. Sun IPX - works fine
  57. Sun SLC - works fine
  58. Sun ELC - white screen
  59. Sun 1+ - works fine

There are lots of card selections that aren't implemented for various systems, but I can go through those in detail in a different report. This one took a few hours to test out, already!

Thanks for the additions!

ajacocks commented 11 months ago
ksherlock commented 11 months ago

Thanks for the testing and feedback. Ample tries to keep the previous selection for slots of the same name when the machine changes. For Apple II and Mac I think that makes sense, but I'll think about if there's a better way to handle that. You can right click and reset slots.

ajacocks commented 11 months ago

Glad to help!

I’d like to be able to assist with the configuration of existing machines and the addition of new ones, but I’m still working to understand the Python code.

The plists are pretty easy to understand, so I will probably start there.