1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#!/usr/bin/env python3
"""gbjoin - launch a windowed Game Boy and plug its link port into a running
gbhub, so it joins the shared network (gets a DHCP lease, can talk to the other
Game Boys and the internet). Start the hub first, in its own terminal:
sudo tools/gbhub --daemon
Then, one per terminal:
tools/gbjoin # sixel + Game Boy chrome (default)
tools/gbjoin --palette green # any sl0pboy display options pass through
No root needed (the hub opens the link socket world-connectable). On the Game
Boy: SELECT toggles the on-screen keyboard, then type e.g. ping 10.0.0.3.
"""
import os, sys, subprocess, shutil
HOME = os.path.expanduser("~")
EMU = os.path.join(HOME, "dev/gbc/build/sl0pboy")
ROM = os.path.join(HOME, "dev/gbos/gbos.gb")
SOCK = "/tmp/gbhub.sock"
if not os.path.exists(EMU): sys.exit("gbjoin: emulator not found at " + EMU)
if not os.path.exists(SOCK):
sys.exit("gbjoin: no hub at %s - start it first: sudo tools/gbhub --daemon" % SOCK)
opts = sys.argv[1:] or ["--sixel", "--chrome"]
rom = "/tmp/gbjoin_%d.gb" % os.getpid() # our own copy so battery saves don't clash
shutil.copyfile(ROM, rom)
os.execvp(EMU, [EMU] + opts + ["--serial-sock", SOCK, rom])
|