https://wiki.foone.org/api.php?action=feedcontributions&user=Foone&feedformat=atom
Foone Wiki - User contributions [en]
2024-03-29T14:26:01Z
User contributions
MediaWiki 1.35.6
https://wiki.foone.org/index.php?title=VGA_Flag_Language&diff=401
VGA Flag Language
2024-01-15T04:02:43Z
<p>Foone: </p>
<hr />
<div>The VGA Flag Language is a DSL for defining pride flags, to be used in VGAPride. <br />
<br />
=== Example flag script: ===<br />
$names=["demisexual"]<br />
$description="The Demisexual pride flag"<br />
// Unknown creator. Maybe research further?<br />
$textcolor=$black<br />
<br />
vertical{<br />
RGB(255,255,255)<br />
RGB(255,255,255)<br />
RGB(110, 0,112)<br />
RGB(210,210,210)<br />
RGB(210,210,210)<br />
}<br />
<br />
Polygon Filled, (0,0), [(0,0), (240,240), (0,480)], $black<br />
<br />
=== Rendering context ===<br />
Scripts generate a 640x480 image which uses a max of 16 colors. <br />
<br />
The only pre-defined color is 0, which is black. The other 15 colors will be allocated as they are used, and the compiler will throw an error if too many colors are used. <br />
<br />
The coordinate system is 0-639 horizontally, 0-479 vertically, starting in the top-left. <br />
<br />
=== Overall structure ===<br />
The main elements of a script are '''comments''', '''variable declarations''', '''structures''', and '''commands'''.<br />
<br />
'''Comments''' can start anywhere on a line and begin with // and continue to a newline. <br />
<br />
'''Variable declarations''' take the form $variable_name = SOMEVALUE (see Value Types below)<br />
<br />
'''Structures''' are curly-brace delimited blocks which automatically generate rectangle commands based on colors. See Structures below.<br />
<br />
'''Commands''' are functions which draw different shapes into the image. See Command List below.<br />
<br />
=== Value Types ===<br />
There are six value types used for variables:<br />
{| class="wikitable"<br />
|+<br />
Value types<br />
!Name<br />
!Examples<br />
!Description<br />
|-<br />
|Integer<br />
|4<br />
-5<br />
<br />
+15<br />
|Whole signed numbers, 16-bits. Used for text sizing and ellipse width/height.<br />
|-<br />
|Color<br />
|RGB(10,20,30)<br />
<nowiki>#</nowiki>FF00FF<br />
|A given color. Technically 6-bits-per-channel, but we're pretending they're not<br />
|-<br />
|Enumeration<br />
|Filled<br />
Medium<br />
<br />
Outline<br />
|Used for special values in commands<br />
|-<br />
|String<br />
|"foobar"<br />
'bazqux'<br />
|A text string used for metadata<br />
|-<br />
|Point<br />
|(10,25)<br />
(-50, 500)<br />
|A point is a geometric location made of two integers.<br />
|-<br />
|List<br />
|["hello"]<br />
[(25,0), (50,0)]<br />
|A list is a static array of values. Only used for Points and Strings.<br />
|}<br />
<br />
=== Metadata ===<br />
Some variable definitions are interpreted by VGAPride. These special definitions are:<br />
{| class="wikitable"<br />
|+Metadata variables<br />
!Name<br />
!Description<br />
!Type<br />
!Default value<br />
|-<br />
|$names<br />
|Used to look up the flag from the command line. The first one is considered the canonically name, and will be shown in the help. Required<br />
|List of Strings<br />
|N/A<br />
|-<br />
|$description<br />
|The longform description shown in the list. Required.<br />
|String<br />
|N/A<br />
|-<br />
|$credits<br />
|Gives credit to the creator/lists creation details like variants. <br />
|String<br />
|N/A<br />
|-<br />
|$textsize<br />
|the font size to use when displaying the description on the slideshow mode.<br />
|Integer<br />
|4<br />
|-<br />
|$textcolor<br />
|The color to use when displaying the description on the slideshow mode. <br />
|Color<br />
|RGB(255,255,255)<br />
|-<br />
|$textlayout<br />
|Where to place the description text in slideshow mode. Can be set to Left/Right/Center<br />
|Enumeration<br />
|Center<br />
|}<br />
<br />
=== Predefined colors: ===<br />
Some variables are predefined with colors to be used in images. The pre-defined colors are:<br />
{| class="wikitable"<br />
|+Pre-defined colors<br />
!Name<br />
!Color<br />
|-<br />
|$black<br />
|RGB(0,0,0)<br />
|-<br />
|$white<br />
|RGB(255,255,255)<br />
|}<br />
<br />
=== Structures ===<br />
Structures automatically generate commands in a given order to simplify generating common flag types. The two available structures are "vertical" and "horizontal", which align the colors top-to-bottom and left-to-right, respectively. The stripes are given equal heights/widths. <br />
<br />
An example structure:<br />
vertical{<br />
RGB( 7,141,112)<br />
RGB( 38,206,170)<br />
RGB(153,232,194)<br />
RGB(255,255,255)<br />
RGB(123,173,227)<br />
RGB( 80, 73,203)<br />
RGB( 62, 26,120)<br />
}<br />
<br />
=== Commands ===<br />
Commands draw to the image, taking some number of parameters. There's also one meta-command, #include, explained below.<br />
{| class="wikitable"<br />
|+Commands<br />
!Name<br />
!Arguments<br />
!Description<br />
!Example<br />
|-<br />
|Rectangle<br />
|2 Points & a color<br />
|A rectangle defined by the upper-left and bottom-right points<br />
|Rectangle (0,50), (200,60), $white<br />
|-<br />
|Ellipse<br />
|A point, width/height integers, and a color<br />
|An ellipse (or circle), defined by the given width/height<br />
|Ellipse (320,240), 72, 72, RGB(27,23,30)<br />
|-<br />
|Polygon<br />
|A polygon-type enum, a base point, a list of points, and color<br />
|A polygon, either filled, outlined, or with thick outlines. <br />
(The polygon is shifted by the base point before rendering)<br />
|Polygon Filled,(0,0), [(232,292),(319,135),(319,169),(260,274)],$white<br />
|-<br />
|Lines<br />
|A line-type enum, a list of points, and a color<br />
|A series of (connected?) lines, Regular or Thick<br />
|Lines Thick, [(25,0), (0,25)], $white<br />
|-<br />
|Image<br />
|A string to a PNG file<br />
|Inserts a 16-color 640x480 image. Will overwrite any existing image<br />
|Image "crabgay256.png"<br />
|}<br />
<br />
=== meta-include ===<br />
<nowiki>#</nowiki>include is a meta-command which looks up another flag and inserts it at the current position, as if all the commands from that flag had been copy-pasted into this one. It takes a string to look up the flag by name.<br />
<br />
Example:<br />
#include "rainbow7"</div>
Foone
https://wiki.foone.org/index.php?title=VGA_Flag_Language&diff=400
VGA Flag Language
2023-12-30T02:22:10Z
<p>Foone: /* Metadata */</p>
<hr />
<div>The VGA Flag Language is a DSL for defining pride flags, to be used in VGAPride. <br />
<br />
=== Example flag script: ===<br />
$names=["demisexual"]<br />
$description="The Demisexual pride flag"<br />
// Unknown creator. Maybe research further?<br />
$textcolor=$black<br />
<br />
vertical{<br />
RGB(255,255,255)<br />
RGB(255,255,255)<br />
RGB(110, 0,112)<br />
RGB(210,210,210)<br />
RGB(210,210,210)<br />
}<br />
<br />
Triangle (0,0), (240,240), (0,480), $black<br />
<br />
=== Rendering context ===<br />
Scripts generate a 640x480 image which uses a max of 16 colors. <br />
<br />
The only pre-defined color is 0, which is black. The other 15 colors will be allocated as they are used, and the compiler will throw an error if too many colors are used. <br />
<br />
The coordinate system is 0-639 horizontally, 0-479 vertically, starting in the top-left. <br />
<br />
=== Overall structure ===<br />
The main elements of a script are '''comments''', '''variable declarations''', '''structures''', and '''commands'''.<br />
<br />
'''Comments''' can start anywhere on a line and begin with // and continue to a newline. <br />
<br />
'''Variable declarations''' take the form $variable_name = SOMEVALUE (see Value Types below)<br />
<br />
'''Structures''' are curly-brace delimited blocks which automatically generate rectangle commands based on colors. See Structures below.<br />
<br />
'''Commands''' are functions which draw different shapes into the image. See Command List below.<br />
<br />
=== Value Types ===<br />
There are six value types used for variables:<br />
{| class="wikitable"<br />
|+<br />
Value types<br />
!Name<br />
!Examples<br />
!Description<br />
|-<br />
|Integer<br />
|4<br />
-5<br />
<br />
+15<br />
|Whole signed numbers, 16-bits. Used for text sizing and ellipse width/height.<br />
|-<br />
|Color<br />
|RGB(10,20,30)<br />
<nowiki>#</nowiki>FF00FF<br />
|A given color. Technically 6-bits-per-channel, but we're pretending they're not<br />
|-<br />
|Enumeration<br />
|Filled<br />
Medium<br />
<br />
Outline<br />
|Used for special values in commands<br />
|-<br />
|String<br />
|"foobar"<br />
'bazqux'<br />
|A text string used for metadata<br />
|-<br />
|Point<br />
|(10,25)<br />
(-50, 500)<br />
|A point is a geometric location made of two integers.<br />
|-<br />
|List<br />
|["hello"]<br />
[(25,0), (50,0)]<br />
|A list is a static array of values. Only used for Points and Strings.<br />
|}<br />
<br />
=== Metadata ===<br />
Some variable definitions are interpreted by VGAPride. These special definitions are:<br />
{| class="wikitable"<br />
|+Metadata variables<br />
!Name<br />
!Description<br />
!Type<br />
!Default value<br />
|-<br />
|$names<br />
|Used to look up the flag from the command line. The first one is considered the canonically name, and will be shown in the help. Required<br />
|List of Strings<br />
|N/A<br />
|-<br />
|$description<br />
|The longform description shown in the list. Required.<br />
|String<br />
|N/A<br />
|-<br />
|$credits<br />
|Gives credit to the creator/lists creation details like variants. <br />
|String<br />
|N/A<br />
|-<br />
|$textsize<br />
|the font size to use when displaying the description on the slideshow mode.<br />
|Integer<br />
|4<br />
|-<br />
|$textcolor<br />
|The color to use when displaying the description on the slideshow mode. <br />
|Color<br />
|RGB(255,255,255)<br />
|-<br />
|$textlayout<br />
|Where to place the description text in slideshow mode. Can be set to Left/Right/Center<br />
|Enumeration<br />
|Center<br />
|}<br />
<br />
=== Predefined colors: ===<br />
Some variables are predefined with colors to be used in images. The pre-defined colors are:<br />
{| class="wikitable"<br />
|+Pre-defined colors<br />
!Name<br />
!Color<br />
|-<br />
|$black<br />
|RGB(0,0,0)<br />
|-<br />
|$white<br />
|RGB(255,255,255)<br />
|}<br />
<br />
=== Structures ===<br />
Structures automatically generate commands in a given order to simplify generating common flag types. The two available structures are "vertical" and "horizontal", which align the colors top-to-bottom and left-to-right, respectively. The stripes are given equal heights/widths. <br />
<br />
An example structure:<br />
vertical{<br />
RGB( 7,141,112)<br />
RGB( 38,206,170)<br />
RGB(153,232,194)<br />
RGB(255,255,255)<br />
RGB(123,173,227)<br />
RGB( 80, 73,203)<br />
RGB( 62, 26,120)<br />
}<br />
<br />
=== Commands ===<br />
Commands draw to the image, taking some number of parameters. There's also one meta-command, #include, explained below.<br />
{| class="wikitable"<br />
|+Commands<br />
!Name<br />
!Arguments<br />
!Description<br />
!Example<br />
|-<br />
|Rectangle<br />
|2 Points & a color<br />
|A rectangle defined by the upper-left and bottom-right points<br />
|Rectangle (0,50), (200,60), $white<br />
|-<br />
|Triangle<br />
|3 Points & a color<br />
|A triangle<br />
|Triangle (0,0), (50,0), (0,50), $white<br />
|-<br />
|Quad<br />
|4 Points & a color<br />
|A 4-sided polygon<br />
|Quad (0,0), (50, 0), (50,50), (0, 50), $white<br />
|-<br />
|Ellipse<br />
|A point, width/height integers, and a color<br />
|An ellipse (or circle), defined by the given width/height<br />
|Ellipse (320,240), 72, 72, RGB(27,23,30)<br />
|-<br />
|Polygon<br />
|A polygon-type enum, list of points, and color<br />
|A polygon, either filled, outlined, or with thick outlines<br />
|Polygon Filled,[(232,292),(319,135),(319,169),(260,274)],$white<br />
|-<br />
|Lines<br />
|A line-type enum, a list of points, and a color<br />
|A series of (connected?) lines, Regular or Thick<br />
|Lines Thick, [(25,0), (0,25)], $white<br />
|-<br />
|Star<br />
|A star-type enum, a point, and a color<br />
|A star, in one of three sizes: Small, Medium, Large<br />
|Star Big, (50,50), $white<br />
|-<br />
|Image<br />
|A string to a PNG file<br />
|Inserts a 16-color 640x480 image. Will overwrite any existing image<br />
|Image "crabgay256.png"<br />
|}<br />
<br />
=== meta-include ===<br />
<nowiki>#</nowiki>include is a meta-command which looks up another flag and inserts it at the current position, as if all the commands from that flag had been copy-pasted into this one. It takes a string to look up the flag by name.<br />
<br />
Example:<br />
#include "rainbow7"</div>
Foone
https://wiki.foone.org/index.php?title=VGA_Flag_Language&diff=399
VGA Flag Language
2023-12-30T02:06:57Z
<p>Foone: Created page with "The VGA Flag Language is a DSL for defining pride flags, to be used in VGAPride. === Example flag script: === $names=["demisexual"] $description="The Demisexual pride flag..."</p>
<hr />
<div>The VGA Flag Language is a DSL for defining pride flags, to be used in VGAPride. <br />
<br />
=== Example flag script: ===<br />
$names=["demisexual"]<br />
$description="The Demisexual pride flag"<br />
// Unknown creator. Maybe research further?<br />
$textcolor=$black<br />
<br />
vertical{<br />
RGB(255,255,255)<br />
RGB(255,255,255)<br />
RGB(110, 0,112)<br />
RGB(210,210,210)<br />
RGB(210,210,210)<br />
}<br />
<br />
Triangle (0,0), (240,240), (0,480), $black<br />
<br />
=== Rendering context ===<br />
Scripts generate a 640x480 image which uses a max of 16 colors. <br />
<br />
The only pre-defined color is 0, which is black. The other 15 colors will be allocated as they are used, and the compiler will throw an error if too many colors are used. <br />
<br />
The coordinate system is 0-639 horizontally, 0-479 vertically, starting in the top-left. <br />
<br />
=== Overall structure ===<br />
The main elements of a script are '''comments''', '''variable declarations''', '''structures''', and '''commands'''.<br />
<br />
'''Comments''' can start anywhere on a line and begin with // and continue to a newline. <br />
<br />
'''Variable declarations''' take the form $variable_name = SOMEVALUE (see Value Types below)<br />
<br />
'''Structures''' are curly-brace delimited blocks which automatically generate rectangle commands based on colors. See Structures below.<br />
<br />
'''Commands''' are functions which draw different shapes into the image. See Command List below.<br />
<br />
=== Value Types ===<br />
There are six value types used for variables:<br />
{| class="wikitable"<br />
|+<br />
!Name<br />
!Examples<br />
!Description<br />
|-<br />
|Integers<br />
|4<br />
-5<br />
<br />
+15<br />
|Whole signed numbers, 16-bits. Used for text sizing and ellipse width/height.<br />
|-<br />
|Colors<br />
|RGB(10,20,30)<br />
<nowiki>#</nowiki>FF00FF<br />
|A given color. Technically 6-bits-per-channel, but we're pretending they're not<br />
|-<br />
|Enumerations<br />
|Filled<br />
Medium<br />
<br />
Outline<br />
|Used for special values in commands<br />
|-<br />
|Strings<br />
|"foobar"<br />
'bazqux'<br />
|A text string used for metadata<br />
|-<br />
|Points<br />
|(10,25)<br />
(-50, 500)<br />
|A point is a geometric location made of two integers.<br />
|-<br />
|Lists<br />
|["hello"]<br />
[(25,0), (50,0)]<br />
|A list is a static array of values. Only used for Points and Strings.<br />
|}<br />
<br />
=== Metadata ===<br />
Some variable definitions are interpreted by VGAPride. These special definitions are:</div>
Foone
https://wiki.foone.org/index.php?title=Hardware_Projects&diff=398
Hardware Projects
2023-08-17T16:18:30Z
<p>Foone: /* Built From Mostly Scratch Bad Keyboards */</p>
<hr />
<div>I'm a computer programmer with a soldering iron: The most dangerous beast.<br />
<br />
==Terrible Keyboards==<br />
I like to take apart kid's toys which have keyboards on them and turn them into Real USB Keyboards.<br />
<br />
===Successfully Keyboardized===<br />
<br />
*[https://twitter.com/Foone/status/1166963402549317632 Children Intelligent Learning Machine]<br />
*[https://twitter.com/Foone/status/1274527326554845185 Fisher-Price Linkimals A to Z Otter]<br />
*[https://twitter.com/Foone/status/1145911058189582338 LeapFrog My Own Leaptop]<br />
*[https://twitter.com/Foone/status/1283264756233601024 LeapFrog LeapBuilders Construction Blocks]<br />
*[https://twitter.com/Foone/status/1210817467573891072 Oregon Scientific Barbie Laptop], and [https://twitter.com/Foone/status/1211550699965669377 follow up thread]<br />
*[https://twitter.com/Foone/status/1210405101543686144 VTech Alphabert and Sprocket]<br />
*[https://twitter.com/Foone/status/1142507091174625280 VTech Pull & Learn Alligator]. See also videos in [https://twitter.com/Foone/status/1145069804799197184 the follow up thread]<br />
*[https://twitter.com/Foone/status/1146315727546114049 VTech Princess Fantasy Notebook]. Videos in [https://twitter.com/Foone/status/1147788603088490496 the followup thread]<br />
*[https://twitter.com/Foone/status/1165168201799389184 VTech Thomas & Friends Learn & Explore Laptop Teardown]. See also the videos in [https://twitter.com/Foone/status/1166234722843774976 the follow up thread].<br />
<br />
===Not Yet Keyboardized===<br />
<br />
*[https://twitter.com/Foone/status/1153523022306762752 CIDE toys Kidz Delight]<br />
*[https://twitter.com/Foone/status/1182520986911928320 LeapFrog Alphabet Pal]<br />
*[https://twitter.com/Foone/status/1171632312175353856 LeapFrog AlphaPup]<br />
*[https://twitter.com/Foone/status/1207785236043448321 LeapFrog ClickStart My First Computer]<br />
*[https://twitter.com/Foone/status/1340433898979770368 Radio Shack Computer Typing Instructor]<br />
*[https://twitter.com/Foone/status/1145443364260601856 VTech Alphabet Town]<br />
*[https://twitter.com/Foone/status/1060812926825652226 VTech Little Apps Tablet]. [https://twitter.com/Foone/status/1061759830086475776 See also thread 2, with the second keyboard]<br />
*[https://twitter.com/Foone/status/1279223175046291456 VTech Nitro Web notebook™]<br />
*[https://twitter.com/Foone/status/1144115173742874625 VTech Super Color Whiz]<br />
*[https://twitter.com/Foone/status/1278911489676468224 Vtech Tote & Go Laptop Web]<br />
<br />
===Built From Mostly Scratch Bad Keyboards===<br />
<br />
*[https://twitter.com/Foone/status/1257164625184841729 Binary Keyboard (7-switch)]<br />
*[https://twitter.com/Foone/status/1257208935360028673 Binary Keyboard (2 button)]<br />
*[https://twitter.com/Foone/status/1257215803268554753 Unary Keyboard (1 button)]<br />
*[https://twitter.com/Foone/status/1228951090478977024 The Furboard]<br />
*[https://twitter.com/Foone/status/1227825104110751744 Rotary Phone Numpad]<br />
*[https://twitter.com/Foone/status/1227832631150006272 Rotary Phone SMS Dialing]<br />
*[https://twitter.com/Foone/status/1207892434706825216 Analog Dial Keyboard]<br />
*[https://twitter.com/Foone/status/1236432401712078848 Random ASCII Keyboard]<br />
*[https://twitter.com/Foone/status/1259644761209634818 The FlopKey Floppy-Disk Keyboard]<br />
*[https://twitter.com/Foone/status/1419137542297767939 Clock Keyboard]<br />
*[https://mobile.twitter.com/Foone/status/1448539895606087682 Teeth Keyboard]<br />
*[https://twitter.com/Foone/status/1489430212768985089 Randomized layout designed-by-physics Keyboard]<br />
*[https://twitter.com/Foone/status/1585780252998975488 Poetry Keyboard]<br />
*[https://www.youtube.com/watch?v=ynY4j49hXNk Physics Keyboard]<br />
*[https://www.youtube.com/watch?v=vRqRQ7hYxjk Cube Keyboard]<br />
*[https://www.tumblr.com/foone/721218604811616256/behold-my-latest-bad-keyboard-the-shiftkeyboard?source=share ShiftKeyBoard]<br />
<br />
===Bad Keyboard Layouts===<br />
<br />
*[https://twitter.com/Foone/status/1261467973136470019 Vertical QWERTY]<br />
*[https://twitter.com/Foone/status/1283284061683806213 4-Line QWERTY]<br />
*[https://twitter.com/Foone/status/1291865620007358464 Left-handed QWERTY]<br />
*[https://twitter.com/Foone/status/1291897354375716866 Flipped QWERTY]<br />
*[https://twitter.com/Foone/status/1283290298324447232 Real DVORAK]<br />
*[https://twitter.com/Foone/status/1293680783551418368 Real COLEMAK]<br />
*[https://twitter.com/Foone/status/1293745971487109121 Linotype]<br />
*[https://twitter.com/Foone/status/1182554915425513472 Michael Crichton's Sphere keyboard]<br />
<br />
==Projects==<br />
<br />
*[[Floppyizer]]</div>
Foone
https://wiki.foone.org/index.php?title=Barbie_Fashion_Show&diff=397
Barbie Fashion Show
2023-06-30T21:54:57Z
<p>Foone: /* KAR Chunks: */</p>
<hr />
<div>== Basic details ==<br />
[https://www.mobygames.com/game/161608/barbie-fashion-show/ Barbie Fashion Show] was released in 2004 by Vivendi, developed by Knowledge Adventure (now known as Jumpstart Games). It uses the [https://web.archive.org/web/20070428043806/http://www.powerrender.com/2007/homepage.htm Power Render game engine], targeting DirectX.<br />
<br />
Scripting is provided by Python 2.2, implemented through [https://www.riverbankcomputing.com/software/sip/ SIP by Riverbank Computing].<br />
<br />
The game's internal engine is apparently called Ring0 or "R0". <br />
<br />
==Data Files (KAR) ==<br />
The main data files are .KAR files. The game has a total of 41 KAR files.<br />
<br />
KAR files are built on an IFF/RIFF format, with inconsistent endianness.<br />
<br />
===KAR Chunks:===<br />
The function at 004ee380 in BarbieFashion.exe seems to select how different chunks are loaded. From that function we can extract all (?) chunk types, other than meta chunks<br />
{| class="wikitable"<br />
|+<br />
!Name<br />
!Class<br />
!Purpose<br />
|-<br />
|CAT<br />
|'''Meta'''<br />
|Starts the file<br />
|-<br />
|RIFF<br />
|'''Meta'''<br />
|<br />
|-<br />
|RsCk<br />
|'''Meta'''<br />
|<br />
|-<br />
|DtFm<br />
|<br />
|<br />
|-<br />
|FtFm<br />
|<br />
|<br />
|-<br />
|IfFm<br />
|<br />
|<br />
|-<br />
|InFm<br />
|<br />
|<br />
|-<br />
|LvFm<br />
|<br />
|<br />
|-<br />
|MtFm<br />
|'''Textures'''<br />
|<br />
|-<br />
|ObFm<br />
|<br />
|<br />
|-<br />
|PhFm<br />
|<br />
|<br />
|-<br />
|PtFm<br />
|<br />
|<br />
|-<br />
|ScFm<br />
|'''Scripting'''<br />
|Modified .pyc bytecode<br />
|-<br />
|SnFm<br />
|'''Sounds'''<br />
|Sound effects<br />
|-<br />
|SsFm<br />
|<br />
|<br />
|-<br />
|StFm<br />
|<br />
|<br />
|-<br />
|TbFm<br />
|<br />
|<br />
|-<br />
|TrFm<br />
|'''Textures'''<br />
|<br />
|-<br />
|TxFm<br />
|'''Textures'''<br />
|<br />
|}<br />
<br />
== Python ==<br />
Python bytecode in the form of modified .pyc files exists in two forms:<br />
<br />
* The sipEngine.bc file which is loaded at game start<br />
* ScFm chunks. These are saved in the files GlobalSc.kar ModelMatcherSc.kar PortfolioSc.kar SigninSc.kar Stage5Sc.kar TravelSc.kar<br />
<br />
In both cases, they are missing their header. Add the bytes "2D ED 0D 0A 00 00 00 00" to the beginning of the file, and they can be successfully decompiled by [https://sourceforge.net/projects/easypythondecompiler/ Easy Python Decompiler].<br />
<br />
For the kar files, as they are the only chunk in the file, you can convert them to stand-alone .BC files by removing the first 44 bytes. Then add the above bytes and rename to .pyc to disassemble. <br />
<br />
The game registers two modules with the python interpreter: <br />
<br />
* libsip (used to let python code extend C++ classes)<br />
* libEnginec (game engine functionality)<br />
<br />
== KAS files ==<br />
KAS files are used for music. The two KAS files are CreditsStream1.KAS and globalStream1.KAS.<br />
<br />
Both are Ogg Vorbis soundfiles with a 4-byte header added. In both cases the header is 31 CC CC CC, and when removed, they can be opened by any .ogg program. <br />
<br />
GlobalStream1.KAS is 38 minutes, 43 seconds<br />
<br />
CreditsStream1.KAS is 3 minutes, 53 seconds. <br />
<br />
==See also==<br />
<br />
*[https://digipres.club/@foone/110584666308562791 Mastodon thread for researching the game]</div>
Foone
https://wiki.foone.org/index.php?title=Barbie_Fashion_Show&diff=396
Barbie Fashion Show
2023-06-25T20:50:04Z
<p>Foone: </p>
<hr />
<div>== Basic details ==<br />
[https://www.mobygames.com/game/161608/barbie-fashion-show/ Barbie Fashion Show] was released in 2004 by Vivendi, developed by Knowledge Adventure (now known as Jumpstart Games). It uses the [https://web.archive.org/web/20070428043806/http://www.powerrender.com/2007/homepage.htm Power Render game engine], targeting DirectX.<br />
<br />
Scripting is provided by Python 2.2, implemented through [https://www.riverbankcomputing.com/software/sip/ SIP by Riverbank Computing].<br />
<br />
The game's internal engine is apparently called Ring0 or "R0". <br />
<br />
==Data Files (KAR) ==<br />
The main data files are .KAR files. The game has a total of 41 KAR files.<br />
<br />
KAR files are built on an IFF/RIFF format, with inconsistent endianness.<br />
<br />
===KAR Chunks:===<br />
The function at 004ee380 in BarbieFashion.exe seems to select how different chunks are loaded. From that function we can extract all (?) chunk types, other than meta chunks<br />
{| class="wikitable"<br />
|+<br />
!Name<br />
!Class<br />
!Purpose<br />
|-<br />
|CAT<br />
|'''Meta'''<br />
|Starts the file<br />
|-<br />
|RIFF<br />
|'''Meta'''<br />
|<br />
|-<br />
|RsCk<br />
|'''Meta'''<br />
|<br />
|-<br />
|DtFm<br />
|<br />
|<br />
|-<br />
|FtFm<br />
|<br />
|<br />
|-<br />
|IfFm<br />
|<br />
|<br />
|-<br />
|InFm<br />
|<br />
|<br />
|-<br />
|LvFm<br />
|<br />
|<br />
|-<br />
|MtFm<br />
|'''Textures'''<br />
|Seems to be metadata for textures<br />
|-<br />
|ObFm<br />
|<br />
|<br />
|-<br />
|PhFm<br />
|<br />
|<br />
|-<br />
|PtFm<br />
|<br />
|<br />
|-<br />
|ScFm<br />
|'''Scripting'''<br />
|Modified .pyc bytecode<br />
|-<br />
|SnFm<br />
|'''Sounds'''<br />
|Sound effects<br />
|-<br />
|SsFm<br />
|<br />
|<br />
|-<br />
|StFm<br />
|<br />
|<br />
|-<br />
|TbFm<br />
|<br />
|<br />
|-<br />
|TrFm<br />
|<br />
|<br />
|-<br />
|TxFm<br />
|'''Textures'''<br />
|Raw pixels for textures<br />
|}<br />
<br />
== Python ==<br />
Python bytecode in the form of modified .pyc files exists in two forms:<br />
<br />
* The sipEngine.bc file which is loaded at game start<br />
* ScFm chunks. These are saved in the files GlobalSc.kar ModelMatcherSc.kar PortfolioSc.kar SigninSc.kar Stage5Sc.kar TravelSc.kar<br />
<br />
In both cases, they are missing their header. Add the bytes "2D ED 0D 0A 00 00 00 00" to the beginning of the file, and they can be successfully decompiled by [https://sourceforge.net/projects/easypythondecompiler/ Easy Python Decompiler].<br />
<br />
For the kar files, as they are the only chunk in the file, you can convert them to stand-alone .BC files by removing the first 44 bytes. Then add the above bytes and rename to .pyc to disassemble. <br />
<br />
The game registers two modules with the python interpreter: <br />
<br />
* libsip (used to let python code extend C++ classes)<br />
* libEnginec (game engine functionality)<br />
<br />
== KAS files ==<br />
KAS files are used for music. The two KAS files are CreditsStream1.KAS and globalStream1.KAS.<br />
<br />
Both are Ogg Vorbis soundfiles with a 4-byte header added. In both cases the header is 31 CC CC CC, and when removed, they can be opened by any .ogg program. <br />
<br />
GlobalStream1.KAS is 38 minutes, 43 seconds<br />
<br />
CreditsStream1.KAS is 3 minutes, 53 seconds. <br />
<br />
==See also==<br />
<br />
*[https://digipres.club/@foone/110584666308562791 Mastodon thread for researching the game]</div>
Foone
https://wiki.foone.org/index.php?title=Barbie_Fashion_Show&diff=395
Barbie Fashion Show
2023-06-25T20:23:07Z
<p>Foone: </p>
<hr />
<div>== Basic details ==<br />
[https://www.mobygames.com/game/161608/barbie-fashion-show/ Barbie Fashion Show] was released in 2004 by Vivendi, developed by Knowledge Adventure (now known as Jumpstart Games). It uses the [https://web.archive.org/web/20070428043806/http://www.powerrender.com/2007/homepage.htm Power Render game engine], targeting DirectX.<br />
<br />
Scripting is provided by Python 2.2, implemented through [https://www.riverbankcomputing.com/software/sip/ SIP by Riverbank Computing].<br />
<br />
The game's internal engine is apparently called Ring0 or "R0". <br />
<br />
==Data Files (KAR) ==<br />
The main data files are .KAR files. The game has a total of 41 KAR files.<br />
<br />
KAR files are built on an IFF/RIFF format, with inconsistent endianness.<br />
<br />
===KAR Chunks:===<br />
The function at 004ee380 in BarbieFashion.exe seems to select how different chunks are loaded. From that function we can extract all (?) chunk types, other than meta chunks<br />
{| class="wikitable"<br />
|+<br />
!Name<br />
!Class<br />
!Purpose<br />
|-<br />
|CAT<br />
|'''Meta'''<br />
|Starts the file<br />
|-<br />
|RIFF<br />
|'''Meta'''<br />
|<br />
|-<br />
|RsCk<br />
|'''Meta'''<br />
|<br />
|-<br />
|DtFm<br />
|<br />
|<br />
|-<br />
|FtFm<br />
|<br />
|<br />
|-<br />
|IfFm<br />
|<br />
|<br />
|-<br />
|InFm<br />
|<br />
|<br />
|-<br />
|LvFm<br />
|<br />
|<br />
|-<br />
|MtFm<br />
|<br />
|<br />
|-<br />
|ObFm<br />
|<br />
|<br />
|-<br />
|PhFm<br />
|<br />
|<br />
|-<br />
|PtFm<br />
|<br />
|<br />
|-<br />
|ScFm<br />
|'''Scripting'''<br />
|Modified .pyc bytecode<br />
|-<br />
|SnFm<br />
|<br />
|<br />
|-<br />
|SsFm<br />
|<br />
|<br />
|-<br />
|StFm<br />
|<br />
|<br />
|-<br />
|TbFm<br />
|<br />
|<br />
|-<br />
|TrFm<br />
|<br />
|<br />
|-<br />
|TxFm<br />
|<br />
|<br />
|}<br />
<br />
== Python ==<br />
Python bytecode in the form of modified .pyc files exists in two forms:<br />
<br />
* The sipEngine.bc file which is loaded at game start<br />
* ScFm chunks. These are saved in the files GlobalSc.kar ModelMatcherSc.kar PortfolioSc.kar SigninSc.kar Stage5Sc.kar TravelSc.kar<br />
<br />
In both cases, they are missing their header. Add the bytes "2D ED 0D 0A 00 00 00 00" to the beginning of the file, and they can be successfully decompiled by [https://sourceforge.net/projects/easypythondecompiler/ Easy Python Decompiler].<br />
<br />
For the kar files, as they are the only chunk in the file, you can convert them to stand-alone .BC files by removing the first 44 bytes. Then add the above bytes and rename to .pyc to disassemble. <br />
<br />
The game registers two modules with the python interpreter: <br />
<br />
* libsip (used to let python code extend C++ classes)<br />
* libEnginec (game engine functionality)<br />
<br />
== KAS files ==<br />
KAS files are used for music. The two KAS files are CreditsStream1.KAS and globalStream1.KAS.<br />
<br />
Both are Ogg Vorbis soundfiles with a 4-byte header added. In both cases the header is 31 CC CC CC, and when removed, they can be opened by any .ogg program. <br />
<br />
GlobalStream1.KAS is 38 minutes, 43 seconds<br />
<br />
CreditsStream1.KAS is 3 minutes, 53 seconds. <br />
<br />
==See also==<br />
<br />
*[https://digipres.club/@foone/110584666308562791 Mastodon thread for researching the game]</div>
Foone
https://wiki.foone.org/index.php?title=Barbie_Fashion_Show&diff=394
Barbie Fashion Show
2023-06-25T20:06:19Z
<p>Foone: </p>
<hr />
<div>== Basic details ==<br />
[https://www.mobygames.com/game/161608/barbie-fashion-show/ Barbie Fashion Show] was released in 2004 by Vivendi, developed by Knowledge Adventure (now known as Jumpstart Games). It uses the [https://web.archive.org/web/20070428043806/http://www.powerrender.com/2007/homepage.htm Power Render game engine], targeting DirectX.<br />
<br />
Scripting is provided by Python 2.2, implemented through [https://www.riverbankcomputing.com/software/sip/ SIP by Riverbank Computing].<br />
<br />
The game's internal engine is apparently called Ring0 or "R0". <br />
<br />
==Data Files ==<br />
The main data files are .KAR files. The game has a total of 41 KAR files.<br />
<br />
KAR files are built on an IFF/RIFF format, with inconsistent endianness.<br />
<br />
===KAR Chunks:===<br />
The function at 004ee380 in BarbieFashion.exe seems to select how different chunks are loaded. From that function we can extract all (?) chunk types, other than meta chunks<br />
{| class="wikitable"<br />
|+<br />
!Name<br />
!Class<br />
!Purpose<br />
|-<br />
|CAT<br />
|'''Meta'''<br />
|Starts the file<br />
|-<br />
|RIFF<br />
|'''Meta'''<br />
|<br />
|-<br />
|RsCk<br />
|'''Meta'''<br />
|<br />
|-<br />
|DtFm<br />
|<br />
|<br />
|-<br />
|FtFm<br />
|<br />
|<br />
|-<br />
|IfFm<br />
|<br />
|<br />
|-<br />
|InFm<br />
|<br />
|<br />
|-<br />
|LvFm<br />
|<br />
|<br />
|-<br />
|MtFm<br />
|<br />
|<br />
|-<br />
|ObFm<br />
|<br />
|<br />
|-<br />
|PhFm<br />
|<br />
|<br />
|-<br />
|PtFm<br />
|<br />
|<br />
|-<br />
|ScFm<br />
|'''Scripting'''<br />
|Modified .pyc bytecode<br />
|-<br />
|SnFm<br />
|<br />
|<br />
|-<br />
|SsFm<br />
|<br />
|<br />
|-<br />
|StFm<br />
|<br />
|<br />
|-<br />
|TbFm<br />
|<br />
|<br />
|-<br />
|TrFm<br />
|<br />
|<br />
|-<br />
|TxFm<br />
|<br />
|<br />
|}<br />
<br />
== Python ==<br />
Python bytecode in the form of modified .pyc files exists in two forms:<br />
<br />
* The sipEngine.bc file which is loaded at game start<br />
* ScFm chunks. These are saved in the files GlobalSc.kar ModelMatcherSc.kar PortfolioSc.kar SigninSc.kar Stage5Sc.kar TravelSc.kar<br />
<br />
In both cases, they are missing their header. Add the bytes "2D ED 0D 0A 00 00 00 00" to the beginning of the file, and they can be successfully decompiled by [https://sourceforge.net/projects/easypythondecompiler/ Easy Python Decompiler].<br />
<br />
For the kar files, as they are the only chunk in the file, you can convert them to stand-alone .BC files by removing the first 44 bytes. Then add the above bytes and rename to .pyc to disassemble. <br />
<br />
The game registers two modules with the python interpreter: <br />
<br />
* libsip (used to let python code extend C++ classes)<br />
* libEnginec (game engine functionality)<br />
<br />
==See also==<br />
<br />
*[https://digipres.club/@foone/110584666308562791 Mastodon thread for researching the game]</div>
Foone
https://wiki.foone.org/index.php?title=Barbie_Fashion_Show&diff=393
Barbie Fashion Show
2023-06-25T19:33:11Z
<p>Foone: Created page with "== Basic details == Barbie Fashion Show was released in 2004 by Vivendi. It uses the [https://web.archive.org/web/20070428043806/http://www.powerrender.com/2007/homepage.htm P..."</p>
<hr />
<div>== Basic details ==<br />
Barbie Fashion Show was released in 2004 by Vivendi. It uses the [https://web.archive.org/web/20070428043806/http://www.powerrender.com/2007/homepage.htm Power Render game engine], targeting DirectX.<br />
<br />
Scripting is provided by Python 2.2, implemented through [https://www.riverbankcomputing.com/software/sip/ SIP by Riverbank Computing].<br />
<br />
The game's internal engine is apparently called Ring0 or "R0". <br />
<br />
== Data Files ==<br />
The main data files are .KAR files. The game has a total of 41 KAR files.<br />
<br />
KAR files are built on an IFF/RIFF format, with inconsistent endianness.<br />
<br />
== See also ==<br />
<br />
* [https://digipres.club/@foone/110584666308562791 Mastodon thread for researching the game]</div>
Foone
https://wiki.foone.org/index.php?title=Reverse_Engineering_documentation&diff=392
Reverse Engineering documentation
2023-06-25T19:27:27Z
<p>Foone: /* Software */</p>
<hr />
<div>==Software==<br />
<br />
*[[3D Movie Maker]]<br />
*[[BRender]]<br />
*[[Solar Winds]]<br />
*[https://github.com/foone/CosmiPasswordDecoder Cosmi CD Passwords]<br />
*[[MLBPA Baseball|MLBPA Baseball / Fighting Baseball]]<br />
*[[Pipeworks Spigot Engine]]<br />
*[[Barbie Fashion Show]]<br />
<br />
==Hardware==<br />
<br />
*[[AMPRO A13013-B CGA MiniModule]]<br />
*[[USB_FDD@1306 USB floppy adapter]]<br />
*[[Datel Action Replay PC]]<br />
*[[Videonics VCU-1]]<br />
*<br />
<br />
<br /><br />
<br />
==Teardown Threads==<br />
I try to take a lot of pictures and tweet them out as I'm taking things apart or putting them back together, so here's a bunch of twitter threads where I show things in various states of disassembly and try to explain what I'm looking at.<br />
<br />
====Computers====<br />
<br />
*[https://twitter.com/Foone/status/1139006599094136833 Ollivetti Quaderno PT-XT-20]<br />
*[https://twitter.com/Foone/status/1053868409438392320 Fujifilm Photo Kiosk]<br />
*[https://twitter.com/Foone/status/1016497763809353729 Motorola MDT-9100-386 Police Terminal]<br />
*[https://twitter.com/Foone/status/1110348758267551744 J.E.I DVR-2]<br />
*[https://twitter.com/Foone/status/1064390048861147136 Sharp PocketMail TM-20]<br />
*[https://twitter.com/Foone/status/1027813085778563072 Toshiba T4400SXC Laptop]<br />
*[https://twitter.com/Foone/status/929838870400614400 Austin MP5C laptop]<br />
*[https://twitter.com/Foone/status/1156075485018783744 TouchTunes MJS]<br />
*[https://twitter.com/Foone/status/1120174476757323776 NCC Network Probe 6600]<br />
*[https://twitter.com/Foone/status/1160557821269704706 PC104 Vehicle Sensor System] (See also: [https://twitter.com/Foone/status/1163344650763030528 Follow up thread where I get the drive imaged])<br />
*[https://twitter.com/Foone/status/1135354815259656192 Cellebrite Touch]<br />
*[https://twitter.com/Foone/status/1164394568218886144 Dolch Industrial PC]<br />
*[https://twitter.com/Foone/status/925207881821036545 Toshiba Satellite 2800]<br />
*[https://twitter.com/Foone/status/1029872445887369216 Big Blue Mystery]<br />
*[https://twitter.com/Foone/status/884166421327904768 CruiseLAN Access Point]<br />
*[https://twitter.com/foone/status/1266878721958440960 Ventritex Programmer Model PR-3500]<br />
*[https://twitter.com/Foone/status/1340482535722086400 Rack-mount EE 286]<br />
<br />
====Computer accessories====<br />
<br />
*[https://twitter.com/Foone/status/1131777462759649280 EZBarcode Keyboard Wedge]<br />
*[https://twitter.com/Foone/status/1153890577110274048 HP KU-1156 Keyboard]<br />
*[https://twitter.com/Foone/status/1111372849137106946 VST USB Floppy Drive FDUSB]<br />
*[https://twitter.com/Foone/status/1154113559221030912 Kensington wireless mouse dongle]<br />
*[https://twitter.com/Foone/status/1129859739691757569 Microsoft EasyBall Trackball]<br />
*[https://twitter.com/Foone/status/1095593595015389186 VOIP Mouse]<br />
*[https://twitter.com/Foone/status/1091885734691139584 Genius Cam Mouse]<br />
*[https://twitter.com/Foone/status/1164585967316959232 HP MOFYUO Mouse]<br />
*[https://twitter.com/Foone/status/1090864487874289664 Multifunction Optical (Numpad) Mouse]<br />
*[https://twitter.com/Foone/status/1066156409077694464 BTC 5100 Keyboard]<br />
*[https://twitter.com/Foone/status/1026592095413268481 Fisher-Price Laugh & Learn Game & Learn Controller]<br />
*[https://twitter.com/Foone/status/1294759001289183232 3M Ergonomic Mouse EM500GPL]<br />
*[https://twitter.com/Foone/status/1295224564310368256 Identicator Technology BioLogin Keyboard]<br />
*[https://twitter.com/Foone/status/1300575482333683712 LiteOn SK-6000P Accord Keyboard/Trackpad]<br />
*[https://twitter.com/Foone/status/1351696462032244736 tp-link TL-SG105E Gigabit Switch]<br />
*[https://twitter.com/Foone/status/1355344080813740035 VSCom USB-16COM-RM 16x Serial Port Rackmount USB Server]<br />
*[https://twitter.com/Foone/status/1469396828256751620 Logitech M500 Corded USB Laser Mouse]<br />
*[https://twitter.com/Foone/status/1477812493317668864 Canon Ivy Mini Photo Printer]<br />
*[https://twitter.com/Foone/status/1495283511053328386 WarmKeyBoard Heated USB Keyboard]<br />
*[https://twitter.com/Foone/status/1574534596208734209 EVGA Z12 Gaming Keyboard]<br />
*[https://twitter.com/Foone/status/1580663499658625024 Comkia MobiKeys B405 Bluetooth Keyboard]<br />
<br />
====Toys & Gaming====<br />
<br />
*[https://twitter.com/Foone/status/1102798578068717569 Teen Talk Barbie]<br />
*[https://twitter.com/Foone/status/1129261690543939586 Texas Hold'Em TV Poker 6 Player Edition]<br />
*[https://twitter.com/Foone/status/1138681830213730304 Vtech V.Smile Controller]<br />
*[https://twitter.com/Foone/status/1165400871124885506 Disney ABC See 'n Say]<br />
*[https://twitter.com/Foone/status/1097751629334425602 Beautiful Piano]<br />
*[https://twitter.com/Foone/status/968687056003059713 Basic Fun Oregon Trail handheld]<br />
*[https://twitter.com/Foone/status/819801543830405120 DreamGear 140 Built-in games Plug-n-Play]<br />
*[https://twitter.com/Foone/status/1164345838383927296 Micro Mages NES Cartridge]<br />
*[https://twitter.com/Foone/status/1082242754208399361 Gravis Gamepad]<br />
*[https://twitter.com/Foone/status/1173802849290997760 Animated LED Computer with Skull Decorative Halloween Prop]<br />
*[https://twitter.com/Foone/status/1201272502674083840 Dashing Fine Gifts - Mini Video Game]<br />
*[https://twitter.com/Foone/status/1307837248004435968 Lego Super Mario figure]<br />
*[https://twitter.com/Foone/status/1488263513164288003 Interact UltraRacer PS1 controller]<br />
*[https://twitter.com/Foone/status/1499815752907382786 BRIO 30189 Play & Learn Musical Caterpillar]<br />
<br />
====Media & Entertainment devices====<br />
<br />
*[https://twitter.com/Foone/status/1115482414468321280 Rio PMP300]<br />
*[https://twitter.com/Foone/status/1013661158937526273 Cartrivision tape]<br />
*[https://twitter.com/Foone/status/1003774465505820672 Rocketech Electronic Handheld Bible Search]<br />
*[https://twitter.com/Foone/status/999138495745556482 Wonder Bible]<br />
*[https://twitter.com/Foone/status/1001599848934604801 Bible Scholar Jr]<br />
*[https://twitter.com/Foone/status/1081074514300030976 Star Shower Window WonderLand Window Projection System]<br />
*[https://twitter.com/Foone/status/1065559567164043264 Sima GoDVD!]<br />
*[https://twitter.com/Foone/status/1001179786394329093 Kodak EasyShare SV710]<br />
*[https://twitter.com/Foone/status/1051764942255222785 Sima ScreenWriter]<br />
*[https://twitter.com/Foone/status/1034900322676695040 Sony Optical Disc Archive]<br />
*[https://twitter.com/Foone/status/974190871548542976 Canon Still Video Player RV-301]<br />
*[https://twitter.com/Foone/status/940347312903032832 Bootleg 384k Flash Drive]<br />
*[https://twitter.com/Foone/status/832775178186678276 Iomega PocketZip/Clik! disk]<br />
*[https://twitter.com/Foone/status/1190784395356950535 TV Allowance]<br />
*[https://twitter.com/Foone/status/1295974794022621186 Sony Integrated Remote Commander RM-AV3100]<br />
*[https://twitter.com/Foone/status/1310377930661351424 Facebook Gizmo Touch Panel]<br />
*[https://twitter.com/Foone/status/1315052841480810496 NewTek RS-8 Video Switcher]<br />
*[https://twitter.com/Foone/status/1320761264709144586 Panasonic WV-J10 Video Titler]<br />
*[https://twitter.com/Foone/status/1349454054594777090 Microsoft TV Photo Viewer]<br />
*[https://twitter.com/Foone/status/1322268446210445314 Joel Osteen Inspiration Cube]<br />
*[https://twitter.com/Foone/status/1352780592341868545 EEG EN470 Smart Encoder III]<br />
*[https://twitter.com/Foone/status/1499451308855611399 Roku Premiere Streaming Media Thing]<br />
*[https://twitter.com/Foone/status/1577446266748878849 BEAM Authentic Wearable Smart Display]<br />
<br />
====Other Things====<br />
<br />
*[https://twitter.com/Foone/status/1137595059690323968 Spiricon Model LBA-100A Laser Beam Analyzer]<br />
*[https://twitter.com/Foone/status/1028926921323687936 MilTrans Military Translation device]<br />
*[https://twitter.com/Foone/status/1087594229306580992 Omron 88 Calculator]<br />
*[https://twitter.com/Foone/status/1166552306600402944 Dataspeed QuoTrek]<br />
*[https://twitter.com/Foone/status/1292156560534192128 Tecan Cabro XP Pipette punk]<br />
*[https://twitter.com/Foone/status/1293015989148237824 CVS Heating Pad]<br />
*[https://twitter.com/Foone/status/1295887758477520901 SAM Light Sensor]<br />
*[https://twitter.com/Foone/status/1296282862295986181 iMini Vape]<br />
*[https://twitter.com/Foone/status/1308150051592482816 Tzumi Klic Smart Padlock]<br />
*[https://twitter.com/Foone/status/1315480911966740480 Curtis Instruments Digital Hourmeter]<br />
*[https://twitter.com/Foone/status/1350561918591778816 EPROM Eraser]<br />
*[https://twitter.com/Foone/status/1387999563382857729 Intelligent timing lock]<br />
<br />
See also: my [[Hardware Projects#Terrible Keyboards|Terrible Keyboards Project]].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=391
Pipeworks Spigot Engine
2023-06-14T00:20:15Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games) <br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
!Game folder (in debug info)<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|<br />
|-<br />
|Are You Smarter Than a 5th Grader?: Make the Grade<br />
|2008<br />
|Wii<br />
|1.4<br />
|1.1.0.554<br />
|08/01/2008<br />
|FifthGrader<br />
|<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|E:\Build\GirlsClub\GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|E:\Build\WheelJeopardy\Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|E:\Build\WheelJeopardy\Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|E:\Build\Zumba\Zumba<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|E:\Build\TabletPaint\TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|P:\ImaginEngine\HauntedHouse\HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|D:\build\TabletPaint2\TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|E:\Build\GForce\GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|C:\projects\MonsterHigh_2011\Wii\Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.537<br />
|08/21/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
*[[w:Godzilla:_Unleashed|Godzilla: Unleashed]] (2007, Wii) (partially stripped)<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii) (partially stripped)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii) (partially stripped)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
* Are You Smarter Than a 5th Grader?: Make the Grade (2008, Wii)<br />
<br />
<br />
<br />
As for the debug information itself, it's included in a "default.elf" file. This file is not used by the retail game, although supposedly it [https://tcrf.net/Wheel_of_Fortune_(Wii)#ELF_Executable is a perfect match for the retail executable if stripped and converted]. There's no legitimate reason for this file to be left on the disk, so it was presumably included by mistake. <br />
<br />
The debugging information in the file is not fully loaded by Ghidra (which seems to just get symbol names). [https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html LLVM-dwarfdump] can be used to get significantly more of it, though not all of it is decodable, and the output will include a lot of "decoding failed" errors. <br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition (BundleFileHeader)<br />
!Offset<br />
!Official Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|szSigString<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|szProjectName<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|bBigEndian<br />
|1<br />
|byte<br />
|01 if the file is big endian, 00 if little-endian<br />
|-<br />
|76<br />
|nTotalSize<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|80<br />
|nTypeNames<br />
|4<br />
|BE Int<br />
|Count of type names<br />
|-<br />
|84<br />
|nTypesOffset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types.<br />
|-<br />
|88<br />
|nTypesSize<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|nResEntries<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|96<br />
|nResLocsOffset<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|100<br />
|nResReqs<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|104<br />
|nResReqsOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|108<br />
|nForkPairs<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|112<br />
|nForkPairsOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|116<br />
|nNameInfoOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|120<br />
|nNameInfoSize<br />
|4<br />
|BE Int<br />
|<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (BREntry)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|nOffset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|nSizeAndType<br />
|4<br />
|TypedInt<br />
|Size of the chunk, uncompressed<br />
|-<br />
|8<br />
|nSizeAndCompression<br />
|4<br />
|TypedInt<br />
|Size of the chunk, compressed<br />
|-<br />
|12<br />
|nResourceId<br />
|4<br />
|BE int<br />
|Resource ID of the chunk<br />
|}<br />
TypedInt is a weird data structure used in a view places: It's a 32bit integer, but it's masked with 0x3ffffff on every use. So it's a 26-bit integer. <br />
<br />
The top 6 bits are used for type information. The bottom 3 of the top 6 are the compression type (1=compressed, 0=uncompressed), and the top-3 encode how many buffers are needed for loading (0-7) <br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=390
Pipeworks Spigot Engine
2023-06-12T17:16:51Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
In at least one case (Haunted House, 2010), it seems to be called "ImaginEngine". There's clear continuity between the games using both names, so it may have changed name at some point? <br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
!Game folder (in debug info)<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|<br />
|-<br />
|Are You Smarter Than a 5th Grader?: Make the Grade<br />
|2008<br />
|Wii<br />
|1.4<br />
|1.1.0.554<br />
|08/01/2008<br />
|FifthGrader<br />
|<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|E:\Build\GirlsClub\GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|E:\Build\WheelJeopardy\Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|E:\Build\WheelJeopardy\Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|E:\Build\Zumba\Zumba<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|E:\Build\TabletPaint\TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|P:\ImaginEngine\HauntedHouse\HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|D:\build\TabletPaint2\TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|E:\Build\GForce\GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|C:\projects\MonsterHigh_2011\Wii\Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.537<br />
|08/21/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
*[[w:Godzilla:_Unleashed|Godzilla: Unleashed]] (2007, Wii) (partially stripped)<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii) (partially stripped)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii) (partially stripped)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
* Are You Smarter Than a 5th Grader?: Make the Grade (2008, Wii)<br />
<br />
<br />
<br />
As for the debug information itself, it's included in a "default.elf" file. This file is not used by the retail game, although supposedly it [https://tcrf.net/Wheel_of_Fortune_(Wii)#ELF_Executable is a perfect match for the retail executable if stripped and converted]. There's no legitimate reason for this file to be left on the disk, so it was presumably included by mistake. <br />
<br />
The debugging information in the file is not fully loaded by Ghidra (which seems to just get symbol names). [https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html LLVM-dwarfdump] can be used to get significantly more of it, though not all of it is decodable, and the output will include a lot of "decoding failed" errors. <br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition (BundleFileHeader)<br />
!Offset<br />
!Official Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|szSigString<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|szProjectName<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|bBigEndian<br />
|1<br />
|byte<br />
|01 if the file is big endian, 00 if little-endian<br />
|-<br />
|76<br />
|nTotalSize<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|80<br />
|nTypeNames<br />
|4<br />
|BE Int<br />
|Count of type names<br />
|-<br />
|84<br />
|nTypesOffset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types.<br />
|-<br />
|88<br />
|nTypesSize<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|nResEntries<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|96<br />
|nResLocsOffset<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|100<br />
|nResReqs<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|104<br />
|nResReqsOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|108<br />
|nForkPairs<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|112<br />
|nForkPairsOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|116<br />
|nNameInfoOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|120<br />
|nNameInfoSize<br />
|4<br />
|BE Int<br />
|<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (BREntry)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|nOffset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|nSizeAndType<br />
|4<br />
|TypedInt<br />
|Size of the chunk, uncompressed<br />
|-<br />
|8<br />
|nSizeAndCompression<br />
|4<br />
|TypedInt<br />
|Size of the chunk, compressed<br />
|-<br />
|12<br />
|nResourceId<br />
|4<br />
|BE int<br />
|Resource ID of the chunk<br />
|}<br />
TypedInt is a weird data structure used in a view places: It's a 32bit integer, but it's masked with 0x3ffffff on every use. So it's a 26-bit integer. <br />
<br />
The top 6 bits are used for type information. The bottom 3 of the top 6 are the compression type (1=compressed, 0=uncompressed), and the top-3 encode how many buffers are needed for loading (0-7) <br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=389
Pipeworks Spigot Engine
2023-06-09T02:05:44Z
<p>Foone: /* Games possibly using the Spigot Engine */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
In at least one case (Haunted House, 2010), it seems to be called "ImaginEngine". There's clear continuity between the games using both names, so it may have changed name at some point? <br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
!Game folder (in debug info)<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|<br />
|-<br />
|Are You Smarter Than a 5th Grader?: Make the Grade<br />
|2008<br />
|Wii<br />
|1.4<br />
|1.1.0.554<br />
|08/01/2008<br />
|FifthGrader<br />
|<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|E:\Build\GirlsClub\GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|E:\Build\WheelJeopardy\Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|E:\Build\WheelJeopardy\Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|E:\Build\Zumba\Zumba<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|E:\Build\TabletPaint\TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|P:\ImaginEngine\HauntedHouse\HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|D:\build\TabletPaint2\TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|E:\Build\GForce\GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|C:\projects\MonsterHigh_2011\Wii\Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.537<br />
|08/21/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
*[[w:Godzilla:_Unleashed|Godzilla: Unleashed]] (2007, Wii) (partially stripped)<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii) (partially stripped)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii) (partially stripped)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
<br />
<br />
As for the debug information itself, it's included in a "default.elf" file. This file is not used by the retail game, although supposedly it [https://tcrf.net/Wheel_of_Fortune_(Wii)#ELF_Executable is a perfect match for the retail executable if stripped and converted]. There's no legitimate reason for this file to be left on the disk, so it was presumably included by mistake. <br />
<br />
The debugging information in the file is not fully loaded by Ghidra (which seems to just get symbol names). [https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html LLVM-dwarfdump] can be used to get significantly more of it, though not all of it is decodable, and the output will include a lot of "decoding failed" errors. <br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition (BundleFileHeader)<br />
!Offset<br />
!Official Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|szSigString<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|szProjectName<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|bBigEndian<br />
|1<br />
|byte<br />
|01 if the file is big endian, 00 if little-endian<br />
|-<br />
|76<br />
|nTotalSize<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|80<br />
|nTypeNames<br />
|4<br />
|BE Int<br />
|Count of type names<br />
|-<br />
|84<br />
|nTypesOffset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types.<br />
|-<br />
|88<br />
|nTypesSize<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|nResEntries<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|96<br />
|nResLocsOffset<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|100<br />
|nResReqs<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|104<br />
|nResReqsOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|108<br />
|nForkPairs<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|112<br />
|nForkPairsOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|116<br />
|nNameInfoOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|120<br />
|nNameInfoSize<br />
|4<br />
|BE Int<br />
|<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (BREntry)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|nOffset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|nSizeAndType<br />
|4<br />
|TypedInt<br />
|Size of the chunk, uncompressed<br />
|-<br />
|8<br />
|nSizeAndCompression<br />
|4<br />
|TypedInt<br />
|Size of the chunk, compressed<br />
|-<br />
|12<br />
|nResourceId<br />
|4<br />
|BE int<br />
|Resource ID of the chunk<br />
|}<br />
TypedInt is a weird data structure used in a view places: It's a 32bit integer, but it's masked with 0x3ffffff on every use. So it's a 26-bit integer. <br />
<br />
The top 6 bits are used for type information. The bottom 3 of the top 6 are the compression type (1=compressed, 0=uncompressed), and the top-3 encode how many buffers are needed for loading (0-7) <br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=388
Pipeworks Spigot Engine
2023-06-08T19:15:51Z
<p>Foone: /* Bundle v1.20 format */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
In at least one case (Haunted House, 2010), it seems to be called "ImaginEngine". There's clear continuity between the games using both names, so it may have changed name at some point? <br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
!Game folder (in debug info)<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|E:\Build\GirlsClub\GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|E:\Build\WheelJeopardy\Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|E:\Build\WheelJeopardy\Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|E:\Build\Zumba\Zumba<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|E:\Build\TabletPaint\TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|P:\ImaginEngine\HauntedHouse\HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|D:\build\TabletPaint2\TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|E:\Build\GForce\GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|C:\projects\MonsterHigh_2011\Wii\Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.537<br />
|08/21/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
*[[w:Godzilla:_Unleashed|Godzilla: Unleashed]] (2007, Wii) (partially stripped)<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii) (partially stripped)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii) (partially stripped)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
<br />
<br />
As for the debug information itself, it's included in a "default.elf" file. This file is not used by the retail game, although supposedly it [https://tcrf.net/Wheel_of_Fortune_(Wii)#ELF_Executable is a perfect match for the retail executable if stripped and converted]. There's no legitimate reason for this file to be left on the disk, so it was presumably included by mistake. <br />
<br />
The debugging information in the file is not fully loaded by Ghidra (which seems to just get symbol names). [https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html LLVM-dwarfdump] can be used to get significantly more of it, though not all of it is decodable, and the output will include a lot of "decoding failed" errors. <br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition (BundleFileHeader)<br />
!Offset<br />
!Official Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|szSigString<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|szProjectName<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|bBigEndian<br />
|1<br />
|byte<br />
|01 if the file is big endian, 00 if little-endian<br />
|-<br />
|76<br />
|nTotalSize<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|80<br />
|nTypeNames<br />
|4<br />
|BE Int<br />
|Count of type names<br />
|-<br />
|84<br />
|nTypesOffset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types.<br />
|-<br />
|88<br />
|nTypesSize<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|nResEntries<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|96<br />
|nResLocsOffset<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|100<br />
|nResReqs<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|104<br />
|nResReqsOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|108<br />
|nForkPairs<br />
|4<br />
|BE int<br />
|<br />
|-<br />
|112<br />
|nForkPairsOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|116<br />
|nNameInfoOffset<br />
|4<br />
|BE Int<br />
|<br />
|-<br />
|120<br />
|nNameInfoSize<br />
|4<br />
|BE Int<br />
|<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (BREntry)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|nOffset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|nSizeAndType<br />
|4<br />
|TypedInt<br />
|Size of the chunk, uncompressed<br />
|-<br />
|8<br />
|nSizeAndCompression<br />
|4<br />
|TypedInt<br />
|Size of the chunk, compressed<br />
|-<br />
|12<br />
|nResourceId<br />
|4<br />
|BE int<br />
|Resource ID of the chunk<br />
|}<br />
TypedInt is a weird data structure used in a view places: It's a 32bit integer, but it's masked with 0x3ffffff on every use. So it's a 26-bit integer. <br />
<br />
The top 6 bits are used for type information. The bottom 3 of the top 6 are the compression type (1=compressed, 0=uncompressed), and the top-3 encode how many buffers are needed for loading (0-7) <br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=387
Pipeworks Spigot Engine
2023-06-07T16:37:09Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
In at least one case (Haunted House, 2010), it seems to be called "ImaginEngine". There's clear continuity between the games using both names, so it may have changed name at some point? <br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
!Game folder (in debug info)<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|E:\Build\GirlsClub\GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|E:\Build\WheelJeopardy\Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|E:\Build\WheelJeopardy\Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|E:\Build\Zumba\Zumba<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|E:\Build\TabletPaint\TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|P:\ImaginEngine\HauntedHouse\HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|D:\build\TabletPaint2\TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|E:\Build\GForce\GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|C:\projects\MonsterHigh_2011\Wii\Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.537<br />
|08/21/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
*[[w:Godzilla:_Unleashed|Godzilla: Unleashed]] (2007, Wii) (partially stripped)<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii) (partially stripped)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii) (partially stripped)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
<br />
<br />
As for the debug information itself, it's included in a "default.elf" file. This file is not used by the retail game, although supposedly it [https://tcrf.net/Wheel_of_Fortune_(Wii)#ELF_Executable is a perfect match for the retail executable if stripped and converted]. There's no legitimate reason for this file to be left on the disk, so it was presumably included by mistake. <br />
<br />
The debugging information in the file is not fully loaded by Ghidra (which seems to just get symbol names). [https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html LLVM-dwarfdump] can be used to get significantly more of it, though not all of it is decodable, and the output will include a lot of "decoding failed" errors. <br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=386
Pipeworks Spigot Engine
2023-06-07T16:03:28Z
<p>Foone: /* Games possibly using the Spigot Engine */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
!Game folder (in debug info)<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|E:\Build\WheelJeopardy\Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.537<br />
|08/21/2012<br />
|Jeopardy<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
<br />
As for the debug information itself, it's included in a "default.elf" file. This file is not used by the retail game, although supposedly it [https://tcrf.net/Wheel_of_Fortune_(Wii)#ELF_Executable is a perfect match for the retail executable if stripped and converted]. There's no legitimate reason for this file to be left on the disk, so it was presumably included by mistake. <br />
<br />
The debugging information in the file is not fully loaded by Ghidra (which seems to just get symbol names). [https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html LLVM-dwarfdump] can be used to get significantly more of it, though not all of it is decodable, and the output will include a lot of "decoding failed" errors. <br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=385
Pipeworks Spigot Engine
2023-06-07T16:02:29Z
<p>Foone: /* Debug info */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Jeopardy<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.537<br />
|08/21/2012<br />
|Jeopardy<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
<br />
As for the debug information itself, it's included in a "default.elf" file. This file is not used by the retail game, although supposedly it [https://tcrf.net/Wheel_of_Fortune_(Wii)#ELF_Executable is a perfect match for the retail executable if stripped and converted]. There's no legitimate reason for this file to be left on the disk, so it was presumably included by mistake. <br />
<br />
The debugging information in the file is not fully loaded by Ghidra (which seems to just get symbol names). [https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html LLVM-dwarfdump] can be used to get significantly more of it, though not all of it is decodable, and the output will include a lot of "decoding failed" errors. <br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=384
Pipeworks Spigot Engine
2023-04-29T20:52:53Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Jeopardy<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.537<br />
|08/21/2012<br />
|Jeopardy<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=383
Pipeworks Spigot Engine
2023-04-26T22:56:28Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|Fabric<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=382
Pipeworks Spigot Engine
2023-04-26T21:46:58Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|v1.20<br />
|1.0.0.046<br />
|10/14/2011<br />
|DWarrior<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=381
Pipeworks Spigot Engine
2023-04-26T20:06:26Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<ref>Possibly only uses Spigot for the menu system between the games </ref><br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|No version.txt file<br />
|?<br />
|X360DMC<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=380
Pipeworks Spigot Engine
2023-04-24T17:54:22Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for [[w:Pipeworks_Studios|Pipeworks Studios']] second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=GeoStorm&diff=379
GeoStorm
2023-04-24T17:47:23Z
<p>Foone: </p>
<hr />
<div>[[File:2023-04-21 09 43 34-Pipeworks.png|thumb|Thumbnails of screenshots. The internet archive didn't get the full versions]]<br />
[[File:GeoStorm logo.jpg|thumb|GeoStorm logo]]<br />
There's very little public information about GeoStorm (Wikipedia even spells the name wrong as Geo-Storm), but I was able to get in contact with one of the developers, jake kolb v, through their [https://simulacrum0.github.io/ resume/CV]. <br />
<br />
Their resume says the game was a "geo-location trainer" for the PC, made by Xeolux LLC/InVisM Inc. <br />
<br />
They wrote the radar-simulation engine for GeoStorm, which they confirmed was only released internally to the training simulator's clients.<br />
<br />
It did use [[Pipeworks Spigot Engine|the Spigot engine]], and all UI & Gameplay were built by the Pipeworks team.<br />
<br />
They also confirmed the game is unrelated to the later game GeoCommander that they also worked on, which has [https://www.youtube.com/watch?v=Brr9eZJrjWA some videos on youtube] (uploaded by them).<br />
<br />
Information from [https://web.archive.org/web/20110715085130/http://www.pipeworks.com/products/games/detail/?game=551 Pipework's old page describes the game]:<blockquote>GeoStorm is designed to efficiently and effectively train strategic and tactical intelligence analysts and operators in an immersive, real-time environment. The simulation reflects analysis tools, techniques, signals analysis, and multi-agency collaboration strategies to improve analysis and operator skills and understanding so they can provide more responsive, relevant, and accurate support to warfighters and national decision makers.</blockquote></div>
Foone
https://wiki.foone.org/index.php?title=Main_Page&diff=378
Main Page
2023-04-24T17:45:12Z
<p>Foone: /* Other sites */</p>
<hr />
<div><strong>This is Foone Turing's personal wiki</strong><br />
<br />
I'm a programmer who works on old hardware/software, archival, floppy disks, and reverse engineering. <br />
<br />
(I'm still migrating data over from my [http://foone.org/w/ old wiki]. Please imagine a geocities-style "under construction" GIF here) <br />
<br />
Interested in hiring me? See [[My Resume]].<br />
==Projects==<br />
<br />
*[[Reverse Engineering documentation]]<br />
*[[Software Projects]]<br />
*[[Hardware Projects]]<br />
*[[Video Projects]]<br />
*[[My Games]]<br />
*[[Archival Projects]]<br />
*[[Twitter Info Threads]]<br />
*[[Floppy Controllers]]<br />
<br />
==Other sites==<br />
<br />
*[https://twitter.com/foone My Twitter]<br />
*[https://digipres.club/@foone My Mastodon((me))]<br />
*[https://www.youtube.com/user/foone2/videos My YouTube channel]<br />
*[http://foone.wordpress.com/ My Blog]<br />
*[https://foone.tumblr.com/ My Tumblr]<br />
*[https://github.com/foone My GitHub]<br />
*[http://deathgenerator.com/ The Death Generator]<br />
*[https://ko-fi.com/fooneturing My Ko-fi]<br />
*[https://www.patreon.com/foone My Patreon]<br />
*[https://www.etsy.com/shop/TuringComplete My Etsy]</div>
Foone
https://wiki.foone.org/index.php?title=Hardware_Projects&diff=377
Hardware Projects
2023-04-24T17:34:35Z
<p>Foone: /* Built From Mostly Scratch Bad Keyboards */</p>
<hr />
<div>I'm a computer programmer with a soldering iron: The most dangerous beast.<br />
<br />
==Terrible Keyboards==<br />
I like to take apart kid's toys which have keyboards on them and turn them into Real USB Keyboards.<br />
<br />
===Successfully Keyboardized===<br />
<br />
*[https://twitter.com/Foone/status/1166963402549317632 Children Intelligent Learning Machine]<br />
*[https://twitter.com/Foone/status/1274527326554845185 Fisher-Price Linkimals A to Z Otter]<br />
*[https://twitter.com/Foone/status/1145911058189582338 LeapFrog My Own Leaptop]<br />
*[https://twitter.com/Foone/status/1283264756233601024 LeapFrog LeapBuilders Construction Blocks]<br />
*[https://twitter.com/Foone/status/1210817467573891072 Oregon Scientific Barbie Laptop], and [https://twitter.com/Foone/status/1211550699965669377 follow up thread]<br />
*[https://twitter.com/Foone/status/1210405101543686144 VTech Alphabert and Sprocket]<br />
*[https://twitter.com/Foone/status/1142507091174625280 VTech Pull & Learn Alligator]. See also videos in [https://twitter.com/Foone/status/1145069804799197184 the follow up thread]<br />
*[https://twitter.com/Foone/status/1146315727546114049 VTech Princess Fantasy Notebook]. Videos in [https://twitter.com/Foone/status/1147788603088490496 the followup thread]<br />
*[https://twitter.com/Foone/status/1165168201799389184 VTech Thomas & Friends Learn & Explore Laptop Teardown]. See also the videos in [https://twitter.com/Foone/status/1166234722843774976 the follow up thread].<br />
<br />
===Not Yet Keyboardized===<br />
<br />
*[https://twitter.com/Foone/status/1153523022306762752 CIDE toys Kidz Delight]<br />
*[https://twitter.com/Foone/status/1182520986911928320 LeapFrog Alphabet Pal]<br />
*[https://twitter.com/Foone/status/1171632312175353856 LeapFrog AlphaPup]<br />
*[https://twitter.com/Foone/status/1207785236043448321 LeapFrog ClickStart My First Computer]<br />
*[https://twitter.com/Foone/status/1340433898979770368 Radio Shack Computer Typing Instructor]<br />
*[https://twitter.com/Foone/status/1145443364260601856 VTech Alphabet Town]<br />
*[https://twitter.com/Foone/status/1060812926825652226 VTech Little Apps Tablet]. [https://twitter.com/Foone/status/1061759830086475776 See also thread 2, with the second keyboard]<br />
*[https://twitter.com/Foone/status/1279223175046291456 VTech Nitro Web notebook™]<br />
*[https://twitter.com/Foone/status/1144115173742874625 VTech Super Color Whiz]<br />
*[https://twitter.com/Foone/status/1278911489676468224 Vtech Tote & Go Laptop Web]<br />
<br />
===Built From Mostly Scratch Bad Keyboards===<br />
<br />
*[https://twitter.com/Foone/status/1257164625184841729 Binary Keyboard (7-switch)]<br />
*[https://twitter.com/Foone/status/1257208935360028673 Binary Keyboard (2 button)]<br />
*[https://twitter.com/Foone/status/1257215803268554753 Unary Keyboard (1 button)]<br />
*[https://twitter.com/Foone/status/1228951090478977024 The Furboard]<br />
*[https://twitter.com/Foone/status/1227825104110751744 Rotary Phone Numpad]<br />
*[https://twitter.com/Foone/status/1227832631150006272 Rotary Phone SMS Dialing]<br />
*[https://twitter.com/Foone/status/1207892434706825216 Analog Dial Keyboard]<br />
*[https://twitter.com/Foone/status/1236432401712078848 Random ASCII Keyboard]<br />
*[https://twitter.com/Foone/status/1259644761209634818 The FlopKey Floppy-Disk Keyboard]<br />
*[https://twitter.com/Foone/status/1419137542297767939 Clock Keyboard]<br />
*[https://mobile.twitter.com/Foone/status/1448539895606087682 Teeth Keyboard]<br />
*[https://twitter.com/Foone/status/1489430212768985089 Randomized layout designed-by-physics Keyboard]<br />
*[https://twitter.com/Foone/status/1585780252998975488 Poetry Keyboard]<br />
*[https://www.youtube.com/watch?v=ynY4j49hXNk Physics Keyboard]<br />
*[https://www.youtube.com/watch?v=vRqRQ7hYxjk Cube Keyboard]<br />
<br />
===Bad Keyboard Layouts===<br />
<br />
*[https://twitter.com/Foone/status/1261467973136470019 Vertical QWERTY]<br />
*[https://twitter.com/Foone/status/1283284061683806213 4-Line QWERTY]<br />
*[https://twitter.com/Foone/status/1291865620007358464 Left-handed QWERTY]<br />
*[https://twitter.com/Foone/status/1291897354375716866 Flipped QWERTY]<br />
*[https://twitter.com/Foone/status/1283290298324447232 Real DVORAK]<br />
*[https://twitter.com/Foone/status/1293680783551418368 Real COLEMAK]<br />
*[https://twitter.com/Foone/status/1293745971487109121 Linotype]<br />
*[https://twitter.com/Foone/status/1182554915425513472 Michael Crichton's Sphere keyboard]<br />
<br />
==Projects==<br />
<br />
*[[Floppyizer]]</div>
Foone
https://wiki.foone.org/index.php?title=GeoStorm&diff=376
GeoStorm
2023-04-24T17:25:17Z
<p>Foone: Created page with "Thumbnails of screenshots. The internet archive didn't get the full versions GeoStorm logo Th..."</p>
<hr />
<div>[[File:2023-04-21 09 43 34-Pipeworks.png|thumb|Thumbnails of screenshots. The internet archive didn't get the full versions]]<br />
[[File:GeoStorm logo.jpg|thumb|GeoStorm logo]]<br />
There's very little public information about GeoStorm (Wikipedia even spells the name wrong as Geo-Storm), but I was able to get in contact with one of the developers, jake kolb v, through their [https://simulacrum0.github.io/ resume/CV]. <br />
<br />
Their resume says the game was a "geo-location trainer" for the PC, made by Xeolux LLC/InVisM Inc. <br />
<br />
They wrote the radar-simulation engine for GeoStorm, which they confirmed was only released internally to the training simulator's clients.<br />
<br />
It did use the Spigot framework, and all UI & Gameplay were built by the Pipeworks team.<br />
<br />
They also confirmed the game is unrelated to the later game GeoCommander that they also worked on, which has [https://www.youtube.com/watch?v=Brr9eZJrjWA some videos on youtube] (uploaded by them).<br />
<br />
Information from [https://web.archive.org/web/20110715085130/http://www.pipeworks.com/products/games/detail/?game=551 Pipework's old page describes the game]:<blockquote>GeoStorm is designed to efficiently and effectively train strategic and tactical intelligence analysts and operators in an immersive, real-time environment. The simulation reflects analysis tools, techniques, signals analysis, and multi-agency collaboration strategies to improve analysis and operator skills and understanding so they can provide more responsive, relevant, and accurate support to warfighters and national decision makers.</blockquote></div>
Foone
https://wiki.foone.org/index.php?title=File:GeoStorm_logo.jpg&diff=375
File:GeoStorm logo.jpg
2023-04-24T17:22:15Z
<p>Foone: </p>
<hr />
<div>the logo for GeoStorm</div>
Foone
https://wiki.foone.org/index.php?title=File:2023-04-21_09_43_34-Pipeworks.png&diff=374
File:2023-04-21 09 43 34-Pipeworks.png
2023-04-24T17:18:18Z
<p>Foone: </p>
<hr />
<div>Screenshot of thumbnails of the game GeoStorm</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=373
Pipeworks Spigot Engine
2023-04-24T17:08:42Z
<p>Foone: /* Games possibly using the Spigot Engine */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|[[GeoStorm]]<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].<br />
<references /></div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=372
Pipeworks Spigot Engine
2023-04-21T17:14:29Z
<p>Foone: /* Games possibly using the Spigot Engine */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|1.3<br />
|4.670 (from XBE)<br />
|09/09/2004<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<ref>May have been an internal training game, possibly for the US Army? https://web.archive.org/web/20220630165435/https://simulacrum0.github.io/</ref><br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=371
Pipeworks Spigot Engine
2023-04-21T17:05:11Z
<p>Foone: /* Games possibly using the Spigot Engine */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<ref>May have been an internal training game, possibly for the US Army? https://web.archive.org/web/20220630165435/https://simulacrum0.github.io/</ref><br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio]]<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|[[w:UDraw_Studio|UDraw Studio: Instant Artist]]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|[https://monsterhigh.fandom.com/wiki/Ghoul_Spirit_(video_game) Monster High: Ghoul Spirit]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=370
Pipeworks Spigot Engine
2023-04-21T17:00:49Z
<p>Foone: /* Games possibly using the Spigot Engine */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Save_the_Earth|Godzilla: Save the Earth]]<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|[[w:Rampage:_Total_Destruction|Rampage: Total Destruction]]<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|[[w:Godzilla:_Unleashed|Godzilla: Unleashed]]<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|[[w:Boogie_(video_game)|Boogie]]<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|[[w:Night_at_the_Museum:_Battle_of_the_Smithsonian_(video_game)|Night at the Museum: Battle of the Smithsonian]]<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<ref>May have been an internal training game, possibly for the US Army? https://web.archive.org/web/20220630165435/https://simulacrum0.github.io/</ref><br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=369
Pipeworks Spigot Engine
2023-04-21T16:47:02Z
<p>Foone: /* Games possibly using the Spigot Engine */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<!-- May have been an internal training game, possibly for the US Army? https://web.archive.org/web/20220630165435/https://simulacrum0.github.io/ --><br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=368
Pipeworks Spigot Engine
2023-04-21T16:37:39Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|1.3<br />
|6.1.0.24<br />
|02/23/2006<br />
|RAMPAGE<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=367
Pipeworks Spigot Engine
2023-04-21T15:58:18Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|1.4<br />
|1.0.0.0135<br />
|10/12/2007<br />
|GZ3PS2<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|Godzilla3<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=366
Pipeworks Spigot Engine
2023-03-18T02:03:45Z
<p>Foone: /* Pipeworks games NOT using the Spigot Engine */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|1.4<br />
|2.8.7.626<br />
|06/01/2007<br />
|DRAGRACE<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=365
Pipeworks Spigot Engine
2023-03-17T21:03:53Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|v1.20<br />
|?<br />
|?<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=364
Pipeworks Spigot Engine
2023-03-16T21:37:04Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|Haunted House<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.100<br />
|08/19/2010<br />
|HauntedHouse<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
* Haunted House (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=363
Pipeworks Spigot Engine
2023-03-16T21:28:26Z
<p>Foone: /* Debug info */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
* Monster High: Ghoul Spirit (2011, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=362
Pipeworks Spigot Engine
2023-03-16T21:27:42Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Monster High: Ghoul Spirit<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.272<br />
|01/11/2013<br />
|Monster<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=361
Pipeworks Spigot Engine
2023-03-16T00:07:25Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
* UDraw Studio (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=360
Pipeworks Spigot Engine
2023-03-16T00:00:16Z
<p>Foone: /* Debug info */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
* Gremlins: Gizmo (2011, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=359
Pipeworks Spigot Engine
2023-03-15T23:55:04Z
<p>Foone: /* Debug info */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
* Merv Griffin's Crosswords (2008, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=358
Pipeworks Spigot Engine
2023-03-15T23:50:04Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
* Zumba Fitness (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=357
Pipeworks Spigot Engine
2023-03-15T23:48:00Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
* Night at the Museum: Battle of the Smithsonian (2009, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=356
Pipeworks Spigot Engine
2023-03-15T21:21:52Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|1.03<br />
|No version.txt file<br />
|?<br />
|Night<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.309<br />
|08/29/2011<br />
|GForce<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=355
Pipeworks Spigot Engine
2023-03-15T21:09:41Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|<br />
|1.0.0.309<br />
|08/29/2011<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
<br />
== Bundle files ==<br />
A key part of the Spigot engine are Pipeworks bundle files. These contain named, typed, and compressed resources for the game to use. <br />
<br />
Bundle files are stored in .bdg files, although some games use alternate extensions, such as .bdx (Wheel of Fortune, 2012, Xbox) or .bd9 (Colossal Kaiju Combat™: Kaijuland Battles, 2014, Windows).<br />
<br />
Sometimes there is an accompanying .jnl file, but this doesn't appear to be neccessary, and is more of a log file of the tool used to compile the bundle file. <br />
<br />
The bundle file comes in many versions, with the most well analyzed at the moment being v1.20. <br />
<br />
=== Bundle v1.20 format ===<br />
{| class="wikitable"<br />
|+Header definition<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|File signature<br />
|40<br />
|String<br />
|"Pipeworks bundle v1.20 (big endian) \x1a\0"<br />
|-<br />
|40<br />
|Bundle name<br />
|32<br />
|String<br />
|Zero-terminated, padded with random bytes<br />
|-<br />
|72<br />
|File marker<br />
|1<br />
|byte<br />
|Unknown purpose, but must be 0x01<br />
|-<br />
|84<br />
|Types offset<br />
|4<br />
|BE Int<br />
|Offset to the directory of resource types. <br />
|-<br />
|88<br />
|Types length<br />
|4<br />
|BE int<br />
|Length of the directory of resource types<br />
|-<br />
|92<br />
|Unknown count 1<br />
|4<br />
|BE int<br />
|Multiplied by 16 and added to the resource directory length<br />
|-<br />
|96<br />
|Resource index offset<br />
|4<br />
|BE int<br />
|Offset to the index of resource chunks<br />
|-<br />
|100<br />
|Unknown count 2<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|-<br />
|108<br />
|Unknown count 3<br />
|4<br />
|BE int<br />
|Multiplied by 8 and added to the resource directory length<br />
|}<br />
{| class="wikitable"<br />
|+Resource directory entry (variable length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|unknown<br />
|1<br />
|byte<br />
|seems to be 0x00 or 0x10 in all examples<br />
|-<br />
|1<br />
|flags/type?<br />
|1<br />
|byte<br />
|Unknown purpose. Seen values: 00, 01, 03, 04, 05, 06, 08, 0x0A, 0x11, <br />
|-<br />
|2<br />
|Type name<br />
|n<br />
|string<br />
|Zero-terminated. Sometimes ends with '\0\xFF' for unknown reasons. (padding/off by one error?)<br />
|}<br />
{| class="wikitable"<br />
|+Resource chunk index entry (16 bytes in length)<br />
!Offset<br />
!Name<br />
!Size<br />
!Type<br />
!Value/Notes<br />
|-<br />
|0<br />
|Data offset<br />
|4<br />
|BE int<br />
|Offset to where the resource begins<br />
|-<br />
|4<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|5<br />
|uncompressed length<br />
|3<br />
|BE int<br />
|The length of the resource after decompression (zlib inflate)<br />
|-<br />
|8<br />
|unknown<br />
|1<br />
|byte<br />
|<br />
|-<br />
|9<br />
|compressed length<br />
|3<br />
|BE int<br />
|The length of the compressed resource <br />
|-<br />
|12<br />
|unknown<br />
|4<br />
|?<br />
|Possibly a resource ID?<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=354
Pipeworks Spigot Engine
2023-03-15T20:39:05Z
<p>Foone: /* History */</p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|<br />
|1.0.0.309<br />
|08/29/2011<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Virtual Machine ==<br />
Spigot uses a "PWK Virtual Machine", version 3.01 in Wheel of Fortune (2010, Wii). It appears to be used for scripting, and the scripts are contained in matching .pvd and .pvm files.<br />
<br />
== Debug info ==<br />
Some games have shipped with debugging information included, allowing for function/class names to be extracted. <br />
<br />
Known games with debugging info:<br />
<br />
* Wheel of Fortune (2010, Wii)<br />
* Jeopardy (2010, Wii)<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=353
Pipeworks Spigot Engine
2023-03-15T20:36:04Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://www.mobygames.com/game/88235/gremlins-gizmo/ Gremlins: Gizmo]<br />
|2011<br />
|Wii<br />
|<br />
|1.0.0.309<br />
|08/29/2011<br />
|<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}<br />
<br />
== Other software ==<br />
at least Wheel of Fortune (2010, Wii) has a separate engine called "RockNRoll" which appears to be used for collision/physics.<br />
<br />
It also uses the Fonix middleware for speech (recognition or lip-syncing?), and [https://www.fmod.com/ FMOD] for audio playback. Videos are encoded in the [https://wiki.tockdom.com/wiki/THP_(File_Format) THP format].</div>
Foone
https://wiki.foone.org/index.php?title=Pipeworks_Spigot_Engine&diff=352
Pipeworks Spigot Engine
2023-03-15T19:45:56Z
<p>Foone: </p>
<hr />
<div>== History ==<br />
The Spigot engine appears to have been developed for their second game, [[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]] (Gamecube, 2002). The June 3rd, 2002 copy of [https://web.archive.org/web/20020603122746/http://www.pipeworks.com:80/gallery.html Pipework's Gallery page] calls the engine Spigot, confirming the name. <br />
<br />
It was expanded and ported to multiple platforms, being used as late as 2012 (Wheel of Fortune for the Wii U) by Pipeworks, and 2014 by external developers ([https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat: Kaijuland Battles], by Sunstone Games)<br />
<br />
== Games possibly using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platform<br />
!Bundle version<br />
!Game version<br />
!Build date<br />
!Internal name<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2002<br />
|GameCube<br />
|1.18<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|[[w:Godzilla:_Destroy_All_Monsters_Melee|Godzilla: Destroy All Monsters Melee]]<br />
|2003<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|PS2<br />
|1.3<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Save the Earth<br />
|2004<br />
|Xbox<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|GameCube<br />
|1.3<br />
|6.1.0.25<br />
|02/24/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|Wii<br />
|1.4<br />
|7.1.0.54<br />
|10/16/2006<br />
|?<br />
|-<br />
|Rampage: Total Destruction<br />
|2006<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PSP<br />
|1.4<br />
|No version.txt file<br />
|?<br />
|?<br />
|-<br />
|NHRA Drag Racing: Countdown to the Championship<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|PS2<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Godzilla: Unleashed<br />
|2007<br />
|Wii<br />
|1.4<br />
|6.12.0.0267<br />
|10/18/2007<br />
|?<br />
|-<br />
|Boogie<br />
|2007<br />
|PS2<br />
|1.4<br />
|5.1.1.398<br />
|10/15/2007<br />
|Boogie<br />
|-<br />
|Merv Griffin's Crosswords<br />
|2008<br />
|Wii<br />
|1.03<br />
|6.0.0.402<br />
|09/26/2008<br />
|Crossword<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.779<br />
|03/07/2009<br />
|Night<br />
|-<br />
|Night at the Museum: Battle of the Smithsonian<br />
|2009<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Charm Girls Club: Pajama Party<br />
|2009<br />
|Wii<br />
|1.03<br />
|1.0.0.512<br />
|08/04/2009<br />
|GirlsClub<br />
|-<br />
|GeoStorm<br />
|2009<br />
|Windows (32bit)<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Monopoly<br />
|2010<br />
|PSP<br />
|1.13<br />
|No version.txt file<br />
|?<br />
|Monopoly<br />
|-<br />
|Jeopardy<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.430<br />
|08/11/2010<br />
|Jeopardy<br />
|-<br />
|Wheel of Fortune<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.415<br />
|08/11/2010<br />
|Wheel<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.508<br />
|10/11/2010<br />
|Zumba<br />
|-<br />
|Zumba Fitness<br />
|2010<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|UDraw Studio<br />
|2010<br />
|Wii<br />
|1.20<br />
|1.0.0.129<br />
|09/11/2010<br />
|TabletPaint<br />
|-<br />
|UDraw Studio: Instant Artist<br />
|2011<br />
|Wii<br />
|1.30<br />
|1.0.0.213<br />
|09/05/2011<br />
|TabletPaint2<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior: Legends<br />
|2011<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Devil May Cry: HD Collection<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.076<br />
|11/19/2012<br />
|Wheel<br />
|-<br />
|Wheel of Fortune<br />
|2012<br />
|Xbox 360<br />
|1.30<br />
|1.0.0.565<br />
|09/03/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Wii U<br />
|1.30<br />
|1.0.0.073<br />
|11/14/2012<br />
|Wheel<br />
|-<br />
|Jeopardy!<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|PS3<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|Deadliest Warrior Ancient Combat<br />
|2012<br />
|Xbox 360<br />
|?<br />
|?<br />
|?<br />
|?<br />
|-<br />
|[https://store.steampowered.com/app/290810/Colossal_Kaiju_Combat_Kaijuland_Battles/ Colossal Kaiju Combat™: Kaijuland Battles]<br />
|2014<br />
|Windows (32bit)<br />
|1.30<br />
|1.0.0.467<br />
|09/24/2015<br />
|Kaiju<br />
|}<br />
<br />
== Pipeworks games NOT using the Spigot Engine ==<br />
{| class="wikitable"<br />
|+<br />
!Title<br />
!Year<br />
!Platforms<br />
!Engine<br />
|-<br />
|GLOM<br />
|2001<br />
|PalmOS<br />
|?<br />
|-<br />
|Prince of Persia: Revelations<br />
|2005<br />
|PSP<br />
|?<br />
|-<br />
|Godzilla: Unleashed: Double Smash<br />
|2007<br />
|DS<br />
|?<br />
|-<br />
|Prince of Persia: Rival Swords<br />
|2007<br />
|PSP/Wii<br />
|?<br />
|-<br />
|Wreck-It Ralph<br />
|2012<br />
|Wii/DS/3DS<br />
|?<br />
|-<br />
|Godzilla: Smash 3<br />
|2014<br />
|Android/iOS<br />
|Unity<br />
|-<br />
|[https://store.steampowered.com/app/384180/Prominence_Poker/ Prominence Poker]<br />
|2016<br />
|Windows (32bit)/PS4/Xbox One<br />
|Unreal<br />
|-<br />
|[https://store.steampowered.com/app/720090/Magic_Spellslingers/ Magic Spellslingers]<br />
|2022<br />
|Windows/MacOS/iOS/Android<br />
|Unity<br />
|}</div>
Foone