User Tools

Site Tools


mspacman:pi

This is an old revision of the document!


pi@pi ~/src/sdlmame0136 $ make
Compiling src/emu/cpu/m68000/m68kmake.c...
/bin/sh: 1: sdl-config: not found
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
Package gconf-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gconf-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gconf-2.0' found
^Cmake: *** [obj/sdl/mame/emu/cpu/m68000/m68kmake.o] Interrupt
pi@pi ~/src/sdlmame0136 $ sudo apt-get install libsdl1.2-dev libsdl-gfx1.2-dev
Reading package lists... Done
Building dependency tree        
Reading state information... Done
The following extra packages will be installed:
  libasound2-dev libavahi-client-dev libavahi-common-dev libcaca-dev libdbus-1-dev libdirectfb-dev libdirectfb-extra libelf1 libgl1-mesa-dev libglib2.0-bin libglib2.0-dev
  libglu1-mesa libglu1-mesa-dev libjpeg8-dev libpcre3-dev libpcrecpp0 libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libpulse-dev libpulse-mainloop-glib0 libsdl-gfx1.2-4
  libslang2-dev libts-dev libx11-dev libx11-doc libxau-dev libxcb1-dev libxdmcp-dev libxext-dev mesa-common-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev
  x11proto-xext-dev xorg-sgml-doctools xtrans-dev
Suggested packages:
  libasound2-doc libglib2.0-doc libsdl-gfx1.2-doc libxcb-doc libxext-doc
The following NEW packages will be installed:
  libasound2-dev libavahi-client-dev libavahi-common-dev libcaca-dev libdbus-1-dev libdirectfb-dev libdirectfb-extra libelf1 libgl1-mesa-dev libglib2.0-bin libglib2.0-dev
  libglu1-mesa libglu1-mesa-dev libjpeg8-dev libpcre3-dev libpcrecpp0 libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libpulse-dev libpulse-mainloop-glib0 libsdl-gfx1.2-4
  libsdl-gfx1.2-dev libsdl1.2-dev libslang2-dev libts-dev libx11-dev libx11-doc libxau-dev libxcb1-dev libxdmcp-dev libxext-dev mesa-common-dev x11proto-core-dev x11proto-input-dev
  x11proto-kb-dev x11proto-xext-dev xorg-sgml-doctools xtrans-dev
0 upgraded, 39 newly installed, 0 to remove and 0 not upgraded.
Need to get 14.6 MB of archives.
After this operation, 44.4 MB of additional disk space will be used.
Do you want to continue [Y/n]? y

pi@pi ~/src/sdlmame0136 $ make
Compiling src/emu/cpu/m68000/m68kmake.c...
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
Package gconf-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gconf-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gconf-2.0' found
^Cmake: *** [obj/sdl/mame/emu/cpu/m68000/m68kmake.o] Interrupt

pi@pi ~/src/sdlmame0136 $ sudo apt-cache search gtk+-2.0
gir1.2-gtk-2.0 - GTK+ graphical user interface library -- gir bindings
pi@pi ~/src/sdlmame0136 $ cat /etc/issue
Raspbian GNU/Linux 7 \n \l

pi@pi ~/src/sdlmame0136 $ sudo apt-cache search gtk+2.0
gtk2-engines-xfce - GTK+-2.0 theme engine for Xfce
gtk2.0-examples - example files for GTK+ 2.0
lazarus-ide-gtk2-0.9.30.4 - IDE for Free Pascal - GTK+ version
lcl-gtk2-0.9.30.4 - Lazarus Components Library - GTK+ backend
libgirara-gtk2-0 - library for minimalistic user interfaces (shared libraries, GTK+ 2)
libgtk2.0-0 - GTK+ graphical user interface library
libgtk2.0-0-dbg - GTK+ libraries and debugging symbols
libgtk2.0-bin - programs for the GTK+ graphical user interface library
libgtk2.0-cil - CLI binding for the GTK+ toolkit 2.12
libgtk2.0-cil-dev - CLI binding for the GTK+ toolkit 2.12
libgtk2.0-common - common files for the GTK+ graphical user interface library
libgtk2.0-dev - development files for the GTK+ library
libgtk2.0-doc - documentation for the GTK+ graphical user interface library
libgwengui-gtk2-0 - Gwenhywfar GUI implementation for GTK2
^Cpi@pi ~/src/sdlmame0136 $ sudo apt-get install libgtk2.0-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  autopoint debhelper gettext gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-pango-1.0 html2text intltool-debian libatk1.0-dev libcairo-script-interpreter2
  libcairo2-dev libexpat1-dev libfontconfig1-dev libgdk-pixbuf2.0-dev libgettextpo0 libice-dev libmail-sendmail-perl libpango1.0-dev libpixman-1-dev libsm-dev
  libsys-hostname-long-perl libunistring0 libxcb-render0-dev libxcb-shm0-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev
  libxml2-utils libxrandr-dev libxrender-dev po-debconf x11proto-composite-dev x11proto-damage-dev x11proto-fixes-dev x11proto-randr-dev x11proto-render-dev x11proto-xinerama-dev
Suggested packages:
  dh-make gettext-doc libcairo2-doc libgtk2.0-doc libice-doc libpango1.0-doc imagemagick libsm-doc libmail-box-perl
The following NEW packages will be installed:
  autopoint debhelper gettext gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-pango-1.0 html2text intltool-debian libatk1.0-dev libcairo-script-interpreter2
  libcairo2-dev libexpat1-dev libfontconfig1-dev libgdk-pixbuf2.0-dev libgettextpo0 libgtk2.0-dev libice-dev libmail-sendmail-perl libpango1.0-dev libpixman-1-dev libsm-dev
  libsys-hostname-long-perl libunistring0 libxcb-render0-dev libxcb-shm0-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev
  libxml2-utils libxrandr-dev libxrender-dev po-debconf x11proto-composite-dev x11proto-damage-dev x11proto-fixes-dev x11proto-randr-dev x11proto-render-dev x11proto-xinerama-dev
0 upgraded, 43 newly installed, 0 to remove and 0 not upgraded.
Need to get 11.7 MB of archives.
After this operation, 38.0 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Setting up libmail-sendmail-perl (0.79.16-1) ...
pi@pi ~/src/sdlmame0136 $ make
Compiling src/emu/cpu/m68000/m68kmake.c...
Package gconf-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gconf-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gconf-2.0' found

Commented out those two warning types from the makefile since I don't really know what to do with them.

pi@pi ~/src/sdlmame0136 $ make
Compiling src/osd/sdl/strconv.c...
Compiling src/osd/sdl/sdldir.c...
Compiling src/osd/sdl/sdlfile.c...
Compiling src/osd/sdl/sdlos_unix.c...
Compiling src/osd/sdl/sdlsync_tc.c...
Compiling src/osd/sdl/sdlwork.c...
src/osd/sdl/sdlwork.c: In function ‘osd_work_queue_wait’:
src/osd/sdl/sdlwork.c:272:6: error: implicit declaration of function ‘osd_yield_processor’ [-Werror=implicit-function-declaration]
cc1: all warnings being treated as errors
make: *** [obj/sdl/mame/osd/sdl/sdlwork.o] Error 1
pi@pi ~/src/sdlmame0136 $ grep -r osd_work_queue_wait
src/osd/windows/winwork.c://  osd_work_queue_wait
src/osd/windows/winwork.c:int osd_work_queue_wait(osd_work_queue *queue, osd_ticks_t timeout)
src/osd/osdcore.h:    osd_work_queue_wait: wait for the queue to be empty
src/osd/osdcore.h:int osd_work_queue_wait(osd_work_queue *queue, osd_ticks_t timeout);
src/osd/sdl/sdlwork.c://  osd_work_queue_wait
src/osd/sdl/sdlwork.c:int osd_work_queue_wait(osd_work_queue *queue, osd_ticks_t timeout)
src/osd/sdl/window.c:		while (!osd_work_queue_wait(work_queue, osd_ticks_per_second()*10))
src/osd/sdl/window.c:		osd_work_queue_wait(work_queue, 100000);
src/osd/osdmini/miniwork.c://  osd_work_queue_wait
src/osd/osdmini/miniwork.c:int osd_work_queue_wait(osd_work_queue *queue, osd_ticks_t timeout)
src/emu/video/poly.c:		osd_work_queue_wait(poly->queue, osd_ticks_per_second() * 100);
src/emu/sound/discrete.c:	osd_work_queue_wait(info->queue, osd_ticks_per_second()*10);
pi@pi ~/src/sdlmame0136 $ vi src/osd/sdl/sdlwork.c 
pi@pi ~/src/sdlmame0136 $ vi src/osd/sdl/sdlwork.c 
pi@pi ~/src/sdlmame0136 $ grep SDLMAME_NOASM *
grep: artwork: Is a directory
grep: cfg: Is a directory
grep: comments: Is a directory
grep: diff: Is a directory
grep: docs: Is a directory
grep: ini: Is a directory
grep: keymaps: Is a directory
grep: nvram: Is a directory
grep: obj: Is a directory
grep: roms: Is a directory
grep: src: Is a directory
pi@pi ~/src/sdlmame0136 $ vi src/osd/sdl/sdlwork.c 
pi@pi ~/src/sdlmame0136 $ grep -r SDLMAME_NOASM *
src/osd/sdl/sdlmain.c:	MACRO_VERBOSE(SDLMAME_NOASM);
src/osd/sdl/sdlwork.c:#if defined(SDLMAME_NOASM)
src/osd/sdl/sdlwork.c:#endif // SDLMAME_NOASM
src/osd/sdl/sdl.mak:DEFS += -DSDLMAME_NOASM
^C
pi@pi ~/src/sdlmame0136 $ vi src/osd/sdl/sdl.mak 
pi@pi ~/src/sdlmame0136 $ grep NOASM *
grep: artwork: Is a directory
grep: cfg: Is a directory
grep: comments: Is a directory
grep: diff: Is a directory
grep: docs: Is a directory
grep: ini: Is a directory
grep: keymaps: Is a directory
grep: nvram: Is a directory
grep: obj: Is a directory
grep: roms: Is a directory
SDLMAME.txt:For non-x86/x64/PowerPC targets (e.g. ARM or MIPS) you must set "NOASM=1".
grep: src: Is a directory
pi@pi ~/src/sdlmame0136 $ vi makefile 
pi@pi ~/src/sdlmame0136 $ make
Compiling src/osd/sdl/sdlwork.c...
Compiling src/osd/sdl/debugwin.c...
src/osd/sdl/debugwin.c: In function ‘memorywin_new’:
src/osd/sdl/debugwin.c:470:4: error: implicit declaration of function ‘gtk_combo_box_append_text’ [-Werror=implicit-function-declaration]
cc1: all warnings being treated as errors
make: *** [obj/sdl/mame/osd/sdl/debugwin.o] Error 1
pi@pi ~/src/sdlmame0136 $ vi src/osd/sdl/debugwin.c
pi@pi ~/src/sdlmame0136 $ grep -r NO_DEBUGGER 
src/osd/sdl/debugwin.c:#if !defined(NO_DEBUGGER)
src/osd/sdl/osdsdl.h:	- define NO_DEBUGGER in sdl.mak
src/osd/sdl/osdsdl.h:#if defined(NO_DEBUGGER)
src/osd/sdl/sdl.mak:DEFS += -DNO_AFFINITY_NP -DNO_DEBUGGER -DSDLMAME_X11 -DSDLMAME_UNIX
src/osd/sdl/sdl.mak:DEFS += -DSDLMAME_NO_X11 -DNO_DEBUGGER
src/osd/sdl/sdl.mak:DEFS += -DSDLMAME_WIN32 -DNO_DEBUGGER -DX64_WINDOWS_ABI
src/osd/sdl/sdl.mak:DEFS += -DSDLMAME_OS2 -DNO_DEBUGGER
^C
pi@pi ~/src/sdlmame0136 $ vi src/osd/sdl/sdl.mak

Right- so eventually this started failing GTK errors- I turned my attention to modifying the roms of mspacman.zip to work with the old 0.37b5 version in mame4all, which did work- renaming mspacmab & adding a couple of roms from pacman.zip got it going.

Trying to see if a slight change to the 37b5 code can be modified to work with the other mspacman roms, introduced in 037b16. The differences may only be in the src/drivers/pacman.c file, so I overwrote that file and ran a make- which will take forever. Time to investigate in a cross-compile VM. Make failed, there's some headers that are different, driver.h for one.

WRT to cross-compiling, I downloaded a virtual box debian 7 VM, and am following a guide here: http://www.kitware.com/blog/home/post/426 along with a tip to install subversion to get things working with elibc here http://brains.witsmith.com/2012/10/building-cross-compiling-toolchain-for.html.

Attempt at more GTK issue resolution:

pi@pi ~/src/sdlmame0136 $ make
Compiling src/osd/sdl/dview.c...
src/osd/sdl/dview.c: In function ‘dview_realize’:
src/osd/sdl/dview.c:138:2: error: implicit declaration of function ‘GTK_OBJECT_FLAGS’ [-Werror=implicit-function-declaration]
src/osd/sdl/dview.c:138:2: error: lvalue required as left operand of assignment
src/osd/sdl/dview.c: In function ‘dview_size_allocate’:
src/osd/sdl/dview.c:216:2: error: implicit declaration of function ‘GTK_WIDGET_REALIZED’ [-Werror=implicit-function-declaration]
cc1: all warnings being treated as errors
make: *** [obj/sdl/mame/osd/sdl/dview.o] Error 1
pi@pi ~/src/sdlmame0136 $ grep -r GTK_OBJECT_FLAGS *
pi@pi ~/src/sdlmame0136 $ grep -r GTK_WIDGET_REALIZED *
src/osd/sdl/dview.c:	if(GTK_WIDGET_REALIZED(wdv))
pi@pi ~/src/sdlmame0136 $ vi src/osd/sdl/dview.c 
pi@pi ~/src/sdlmame0136 $ make
Compiling src/osd/sdl/dview.c...
src/osd/sdl/dview.c: In function ‘dview_size_allocate’:
src/osd/sdl/dview.c:217:2: error: implicit declaration of function ‘GTK_WIDGET_REALIZED’ [-Werror=implicit-function-declaration]
cc1: all warnings being treated as errors
make: *** [obj/sdl/mame/osd/sdl/dview.o] Error 1

From: https://developer.gnome.org/gtk2/stable/GtkWidget.html#gtk-widget-set-realized

GTK_WIDGET_SET_FLAGS is deprecated.

Replaced GTK_WIDGET_SET_FLAGS with:

        /* GTK_WIDGET_SET_FLAGS(wdv, GTK_REALIZED); */
        gtk_widget_set_realized(wdv, TRUE);

Replaced:

        /* if(GTK_WIDGET_REALIZED(wdv)) */
        if(gtk_widget_get_realized(wdv))
pi@pi ~/src/sdlmame0136 $ make
Compiling src/osd/sdl/dview.c...
src/osd/sdl/dview.c: In function ‘dview_vadj_changed’:
src/osd/sdl/dview.c:122:6: error: function call has aggregate value [-Werror=aggregate-return]
src/osd/sdl/dview.c: In function ‘dview_hadj_changed’:
src/osd/sdl/dview.c:107:6: error: function call has aggregate value [-Werror=aggregate-return]
src/osd/sdl/dview.c: In function ‘dview_update’:
src/osd/sdl/dview.c:390:16: error: function call has aggregate value [-Werror=aggregate-return]
src/osd/sdl/dview.c: In function ‘dview_size_allocate’:
src/osd/sdl/dview.c:170:6: error: function call has aggregate value [-Werror=aggregate-return]
src/osd/sdl/dview.c:171:7: error: function call has aggregate value [-Werror=aggregate-return]
src/osd/sdl/dview.c: In function ‘dview_size_request’:
src/osd/sdl/dview.c:288:7: error: function call has aggregate value [-Werror=aggregate-return]
src/osd/sdl/dview.c: In function ‘dview_expose’:
src/osd/sdl/dview.c:16:8: error: function call has aggregate value [-Werror=aggregate-return]
cc1: all warnings being treated as errors
make: *** [obj/sdl/mame/osd/sdl/dview.o] Error 1

Removed that flag from the makefile.

