aboutsummaryrefslogtreecommitdiff
path: root/emulators
diff options
context:
space:
mode:
authorPav Lucistnik <pav@FreeBSD.org>2005-07-01 15:00:55 +0000
committerPav Lucistnik <pav@FreeBSD.org>2005-07-01 15:00:55 +0000
commit662f5af60cf3cb4a4bc699428f74a40133012403 (patch)
tree7809966d22d68c002e81b029e455c3e31eb80616 /emulators
parent6170c5fe59fd8946a702117a9806267520ce7439 (diff)
downloadports-662f5af60cf3cb4a4bc699428f74a40133012403.tar.gz
ports-662f5af60cf3cb4a4bc699428f74a40133012403.zip
Notes
Diffstat (limited to 'emulators')
-rw-r--r--emulators/Makefile1
-rw-r--r--emulators/o2em/Makefile51
-rw-r--r--emulators/o2em/distinfo4
-rw-r--r--emulators/o2em/files/patch-Makefile.debug68
-rw-r--r--emulators/o2em/files/patch-Makefile.freebsd69
-rw-r--r--emulators/o2em/files/patch-audio.c11
-rw-r--r--emulators/o2em/files/patch-main.c65
-rw-r--r--emulators/o2em/files/patch-timefunc.c12
-rw-r--r--emulators/o2em/files/patch-vdc.c34
-rw-r--r--emulators/o2em/files/patch-voice.c34
-rw-r--r--emulators/o2em/pkg-descr6
-rw-r--r--emulators/o2em/pkg-message17
-rw-r--r--emulators/o2em/pkg-plist174
13 files changed, 546 insertions, 0 deletions
diff --git a/emulators/Makefile b/emulators/Makefile
index 968c68e66f3d..94e1eab76b59 100644
--- a/emulators/Makefile
+++ b/emulators/Makefile
@@ -80,6 +80,7 @@
SUBDIR += mupen64-sdlaudio
SUBDIR += mupen64-sdlinput
SUBDIR += mupen64-sound
+ SUBDIR += o2em
SUBDIR += osf1_base
SUBDIR += p-interp
SUBDIR += pcemu
diff --git a/emulators/o2em/Makefile b/emulators/o2em/Makefile
new file mode 100644
index 000000000000..6e01344c228f
--- /dev/null
+++ b/emulators/o2em/Makefile
@@ -0,0 +1,51 @@
+# New ports collection makefile for: o2em
+# Date created: 24 June 2005
+# Whom: Gunter Wambaugh <techgunter@yahoo.com>
+#
+# $FreeBSD$
+#
+
+PORTNAME= o2em
+PORTVERSION= 1.17
+CATEGORIES= emulators games
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}o2em/:1 \
+ http://o2em.sourceforge.net/files/:2
+DISTFILES= o2em117src.zip:1 \
+ o2mainsamp.zip:2
+
+MAINTAINER= techgunter@yahoo.com
+COMMENT= An Odyssey2 / Videopac console emulator
+
+LIB_DEPENDS= alleg.41:${PORTSDIR}/devel/allegro
+
+WRKSRC= ${WRKDIR}/o2em117src
+MAKEFILE= Makefile.freebsd
+USE_ZIP= yes
+USE_GMAKE= yes
+USE_REINPLACE= yes
+MAKE_ENV= LDFLAGS="${PTHREAD_LIBS}"
+
+post-extract:
+ @${FIND} -E ${WRKDIR} -type f -iregex ".*\.(c|h|txt)" -print0 | \
+ ${XARGS} -0 ${REINPLACE_CMD} -e 's/[[:cntrl:]]*$$//'
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/src/o2em ${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/src/dis48 ${PREFIX}/bin
+ @${MKDIR} ${PREFIX}/${PORTNAME}
+ @${MKDIR} ${PREFIX}/${PORTNAME}/bios
+ ${INSTALL_DATA} ${WRKSRC}/O2ROM.BIN ${PREFIX}/${PORTNAME}/bios/o2rom.bin
+ @${MKDIR} ${PREFIX}/${PORTNAME}/voice
+ ${INSTALL_DATA} ${WRKDIR}/*.WAV ${PREFIX}/${PORTNAME}/voice/
+.if !defined(NOPORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/docs/O2EM.txt ${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/docs/changelog.txt ${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/docs/license.txt ${DOCSDIR}
+.endif
+
+post-install:
+ ${MKDIR} ${PREFIX}/o2em/roms
+ @${CAT} ${PKGMESSAGE}
+
+.include <bsd.port.mk>
diff --git a/emulators/o2em/distinfo b/emulators/o2em/distinfo
new file mode 100644
index 000000000000..7127a670ea90
--- /dev/null
+++ b/emulators/o2em/distinfo
@@ -0,0 +1,4 @@
+MD5 (o2em117src.zip) = 71bcb41480aba8dd5e79149a953b26a0
+SIZE (o2em117src.zip) = 466671
+MD5 (o2mainsamp.zip) = 9910ecb7d87fcd5696dd4dd00c792e33
+SIZE (o2mainsamp.zip) = 679495
diff --git a/emulators/o2em/files/patch-Makefile.debug b/emulators/o2em/files/patch-Makefile.debug
new file mode 100644
index 000000000000..807fcf029e9e
--- /dev/null
+++ b/emulators/o2em/files/patch-Makefile.debug
@@ -0,0 +1,68 @@
+diff -urN ../o2em117src.old/Makefile.debug ./Makefile.debug
+--- ../o2em117src.old/Makefile.debug Wed Dec 31 18:00:00 1969
++++ ./Makefile.debug Fri Jun 24 16:05:27 2005
+@@ -0,0 +1,64 @@
++CC = gcc
++
++CFLAGS = -g -Wall -I${PREFIX}/include -DFREEBSD -DPREFIX=\"${PREFIX}\"
++LFLAGS =
++LIBALLEG = -L${PREFIX}/lib -lalleg -lalleg_unsharable
++
++
++all: o2em dis48
++
++clean:
++ rm -f src/audio.o src/cpu.o src/cset.o src/keyboard.o src/main.o src/table.o src/vdc.o src/vmachine.o src/debug.o src/timefunc.o src/voice.o src/crc32.o src/vpp_cset.o src/vpp.o src/dis48.o src/o2em src/dis48
++
++
++o2em: audio.o cpu.o cset.o keyboard.o main.o table.o vdc.o vmachine.o debug.o timefunc.o voice.o crc32.o vpp_cset.o vpp.o
++ $(CC) $(LFLAGS) src/audio.o src/cpu.o src/cset.o src/keyboard.o src/main.o src/table.o src/vdc.o src/vmachine.o src/debug.o src/timefunc.o src/voice.o src/crc32.o src/vpp_cset.o src/vpp.o -o src/o2em $(LIBALLEG)
++
++dis48: dis48.o table.o
++ $(CC) $(LFLAGS) src/dis48.o src/table.o -o src/dis48
++
++
++audio.o: audio.c audio.h cpu.h types.h config.h vmachine.h
++ $(CC) $(CFLAGS) -c src/audio.c -o src/audio.o
++
++cpu.o: cpu.c cpu.h types.h vmachine.h keyboard.h voice.h vdc.h vpp.h
++ $(CC) $(CFLAGS) -c src/cpu.c -o src/cpu.o
++
++cset.o: cset.c cset.h types.h
++ $(CC) $(CFLAGS) -c src/cset.c -o src/cset.o
++
++debug.o: debug.c debug.h cpu.h keyboard.h vmachine.h audio.h vdc.h table.h
++ $(CC) $(CFLAGS) -c src/debug.c -o src/debug.o
++
++dis48.o: dis48.c types.h table.h
++ $(CC) $(CFLAGS) -c src/dis48.c -o src/dis48.o
++
++keyboard.o: keyboard.c keyboard.h types.h cpu.h vmachine.h vdc.h audio.h voice.h vpp.h
++ $(CC) $(CFLAGS) -c src/keyboard.c -o src/keyboard.o
++
++main.o: main.c crc32.h audio.h vmachine.h config.h vdc.h cpu.h debug.h keyboard.h voice.h
++ $(CC) $(CFLAGS) -c src/main.c -o src/main.o
++
++table.o: table.c table.h cpu.h
++ $(CC) $(CFLAGS) -c src/table.c -o src/table.o
++
++vdc.o: vdc.c vdc.h types.h vmachine.h config.h keyboard.h cset.h timefunc.h cpu.h vpp.h
++ $(CC) $(CFLAGS) -c src/vdc.c -o src/vdc.o
++
++vmachine.o: vmachine.c vmachine.h audio.h types.h cpu.h keyboard.h config.h debug.h vdc.h vpp.h timefunc.h voice.h
++ $(CC) $(CFLAGS) -c src/vmachine.c -o src/vmachine.o
++
++timefunc.o: timefunc.c timefunc.h
++ $(CC) $(CFLAGS) -c src/timefunc.c -o src/timefunc.o
++
++voice.o: voice.c voice.h vmachine.h cpu.h
++ $(CC) $(CFLAGS) -c src/voice.c -o src/voice.o
++
++crc32.o: crc32.c crc32.h
++ $(CC) $(CFLAGS) -c src/crc32.c -o src/crc32.o
++
++vpp_cset.o: vpp_cset.c vpp_cset.h
++ $(CC) $(CFLAGS) -c src/vpp_cset.c -o src/vpp_cset.o
++
++vpp.o: vpp.c vpp.h types.h vpp_cset.h vmachine.h vdc.h
++ $(CC) $(CFLAGS) -c src/vpp.c -o src/vpp.o
diff --git a/emulators/o2em/files/patch-Makefile.freebsd b/emulators/o2em/files/patch-Makefile.freebsd
new file mode 100644
index 000000000000..ec3254c3a3e5
--- /dev/null
+++ b/emulators/o2em/files/patch-Makefile.freebsd
@@ -0,0 +1,69 @@
+diff -urN ../o2em117src.old/Makefile.freebsd ./Makefile.freebsd
+--- ../o2em117src.old/Makefile.freebsd Wed Dec 31 18:00:00 1969
++++ ./Makefile.freebsd Fri Jun 24 16:05:40 2005
+@@ -0,0 +1,65 @@
++CC = gcc
++
++CFLAGS = -O3 -Wall -fomit-frame-pointer -I${PREFIX}/include -DFREEBSD -DPREFIX=\"${PREFIX}\"
++LFLAGS = -s ${LDFLAGS}
++LIBALLEG = -L${PREFIX}/lib -lalleg -lalleg_unsharable
++
++
++all: o2em dis48
++
++clean:
++ rm -f src/audio.o src/cpu.o src/cset.o src/keyboard.o src/main.o src/table.o src/vdc.o src/vmachine.o src/debug.o src/timefunc.o src/voice.o src/crc32.o src/vpp_cset.o src/vpp.o src/dis48.o src/o2em src/dis48
++
++
++o2em: audio.o cpu.o cset.o keyboard.o main.o table.o vdc.o vmachine.o debug.o timefunc.o voice.o crc32.o vpp_cset.o vpp.o
++ $(CC) $(LFLAGS) src/audio.o src/cpu.o src/cset.o src/keyboard.o src/main.o src/table.o src/vdc.o src/vmachine.o src/debug.o src/timefunc.o src/voice.o src/crc32.o src/vpp_cset.o src/vpp.o -o src/o2em $(LIBALLEG)
++
++dis48: dis48.o table.o
++ $(CC) $(LFLAGS) src/dis48.o src/table.o -o src/dis48
++
++
++audio.o: audio.c audio.h cpu.h types.h config.h vmachine.h
++ $(CC) $(CFLAGS) -c src/audio.c -o src/audio.o
++
++cpu.o: cpu.c cpu.h types.h vmachine.h keyboard.h voice.h vdc.h vpp.h
++ $(CC) $(CFLAGS) -c src/cpu.c -o src/cpu.o
++
++cset.o: cset.c cset.h types.h
++ $(CC) $(CFLAGS) -c src/cset.c -o src/cset.o
++
++debug.o: debug.c debug.h cpu.h keyboard.h vmachine.h audio.h vdc.h table.h
++ $(CC) $(CFLAGS) -c src/debug.c -o src/debug.o
++
++dis48.o: dis48.c types.h table.h
++ $(CC) $(CFLAGS) -c src/dis48.c -o src/dis48.o
++
++keyboard.o: keyboard.c keyboard.h types.h cpu.h vmachine.h vdc.h audio.h voice.h vpp.h
++ $(CC) $(CFLAGS) -c src/keyboard.c -o src/keyboard.o
++
++main.o: main.c crc32.h audio.h vmachine.h config.h vdc.h cpu.h debug.h keyboard.h voice.h
++ $(CC) $(CFLAGS) -c src/main.c -o src/main.o
++
++table.o: table.c table.h cpu.h
++ $(CC) $(CFLAGS) -c src/table.c -o src/table.o
++
++vdc.o: vdc.c vdc.h types.h vmachine.h config.h keyboard.h cset.h timefunc.h cpu.h vpp.h
++ $(CC) $(CFLAGS) -c src/vdc.c -o src/vdc.o
++
++vmachine.o: vmachine.c vmachine.h audio.h types.h cpu.h keyboard.h config.h debug.h vdc.h vpp.h timefunc.h voice.h
++ $(CC) $(CFLAGS) -c src/vmachine.c -o src/vmachine.o
++
++timefunc.o: timefunc.c timefunc.h
++ $(CC) $(CFLAGS) -c src/timefunc.c -o src/timefunc.o
++
++voice.o: voice.c voice.h vmachine.h cpu.h
++ $(CC) $(CFLAGS) -c src/voice.c -o src/voice.o
++
++crc32.o: crc32.c crc32.h
++ $(CC) $(CFLAGS) -c src/crc32.c -o src/crc32.o
++
++vpp_cset.o: vpp_cset.c vpp_cset.h
++ $(CC) $(CFLAGS) -c src/vpp_cset.c -o src/vpp_cset.o
++
++vpp.o: vpp.c vpp.h types.h vpp_cset.h vmachine.h vdc.h
++ $(CC) $(CFLAGS) -c src/vpp.c -o src/vpp.o
++
diff --git a/emulators/o2em/files/patch-audio.c b/emulators/o2em/files/patch-audio.c
new file mode 100644
index 000000000000..568483e65669
--- /dev/null
+++ b/emulators/o2em/files/patch-audio.c
@@ -0,0 +1,11 @@
+--- ../o2em117src.old/src/audio.c Sat Jun 25 13:41:39 2005
++++ ./src/audio.c Sat Jun 25 13:42:08 2005
+@@ -118,7 +118,7 @@
+ if (digi_driver->name && (strlen(digi_driver->name)>0)){
+ printf(" Sound system initialized ok\n");
+ printf(" Sound driver [%s] detected\n",digi_driver->name);
+- set_volume(255,255);
++ set_volume(-1,-1);
+ init_sound_stream();
+ } else {
+ printf(" ERROR: could not initialize sound card\n");
diff --git a/emulators/o2em/files/patch-main.c b/emulators/o2em/files/patch-main.c
new file mode 100644
index 000000000000..2ad7932bb708
--- /dev/null
+++ b/emulators/o2em/files/patch-main.c
@@ -0,0 +1,65 @@
+--- ../o2em117src.old/src/main.c Sat Jun 25 12:17:20 2005
++++ ./src/main.c Sat Jun 25 12:11:50 2005
+@@ -84,7 +84,7 @@
+
+ if (argc < 2) {
+ printf("Use: o2em <file> [options]\n");
+- printf("<file> = file to load with extension\n");
++ printf("<file> = file to load\n");
+ #ifndef ALLEGRO_DOS
+ printf("-wsize=n Window size (1-4)\n");
+ printf("-fullscreen Full screen mode\n");
+@@ -148,7 +148,6 @@
+ strcpy(xrom,"");
+ read_default_config();
+
+- strcpy(file,"roms/");
+ for(i=1; i<argc; i++) {
+ if (argv[i][0] != '-') {
+ strncat(file,argv[i],MAXC-1);
+@@ -186,20 +185,11 @@
+ init_audio();
+ printf("Using Allegro %s\n",allegro_id);
+
+- strcpy (xrom, "roms/");
+- file_name(xrom);
+-
+- if (contax < 3)
+- {
+- printf("\nROMs directory empty!\n");
+- exit(EXIT_FAILURE);
+- }
+-
+ app_data.crc = crc32_file(file);
+ crcx = app_data.crc;
+- suck_roms();
+
+- strcpy (xbios, "bios/");
++ strcpy (xbios, PREFIX);
++ strcat (xbios, "/o2em/bios/");
+ file_name(xbios);
+ suck_bios();
+
+@@ -215,7 +205,10 @@
+ if (!strcmp(bios,"g7400")) strcpy(bios,g7400);
+ if (!strcmp(bios,"c52")) strcpy(bios,c52);
+ if (!strcmp(bios,"jopac")) strcpy(bios,jopac);
+- if ((!strcmp(bios,"")) || (!strcmp(bios,"o2rom"))) strcpy(bios,"bios/o2rom.bin");
++ if ((!strcmp(bios,"")) || (!strcmp(bios,"o2rom"))){
++ strcpy(bios, PREFIX);
++ strcat(bios,"/o2em/bios/o2rom.bin");
++ }
+
+
+
+@@ -630,8 +623,8 @@
+ int i;
+ for (i=0; i<contax; ++i)
+ {
+-
+- strcpy(biossux,"bios/");
++ strcpy(biossux, PREFIX);
++ strcat(biossux,"/o2em/bios/");
+ strcat(biossux,arkivo[i]);
+
+ app_data.crc = crc32_file(biossux);
diff --git a/emulators/o2em/files/patch-timefunc.c b/emulators/o2em/files/patch-timefunc.c
new file mode 100644
index 000000000000..32635efa6b45
--- /dev/null
+++ b/emulators/o2em/files/patch-timefunc.c
@@ -0,0 +1,12 @@
+diff -urN ../o2em117src.old/src/timefunc.c ./src/timefunc.c
+--- ../o2em117src.old/src/timefunc.c Fri Jun 24 16:02:21 2005
++++ ./src/timefunc.c Fri Jun 24 16:00:46 2005
+@@ -43,7 +43,7 @@
+
+ #elif defined(ALLEGRO_UNIX) || defined(ALLEGRO_LINUX)
+
+-#ifdef _BSD_SOURCE
++#if defined(_BSD_SOURCE) || defined(FREEBSD)
+
+ /* Unix with gettimeofday */
+ long gettimeticks(void){
diff --git a/emulators/o2em/files/patch-vdc.c b/emulators/o2em/files/patch-vdc.c
new file mode 100644
index 000000000000..68014ea39e1f
--- /dev/null
+++ b/emulators/o2em/files/patch-vdc.c
@@ -0,0 +1,34 @@
+diff -urN ../o2em117src.old/src/vdc.c ./src/vdc.c
+--- ../o2em117src.old/src/vdc.c Fri Jun 24 16:02:21 2005
++++ ./src/vdc.c Fri Jun 24 16:00:34 2005
+@@ -339,8 +339,7 @@
+ last=t;
+ }
+ if (curr) {
+- text_mode(0);
+- textprintf(bmp, font, 20 , 4, 7, "FPS: %3d",(int)((200.0*TICKSPERSEC)/curr+0.5));
++ textprintf_ex(bmp, font, 20, 4, 7, 0, "FPS: %3d",(int)((200.0*TICKSPERSEC)/curr+0.5));
+ }
+ }
+
+@@ -528,9 +527,8 @@
+
+
+ static void txtmsg(int x, int y, int c, const char *s){
+- text_mode(-1);
+- textout_centre(bmp, font, s, x+1 , y+1, 32);
+- textout_centre(bmp, font, s, x , y, c);
++ textout_centre_ex(bmp, font, s, x+1 , y+1, 32, -1);
++ textout_centre_ex(bmp, font, s, x , y, c, -1);
+ }
+
+
+@@ -604,7 +602,6 @@
+ init_keyboard();
+ }
+
+- set_window_close_button(TRUE);
+- set_window_close_hook(window_close_hook);
++ set_close_button_callback(window_close_hook);
+
+ }
diff --git a/emulators/o2em/files/patch-voice.c b/emulators/o2em/files/patch-voice.c
new file mode 100644
index 000000000000..811f2a85518c
--- /dev/null
+++ b/emulators/o2em/files/patch-voice.c
@@ -0,0 +1,34 @@
+--- ../o2em117src.old/src/voice.c Sat Jun 25 12:47:22 2005
++++ src/voice.c Sat Jun 25 12:47:27 2005
+@@ -21,6 +21,7 @@
+ #include "voice.h"
+ #include "allegro.h"
+
++#define MAXC 1024
+
+ static SAMPLE *voices[9][128];
+ static int voice_bank=0;
+@@ -33,7 +34,7 @@
+
+ void load_voice_samples(void){
+ int bank, sam, i, ld=0;
+- char name[40];
++ char name[MAXC];
+ SAMPLE *sp=NULL;
+
+ printf("Loading voice samples... ");
+@@ -47,12 +48,12 @@
+ else
+ bank = 0xE4;
+
+- sprintf(name,"voice/%02x%02x.wav",bank,sam+0x80);
++ sprintf(name,"%s/o2em/voice/%02x%02x.wav",PREFIX,bank,sam+0x80);
+
+ voices[i][sam] = load_sample(name);
+
+ if (!voices[i][sam]) {
+- sprintf(name,"voice/%02X%02X.WAV",bank,sam+0x80);
++ sprintf(name,"%s/o2em/voice/%02X%02X.WAV",PREFIX,bank,sam+0x80);
+ voices[i][sam] = load_sample(name);
+ }
+
diff --git a/emulators/o2em/pkg-descr b/emulators/o2em/pkg-descr
new file mode 100644
index 000000000000..e50487d7dde2
--- /dev/null
+++ b/emulators/o2em/pkg-descr
@@ -0,0 +1,6 @@
+Odyssey2 / Videopac+ emulator.
+
+WWW: http://o2em.sourceforge.net/
+
+- Gunter Wambaugh
+techgunter@yahoo.com
diff --git a/emulators/o2em/pkg-message b/emulators/o2em/pkg-message
new file mode 100644
index 000000000000..c0d5302f60f9
--- /dev/null
+++ b/emulators/o2em/pkg-message
@@ -0,0 +1,17 @@
+===============================================================================
+ * The Odyessey2 ROM is included in the source, although the documentation says
+ it isn't.
+ * The main voice samples are included with this port, but not the sidsamp
+ which are only used by Sid the Spellbinder. If you need these, put them in
+ PREFIX/o2em/voice/.
+ * No cartridge ROMS are included.
+ * o2em has been patched to better fit with FreeBSD:
+ - don't assume the CWD contains roms/ bios/ voice/
+ - don't restrict the location of ROMS to roms/
+ - use the correct implementation of gettimeticks() for FreeBSD
+ - allow for the use of PREFIX when building
+ - don't set the volume to the MAX at runtime
+ - be compliant with allegro 4.1.12
+
+Read O2EM.txt.
+===============================================================================
diff --git a/emulators/o2em/pkg-plist b/emulators/o2em/pkg-plist
new file mode 100644
index 000000000000..9a251b7ad4ea
--- /dev/null
+++ b/emulators/o2em/pkg-plist
@@ -0,0 +1,174 @@
+bin/o2em
+bin/dis48
+%%PORTDOCS%%%%DOCSDIR%%/O2EM.txt
+%%PORTDOCS%%%%DOCSDIR%%/changelog.txt
+%%PORTDOCS%%%%DOCSDIR%%/license.txt
+@exec mkdir -p %D/o2em/roms
+o2em/bios/o2rom.bin
+o2em/voice/E480.WAV
+o2em/voice/E481.WAV
+o2em/voice/E482.WAV
+o2em/voice/E483.WAV
+o2em/voice/E484.WAV
+o2em/voice/E485.WAV
+o2em/voice/E486.WAV
+o2em/voice/E487.WAV
+o2em/voice/E488.WAV
+o2em/voice/E489.WAV
+o2em/voice/E48A.WAV
+o2em/voice/E48B.WAV
+o2em/voice/E48C.WAV
+o2em/voice/E48D.WAV
+o2em/voice/E48E.WAV
+o2em/voice/E48F.WAV
+o2em/voice/E490.WAV
+o2em/voice/E491.WAV
+o2em/voice/E492.WAV
+o2em/voice/E493.WAV
+o2em/voice/E494.WAV
+o2em/voice/E495.WAV
+o2em/voice/E496.WAV
+o2em/voice/E497.WAV
+o2em/voice/E498.WAV
+o2em/voice/E499.WAV
+o2em/voice/E49A.WAV
+o2em/voice/E49B.WAV
+o2em/voice/E49C.WAV
+o2em/voice/E49D.WAV
+o2em/voice/E49E.WAV
+o2em/voice/E49F.WAV
+o2em/voice/E4A0.WAV
+o2em/voice/E4A1.WAV
+o2em/voice/E4A2.WAV
+o2em/voice/E4A3.WAV
+o2em/voice/E4A4.WAV
+o2em/voice/E4A5.WAV
+o2em/voice/E4A6.WAV
+o2em/voice/E4A7.WAV
+o2em/voice/E4A8.WAV
+o2em/voice/E4A9.WAV
+o2em/voice/E4AA.WAV
+o2em/voice/E4AB.WAV
+o2em/voice/E4AC.WAV
+o2em/voice/E4AD.WAV
+o2em/voice/E4AE.WAV
+o2em/voice/E4AF.WAV
+o2em/voice/E4B0.WAV
+o2em/voice/E4B1.WAV
+o2em/voice/E4B2.WAV
+o2em/voice/E4B3.WAV
+o2em/voice/E4B4.WAV
+o2em/voice/E4B5.WAV
+o2em/voice/E4B6.WAV
+o2em/voice/E4B7.WAV
+o2em/voice/E4B8.WAV
+o2em/voice/E4B9.WAV
+o2em/voice/E4BA.WAV
+o2em/voice/E4BB.WAV
+o2em/voice/E4BC.WAV
+o2em/voice/E4BD.WAV
+o2em/voice/E4BE.WAV
+o2em/voice/E4BF.WAV
+o2em/voice/E4C0.WAV
+o2em/voice/E4C1.WAV
+o2em/voice/E4C2.WAV
+o2em/voice/E4C3.WAV
+o2em/voice/E4C4.WAV
+o2em/voice/E4C5.WAV
+o2em/voice/E4C6.WAV
+o2em/voice/E4C7.WAV
+o2em/voice/E4C8.WAV
+o2em/voice/E4C9.WAV
+o2em/voice/E4CA.WAV
+o2em/voice/E4FA.WAV
+o2em/voice/E4FB.WAV
+o2em/voice/E880.WAV
+o2em/voice/E881.WAV
+o2em/voice/E882.WAV
+o2em/voice/E883.WAV
+o2em/voice/E884.WAV
+o2em/voice/E885.WAV
+o2em/voice/E886.WAV
+o2em/voice/E887.WAV
+o2em/voice/E888.WAV
+o2em/voice/E889.WAV
+o2em/voice/E88A.WAV
+o2em/voice/E88B.WAV
+o2em/voice/E88C.WAV
+o2em/voice/E88D.WAV
+o2em/voice/E88E.WAV
+o2em/voice/E88F.WAV
+o2em/voice/E890.WAV
+o2em/voice/E891.WAV
+o2em/voice/E892.WAV
+o2em/voice/E893.WAV
+o2em/voice/E894.WAV
+o2em/voice/E895.WAV
+o2em/voice/E980.WAV
+o2em/voice/E981.WAV
+o2em/voice/E982.WAV
+o2em/voice/E983.WAV
+o2em/voice/E984.WAV
+o2em/voice/E985.WAV
+o2em/voice/E986.WAV
+o2em/voice/E987.WAV
+o2em/voice/E988.WAV
+o2em/voice/E989.WAV
+o2em/voice/E98A.WAV
+o2em/voice/E98B.WAV
+o2em/voice/E98C.WAV
+o2em/voice/E98D.WAV
+o2em/voice/E98E.WAV
+o2em/voice/E98F.WAV
+o2em/voice/E990.WAV
+o2em/voice/E991.WAV
+o2em/voice/E992.WAV
+o2em/voice/E993.WAV
+o2em/voice/E994.WAV
+o2em/voice/E995.WAV
+o2em/voice/E996.WAV
+o2em/voice/EA80.WAV
+o2em/voice/EA81.WAV
+o2em/voice/EA82.WAV
+o2em/voice/EA83.WAV
+o2em/voice/EA84.WAV
+o2em/voice/EA85.WAV
+o2em/voice/EA86.WAV
+o2em/voice/EA87.WAV
+o2em/voice/EA88.WAV
+o2em/voice/EA89.WAV
+o2em/voice/EA8A.WAV
+o2em/voice/EA8B.WAV
+o2em/voice/EA8C.WAV
+o2em/voice/EA8D.WAV
+o2em/voice/EA8E.WAV
+o2em/voice/EA8F.WAV
+o2em/voice/EA90.WAV
+o2em/voice/EA91.WAV
+o2em/voice/EA92.WAV
+o2em/voice/EA93.WAV
+o2em/voice/EA94.WAV
+o2em/voice/EA95.WAV
+o2em/voice/EA96.WAV
+o2em/voice/EA97.WAV
+o2em/voice/EA98.WAV
+o2em/voice/EA99.WAV
+o2em/voice/EA9A.WAV
+o2em/voice/EA9B.WAV
+o2em/voice/EA9C.WAV
+o2em/voice/EA9D.WAV
+o2em/voice/EA9E.WAV
+o2em/voice/EA9F.WAV
+o2em/voice/EAA0.WAV
+o2em/voice/EAA1.WAV
+o2em/voice/EAA2.WAV
+o2em/voice/EAA3.WAV
+o2em/voice/EAA4.WAV
+o2em/voice/EAA5.WAV
+o2em/voice/EAA6.WAV
+o2em/voice/EAA7.WAV
+@dirrm o2em/voice
+@dirrm o2em/bios
+@dirrm o2em/roms
+@dirrm o2em
+%%PORTDOCS%%@dirrm %%DOCSDIR%%