diff --git a/inspect.css b/inspect.css
new file mode 100644
index 0000000..1206ab3
--- /dev/null
+++ b/inspect.css
@@ -0,0 +1,93 @@
+div.nav {
+ width: 100px;
+ float: left;
+ background: #cce;
+}
+div.nav div {
+ padding-left: 5px;
+ font-size: 12px;
+ font-family: sans-serif;
+ cursor: pointer;
+ border-bottom: 1px solid #eee;
+}
+div.view {
+ margin-left: 110px;
+}
+
+div.selector {
+ padding-top: 5px;
+ font-size: 14px;
+ font-family: sans-serif;
+}
+span.prev {
+ width: 40px;
+ border-top: 1px solid #444;
+ border-left: 1px solid #444;
+ border-bottom: 1px solid #444;
+ border-right: 1px solid #aae;
+ padding: 5px;
+ background: #448;
+ color: #eef;
+ cursor: pointer;
+}
+span.prev.disabled {
+ color: #aaa;
+}
+span.next {
+ width: 40px;
+ border-top: 1px solid #444;
+ border-right: 1px solid #444;
+ border-bottom: 1px solid #444;
+ border-left: 1px solid #aae;
+ padding: 5px;
+ background: #448;
+ color: #eef;
+ cursor: pointer;
+}
+span.next.disabled {
+ color: #aaa;
+}
+span.counter {
+ display: inline-block;
+ width: 150px;
+ padding: 5px;
+ background: #88c;
+ border-top: 1px solid #444;
+ border-bottom: 1px solid #444;
+ text-align: center;
+}
+table {
+ border: 1px solid #888;
+ border-collapse: collapse;
+}
+table tr {
+ border-bottom: 1px solid #aaa;
+}
+table th {
+ text-align: left;
+ height: 8em;
+ vertical-align: bottom;
+ padding-bottom: 10px;
+}
+table th.odd {
+ background: #ccc;
+}
+table th span {
+ position: absolute;
+ -webkit-transform: rotate(-90deg);
+ -webkit-transform-origin: 0 0;
+ -moz-transform: rotate(-90deg);
+ -moz-transform-origin: 0 0;
+ font-size: 14px;
+ font-family: sans-serif;
+ vertical-align: top;
+}
+table td {
+ font-size: 13px;
+ font-family: sans-serif;
+ width: 20px;
+ text-align: center;
+}
+table td.odd {
+ background: #ccc;
+}
diff --git a/inspect.html b/inspect.html
new file mode 100644
index 0000000..6c6c352
--- /dev/null
+++ b/inspect.html
@@ -0,0 +1,12 @@
+
+
+WebVenture Inspector
+
+
+
+
+
+
+
diff --git a/inspect.js b/inspect.js
new file mode 100644
index 0000000..410ab03
--- /dev/null
+++ b/inspect.js
@@ -0,0 +1,19 @@
+var desktop;
+//initialize screen and determine platform
+$(document).ready(function(){
+ desktop=$(document.createElement('div'));
+ desktop.addClass('screen');
+ $('script[src="inspect.js"]').after(desktop);
+
+ if (gamename.match(/\.dsk$/)) //macintosh
+ $.getScript("inspect_mac.js");
+ else if (gamename.match(/\.2mg$/)) //IIgs
+ $.getScript("inspect_gs.js");
+ else
+ fatal("Unknown disk type");
+});
+function fatal(err)
+{
+// desktop.html(''+err+'
');
+ throw err;
+}
diff --git a/inspect_gs.js b/inspect_gs.js
new file mode 100644
index 0000000..3dc0e80
--- /dev/null
+++ b/inspect_gs.js
@@ -0,0 +1,21 @@
+var Modules=[
+ "gs/gs.js",
+ "gs/files.js",
+ "gs/graphics.js",
+ "gs/resources.js",
+ "gs/sound.js",
+ "files.js",
+ "graphics.js",
+ "sound.js",
+ "text.js",
+ "objects.js",
+ "inspect_main.js"
+];
+var loadedModules=0;
+for (var i in Modules)
+{
+ $.getScript(Modules[i],function() {
+ if (++loadedModules==Modules.length)
+ initialize();
+ });
+}
diff --git a/inspect_mac.js b/inspect_mac.js
new file mode 100644
index 0000000..f6e3afd
--- /dev/null
+++ b/inspect_mac.js
@@ -0,0 +1,21 @@
+var Modules=[
+ "mac/mac.js",
+ "mac/files.js",
+ "mac/graphics.js",
+ "mac/resources.js",
+ "mac/sound.js",
+ "files.js",
+ "graphics.js",
+ "sound.js",
+ "text.js",
+ "objects.js",
+ "inspect_main.js"
+];
+var loadedModules=0;
+for (var i in Modules)
+{
+ $.getScript(Modules[i],function() {
+ if (++loadedModules==Modules.length)
+ initialize();
+ });
+}
diff --git a/inspect_main.js b/inspect_main.js
new file mode 100644
index 0000000..38cf66f
--- /dev/null
+++ b/inspect_main.js
@@ -0,0 +1,306 @@
+var view;
+var game;
+function waitForLoad()
+{
+ if (!gameLoaded())
+ {
+ setTimeout(waitForLoad,10);
+ return;
+ }
+ openResources();
+ startImage.remove();
+ delete startImage;
+ desktop.removeClass('screen');
+
+ loadFiles();
+
+ var g=getFile(resGetDefault());
+ game=new Array(numGroups);
+ globals=new Array(numGlobals);
+ for (var i=0;i0)
+ {
+ curItem--;
+ update();
+ }
+ return false;
+ });
+ next.mousedown(function(){
+ if (curItem0)
+ {
+ curItem--;
+ update();
+ }
+ return false;
+ }
+ if (event.which==39) //right
+ {
+ if (curItemnumItems-1)
+ curItem=numItems-1;
+ update();
+ return false;
+ }
+ if (event.which==36) //home
+ {
+ curItem=0;
+ update();
+ return false;
+ }
+ if (event.which==35) //end
+ {
+ curItem=numItems-1;
+ update();
+ return false;
+ }
+ return true;
+ });
+ update();
+}
+
+function showObjects()
+{
+ createSelector(numObjects,showObject);
+}
+var subview=undefined;
+function showObject(id)
+{
+ var attrnames=[
+ "parent",
+ "x",
+ "y",
+ "offscreen",
+ "unclickable",
+ "undraggable",
+ "current room", //6
+ "prefixes",
+ "is exit",
+ "exit x",
+ "exit y",
+ "hidden exit"
+ ];
+ if (subview==undefined)
+ {
+ subview=$(document.createElement('div'));
+ view.append(subview);
+ }
+ else
+ subview.html('');
+ var name=$(document.createElement("h3"));
+ subview.append(name);
+ name.append("Name: "+getText(id));
+ var img=getGraphic(id*2);
+ var mask=getGraphic(id*2+1);
+ if (mask)
+ addImageMask(subview,img,mask);
+ else if (img)
+ addImage(subview,img);
+ var attrtab=$(document.createElement('table'));
+ subview.append(attrtab);
+ var attrs=$(document.createElement('tbody'));
+ attrtab.append(attrs);
+ var tr=$(document.createElement('tr'));
+ attrtab.append(tr);
+ for (var i=0;i>attrShifts[attr]);
+ return r;
+}
+function neg16(v)
+{
+ if (v&0x8000)
+ v=-((v^0xffff)+1);
+ return v;
+}
diff --git a/inspector.html b/inspector.html
new file mode 100644
index 0000000..1406d7c
--- /dev/null
+++ b/inspector.html
@@ -0,0 +1,32 @@
+
+
+WebVenture Inspector
+
+
+
+
+
+
WebVenture Inspector
+
+Please choose a game to inspect.
+
+
+
+
+
+