Compiling src/osd/sdl/debug-intf.c...
src/osd/sdl/debug-intf.c: In function ‘create_debugmain’:
src/osd/sdl/debug-intf.c:272:3: error: implicit declaration of function ‘GTK_OBJECT_FLAGS’ [-Werror=implicit-function-declaration]
src/osd/sdl/debug-intf.c:272:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:273:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:284:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:285:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:291:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:292:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c: In function ‘create_memorywin’:
src/osd/sdl/debug-intf.c:663:3: error: implicit declaration of function ‘gtk_combo_box_new_text’ [-Werror=implicit-function-declaration]
src/osd/sdl/debug-intf.c:663:8: error: assignment makes pointer from integer without a cast [-Werror]
src/osd/sdl/debug-intf.c:672:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:673:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c: In function ‘create_disasmwin’:
src/osd/sdl/debug-intf.c:999:7: error: assignment makes pointer from integer without a cast [-Werror]
src/osd/sdl/debug-intf.c:1008:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:1009:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c: In function ‘create_logwin’:
src/osd/sdl/debug-intf.c:1276:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:1277:3: error: lvalue required as left operand of assignment
cc1: all warnings being treated as errors
make: *** [obj/sdl/mame/osd/sdl/debug-intf.o] Error 1

Modified other instances with what I think may be right?

  registers = dview_new ("registers", "", "", 0, 0);
  gtk_widget_set_name (registers, "registers");
  gtk_widget_show (registers);
  gtk_box_pack_start (GTK_BOX (hbox1), registers, FALSE, TRUE, 0);
  /* GTK_WIDGET_UNSET_FLAGS (registers, GTK_CAN_FOCUS); */
  gtk_widget_set_can_focus (registers, FALSE);
  /* GTK_WIDGET_UNSET_FLAGS (registers, GTK_CAN_DEFAULT); */
  gtk_widget_set_can_default (registers, FALSE);

  vbox2 = gtk_vbox_new (FALSE, 0);
  gtk_widget_set_name (vbox2, "vbox2");
  gtk_widget_show (vbox2);
  gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0);

  disasm = dview_new ("disasm", "", "", 0, 0);
  gtk_widget_set_name (disasm, "disasm");
  gtk_widget_show (disasm);
  gtk_box_pack_start (GTK_BOX (vbox2), disasm, TRUE, TRUE, 2);
  /* GTK_WIDGET_UNSET_FLAGS (disasm, GTK_CAN_FOCUS); */
  gtk_widget_set_can_focus (disasm, FALSE);
  /* GTK_WIDGET_UNSET_FLAGS (disasm, GTK_CAN_DEFAULT); */
  gtk_widget_set_can_default (disasm, FALSE);

  console = dview_new ("console", "", "", 0, 0);
  gtk_widget_set_name (console, "console");
  gtk_widget_show (console);
  gtk_box_pack_start (GTK_BOX (vbox2), console, TRUE, TRUE, 0);
  /* GTK_WIDGET_UNSET_FLAGS (console, GTK_CAN_FOCUS); */
  gtk_widget_set_can_focus (console, FALSE);
  /* GTK_WIDGET_UNSET_FLAGS (console, GTK_CAN_DEFAULT); */
  gtk_widget_set_can_default (console, FALSE);
pi@pi ~/src/sdlmame0136 $ make
Compiling src/osd/sdl/debug-intf.c...
src/osd/sdl/debug-intf.c: In function ‘create_memorywin’:
src/osd/sdl/debug-intf.c:669:3: error: implicit declaration of function ‘gtk_combo_box_new_text’ [-Werror=implicit-function-declaration]
src/osd/sdl/debug-intf.c:669:8: error: assignment makes pointer from integer without a cast [-Werror]
src/osd/sdl/debug-intf.c:678:3: error: implicit declaration of function ‘GTK_OBJECT_FLAGS’ [-Werror=implicit-function-declaration]
src/osd/sdl/debug-intf.c:678:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:679:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c: In function ‘create_disasmwin’:
src/osd/sdl/debug-intf.c:1005:7: error: assignment makes pointer from integer without a cast [-Werror]
src/osd/sdl/debug-intf.c:1014:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:1015:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c: In function ‘create_logwin’:
src/osd/sdl/debug-intf.c:1282:3: error: lvalue required as left operand of assignment
src/osd/sdl/debug-intf.c:1283:3: error: lvalue required as left operand of assignment
cc1: all warnings being treated as errors
make: *** [obj/sdl/mame/osd/sdl/debug-intf.o] Error 1

More research uncovers “-DGTK_DISABLE_DEPRECATED”.

pi@pi ~/src/sdlmame0136 $ grep -r GTK_DISABLE_DEPRECATED *
src/osd/sdl/sdl.mak:CFLAGS += -DGTK_DISABLE_DEPRECATED

Interestingly there's a bunch of other settings in the sdl.mak file that I probably should have looked at first (if I had realized). Trying NOX11 for fun.

pi@pi ~/src/sdlmame0136 $ make
Compiling src/lib/util/aviio.c...
src/lib/util/aviio.c: In function ‘extract_movie_info’:
src/lib/util/aviio.c:1350:14: error: variable ‘audiostream’ set but not used [-Werror=unused-but-set-variable]
src/lib/util/aviio.c: In function ‘parse_indx_chunk’:
src/lib/util/aviio.c:1517:8: error: variable ‘subtype’ set but not used [-Werror=unused-but-set-variable]
src/lib/util/aviio.c:1514:25: error: variable ‘id’ set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors
make: *** [obj/sdl/mame/lib/util/aviio.o] Error 1

I don't even remember where I had to replace this but I'll find it eventually:

#define CRLF 1
#if !defined(CRLF) || (CRLF < 1) || (CRLF > 3)
#error CRLF undefined: must be 1 (CR), 2 (LF) or 3 (CR/LF)
#endif

For reference:

http://developer.gimp.org/api/2.0/gtk/GtkComboBox.html https://developer.gnome.org/gtk2/stable/GtkWidget.html

Starting again on another day, build failed further down the road but I'm afraid of the number of changes I've made while building. Made clean, uncommented out warnings but disabled -Werror. Checked pacman.c for what it needs in order to build and am disabling any CPU & Sound & Emu not necessary in “src/mame/mame.mak”:

  341  #include "emu.h"
  342  #include "cpu/z80/z80.h"
  343  #include "includes/pacman.h"
  344  #include "cpu/s2650/s2650.h"
  345  #include "machine/nvram.h"
  346  #include "sound/namco.h"
  347  #include "sound/ay8910.h"
  348  #include "sound/sn76496.h"

Build was going well but then started building amiga stuff, so I'm clearly getting more than I want. Realized via find ./* -name \*mak that there's a “tiny.mak” file provided as an example for a reduced set of games. For now I may still just try to comment out the DRVLIBS I don't need to see if that works (even though that's a lot of lines).

What took hours to arrive at before is back but now in minutes, so that's something:

...
src/emu/drawgfx.c:1826:4: warning: declaration of ‘srcdata’ shadows a previous local [-Wshadow]
src/emu/drawgfx.c:1826:4: warning: shadowed declaration is here [-Wshadow]
src/emu/drawgfx.c:1826:4: warning: declaration of ‘srcdata’ shadows a previous local [-Wshadow]
src/emu/drawgfx.c:1826:4: warning: shadowed declaration is here [-Wshadow]
src/emu/drawgfx.c:1826:4: warning: declaration of ‘srcdata’ shadows a previous local [-Wshadow]
src/emu/drawgfx.c:1826:4: warning: shadowed declaration is here [-Wshadow]
make: *** [obj/sdl/mame/emu/drawgfx.o] Error 1

It looks like the only real error is:

src/emu/drawgfx.c: At top level:
src/emu/drawgfx.c:21:7: error: size of array ‘no_priority_size_is_wrong’ is negative

The rest of the output is just -Wshadow related. From the code in src/emu/drawgfx.c:

/***************************************************************************
    GLOBAL VARIABLES
***************************************************************************/

/* if this line errors during compile, the size of NO_PRIORITY is wrong and I need to use something else */
UINT8 no_priority_size_is_wrong[2 * (sizeof(NO_PRIORITY) == 3) - 1];

I checked out drawgfxm.h and see that NO_PRIORITY is a char dummy[3], not sure why it's negative but commenting out the no_priority_size_is_wrong line just to see what happens. NO_PRIORITY is used throughout the drawing functions, so this could be a real problem. My guess is that maybe because I'm using only pacman & namco stuff there is “no priority”, so maybe this won't matter or maybe I can set it to NULL.

Next up:

undefined reference to `sdl_num_processors'

Plus about a million undefined references to stuff- commented out all the non-used driver object stuff in mame.mak. Found http://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=57441&page=all&PHPSESSID=3c74d06c904029be10e5bfea6062aeab which mentions:

Small issue: with NOASM defined, sdl_num_processors is missing in action.

I just added it after #include "../osdmini/miniwork.c" in sdlwork.c.
pi@pi ~/src/sdlmame0136 $ grep -r NOASM
SDLMAME.txt:For non-x86/x64/PowerPC targets (e.g. ARM or MIPS) you must set "NOASM=1".

So that's why I did that. Can fix the problem by modifying sdlwork.c, it looks like it's just an int that isn't declared.

Sdlwork.c has:

#if defined(SDLMAME_NOASM)
#include "../osdmini/miniwork.c"
#else

But I don't see any reference to sdl_num_processors in miniwork.c or in osdcore.h which is included in miniwork.c. Weird. Hmm, I found the declaration in sdlwork.c later on, maybe fluke? From sdlwork.c:

//============================================================
//  GLOBAL VARIABLES
//============================================================

int sdl_num_processors = 0;

Down to about a half an hour to get to the linking stage at least, if I ever get a successful build it at least won't take days to rebuild. Same issues. Added sdl_num_processors to sdlmain.c:

//============================================================
//
//   sdlmain.c -- SDL main program
//
//============================================================

// standard sdl header
#include <SDL/SDL.h>
#include <SDL/SDL_version.h>

//added by ben
int sdl_num_processors = 0;

Sdl_num_processors error is gone, but still undefined references in mamedriv.o for what seems to be every single driver- I'm missing something obvious someplace in the make file:

obj/sdl/mame/mame/mamedriv.o:(.rodata+0x850c): undefined reference to `driver_am_mg3'

I opted to try to rebuild with the driverobjs enabled, but that again will take forever. Looking at tiny.mak- I don't see mamedriv.o included?

From mamedriv.c:

/******************************************************************************

    mamedriv.c

    Copyright Nicola Salmoria and the MAME Team.
    Visit http://mamedev.org for licensing and usage restrictions.

    The list of all available drivers. Drivers have to be included here to be
    recognized by the executable.

    To save some typing, we use a hack here. This file is recursively #included
    twice, with different definitions of the DRIVER() macro. The first one
    declares external references to the drivers; the second one builds an array
    storing all the drivers.

******************************************************************************/

So I can edit the drivers out of mamedriv.c- or maybe just not include it in the executable?

Without mamedriv.o we're left with:

pi@pi ~/src/sdlmame0136 $ make
Linking mame...
obj/sdl/mame/libemu.a(clifront.o): In function `cli_info_listdevices':
clifront.c:(.text+0x230): undefined reference to `drivers'
obj/sdl/mame/libemu.a(clifront.o): In function `cli_info_listfull':
clifront.c:(.text+0x348): undefined reference to `drivers'
obj/sdl/mame/libemu.a(clifront.o): In function `cli_info_listroms':
clifront.c:(.text+0x55c): undefined reference to `drivers'
obj/sdl/mame/libemu.a(clifront.o): In function `cli_info_listcrc':
clifront.c:(.text+0x6b0): undefined reference to `drivers'
obj/sdl/mame/libemu.a(clifront.o): In function `cli_info_listclones':
clifront.c:(.text+0x788): undefined reference to `drivers'
obj/sdl/mame/libemu.a(clifront.o):clifront.c:(.text+0x840): more undefined references to `drivers' follow
obj/sdl/mame/libemu.a(inptport.o): In function `frame_update':
inptport.c:(.text+0x7eec): undefined reference to `coin_lockout_get_state'
obj/sdl/mame/libemu.a(mame.o): In function `mame_execute':
mame.c:(.text+0x1fa8): undefined reference to `generic_machine_init'
mame.c:(.text+0x21e4): undefined reference to `nvram_load'
mame.c:(.text+0x22b4): undefined reference to `nvram_save'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overyoffset':
ui.c:(.text+0x11c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x148): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overyscale':
ui.c:(.text+0x1cc): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x1f8): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overxoffset':
ui.c:(.text+0x27c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x2a8): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overxscale':
ui.c:(.text+0x32c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x358): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `ui_display_startup_screens':
ui.c:(.text+0x33a8): undefined reference to `device_get_info_laserdisc'
ui.c:(.text+0x3e3c): undefined reference to `device_get_info_laserdisc'
ui.c:(.text+0x3edc): undefined reference to `drivers'
obj/sdl/mame/libemu.a(uimenu.o): In function `menu_select_game':
uimenu.c:(.text+0x2da8): undefined reference to `drivers'
obj/sdl/mame/libemu.a(uimenu.o): In function `menu_memory_card':
uimenu.c:(.text+0x4530): undefined reference to `memcard_insert'
uimenu.c:(.text+0x4584): undefined reference to `memcard_eject'
uimenu.c:(.text+0x4614): undefined reference to `memcard_present'
uimenu.c:(.text+0x46c4): undefined reference to `memcard_create'
obj/sdl/mame/libemu.a(uimenu.o): In function `menu_bookkeeping':
uimenu.c:(.text+0x5570): undefined reference to `get_dispensed_tickets'
uimenu.c:(.text+0x55e8): undefined reference to `coin_counter_get_count'
uimenu.c:(.text+0x5620): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x5644): undefined reference to `coin_counter_get_count'
uimenu.c:(.text+0x567c): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x56a0): undefined reference to `coin_counter_get_count'
uimenu.c:(.text+0x56d8): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x56fc): undefined reference to `coin_counter_get_count'
uimenu.c:(.text+0x5734): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x5758): undefined reference to `coin_counter_get_count'
uimenu.c:(.text+0x5790): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x57b4): undefined reference to `coin_counter_get_count'
uimenu.c:(.text+0x57ec): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x5810): undefined reference to `coin_counter_get_count'
uimenu.c:(.text+0x5848): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x586c): undefined reference to `coin_counter_get_count'
uimenu.c:(.text+0x58a4): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x596c): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x59a0): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x59d4): undefined reference to `coin_lockout_get_state'
uimenu.c:(.text+0x5a08): undefined reference to `coin_lockout_get_state'
obj/sdl/mame/libemu.a(uimenu.o):uimenu.c:(.text+0x5a3c): more undefined references to `coin_lockout_get_state' follow
obj/sdl/mame/libemu.a(validity.o): In function `validate_devices':
validity.c:(.text+0xfd8): undefined reference to `drivers'
obj/sdl/mame/libemu.a(validity.o): In function `mame_validitychecks':
validity.c:(.text+0x1e4c): undefined reference to `drivers'
collect2: ld returned 1 exit status
make: *** [mame] Error 1

That validity.c at the end looks like maybe commenting out drivers I don't want may be easier. Took a long break, then tried my own tiny.mak (mspacman.c w/mame.mak) and in the process of that found out that the way I was commenting things out in mame.mak is BROKEN, and I'm an idiot. That said, my tiny file looks like it should work but I still get a bunch of undefined references. Dug around, found out I had commented out generic.o as an emulator machine type. Argh.

Commenting in the .mak files is a big deal. After fixing comments:

pi@pi ~/src/sdlmame0136 $ make
Compiling src/mame/mspacman.c...
Compiling src/version.c...
Linking mame...
obj/sdl/mame/libemu.a(ui.o): In function `slider_overyoffset':
ui.c:(.text+0x11c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x148): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overyscale':
ui.c:(.text+0x1cc): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x1f8): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overxoffset':
ui.c:(.text+0x27c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x2a8): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overxscale':
ui.c:(.text+0x32c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x358): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `ui_display_startup_screens':
ui.c:(.text+0x33a8): undefined reference to `device_get_info_laserdisc'
ui.c:(.text+0x3e3c): undefined reference to `device_get_info_laserdisc'
obj/sdl/mame/libsound.a(ay8910.o): In function `ay8910_start_ym':
ay8910.c:(.text+0xa3c): undefined reference to `devcb_resolve_read8'
ay8910.c:(.text+0xa4c): undefined reference to `devcb_resolve_read8'
ay8910.c:(.text+0xa5c): undefined reference to `devcb_resolve_write8'
ay8910.c:(.text+0xa6c): undefined reference to `devcb_resolve_write8'
collect2: ld returned 1 exit status
make: *** [mame] Error 1

Uncommented ldcore from emu.mak and get:

pi@pi ~/src/sdlmame0136 $ make
Compiling src/emu/machine/ldcore.c...
Archiving obj/sdl/mame/libemu.a...
Compiling src/version.c...
Linking mame...
obj/sdl/mame/libemu.a(ldcore.o): In function `device_get_info_laserdisc':
ldcore.c:(.text+0x3d0): undefined reference to `pr8210_interface'
ldcore.c:(.text+0x3d4): undefined reference to `simutrek_interface'
ldcore.c:(.text+0x3d8): undefined reference to `ldv1000_interface'
ldcore.c:(.text+0x3dc): undefined reference to `vp931_interface'
obj/sdl/mame/libemu.a(ldcore.o): In function `device_reset_laserdisc':
ldcore.c:(.text+0x510): undefined reference to `pr8210_interface'
ldcore.c:(.text+0x514): undefined reference to `simutrek_interface'
ldcore.c:(.text+0x518): undefined reference to `ldv1000_interface'
ldcore.c:(.text+0x51c): undefined reference to `vp931_interface'
obj/sdl/mame/libemu.a(ldcore.o): In function `device_start_laserdisc':
ldcore.c:(.text+0x182c): undefined reference to `pr8210_interface'
ldcore.c:(.text+0x1830): undefined reference to `simutrek_interface'
ldcore.c:(.text+0x1834): undefined reference to `vp931_interface'
ldcore.c:(.text+0x1838): undefined reference to `ldv1000_interface'
obj/sdl/mame/libsound.a(ay8910.o): In function `ay8910_start_ym':
ay8910.c:(.text+0xa3c): undefined reference to `devcb_resolve_read8'
ay8910.c:(.text+0xa4c): undefined reference to `devcb_resolve_read8'
ay8910.c:(.text+0xa5c): undefined reference to `devcb_resolve_write8'
ay8910.c:(.text+0xa6c): undefined reference to `devcb_resolve_write8'
collect2: ld returned 1 exit status
make: *** [mame] Error 1

That to me looks like adding ldcore will only mean adding more stuff we don't need- which means I need to figure out what needs laserdisc support and disable that. Surely pacman games don't need laserdisc support. Duh:

pi@pi ~/src/sdlmame0136 $ find ./ -name *.mak
./src/osd/windows/windows.mak
./src/osd/sdl/build.mak
./src/osd/sdl/sdl.mak
./src/osd/osdmini/osdmini.mak
**./src/ldplayer/ldplayer.mak**
./src/lib/lib.mak
./src/emu/sound/sound.mak
./src/emu/cpu/mips/dismips.mak
./src/emu/cpu/cpu.mak
./src/emu/emu.mak
./src/tools/tools.mak
./src/mame/mame.mak
./src/mame/bak/mame.mak
./src/mame/bak/tiny.mak
./src/build/build.mak

From src/ldplayer/ldplayer.mak:

###########################################################################
#
#   ldplayer.mak
#
#   Small makefile to build a standalone laserdisc player
#
#   Copyright Nicola Salmoria and the MAME Team.
#   Visit http://mamedev.org for licensing and usage restrictions.
#
###########################################################################

Commented out the DRVLIBS entries in ldplayer.mak.

pi@pi ~/src/sdlmame0136 $ find obj/ -name ld*
obj/sdl/mame/emu/machine/ldcore.o
pi@pi ~/src/sdlmame0136 $ rm obj/sdl/mame/emu/machine/ldcore.o
pi@pi ~/src/sdlmame0136 $ make
Linking mame...
[same ld errors]
pi@pi ~/src/sdlmame0136 $ rm obj/sdl/mame/libemu.a
pi@pi ~/src/sdlmame0136 $ make
Linking mame...
obj/sdl/mame/libemu.a(ui.o): In function `slider_overyoffset':
ui.c:(.text+0x11c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x148): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overyscale':
ui.c:(.text+0x1cc): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x1f8): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overxoffset':
ui.c:(.text+0x27c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x2a8): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `slider_overxscale':
ui.c:(.text+0x32c): undefined reference to `laserdisc_get_config'
ui.c:(.text+0x358): undefined reference to `laserdisc_set_config'
obj/sdl/mame/libemu.a(ui.o): In function `ui_display_startup_screens':
ui.c:(.text+0x33a8): undefined reference to `device_get_info_laserdisc'
ui.c:(.text+0x3e3c): undefined reference to `device_get_info_laserdisc'
obj/sdl/mame/libsound.a(ay8910.o): In function `ay8910_start_ym':
ay8910.c:(.text+0xa3c): undefined reference to `devcb_resolve_read8'
ay8910.c:(.text+0xa4c): undefined reference to `devcb_resolve_read8'
ay8910.c:(.text+0xa5c): undefined reference to `devcb_resolve_write8'
ay8910.c:(.text+0xa6c): undefined reference to `devcb_resolve_write8'
collect2: ld returned 1 exit status
make: *** [mame] Error 1

pi@pi ~/src/sdlmame0136 $ find obj/ -name \*ui\*
obj/sdl/mame/emu/ui.o
obj/sdl/mame/emu/uigfx.o
obj/sdl/mame/emu/uismall.fh
obj/sdl/mame/emu/uimenu.o
obj/sdl/mame/emu/uiinput.o
obj/sdl/mame/build

pi@pi ~/src/sdlmame0136 $ rm obj/sdl/mame/emu/ui*.o

Same result. Tired of guessing, make clean, build again knowing ldplayer.mak has nothing in it.

The issue with undefined references in ay8910 should be in devcb.o, which IS getting built. Strange. Also the longest build part is “voodoo.c” which is some 3dfx card that I don't need, so commenting it out of emu.mak for the future.

Ldcore.o still causing problems, uncommented it in emu.mak:

ldcore.c:(.text+0x3d0): undefined reference to `pr8210_interface'
ldcore.c:(.text+0x3d4): undefined reference to `simutrek_interface'
ldcore.c:(.text+0x3d8): undefined reference to `ldv1000_interface'
ldcore.c:(.text+0x3dc): undefined reference to `vp931_interface'

