Difference between revisions of "Guides:MAME - Networking"

From Wah!ki
Jump to navigation Jump to search
Line 1: Line 1:
just notes here
 
 
 
== (Ether)net Networking in MAME ==
 
== (Ether)net Networking in MAME ==
 
Support was added back in ~2012 but the documentation is fragmented.  
 
Support was added back in ~2012 but the documentation is fragmented.  
Line 11: Line 9:
 
* route traffic out the hosts eth int
 
* route traffic out the hosts eth int
  
MAME only looks at the /dev/net/tun device currently (0.229)
+
MAME only looks at the /dev/net/tun device currently (0.229) so it wont support macvtap devices etc atm.
  
  
Line 25: Line 23:
 
=== tap device setup ===
 
=== tap device setup ===
 
==== Manual setup ====
 
==== Manual setup ====
 +
# Allow forwarded traffic, and proxied arp requests
 +
# Create a tap device and route traffic across you host ethernet
 +
<nowiki>
 +
  # echo 1 > /proc/sys/net/ipv4/ip_forward
 +
  # echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
  
 +
  $ MAMESTATIC=192.168.0.102
 +
  $ HOSTIP=192.168.0.200
 +
  $ TAP=mametap0
 +
  $ USERNAME=$(whoami)
 +
  $ sudo ip tuntap add dev $TAP mode tap user $USERNAME
 +
  $ sudo ip link set $TAP up arp on
 +
  $ sudo ip addr replace dev $TAP $HOSTIP/32
 +
  $ sudo ip route replace $MAMESTATIC via $HOSTIP dev $TAP
  
 +
  $ ip link show $TAP
 +
  $ ip route
 +
</nowiki>
 
==== MAME Script ====
 
==== MAME Script ====
 
MAME has a script in the git repo /src/osd/sdl/tunsetup.sh
 
MAME has a script in the git repo /src/osd/sdl/tunsetup.sh
  
NOTE: be mind of this script, it will not honor existing tap perms nor kernel settings and will just blindly run its own
+
'''NOTE:''' be mindful of this script, it will not honor existing tap perms nor kernel settings and will just blindly run its own
  
 
==== MAME Setup ====
 
==== MAME Setup ====
Line 36: Line 50:
 
* open the Network Devices menu and select "TAP/TUN Device"
 
* open the Network Devices menu and select "TAP/TUN Device"
 
* Confirm the IRQ under machine configuration is correct  
 
* Confirm the IRQ under machine configuration is correct  
 
  
 
===== IRQs =====
 
===== IRQs =====
Line 45: Line 58:
  
 
The IRQ used by the ne2000 adapter would only work on IRQ2/9
 
The IRQ used by the ne2000 adapter would only work on IRQ2/9
 
  
 
==== DOS Setup ====
 
==== DOS Setup ====
Line 58: Line 70:
 
* https://dos.retro.software/downloads/category/300-ne2000-compatible-nic-drivers
 
* https://dos.retro.software/downloads/category/300-ne2000-compatible-nic-drivers
 
* https://www.brutman.com/mTCP/mTCP.html
 
* https://www.brutman.com/mTCP/mTCP.html
 
  
 
== References ==
 
== References ==

Revision as of 13:41, 20 March 2021

(Ether)net Networking in MAME

Support was added back in ~2012 but the documentation is fragmented.

Very basically you will

  • give the MAME machine a static ip internally,

on the host

  • tweak some ipv4 network behavior
  • create a basic tap device
  • route traffic out the hosts eth int

MAME only looks at the /dev/net/tun device currently (0.229) so it wont support macvtap devices etc atm.


List MAME Networks

mame -listnetwork will display available devices as per below

$ ./mame -listnetwork
Available network adapters:
    TAP/TUN Device


tap device setup

Manual setup

  1. Allow forwarded traffic, and proxied arp requests
  2. Create a tap device and route traffic across you host ethernet
  # echo 1 > /proc/sys/net/ipv4/ip_forward
  # echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp

  $ MAMESTATIC=192.168.0.102
  $ HOSTIP=192.168.0.200
  $ TAP=mametap0
  $ USERNAME=$(whoami)
  $ sudo ip tuntap add dev $TAP mode tap user $USERNAME
  $ sudo ip link set $TAP up arp on
  $ sudo ip addr replace dev $TAP $HOSTIP/32
  $ sudo ip route replace $MAMESTATIC via $HOSTIP dev $TAP 

  $ ip link show $TAP
  $ ip route

MAME Script

MAME has a script in the git repo /src/osd/sdl/tunsetup.sh

NOTE: be mindful of this script, it will not honor existing tap perms nor kernel settings and will just blindly run its own

MAME Setup

In the in-game UI

  • open the Network Devices menu and select "TAP/TUN Device"
  • Confirm the IRQ under machine configuration is correct
IRQs

Just a note on my config,

  • ISA1 svga_s1,
  • ISA2, sblaster_16 (IRQ5)
  • ISA4 ne2000.

The IRQ used by the ne2000 adapter would only work on IRQ2/9

DOS Setup

Load the ne2000 drivers from in autoexec.bat, try auto discovery first

c:\PATH\TO\NE2000.COM 0x60

A decent test suite of tools while getting setup is the mTCP project, refer to their doco to setup the config etc. but remove LEASE_TIME from the ip settings to set a static ip for use with the applications otherwise the applications will throw a lease expired warning and exit

Drivers/Software

References


NOT NEEDED

kept for reference for the time being


compile with USE_NETWORK=1 (became default in 0.154?)

OSD_NET_USE_TAPTUN=1 might be required as well to pull in the source, dunno man I don't do c stuff

#if defined(OSD_NET_USE_TAPTUN)


sudo ip link add link enp4s0 name mametap0 type macvtap
sudo ip link set mametap0 address 00:00:1B:4A:3A:F2 up
ip link show mametap0

sudo ip link delete mametap0

sudo ip tuntap del dev mametap0 mode tap group netdev
sudo ip tuntap del dev mametap0 mode tap