@Substring although nowadays there are Betabrites that attach directly to the USB port, they are exceedingly difficult to come by, your classic Betabrite sign will attach to a serial (COM port), which I believe can be emulated through the GPIO ? Many years ago a spent considerable time catching data form serial ports and figuring out how to send messages to Betabrite signs, even wrote a couple programs in Qbasic as I recall to accomplish this task, once correct strings were determined on how to send messages I forwarded this info to a number of people in the arcade community (much better programmers than myself) whom implemented it in various ways.
I will dig out the information, but the first question is does the raspberry Pi have means to communicate through standard Serial interface (Not USB) ?
HERE is my original program from 2005 designed to generate Individual ASCII files for each mame game (which were all placed in an LCD Directory and called upon before running each game)
CLS
PRINT ""
PRINT "* BETABRITE/MAME LCD FILE GENERATOR *"
PRINT ""
PRINT "* "
PRINT " Version: 1.0 "
PRINT " Author : Tony Jimenez "
PRINT " E-mail : Tony@780tech.com "
PRINT " *"
PRINT "*****************************************************************************"
PRINT
PRINT " Application MUST be run from INSIDE the MAME folder"
PRINT
PRINT " Would you like <D>ynamic sign or <S>tatic sign"
1 a$ = INKEY$
IF a$ = "" THEN GOTO 1
IF UCASE$(a$) = "S" THEN GOSUB 4000 ELSE GOSUB 5000
PRINT
PRINT " Making LCD Directory"
PRINT
PRINT " AN Extended Error 183 indicates the folder ALREADY exists"
PRINT
SHELL " MD LCD"
PRINT
PRINT ""
PRINT
PRINT " GENERATING GAMELIST.TXT"
PRINT
PRINT " A BAD COMMAND OR FILE NAME Error indicates you are NOT in MAME folder"
PRINT
SHELL "mame -listfull > gamelist.txt"
PRINT
PRINT ""
item = 0
OPEN "GAMELIST.TXT" FOR INPUT AS #2: INPUT #2, text$
REM PRINT TEXT$
10
REM *****************
REM CYCLE BEGINS HERE
REM *****************
LINE INPUT #2, text$
name$ = ""
FOR a = 1 TO LEN(text$)
IF MID$(text$, a, 1) <> " " THEN name$ = name$ + MID$(text$, a, 1) ELSE GOTO 1000
NEXT
1000
desc$ = ""
a = a + 1
IF MID$(text$, a, 1) = " " THEN GOTO 1000
FOR b = (a + 1) TO (LEN(text$) - 1)
desc$ = desc$ + MID$(text$, b, 1)
NEXT
REM PRINT "Description : "; desc$
name$ = "lcd" + name$ + ".lcd"
REM PRINT name$
OPEN name$ FOR OUTPUT AS #3
desc$ = PF$ + desc$ + SF$
PRINT #3, desc$
CLOSE #3
item = item + 1
LOCATE 35, 3: PRINT "Processing Item #"; item
IF EOF(2) <> -1 THEN PRINT : GOTO 10
END
4000 REM STATIC SIGN
PF$ = CHR$(112)
PF$ = PF$ + CHR$(81)
PF$ = PF$ + CHR$(232)
PF$ = PF$ + CHR$(192)
PF$ = PF$ + CHR$(143)
PF$ = PF$ + CHR$(156)
PF$ = PF$ + CHR$(197)
PF$ = PF$ + CHR$(1)
PF$ = PF$ + CHR$(88)
PF$ = PF$ + CHR$(120)
PF$ = PF$ + CHR$(181)
PF$ = PF$ + CHR$(1)
PF$ = PF$ + CHR$(1)
PF$ = PF$ + CHR$(90)
PF$ = PF$ + CHR$(48)
PF$ = PF$ + CHR$(48)
PF$ = PF$ + CHR$(2)
PF$ = PF$ + CHR$(65)
PF$ = PF$ + CHR$(65)
PF$ = PF$ + CHR$(27)
PF$ = PF$ + CHR$(32)
PF$ = PF$ + CHR$(98)
SF$ = CHR$(4)
RETURN
5000 REM DYNAMIC SIGN
PF$ = CHR$(112)
PF$ = PF$ + CHR$(81)
PF$ = PF$ + CHR$(232)
PF$ = PF$ + CHR$(192)
PF$ = PF$ + CHR$(143)
PF$ = PF$ + CHR$(156)
PF$ = PF$ + CHR$(197)
PF$ = PF$ + CHR$(1)
PF$ = PF$ + CHR$(88)
PF$ = PF$ + CHR$(120)
PF$ = PF$ + CHR$(181)
PF$ = PF$ + CHR$(1)
PF$ = PF$ + CHR$(1)
PF$ = PF$ + CHR$(90)
PF$ = PF$ + CHR$(48)
PF$ = PF$ + CHR$(48)
PF$ = PF$ + CHR$(2)
PF$ = PF$ + CHR$(65)
PF$ = PF$ + CHR$(65)
SF$ = CHR$(4)
SF$ = SF$ + CHR$(114)
SF$ = SF$ + CHR$(14)
SF$ = SF$ + CHR$(64)
SF$ = SF$ + CHR$(27)
SF$ = SF$ + CHR$(8)
RETURN