{"id":608,"date":"2008-09-18T23:01:57","date_gmt":"2008-09-19T06:01:57","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/psychotron-story-arc\/"},"modified":"2020-07-25T22:12:37","modified_gmt":"2020-07-26T05:12:37","slug":"psychotron-story-arc","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/psychotron-story-arc\/","title":{"rendered":"Psychotron Story Arc"},"content":{"rendered":"<p>I&#8217;m still on this <a href=\"http:\/\/multimedia.cx\/eggs\/category\/game-hacking\/\">game hacking kick<\/a>. Today&#8217;s target is <a href=\"http:\/\/www.mobygames.com\/game\/psychotron\">The Psychotron<\/a>, perhaps the most painful interactive movie game I have ever seen. Thing is, I have to admit that I have never actually <em>played<\/em> this game; I am judging the game purely on the plain Cinepak\/PCM AVI files that comprise the key feature of the game. I don&#8217;t even own the full game, only a demo. Granted, <a href=\"http:\/\/games.multimedia.cx\/psychotron-and-co\/\">I have tried to play the Psychotron demo<\/a> but could never make it work. These 1994 multimedia-heavy games&#8230; <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.mobygames.com\/game\/psychotron\"><img decoding=\"async\" src=\"\/eggs\/images\/psychotron-gangsters.jpg\" alt=\"Psychotron gangsters\" border=\"0\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Whereas the conversations in <a href=\"http:\/\/multimedia.cx\/eggs\/flash-traffic-coding-puzzle\/\">Flash Traffic: City of Angels<\/a> were packed in a quasi-compressed binary format, the conversation tree in Psychotron is stored in a series of .SEG files that look like the file S5H1PD1.SEG here:<\/p>\n<p>\\scene5\\s5h1Pd1.avi*from 23 to 283*3*Fold.*10*S5h1r1.seg*Bet a large amount.*1000*s5h1r2.seg*Bet a small amount.*500*s5h1r3.seg*<\/p>\n<p>Pretty straightforward to figure out. It also helps me understand a technical matter about the game that irritated me so much when I viewed the FMV files standalone&#8211; when you view the game&#8217;s files in a standalone player, you will see that they invariably start paused with tracking lines (apparently digitized from a VCR). I am guessing that the game uses the field &#8220;from 23 to 283&#8221; to describe which frames of the file are meant for human consumption.<\/p>\n<p>Anyway, I wrote a Python script to print out a <a href=\"http:\/\/www.graphviz.org\/\">Graphviz-compatible<\/a> spec to map out the game demo&#8217;s dialog tree. Warning! There might be spoilers in the tree!<\/p>\n<p><center><br \/>\n<a href=\"\/eggs\/images\/psychotron-demo.gif\"><img decoding=\"async\" src=\"\/eggs\/images\/psychotron-demo-small.gif\" alt=\"Pyschotron demo flowchart\" \/><br \/>\n<em>Click for full image<\/em><\/a><br \/>\n<em><a href=\"\/eggs\/images\/psychotron-demo.graph\">Click for Graphviz source<\/a><\/em><br \/>\n<\/center><\/p>\n<p>Ah, who am I kidding? No one cares about spoilers in this alleged story. It is interesting to note that 2 of those trees don&#8217;t correlate to any of the scenes on the disc.<\/p>\n<p>The Python source code for generating the graph is below. I finally ordered the full game from an eBay seller the other day so I am wondering if the graphing utility will be applicable to the full game.<\/p>\n<p><!--more--><\/p>\n<p>Usage: graph-psychotron-segments.py &lt;\/directory\/to\/.SEG\/files&gt;<\/p>\n<p><script src=\"https:\/\/gist.github.com\/multimediamike\/e07950290edcd5602543cfba8bd98eda.js\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m still on this game hacking kick. Today&#8217;s target is The Psychotron, perhaps the most painful interactive movie game I have ever seen. Thing is, I have to admit that I have never actually played this game; I am judging the game purely on the plain Cinepak\/PCM AVI files that comprise the key feature of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,55],"tags":[],"class_list":["post-608","post","type-post","status-publish","format-standard","hentry","category-game-hacking","category-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=608"}],"version-history":[{"count":3,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/608\/revisions"}],"predecessor-version":[{"id":4579,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/608\/revisions\/4579"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}