Include Enjoyable and Rogue 1980 sites.
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Fri, 19 Sep 2014 20:47:02 +0000 (22:47 +0200)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Fri, 19 Sep 2014 20:47:02 +0000 (22:47 +0200)
23 files changed:
Makefile
enjoyable/Enjoyable-1.1.zip [new file with mode: 0644]
enjoyable/Enjoyable.zip [new file with mode: 0644]
enjoyable/appcast.xml [new file with mode: 0644]
enjoyable/icon.png [new file with mode: 0644]
enjoyable/index.html [new file with mode: 0644]
enjoyable/mappings/6180 the moon.enjoyable [new file with mode: 0644]
enjoyable/mappings/Anodyne.enjoyable [new file with mode: 0644]
enjoyable/mappings/BasketBelle.enjoyable [new file with mode: 0644]
enjoyable/mappings/Canabalt.enjoyable [new file with mode: 0644]
enjoyable/mappings/Forget-Me-Not.enjoyable [new file with mode: 0644]
enjoyable/mappings/KRUNCH.enjoyable [new file with mode: 0644]
enjoyable/mappings/Probability 0.enjoyable [new file with mode: 0644]
enjoyable/mappings/Red Rogue.enjoyable [new file with mode: 0644]
enjoyable/mappings/Runner2.enjoyable [new file with mode: 0644]
enjoyable/mappings/Super Hexagon.enjoyable [new file with mode: 0644]
enjoyable/screenshot.png [new file with mode: 0644]
pphs/index.html [new file with mode: 0644]
pphs/postpartum.html [new file with mode: 0644]
pphs/rogue-1980-linux.zip [new file with mode: 0644]
pphs/rogue-1980-osx.zip [new file with mode: 0644]
pphs/rogue-1980-win.zip [new file with mode: 0644]
pphs/rogue36.exe [new file with mode: 0644]

index 34f9a3b..cab91ec 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,8 @@ GIT_REMOTE := http://git.yukkurigames.com
 
 SUBPROJECTS := 123456789 choicecss heroik matrixcreatrix mlpccg webcart1000 labelle
 
+.PHONY: all clean superclean update
+
 all: $(ICONS) 
 
 $(SUBPROJECTS):
@@ -35,3 +37,5 @@ update:
 clean:
        $(RM) $(ICONS)
 
+superclean: clean
+       $(RM) -r $(SUBPROJECTS)
diff --git a/enjoyable/Enjoyable-1.1.zip b/enjoyable/Enjoyable-1.1.zip
new file mode 100644 (file)
index 0000000..ab45e88
Binary files /dev/null and b/enjoyable/Enjoyable-1.1.zip differ
diff --git a/enjoyable/Enjoyable.zip b/enjoyable/Enjoyable.zip
new file mode 100644 (file)
index 0000000..fc4391a
Binary files /dev/null and b/enjoyable/Enjoyable.zip differ
diff --git a/enjoyable/appcast.xml b/enjoyable/appcast.xml
new file mode 100644 (file)
index 0000000..130ee52
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0"
+     xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"
+     xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <channel>
+    <title>Changes in Enjoyable</title>
+    <link>http://yukkurigames.com/enjoyable/appcast.xml</link>
+    <description>Most recent changes with links to updates.</description>
+    <language>en</language>
+    <item>
+      <title>Version 1.1</title>
+      <description><![CDATA[
+      <p>
+      Mouse simulation now includes drag-and-drop, middle and extended
+      button presses, and horizontal scrolling.
+      </p>
+      <p>
+      The system menu bar now contains a status item when Enjoyable is
+      running. You can enable and disable it and change mappings from this
+      item. It flashes briefly when the mapping changes automatically.
+      </p>
+      <p>
+      Automatic switching for applications with ambiguous names
+      (e.g. "Flash Player") was improved. You can also name a mapping after
+      the application's filename.
+      </p>
+      ]]>
+      </description>
+      <pubDate>Mon, 01 Apr 2013 10:26:13 -0500</pubDate>
+      <enclosure url="http://yukkurigames.com/enjoyable/Enjoyable-1.1.zip"
+                 sparkle:version="583"
+                 sparkle:shortVersionString="1.1"
+                 length="1260799"
+                 type="application/octet-stream" />
+    </item>
+  </channel>
+</rss>
diff --git a/enjoyable/icon.png b/enjoyable/icon.png
new file mode 100644 (file)
index 0000000..5b878ef
Binary files /dev/null and b/enjoyable/icon.png differ
diff --git a/enjoyable/index.html b/enjoyable/index.html
new file mode 100644 (file)
index 0000000..3cdd8a3
--- /dev/null
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name=viewport content="width=device-width, initial-scale=1">
+    <link rel="stylesheet" href="/css/main.css" type="text/css">
+    <title>Enjoyable - Joystick and gamepad mapping for Mac OS X ~ Yukkuri Games</title>
+    <meta name="Description" content="Use your gamepad or joystick like a mousee and keyboard on Mac OS X. Like joy2key / JoyToKey on other operating systems." />
+  </head>
+  <body>
+    <header>
+      <a href="/">
+        <img src="/logotype_horizontal_1.png" class=logo alt="(◕ ヮ ◕)">
+        <img src="/logotype_horizontal_2.png" class=optional
+             alt="Yukkuri Games">
+      </a>
+      <h1>Enjoyable</h1>
+    </header>
+    <main>
+      <p style="text-align: center; max-width: 70%; margin-left: 15%;">
+        Use your gamepad or joystick like a mouse and keyboard on Mac OS
+        X.<br />
+        <a href="Enjoyable-1.1.zip">
+          <img src="screenshot.png"
+               alt="A screenshot of Enjoyable"
+               style="max-width: 100%"></a>
+      </p>
+      <ul class="download">
+        <li><a href="Enjoyable-1.1.zip">Enjoyable-1.1.zip</a> (1.2MB)
+        <li class="sh"><span data-optional>git clone </span><a href="http://git.yukkurigames.com/enjoyable.git">http://git.yukkurigames.com/enjoyable.git</a>
+      </ul>
+
+      <h2>Requirements</h2>
+
+      <ul>
+        <li>Mac OS X 10.7+</li>
+        <li>One or more HID-compatible (e.g. USB or Bluetooth) input devices</li>
+      </ul>
+
+      <h2>Mappings</h2>
+      <p>
+        I play games with a Playstation 3 controller, so these will be
+        useless if you have a different controller. These are the
+        mappings I use for games I like. To use them, just save them and
+        double-click on them in Finder, or use ⌘O in Enjoyable to import
+        them.
+      </p>
+      <ul style="font-size: 0.9em;">
+        <li><a href="mappings/6180%20the%20moon.enjoyable">6180 the moon</a></li>
+        <li><a href="mappings/Anodyne.enjoyable">Anodyne</a></li>
+        <li><a href="mappings/BasketBelle.enjoyable">BasketBelle</a></li>
+        <li><a href="mappings/Canabalt.enjoyable">Canabalt</a></li>
+        <li><a href="mappings/Forget-Me-Not.enjoyable">Forget-Me-Not</a></li>
+        <li><a href="mappings/KRUNCH.enjoyable">KRUNCH</a></li>
+        <li><a href="mappings/Probability%200.enjoyable">Probability 0</a></li>
+        <li><a href="mappings/Red%20Rogue.enjoyable">Red Rogue</a></li>
+        <li><a href="mappings/Runner2.enjoyable">Bit.Trip Presents Runner 2: Future Legend of Rhythm Alien</a></li>
+        <li><a href="mappings/Super%20Hexagon.enjoyable">Super Hexagon</a></li>
+      </ul>
+
+      <h2>License</h2>
+      <div class="copyright">2013
+        Joe Wreschnig, 2012 Yifeng Huang, 2009 Sam McCall
+        <p>Enjoyable is free software written by Joe Wreschnig and is
+          based on the Enjoy codebase written
+          by <a href="http://nongraphical.com">Yifeng Huang</a>
+          and <a href="http://abstractable.net/enjoy/">Sam McCall</a>.</p>
+
+
+        <p>Permission is hereby granted, free of charge, to any person obtaining
+          a copy of this software and associated documentation files (the
+          "Software"), to deal in the Software without restriction, including
+          without limitation the rights to use, copy, modify, merge, publish,
+          distribute, sublicense, and/or sell copies of the Software, and to
+          permit persons to whom the Software is furnished to do so, subject to
+          the following conditions:</p>
+
+        <p>The above copyright notice and this permission notice shall be
+          included in all copies or substantial portions of the Software.</p>
+        
+      </div>
+    </main>
+  </body>
+</html>
diff --git a/enjoyable/mappings/6180 the moon.enjoyable b/enjoyable/mappings/6180 the moon.enjoyable
new file mode 100644 (file)
index 0000000..047f1fa
--- /dev/null
@@ -0,0 +1,45 @@
+{
+  "name" : "6180 the moon",
+  "entries" : {
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 53
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 1" : {
+      "type" : "key press",
+      "key" : 15
+    },
+    "1356:616:1~Button 12" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 49
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/Anodyne.enjoyable b/enjoyable/mappings/Anodyne.enjoyable
new file mode 100644 (file)
index 0000000..a29d587
--- /dev/null
@@ -0,0 +1,61 @@
+{
+  "name" : "Anodyne",
+  "entries" : {
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Axis 1~Low" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Button 1" : {
+      "type" : "key press",
+      "key" : 53
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 8
+    },
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Axis 1~High" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 7
+    },
+    "1356:616:1~Button 13" : {
+      "type" : "key press",
+      "key" : 36
+    },
+    "1356:616:1~Axis 2~High" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 36
+    },
+    "1356:616:1~Axis 2~Low" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 7
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/BasketBelle.enjoyable b/enjoyable/mappings/BasketBelle.enjoyable
new file mode 100644 (file)
index 0000000..5762423
--- /dev/null
@@ -0,0 +1,53 @@
+{
+  "name" : "BasketBelle",
+  "entries" : {
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Axis 1~Low" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 7
+    },
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Axis 1~High" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 7
+    },
+    "1356:616:1~Axis 2~High" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 36
+    },
+    "1356:616:1~Axis 2~Low" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 53
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/Canabalt.enjoyable b/enjoyable/mappings/Canabalt.enjoyable
new file mode 100644 (file)
index 0000000..1054bdc
--- /dev/null
@@ -0,0 +1,45 @@
+{
+  "name" : "Canabalt",
+  "entries" : {
+    "1356:616:1~Button 13" : {
+      "type" : "key press",
+      "key" : 7
+    },
+    "1356:616:1~Button 9" : {
+      "type" : "key press",
+      "key" : 27
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 7
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 7
+    },
+    "1356:616:1~Button 1" : {
+      "type" : "key press",
+      "key" : 53
+    },
+    "1356:616:1~Button 10" : {
+      "type" : "key press",
+      "key" : 24
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 7
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/Forget-Me-Not.enjoyable b/enjoyable/mappings/Forget-Me-Not.enjoyable
new file mode 100644 (file)
index 0000000..4badd4e
--- /dev/null
@@ -0,0 +1,49 @@
+{
+  "name" : "Forget-Me-Not",
+  "entries" : {
+    "1356:616:1~Axis 2~Low" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 36
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 36
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 36
+    },
+    "1356:616:1~Axis 1~Low" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Axis 2~High" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Axis 1~High" : {
+      "type" : "key press",
+      "key" : 124
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/KRUNCH.enjoyable b/enjoyable/mappings/KRUNCH.enjoyable
new file mode 100644 (file)
index 0000000..ff74d03
--- /dev/null
@@ -0,0 +1,37 @@
+{
+  "name" : "KRUNCH",
+  "entries" : {
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 0
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 1
+    },
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 2
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 13
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 6
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 53
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 6
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 53
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/Probability 0.enjoyable b/enjoyable/mappings/Probability 0.enjoyable
new file mode 100644 (file)
index 0000000..baf2249
--- /dev/null
@@ -0,0 +1,41 @@
+{
+  "name" : "Probability 0",
+  "entries" : {
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 7
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 6
+    },
+    "1356:616:1~Axis 1~Low" : {
+      "type" : "key press",
+      "key" : 55
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 12
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/Red Rogue.enjoyable b/enjoyable/mappings/Red Rogue.enjoyable
new file mode 100644 (file)
index 0000000..2c0b40a
--- /dev/null
@@ -0,0 +1,53 @@
+{
+  "name" : "Red Rogue",
+  "entries" : {
+    "1356:616:1~Button 11" : {
+      "type" : "key press",
+      "key" : 3
+    },
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 7
+    },
+    "1356:616:1~Button 12" : {
+      "type" : "key press",
+      "key" : 3
+    },
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 6
+    },
+    "1356:616:1~Button 13" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 10" : {
+      "type" : "key press",
+      "key" : 8
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 9
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/Runner2.enjoyable b/enjoyable/mappings/Runner2.enjoyable
new file mode 100644 (file)
index 0000000..f43bc66
--- /dev/null
@@ -0,0 +1,77 @@
+{
+  "name" : "Runner2",
+  "entries" : {
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 2
+    },
+    "1356:616:1~Axis 1~Low" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Axis 4~Low" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 7" : {
+      "type" : "key press",
+      "key" : 1
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 38
+    },
+    "1356:616:1~Button 12" : {
+      "type" : "key press",
+      "key" : 59
+    },
+    "1356:616:1~Axis 3~High" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 0
+    },
+    "1356:616:1~Axis 4~High" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Axis 3~Low" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 16" : {
+      "type" : "key press",
+      "key" : 40
+    },
+    "1356:616:1~Axis 1~High" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Axis 2~High" : {
+      "type" : "key press",
+      "key" : 125
+    },
+    "1356:616:1~Button 13" : {
+      "type" : "key press",
+      "key" : 12
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 36
+    },
+    "1356:616:1~Axis 2~Low" : {
+      "type" : "key press",
+      "key" : 126
+    },
+    "1356:616:1~Button 5" : {
+      "type" : "key press",
+      "key" : 13
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 53
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/mappings/Super Hexagon.enjoyable b/enjoyable/mappings/Super Hexagon.enjoyable
new file mode 100644 (file)
index 0000000..50c0c99
--- /dev/null
@@ -0,0 +1,45 @@
+{
+  "name" : "Super Hexagon",
+  "entries" : {
+    "1356:616:1~Button 9" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 8" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Axis 1~High" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 6" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 12" : {
+      "type" : "key press",
+      "key" : 124
+    },
+    "1356:616:1~Button 4" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Button 11" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Button 15" : {
+      "type" : "key press",
+      "key" : 49
+    },
+    "1356:616:1~Axis 1~Low" : {
+      "type" : "key press",
+      "key" : 123
+    },
+    "1356:616:1~Button 14" : {
+      "type" : "key press",
+      "key" : 53
+    }
+  }
+}
\ No newline at end of file
diff --git a/enjoyable/screenshot.png b/enjoyable/screenshot.png
new file mode 100644 (file)
index 0000000..74835a4
Binary files /dev/null and b/enjoyable/screenshot.png differ
diff --git a/pphs/index.html b/pphs/index.html
new file mode 100644 (file)
index 0000000..c1f7213
--- /dev/null
@@ -0,0 +1,100 @@
+<?xml encoding="utf-8"?>
+<html>
+  <head>
+    <title>Rogue (1980)</title>
+    <style>
+      body { font-family: sans-serif; width: 80%; margin-left: 10%; }
+    </style>
+  </head>
+  <body>
+    <h1>Rogue (1980)</h1>
+    <h2>Exploring the Cavern of Cuties</h2>
+    <div style="width: 70%; margin-left: 15%;">
+      <blockquote style="font-style: italic;">
+       With as much time as game designers and critics
+      think and write about the specifics of game interactions, it's
+      often useful to step back and look at the basics. Let’s ask a
+      simple question: why are there so many video games dealing with
+      social interaction and relationships, and so few that explore
+      violence and action-oriented gameplay?
+</blockquote>
+      - <a href="http://ludusnovus.net/2011/08/15/why-so-few-violent-games/">Gregory
+      Weir, <em>Why So Few Violent Games?</em></a>
+    </div>
+    <p>
+      This question is critical to understanding the value, despite
+      otherwise negative attitudes, of <em>Rogue</em>, a
+      roleplaying game from the early 1980s. <em>Rogue</em> is usually
+      noted at best as a historical anomaly, one of the first games
+      that visualized a sense of space but with otherwise uncompelling
+      mechanics; at worst, it has been called a "murder simulator" and
+      "training for psychopaths".
+    </p>
+    <p>
+      Rather than try to adapt the existing dialogue and interpersonal
+      mechanics of text-driven fantasy adventure games to their new
+      interface for spatial navigation, the creators decided to add in
+      a variety of weaponry and offer exclusively utilitarian
+      fashion. In addition to the usual romantic options, the game
+      allows you to hit monsters with swords. This puzzling choice
+      might be related to its authorship - it was designed by college
+      students studying computer science rather than out of the more
+      usual fields like sociology or psychology.
+    </p>
+    <p>
+      <em>Rogue</em> was poorly received at the time of release. Historians
+      decried the mixture of weapons and armor from disparate
+      periods. Experts in weaponry were frustrated by its limited
+      tactics. <em>Drawing Room</em> magazine, a contemporary publication
+      for gaming hobbyists, said in its column "The Role of
+      Computers",
+    </p>
+    <blockquote>
+      The sweeping cinematic fight scenes found around the table in
+      games like <em>Counts and Courtship</em> are totally absent. The
+      difference between the precision of a duel, the chaos of a
+      bar-room brawl, or the stealthy preparation for an assassination
+      - all lost to a mush best described as "bumping and grinding"
+      that would have been better served to provide more variety to
+      the game's interpersonal interactions.
+    </blockquote>
+    <p>
+      Nonetheles, I think it provides an interesting view into the
+      world Weir hypothesizes - one in which games work with conflict
+      as often as cooperation, physics as much as politics.
+    </p>
+    <hr/>
+    <p>
+      The games controls are available by entering <kbd>?</kbd>, then
+      <kbd>*</kbd> for a list of commands. In addition to expected
+      ones like <kbd>f</kbd>lirt, <kbd>g</kbd>ift, and
+      <kbd>E</kbd>mbrace, the game supports <kbd>w</kbd>ield,
+      <kbd>z</kbd>ap, and other violent verbs. If <kbd>esc</kbd>
+      doesn't work to cancel a command, try <kbd>ctrl+g</kbd>; this
+      appears to be another artifact of 1980s code.
+    </p>
+    <p style="text-align: center">
+      Download Rogue (1980) for<br/>
+      <a href="rogue-1980-linux.zip">Linux</a>
+      - <a href="rogue-1980-win.zip">Windows</a>
+      - <a href="rogue-1980-osx.zip">Mac OS X</a>
+      - <a href="http://git.yukkurigames.com/?p=rogue-pphs.git;a=summary">Source</a>
+    </p>
+    <p>
+      Please note that this source code is from 1981 and written in
+      pre-standardized C. Only minor effort has been undertaken to
+      make it compile on modern computers, mostly related to 64 bit
+      cleanliness. It may crash, and it certainly will have security
+      problems if installed, as used to be traditional, with
+      setuid/setgid on a multi-user system.
+    </p>
+    <hr/>
+    <p>
+      If you're confused, don't worry! Everything above this line is a
+      half-truth at best. This was a game designed
+      for <a href="http://www.electricopolis.net/2013/03/29/pphs-jam/">♥♡♥
+      THE PULSE POUNDING HEART STOPPING DATING SIM JAM ♥♡♥ in
+      2013</a>. <a href="postpartum.html">I've written some more about what it "really" is and why I made it</a>.
+    </p>
+  </body>
+</html>
diff --git a/pphs/postpartum.html b/pphs/postpartum.html
new file mode 100644 (file)
index 0000000..50e641d
--- /dev/null
@@ -0,0 +1,166 @@
+<!doctype html>
+<html>
+  <head>
+    <title>Rogue (1980) (2013)</title>
+    <style>
+      body { font-family: sans-serif; width: 80%; margin-left: 10%; }
+    </style>
+  </head>
+  <body>
+    <h1>Rogue (1980) (2013)</h1>
+    <div style="width: 70%; margin-left: 15%;">
+      <blockquote style="font-style: italic;">
+       what idiot called it roguelike instead of roguehate
+      </blockquote> - <a href="https://twitter.com/pillowfort/status/322083264175144960">@pillowfort (Mat Jones)</a>
+    </div>
+    <p>
+      (What follows is some mostly unorganized thoughts about
+      designing and playing the game, and then some unorganized
+      explanation of the code changes. The title of this modified
+      game, by the way, is <em>Rogue (1980)</em>, to distinguish it
+      from <em>Rogue</em>.)
+    </p>
+    <p>
+      This game was an experiment. Not in the usual sense of
+      "experimental" game design as something mechanically unusual,
+      but rather as a system designed to prod at a particular problem
+      - abundance of violence / lack of romance - when played. It's
+      not trying to be a "correct" implementation of dating in a
+      roguelike setting. Rather I'm considering how "deep" our combat
+      mechanics actually are (they're not, and most modern games are
+      actually less so than <em>Rogue</em>), and what we demand of
+      them vs. what we demand of dating mechanics.
+    </p>
+    <p>
+      I was trying to reverse-triangulate a game design for a
+      universe in
+      which e.g. <a href="http://auntiepixelante.com/triad/">Triad</a> is
+      unexceptional. If comfortable cuddling rather than explosion was
+      the default theming of our puzzle games, what might that games
+      industry have produced during its formative years?
+    </p>
+    <p>
+      I chose <em>Rogue</em> to start with because its core design can
+      be traced up to many modern titles, often barely changed or even
+      simplified. That's kind of bullshit, isn't it?  Thirty years and
+      we're still making games with the same kind of rules about the
+      same kind of violence, then claiming we don't try emotion
+      because it's "difficult" to mechanize. I also chose it because
+      it's a game I enjoy and know well.
+    </p>
+    <p>
+      I don't want to unpack too much about my own game here
+      because, who cares? I'm no expert at games criticism. But I do
+      want to mention a few things.
+      </p>
+    <p>
+      Adding flirting to the game made the combat mechanics so much
+      grosser. In roguelikes you kill a <em>lot</em> of stuff, usually
+      unprompted and as an invader. But no one would
+      call <em>Rogue</em> a violent game. Well, when you put in a
+      flirt command, that ends. Just by having a non-violent choice
+      the resort to combat mechanics, otherwise unmodified, becomes
+      more disturbing. I'm convinced if we had made even token efforts
+      towards including this stuff early on, there's no way we'd be
+      looking at such gross shit like <em>Far Cry 3</em> today. The
+      dissonance would be too great.
+    </p>
+    <p>
+      Similarly the source code is still loaded with references to
+      "kill", "enemy", "attack", etc., even for non-violent
+      actions. Problematic units run through the architecture,
+      content, and output of the program creating a structural,
+      intersecting push back against my attempts to add non-violent
+      options. The age of the code means it's fragile and creaky, and
+      the changes required to fix this would be destabilizing beyond
+      what I could deal with given the time I had to make it.
+    </p>
+    <p>
+      Although you can attract multiple monsters, at the end of the
+      game you can only leave with one. This is my least favorite
+      decision - I'd rather you be able to leave with all nearby
+      monsters when you quit. But again, the base game encodes a very
+      specific (and inaccurate) notion of violence - one specific
+      entity is the cause of killing you. Mapping that system into
+      "non-violence" then forces monogamy.
+    </p>
+    <h2>Mechanical Stuff</h2>
+    <p>
+      <em>Rogue (1980)</em> adds two character attributes and three
+      verbs to <em>Rogue</em>. The first attribute
+      is <em>orientation</em>. It's a set of six on/off flags. Every
+      monster has a randomly-generated orientation. The player also
+      has an orientation attribute, which would maybe better be called
+      presentation - the degree to which the monster's orientation
+      mixes with the player's determines the probability of a
+      successful <kbd>f</kbd>lirt. There's no notion of gender or sex
+      beyond this representation; that may mean there's no notion of
+      gender or sex at all depending on how you interpret it.
+    </p>
+    <p>
+      Successful flirting raises the other new
+      attribute, <em>interest</em>. When interest gets high enough,
+      the monster stops attacking the player and starts
+      accepting <kbd>g</kbd>iven gifts.
+    </p>
+    <p>
+      Orientation also determines how a monster reacts to gifts, as
+      the item ID is hashed to produce an "item presentation". Gifts
+      raise interest much faster than flirting.
+    </p>
+    <p>
+      Once interest is high enough, you can <kbd>E</kbd>mbrace the
+      monster to end the game. You get a score bonus proportional to
+      the experience points the monster would have given for a kill.
+      An optimum score is now reliant on getting the amulet and then
+      dating a <tt>D</tt> or <tt>P</tt> on the way back up. Dating
+      them is not actually harder than dating any given <kbd>B</kbd>
+      or <kbd>K</kbd>.
+    </p>
+    <p>
+      At one point during development embracing enemies was an
+      alternate method to get rid of them rather than another endgame
+      state. If you succeeded they disappeared and dropped a new kind
+      of food item, a date. It was too goofy, and too much
+      "romance-as-conquest". At another point when I was frustrated
+      with debugging the pre-ANSI C, I was just going to write a much
+      longer false context and release <em>Rogue</em> unmodified, but
+      I'm not a good enough writer and that was too lazy even for me.
+    </p>
+    <p>
+      The source code alternates between calling <kbd>@</kbd> and the
+      player "he" and "she" with a preference for the masculine.
+      There's only one instance of a neutral "him/her". Interestingly
+      it's in the context of <kbd>W</kbd>earing, which is the action
+      most closely associated with real-world gender roles, even
+      though <em>Rogue</em> has no gendered clothing. (Wichmann also
+      says armor was a late addition to the game, so maybe it's just
+      because it's from a different developer than the other
+      comments.)  This is years before e.g. the D&amp;D manuals would
+      do the same. In roguelike communities today, I don't think I've
+      ever seen anyone call the original <kbd>@</kbd> a woman.
+    </p>
+    <p>
+      Do you have a problem with any of this stuff? Cool! I'm just a
+      mostly-conventional cis man who spent my formative years
+      playing <em>Rogue</em>, the real one. Which is to say, I'm sure
+      I'm blinded to a lot of things going on here. Roguelike culture
+      has always been big on remixing and reinterpreting. I would love
+      to see reconstructions of <em>Hack (1985)</em> and <em>Angband
+      (1990)</em> and so on, even just descriptions of what they might
+      be like. Or any feedback / reactions really.
+    </p>
+    <h2>More Reading</h2>
+    <ul>
+      <li><a href="http://www.gamasutra.com/view/feature/4013/the_history_of_rogue_have__you_.php">The
+      History of Rogue: Have @ You, You Deadly Zs</a> on Gamasutra;
+      Ken Arnold and Glenn Wichmann weigh in in the comments.</li>
+      <li><a href="http://www.wichman.org/roguehistory.html">Glenn
+      Wichmann's <em>A Brief History of "Rogue"</em></a>, this one
+      accurate to our universe.</li>
+      <li><a href="http://www.blackgreengames.com/games.html">Black
+      &amp; Green Games</a> publishes some neat things that might as
+      well be <em>Counts and Courtship</em>. (Other people have as
+      well, but those are the ones I'm most familiar with.)</li>
+  </body>
+</html>
diff --git a/pphs/rogue-1980-linux.zip b/pphs/rogue-1980-linux.zip
new file mode 100644 (file)
index 0000000..59939ab
Binary files /dev/null and b/pphs/rogue-1980-linux.zip differ
diff --git a/pphs/rogue-1980-osx.zip b/pphs/rogue-1980-osx.zip
new file mode 100644 (file)
index 0000000..27850f4
Binary files /dev/null and b/pphs/rogue-1980-osx.zip differ
diff --git a/pphs/rogue-1980-win.zip b/pphs/rogue-1980-win.zip
new file mode 100644 (file)
index 0000000..16e8d61
Binary files /dev/null and b/pphs/rogue-1980-win.zip differ
diff --git a/pphs/rogue36.exe b/pphs/rogue36.exe
new file mode 100644 (file)
index 0000000..bdf45e3
Binary files /dev/null and b/pphs/rogue36.exe differ