Uncommented the laserdisc stuff in emu.mak:

pi@pi ~/src/sdlmame0136 $ make
Compiling src/emu/machine/ldpr8210.c...
Compiling src/emu/machine/ldv1000.c...
Compiling src/emu/machine/ldvp931.c...
Archiving obj/sdl/mame/libemu.a...
Compiling src/version.c...
Linking mame...
obj/sdl/mame/libemu.a(ldpr8210.o):(.rodata+0x2c8): undefined reference to `cpu_get_info_i8748'
obj/sdl/mame/libemu.a(ldpr8210.o):(.rodata+0x330): undefined reference to `cpu_get_info_i8049'
obj/sdl/mame/libemu.a(ldv1000.o):(.rodata+0xd4): undefined reference to `device_get_info_ppi8255'
obj/sdl/mame/libemu.a(ldv1000.o):(.rodata+0xec): undefined reference to `device_get_info_ppi8255'
obj/sdl/mame/libemu.a(ldv1000.o):(.rodata+0x174): undefined reference to `ppi8255_r'
obj/sdl/mame/libemu.a(ldv1000.o):(.rodata+0x17c): undefined reference to `ppi8255_w'
obj/sdl/mame/libemu.a(ldv1000.o):(.rodata+0x1a0): undefined reference to `ppi8255_r'
obj/sdl/mame/libemu.a(ldv1000.o):(.rodata+0x1a8): undefined reference to `ppi8255_w'
obj/sdl/mame/libemu.a(ldvp931.o):(.rodata+0x98): undefined reference to `cpu_get_info_i8049'
collect2: ld returned 1 exit status
make: *** [mame] Error 1

Instead of adding more CPUs etc to likely get more failed dependencies, commenting out all laser disc related stuff in ui.c, hopefully we won't need that.

pi@pi ~/src/sdlmame0136 $ make
Compiling src/emu/ui.c...
src/emu/ui.c:114:14: warning: ‘slider_overxscale’ declared ‘static’ but never defined [-Wunused-function]
src/emu/ui.c:115:14: warning: ‘slider_overyscale’ declared ‘static’ but never defined [-Wunused-function]
src/emu/ui.c:116:14: warning: ‘slider_overxoffset’ declared ‘static’ but never defined [-Wunused-function]
src/emu/ui.c:117:14: warning: ‘slider_overyoffset’ declared ‘static’ but never defined [-Wunused-function]
Archiving obj/sdl/mame/libemu.a...
Compiling src/version.c...
Linking mame...
obj/sdl/mame/libsound.a(ay8910.o): In function `ay8910_start_ym':
ay8910.c:(.text+0xa3c): undefined reference to `devcb_resolve_read8'
ay8910.c:(.text+0xa4c): undefined reference to `devcb_resolve_read8'
ay8910.c:(.text+0xa5c): undefined reference to `devcb_resolve_write8'
ay8910.c:(.text+0xa6c): undefined reference to `devcb_resolve_write8'
collect2: ld returned 1 exit status
make: *** [mame] Error 1

Checked and the includes look good for devcb.h, added it explicitly anyway to ay8910.c, no change.

Commented out the four lines, which will likely mean something very important is broken.

Commened out unidasm.o from tools.mak, since that has tons of references to various CPUs.

And finally a binary is born:

obj/sdl/mame/tools/unidasm.o:(.rodata+0x75c): undefined reference to `cpu_disassemble_z180'
obj/sdl/mame/tools/unidasm.o:(.rodata+0x77c): undefined reference to `cpu_disassemble_z8'
collect2: ld returned 1 exit status
make: *** [unidasm] Error 1
pi@pi ~/src/sdlmame0136 $ vi src/tools/
chdcd.c       chdman.c      ldresample.c  regrep.c      runtest.cmd   src2html.c    tools.mak     
chdcd.h       jedutil.c     ldverify.c    romcmp.c      split.c       srcclean.c    unidasm.c     
pi@pi ~/src/sdlmame0136 $ vi src/tools/tools.mak 
pi@pi ~/src/sdlmame0136 $ make
Compiling src/tools/ldresample.c...
Linking ldresample...
Compiling src/tools/ldverify.c...
Linking ldverify...
Compiling src/tools/regrep.c...
Linking regrep...
Compiling src/tools/srcclean.c...
Linking srcclean...
Compiling src/tools/src2html.c...
Linking src2html...
Compiling src/tools/split.c...
src/tools/split.c: In function ‘split_file’:
src/tools/split.c:101:9: warning: variable ‘totalparts’ set but not used [-Wunused-but-set-variable]
src/tools/split.c: In function ‘main’:
src/tools/split.c:421:6: warning: variable ‘result’ set but not used [-Wunused-but-set-variable]
Linking split...
pi@pi ~/src/sdlmame0136 $ ls
artwork  chdman    diff  ini      keymaps     ldverify  mame   obj     romcmp  runtest      split  src2html  testkeys
cfg      comments  docs  jedutil  ldresample  makefile  nvram  regrep  roms    SDLMAME.txt  src    srcclean  ui.bdf
pi@pi ~/src/sdlmame0136 $ ./mame 
Loading BDF font... (256 characters loaded)
Loading BDF font... (512 characters loaded)
Loading BDF font... (768 characters loaded)
Loading BDF font... (1024 characters loaded)
Loading BDF font... (1280 characters loaded)
Loading BDF font... (1536 characters loaded)
Generating cached BDF font...
Could not initialize SDL Unable to open a console terminal
mspacman/pi.1380791863.txt.gz · Last modified: 2013/10/03 05:17 by ben