summaryrefslogtreecommitdiff
path: root/games/jzintv
diff options
context:
space:
mode:
Diffstat (limited to 'games/jzintv')
-rw-r--r--games/jzintv/README20
-rw-r--r--games/jzintv/jzintv.SlackBuild72
-rw-r--r--games/jzintv/jzintv.info8
-rw-r--r--games/jzintv/jzintv_dprintf.patch461
-rw-r--r--games/jzintv/jzintv_rompath.patch12
-rw-r--r--games/jzintv/slack-desc19
6 files changed, 592 insertions, 0 deletions
diff --git a/games/jzintv/README b/games/jzintv/README
new file mode 100644
index 0000000000..6b223bb420
--- /dev/null
+++ b/games/jzintv/README
@@ -0,0 +1,20 @@
+jzintv is an emulator and development environment for the Mattel
+Intellivision game console.
+
+The Intellivision console contains code in the form of ROM. jzintv
+requires images of these ROMs in order to run. This package does not
+contain the ROM images due to copyright concerns. You can use the ROMs
+from the commercially available "Intellivision Lives!" CD-ROM, dump the
+ROMs from an Intellivision console, or attempt to find the ROMs on the
+'net somewhere. These are the same ROMs used by the MESS emulator,
+usually found as "intv.zip". Contents:
+
+exec.bin, 8192 bytes, md5sum 62e761035cb657903761800f4437b8af
+grom.bin, 2048 bytes, md5sum 0cd5946c6473e42e8e4c2137785e427f
+
+Your md5sums may not match, since Mattel released several versions of the
+ROMs. The above are known to work, but other versions might also work.
+jzintv looks for the .bin files, not the .zip file.
+
+Once you have the ROM images, place them in the /usr/share/jzintv/rom
+directory.
diff --git a/games/jzintv/jzintv.SlackBuild b/games/jzintv/jzintv.SlackBuild
new file mode 100644
index 0000000000..cbff9cf246
--- /dev/null
+++ b/games/jzintv/jzintv.SlackBuild
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+# Slackware build script for jzintv
+
+# Written by B. Watson (yalhcru@gmail.com)
+
+PRGNAM=jzintv
+VERSION=${VERSION:-1.0_beta3}
+ARCH=${ARCH:-i486}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+SRCVER=$(echo $VERSION | sed 's/_/-/')
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$SRCVER
+unzip $CWD/$PRGNAM-$SRCVER-src.zip
+cd $PRGNAM-$SRCVER
+chown -R root:root .
+chmod -R a-s,u+w,go+r-w .
+
+# jzintv defines a dprintf macro that clashes with stdio.h
+# when -D_GNU_SOURCE=1 (and sdl-config --cflags defines that,
+# not jzintv's Makefile). The patch changes the jzintv version
+# to jzintv_dprintf.
+patch -p1 < $CWD/jzintv_dprintf.patch
+
+# Don't see a way to redefine the ROM path on the make command
+# line (it's hard-coded to /usr/local/share/jzintv/rom).
+patch -p1 < $CWD/jzintv_rompath.patch
+
+cd src
+ make OPT_FLAGS="$SLKCFLAGS"
+cd -
+
+# There's no 'make install'
+rm -f bin/README* bin/*.dll
+strip bin/*
+mkdir -p $PKG/usr/bin
+cp -a bin/* $PKG/usr/bin
+
+# The rompath patch above makes jzintv look here for the
+# system ROMs
+mkdir -p $PKG/usr/share/$PRGNAM/rom
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -r *.txt doc examples rom misc $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cat $CWD/README > $PKG/usr/doc/$PRGNAM-$VERSION/README_SBo.txt
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz
diff --git a/games/jzintv/jzintv.info b/games/jzintv/jzintv.info
new file mode 100644
index 0000000000..5918fe4a4f
--- /dev/null
+++ b/games/jzintv/jzintv.info
@@ -0,0 +1,8 @@
+PRGNAM="jzintv"
+VERSION="1.0_beta3"
+HOMEPAGE="http://spatula-city.org/~im14u2c/intv/"
+DOWNLOAD="http://spatula-city.org/~im14u2c/intv/dl/jzintv-1.0-beta3-src.zip"
+MD5SUM="67aed7e845726eba6ffc4706a88d3366"
+MAINTAINER="B. Watson"
+EMAIL="yalhcru@gmail.com"
+APPROVED="dsomero"
diff --git a/games/jzintv/jzintv_dprintf.patch b/games/jzintv/jzintv_dprintf.patch
new file mode 100644
index 0000000000..de01f0d702
--- /dev/null
+++ b/games/jzintv/jzintv_dprintf.patch
@@ -0,0 +1,461 @@
+diff -Naur jzintv-1.0-beta3/src/cp1600/emu_link.c jzintv-1.0-beta3.patched/src/cp1600/emu_link.c
+--- jzintv-1.0-beta3/src/cp1600/emu_link.c 2006-07-05 22:11:46.000000000 -0400
++++ jzintv-1.0-beta3.patched/src/cp1600/emu_link.c 2009-02-04 19:12:58.000000000 -0500
+@@ -103,18 +103,18 @@
+ if (cpu->r[0] != 0x4A5A)
+ return;
+
+- //dprintf(("\nEMU-LINK %.4X %.4X %.4X\n", cpu->r[1], cpu->r[2], cpu->r[3]));
++ //jzintv_dprintf(("\nEMU-LINK %.4X %.4X %.4X\n", cpu->r[1], cpu->r[2], cpu->r[3]));
+ if (cpu->r[1] > emu_link_api_cnt ||
+ emu_link_api[cpu->r[1]] == NULL)
+ {
+- //dprintf(("EMU-LINK Invalid API\n"));
++ //jzintv_dprintf(("EMU-LINK Invalid API\n"));
+ cpu->C = 1;
+ cpu->r[0] = 0xFFFF;
+ return;
+ }
+
+ cpu->r[0] = emu_link_api[cpu->r[1]](cpu, &fail);
+- //dprintf(("EMU-LINK Result: %.4X %d\n", cpu->r[0], fail));
++ //jzintv_dprintf(("EMU-LINK Result: %.4X %d\n", cpu->r[0], fail));
+
+ cpu->C = fail != 0;
+ return;
+diff -Naur jzintv-1.0-beta3/src/gif/lzw_enc.c jzintv-1.0-beta3.patched/src/gif/lzw_enc.c
+--- jzintv-1.0-beta3/src/gif/lzw_enc.c 2006-07-03 01:04:46.000000000 -0400
++++ jzintv-1.0-beta3.patched/src/gif/lzw_enc.c 2009-02-04 19:12:58.000000000 -0500
+@@ -14,9 +14,9 @@
+ #include "config.h"
+
+ #ifdef DEBUG
+-# define dprintf(x) jzp_printf x
++# define jzintv_dprintf(x) jzp_printf x
+ #else
+-# define dprintf(x)
++# define jzintv_dprintf(x)
+ #endif
+
+
+@@ -46,7 +46,7 @@
+ if (i_buf[i] > max_sym)
+ max_sym = i_buf[i];
+ dict_stride = max_sym + 1;
+- dprintf(("max_sym = %.2X\n", max_sym));
++ jzintv_dprintf(("max_sym = %.2X\n", max_sym));
+
+ /* -------------------------------------------------------------------- */
+ /* Compute and output the starting code-size. */
+@@ -54,7 +54,7 @@
+ for (code_size = 2; code_size < 8; code_size++)
+ if ((1 << code_size) > max_sym)
+ break;
+- dprintf(("code_size = %.2X\n", code_size));
++ jzintv_dprintf(("code_size = %.2X\n", code_size));
+ /* -------------------------------------------------------------------- */
+ /* Allocate the dictionary. We store the tree in a 2-D array. One */
+ /* dimension is the code number, and the other is the codes it chains */
+@@ -89,7 +89,7 @@
+ /* -------------------------------------------------------------------- */
+ while (i_ptr <= i_end && code != end_of_info)
+ {
+- dprintf(("remaining: %10d\n", i_end - i_ptr));
++ jzintv_dprintf(("remaining: %10d\n", i_end - i_ptr));
+
+ /* ---------------------------------------------------------------- */
+ /* If dictionary's full, send a clear code and flush dictionary. */
+@@ -97,7 +97,7 @@
+ /* ---------------------------------------------------------------- */
+ if (next_new_code == 0x1000)
+ {
+- dprintf(("CLEAR %.3X %d\n", clear_code, curr_size));
++ jzintv_dprintf(("CLEAR %.3X %d\n", clear_code, curr_size));
+
+ curr_word |= clear_code << curr_bits;
+ curr_bits += curr_size;
+@@ -106,7 +106,7 @@
+ /* Handle packaging data into 256-byte records */
+ if (o_ptr - last_len_byte == 256)
+ {
+- dprintf(("last_len_byte=%.8X o_ptr=%.8X\n",
++ jzintv_dprintf(("last_len_byte=%.8X o_ptr=%.8X\n",
+ last_len_byte, o_ptr));
+
+ *last_len_byte = 255;
+@@ -125,7 +125,7 @@
+ memset(dict, 0, 4096*sizeof(uint_16)*dict_stride);
+ } else
+ {
+- dprintf(("new code: %.3X = %.3X + %.2X\n", next_new_code,
++ jzintv_dprintf(("new code: %.3X = %.3X + %.2X\n", next_new_code,
+ code, next_char));
+
+ dict[code*dict_stride + next_char] = next_new_code;
+@@ -135,7 +135,7 @@
+ }
+
+ code = next_char; /* Previous concat becomes new initial code */
+- dprintf(("next code: %.2X %c\n", code, code == end_of_info ? '*':' '));
++ jzintv_dprintf(("next code: %.2X %c\n", code, code == end_of_info ? '*':' '));
+
+ /* ---------------------------------------------------------------- */
+ /* Keep concatenating as long as we stay in the dictionary. */
+@@ -143,7 +143,7 @@
+ if (i_ptr == i_end)
+ {
+ next_char = end_of_info;
+- dprintf(("--> next is EOI!\n"));
++ jzintv_dprintf(("--> next is EOI!\n"));
+ } else
+ {
+ next_code = -1;
+@@ -151,7 +151,7 @@
+ {
+ next_char = *i_ptr++;
+ next_code = dict[code*dict_stride + next_char];
+- dprintf(("--> code: %.3X + %.2X = %.3X\n", code,
++ jzintv_dprintf(("--> code: %.3X + %.2X = %.3X\n", code,
+ next_char, next_code));
+
+ if (next_code)
+@@ -162,7 +162,7 @@
+
+ if (next_char == end_of_info)
+ {
+- dprintf(("--> next is EOI! (b)\n"));
++ jzintv_dprintf(("--> next is EOI! (b)\n"));
+ }
+ }
+
+@@ -174,14 +174,14 @@
+ /* ---------------------------------------------------------------- */
+ curr_word |= code << curr_bits;
+ curr_bits += curr_size;
+- dprintf(("SEND %.4X %d curr: %.8X %2d\n", code, curr_size,
++ jzintv_dprintf(("SEND %.4X %d curr: %.8X %2d\n", code, curr_size,
+ curr_word, curr_bits));
+ while (curr_bits > 8)
+ {
+ /* Handle packaging data into 256-byte records */
+ if (o_ptr - last_len_byte == 256)
+ {
+- dprintf(("last_len_byte=%.8X o_ptr=%.8X\n", last_len_byte,
++ jzintv_dprintf(("last_len_byte=%.8X o_ptr=%.8X\n", last_len_byte,
+ o_ptr));
+ *last_len_byte = 255;
+ last_len_byte = o_ptr++;
+@@ -203,7 +203,7 @@
+ /* Handle packaging data into 256-byte records */
+ if (o_ptr - last_len_byte == 256)
+ {
+- dprintf(("last_len_byte=%.8X o_ptr=%.8X\n", last_len_byte, o_ptr));
++ jzintv_dprintf(("last_len_byte=%.8X o_ptr=%.8X\n", last_len_byte, o_ptr));
+ *last_len_byte = 255;
+ last_len_byte = o_ptr++;
+ }
+@@ -223,7 +223,7 @@
+ *last_len_byte = o_ptr - last_len_byte - 1;
+ *o_ptr++ = 0;
+
+- dprintf(("encoded %d bytes\n", o_ptr - o_buf));
++ jzintv_dprintf(("encoded %d bytes\n", o_ptr - o_buf));
+
+ return o_ptr - o_buf;
+
+@@ -232,11 +232,11 @@
+ }
+
+ //#define DEBUG
+-#undef dprintf
++#undef jzintv_dprintf
+ #ifdef DEBUG
+-# define dprintf(x) jzp_printf x
++# define jzintv_dprintf(x) jzp_printf x
+ #else
+-# define dprintf(x)
++# define jzintv_dprintf(x)
+ #endif
+
+ int lzw_encode2(const uint_8 *i_buf, const uint_8 *i_buf_alt,
+@@ -270,7 +270,7 @@
+ }
+
+ dict_stride = max_sym + 1;
+- dprintf(("max_sym = %.2X\n", max_sym));
++ jzintv_dprintf(("max_sym = %.2X\n", max_sym));
+
+ /* -------------------------------------------------------------------- */
+ /* Compute and output the starting code-size. */
+@@ -278,7 +278,7 @@
+ for (code_size = 2; code_size < 8; code_size++)
+ if ((1 << code_size) > max_sym)
+ break;
+- dprintf(("code_size = %.2X\n", code_size));
++ jzintv_dprintf(("code_size = %.2X\n", code_size));
+ /* -------------------------------------------------------------------- */
+ /* Allocate the dictionary. We store the tree in a 2-D array. One */
+ /* dimension is the code number, and the other is the codes it chains */
+@@ -312,7 +312,7 @@
+ /* -------------------------------------------------------------------- */
+ while (i_idx <= i_len && code != end_of_info)
+ {
+- dprintf(("remaining: %10d\n", i_len - i_idx));
++ jzintv_dprintf(("remaining: %10d\n", i_len - i_idx));
+
+ /* ---------------------------------------------------------------- */
+ /* If dictionary's full, send a clear code and flush dictionary. */
+@@ -320,7 +320,7 @@
+ /* ---------------------------------------------------------------- */
+ if (next_new_code == 0x1000)
+ {
+- dprintf(("CLEAR %.3X %d\n", clear_code, curr_size));
++ jzintv_dprintf(("CLEAR %.3X %d\n", clear_code, curr_size));
+
+ curr_word |= clear_code << curr_bits;
+ curr_bits += curr_size;
+@@ -329,7 +329,7 @@
+ /* Handle packaging data into 256-byte records */
+ if (o_ptr - last_len_byte == 256)
+ {
+- dprintf(("last_len_byte=%.8X o_ptr=%.8X\n",
++ jzintv_dprintf(("last_len_byte=%.8X o_ptr=%.8X\n",
+ last_len_byte, o_ptr));
+
+ *last_len_byte = 255;
+@@ -348,7 +348,7 @@
+ memset(dict, 0, 4096*sizeof(uint_16)*dict_stride);
+ } else
+ {
+- dprintf(("new code: %.3X = %.3X + %.2X\n", next_new_code,
++ jzintv_dprintf(("new code: %.3X = %.3X + %.2X\n", next_new_code,
+ code, next_char));
+
+ dict[code*dict_stride + next_char] = next_new_code;
+@@ -358,7 +358,7 @@
+ }
+
+ code = next_char; /* Previous concat becomes new initial code */
+- dprintf(("next code: %.2X %c\n", code, code == end_of_info ? '*':' '));
++ jzintv_dprintf(("next code: %.2X %c\n", code, code == end_of_info ? '*':' '));
+
+ /* ---------------------------------------------------------------- */
+ /* Keep concatenating as long as we stay in the dictionary. */
+@@ -366,7 +366,7 @@
+ if (i_idx == i_len)
+ {
+ next_char = end_of_info;
+- dprintf(("--> next is EOI!\n"));
++ jzintv_dprintf(("--> next is EOI!\n"));
+ } else
+ {
+ next_code = -1;
+@@ -378,19 +378,19 @@
+ if ((tmp = dict[code*dict_stride + i_buf[i_idx]]) != 0)
+ {
+ next_code = tmp;
+- dprintf(("--> code: %.3X + %.2X(a) = %.3X\n", code,
++ jzintv_dprintf(("--> code: %.3X + %.2X(a) = %.3X\n", code,
+ next_char, next_code));
+ } else
+ if ((tmp = dict[code*dict_stride + i_buf_alt[i_idx]]) != 0)
+ {
+ next_char = i_buf_alt[i_idx];
+ next_code = tmp;
+- dprintf(("--> code: %.3X + %.2X(b) = %.3X\n", code,
++ jzintv_dprintf(("--> code: %.3X + %.2X(b) = %.3X\n", code,
+ next_char, next_code));
+ } else
+ {
+ next_code = 0;
+- dprintf(("--> code: %.3X + %.2X(c) = %.3X\n", code,
++ jzintv_dprintf(("--> code: %.3X + %.2X(c) = %.3X\n", code,
+ next_char, next_code));
+ }
+ i_idx++;
+@@ -403,7 +403,7 @@
+
+ if (next_char == end_of_info)
+ {
+- dprintf(("--> next is EOI! (b)\n"));
++ jzintv_dprintf(("--> next is EOI! (b)\n"));
+ }
+ }
+
+@@ -415,14 +415,14 @@
+ /* ---------------------------------------------------------------- */
+ curr_word |= code << curr_bits;
+ curr_bits += curr_size;
+- dprintf(("SEND %.4X %d curr: %.8X %2d\n", code, curr_size,
++ jzintv_dprintf(("SEND %.4X %d curr: %.8X %2d\n", code, curr_size,
+ curr_word, curr_bits));
+ while (curr_bits > 8)
+ {
+ /* Handle packaging data into 256-byte records */
+ if (o_ptr - last_len_byte == 256)
+ {
+- dprintf(("last_len_byte=%.8X o_ptr=%.8X\n", last_len_byte,
++ jzintv_dprintf(("last_len_byte=%.8X o_ptr=%.8X\n", last_len_byte,
+ o_ptr));
+ *last_len_byte = 255;
+ last_len_byte = o_ptr++;
+@@ -444,7 +444,7 @@
+ /* Handle packaging data into 256-byte records */
+ if (o_ptr - last_len_byte == 256)
+ {
+- dprintf(("last_len_byte=%.8X o_ptr=%.8X\n", last_len_byte, o_ptr));
++ jzintv_dprintf(("last_len_byte=%.8X o_ptr=%.8X\n", last_len_byte, o_ptr));
+ *last_len_byte = 255;
+ last_len_byte = o_ptr++;
+ }
+@@ -464,7 +464,7 @@
+ *last_len_byte = o_ptr - last_len_byte - 1;
+ *o_ptr++ = 0;
+
+- dprintf(("encoded %d bytes\n", o_ptr - o_buf));
++ jzintv_dprintf(("encoded %d bytes\n", o_ptr - o_buf));
+
+ return o_ptr - o_buf;
+
+diff -Naur jzintv-1.0-beta3/src/ivoice/ivoice.c jzintv-1.0-beta3.patched/src/ivoice/ivoice.c
+--- jzintv-1.0-beta3/src/ivoice/ivoice.c 2006-07-05 22:11:46.000000000 -0400
++++ jzintv-1.0-beta3.patched/src/ivoice/ivoice.c 2009-02-04 19:12:58.000000000 -0500
+@@ -44,9 +44,9 @@
+
+ //#define DEBUG
+ #ifdef DEBUG
+-#define dprintf(x) jzp_printf x ; jzp_flush()
++#define jzintv_dprintf(x) jzp_printf x ; jzp_flush()
+ #else
+-#define dprintf(x)
++#define jzintv_dprintf(x)
+ #endif
+
+ #undef HIGH_QUALITY
+@@ -1086,7 +1086,7 @@
+
+ iv_smp_ckupd(iv, immed4*16 + opcode);
+
+- dprintf(("$%.4X.%.1X: OPCODE %d%d%d%d.%d%d\n",
++ jzintv_dprintf(("$%.4X.%.1X: OPCODE %d%d%d%d.%d%d\n",
+ (iv->pc >> 3) - 1, iv->pc & 7,
+ !!(opcode & 1), !!(opcode & 2),
+ !!(opcode & 4), !!(opcode & 8),
+@@ -1211,7 +1211,7 @@
+ /* ---------------------------------------------------------------- */
+ if (ctrl_xfer)
+ {
+- dprintf(("jumping to $%.4X.%.1X: ", iv->pc >> 3, iv->pc & 7));
++ jzintv_dprintf(("jumping to $%.4X.%.1X: ", iv->pc >> 3, iv->pc & 7));
+
+ /* ------------------------------------------------------------ */
+ /* Set our "FIFO Selected" flag based on whether we're going */
+@@ -1219,7 +1219,7 @@
+ /* ------------------------------------------------------------ */
+ iv->fifo_sel = iv->pc == FIFO_ADDR;
+
+- dprintf(("%s ", iv->fifo_sel ? "FIFO" : "ROM"));
++ jzintv_dprintf(("%s ", iv->fifo_sel ? "FIFO" : "ROM"));
+
+ /* ------------------------------------------------------------ */
+ /* Control transfers to the FIFO cause it to discard the */
+@@ -1227,14 +1227,14 @@
+ /* ------------------------------------------------------------ */
+ if (iv->fifo_sel && iv->fifo_bitp)
+ {
+- dprintf(("bitp = %d -> Flush", iv->fifo_bitp));
++ jzintv_dprintf(("bitp = %d -> Flush", iv->fifo_bitp));
+
+ /* Discard partially-read decle. */
+ if (iv->fifo_tail < iv->fifo_head) iv->fifo_tail++;
+ iv->fifo_bitp = 0;
+ }
+
+- dprintf(("\n"));
++ jzintv_dprintf(("\n"));
+
+ continue;
+ }
+@@ -1255,7 +1255,7 @@
+ #endif
+
+ iv->filt.rpt = repeat + 1;
+- dprintf(("repeat = %d\n", repeat));
++ jzintv_dprintf(("repeat = %d\n", repeat));
+
+ i = (opcode << 3) | (iv->mode & 6);
+ idx0 = sp0256_df_idx[i++];
+@@ -1285,7 +1285,7 @@
+ field = cr & CR_FIELD;
+ value = 0;
+
+- dprintf(("$%.4X.%.1X: len=%2d shf=%2d prm=%2d d=%d f=%d ",
++ jzintv_dprintf(("$%.4X.%.1X: len=%2d shf=%2d prm=%2d d=%d f=%d ",
+ iv->pc >> 3, iv->pc & 7, len, shf, prm, !!delta, !!field));
+ /* ------------------------------------------------------------ */
+ /* Clear any registers that were requested to be cleared. */
+@@ -1313,7 +1313,7 @@
+ }
+ else
+ {
+- dprintf((" (no update)\n"));
++ jzintv_dprintf((" (no update)\n"));
+ continue;
+ }
+
+@@ -1331,7 +1331,7 @@
+ if (shf)
+ value <<= shf;
+
+- dprintf(("v=%.2X (%c%.2X) ", value & 0xFF,
++ jzintv_dprintf(("v=%.2X (%c%.2X) ", value & 0xFF,
+ value & 0x80 ? '-' : '+',
+ 0xFF & (value & 0x80 ? -value : value)));
+
+@@ -1342,12 +1342,12 @@
+ /* ------------------------------------------------------------ */
+ if (field)
+ {
+- dprintf(("--field-> r[%2d] = %.2X -> ", prm, iv->filt.r[prm]));
++ jzintv_dprintf(("--field-> r[%2d] = %.2X -> ", prm, iv->filt.r[prm]));
+
+ iv->filt.r[prm] &= ~(~0 << shf); /* Clear the old bits. */
+ iv->filt.r[prm] |= value; /* Merge in the new bits. */
+
+- dprintf(("%.2X\n", iv->filt.r[prm]));
++ jzintv_dprintf(("%.2X\n", iv->filt.r[prm]));
+
+ continue;
+ }
+@@ -1357,11 +1357,11 @@
+ /* ------------------------------------------------------------ */
+ if (delta)
+ {
+- dprintf(("--delta-> r[%2d] = %.2X -> ", prm, iv->filt.r[prm]));
++ jzintv_dprintf(("--delta-> r[%2d] = %.2X -> ", prm, iv->filt.r[prm]));
+
+ iv->filt.r[prm] += value;
+
+- dprintf(("%.2X\n", iv->filt.r[prm]));
++ jzintv_dprintf(("%.2X\n", iv->filt.r[prm]));
+
+ continue;
+ }
+@@ -1370,7 +1370,7 @@
+ /* Otherwise, just write the new value. */
+ /* ------------------------------------------------------------ */
+ iv->filt.r[prm] = value;
+- dprintf(("--value-> r[%2d] = %.2X\n", prm, iv->filt.r[prm]));
++ jzintv_dprintf(("--value-> r[%2d] = %.2X\n", prm, iv->filt.r[prm]));
+ }
+
+ /* ---------------------------------------------------------------- */
+@@ -1727,7 +1727,7 @@
+ /* ---------------------------------------------------------------- */
+ if ((ivoice->fifo_head - ivoice->fifo_tail) >= 64)
+ {
+- dprintf(("IV: Dropped FIFO write\n"));
++ jzintv_dprintf(("IV: Dropped FIFO write\n"));
+ return;
+ }
+
diff --git a/games/jzintv/jzintv_rompath.patch b/games/jzintv/jzintv_rompath.patch
new file mode 100644
index 0000000000..b5b40e566a
--- /dev/null
+++ b/games/jzintv/jzintv_rompath.patch
@@ -0,0 +1,12 @@
+diff -Naur jzintv-1.0-beta3/src/config.h jzintv-1.0-beta3.patched/src/config.h
+--- jzintv-1.0-beta3/src/config.h 2006-07-06 13:52:01.000000000 -0400
++++ jzintv-1.0-beta3.patched/src/config.h 2009-02-04 23:28:34.000000000 -0500
+@@ -166,7 +166,7 @@
+
+ #ifdef linux
+ # define USE_STRCASECMP
+-# define DEFAULT_ROM_PATH ".:=../rom:/usr/local/share/jzintv/rom"
++# define DEFAULT_ROM_PATH ".:/usr/share/jzintv/rom"
+ # define HAS_LINK
+ #endif
+
diff --git a/games/jzintv/slack-desc b/games/jzintv/slack-desc
new file mode 100644
index 0000000000..999aa9b6fc
--- /dev/null
+++ b/games/jzintv/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+jzintv: jzintv (Intellivision emulator)
+jzintv:
+jzintv: jzintv is an emulator and development environment for the Mattel
+jzintv: Intellivision game console.
+jzintv:
+jzintv:
+jzintv:
+jzintv:
+jzintv:
+jzintv:
+jzintv: