diff --git a/tools/cleanroom/TODO b/tools/cleanroom/TODO
deleted file mode 100644
index ed1e11cd..00000000
--- a/tools/cleanroom/TODO
+++ /dev/null
@@ -1,13 +0,0 @@
-TODO
-
-for freedoom purpose:
- patch re-ordering
- mark patch as done
- hide "done" patches
- load in WIP file
- update progress bar
-perhaps nice:
- drag arrange patches
- patch gallery
-for general use:
- doom WAD IO
diff --git a/tools/cleanroom/cleanroom.glade b/tools/cleanroom/cleanroom.glade
deleted file mode 100644
index ffc5bc5b..00000000
--- a/tools/cleanroom/cleanroom.glade
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-
-
-
- False
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-
-
-
- False
- 1
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_AUTOMATIC
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- True
-
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- gtk-missing-image
-
-
- 1
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- gtk-missing-image
-
-
- 2
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_AUTOMATIC
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- True
-
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- gtk-missing-image
-
-
- 1
-
-
-
-
- 3
-
-
-
-
- 2
-
-
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- True
-
-
- False
- 3
-
-
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_AUTOMATIC
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- True
-
-
-
-
- 4
-
-
-
-
-
-
diff --git a/tools/cleanroom/cleanroom.py b/tools/cleanroom/cleanroom.py
deleted file mode 100644
index 57810f83..00000000
--- a/tools/cleanroom/cleanroom.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/python
-
-# cleanroom.py: a clean-room IWAD texture1 lump constructor
-from doom import Patch, Texture
-
-class Model:
- """The Model represents the original texture list,
- the WIP texture list, and various bits of state.
- """
- def parse_texture_file(self,fname):
- texture1 = file(fname, "r").read()
- textures = {}
- current = None
- for line in texture1.split("\n"):
- if len(line) == 0 or line[0] == ";" or line[0] == "#":
- continue
- elif line[0] == "*" and current:
- junk,name,y,x= line.split()
- current.patches.append(Patch(name,int(x),int(y)))
- else:
- line = line.split()
- current = Texture(line[0],line[1],line[2])
- textures[line[0]] = current
- return textures
-
- def new_wip_textures(self):
- for texture in self.orig_textures.values():
- self.wip_textures[texture.name] = \
- Texture(texture.name, texture.width, texture.height)
-
- def __init__(self):
- self.orig_textures = \
- self.parse_texture_file("../../textures/combined.txt")
- self.wip_textures = {}
-
-model = Model()
-print "\n\n\torig\n\n"
-print "".join(map(str, model.orig_textures.values()))
-
-print "\n\n\tnew\n\n"
-model.new_wip_textures()
-print "".join(map(str, model.wip_textures.values()))
diff --git a/tools/cleanroom/create_new.py b/tools/cleanroom/create_new.py
deleted file mode 100644
index 5360d6c8..00000000
--- a/tools/cleanroom/create_new.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/python
-from doom import Patch, Texture
-
-import sys,re
-
-if len(sys.argv) != 2:
- sys.stderr.write("usage: sw1_sw2.py \n")
- sys.exit()
-
-infile = sys.argv[1]
-
-# TODO: a generalized form of this para should probably be moved into the
-# Texture class
-texture1 = file(infile, "r").read()
-textures = {}
-current = None
-for line in texture1.split("\n"):
- if len(line) == 0 or line[0] == ";" or line[0] == "#":
- continue
- elif line[0] == "*" and current:
- junk,name,y,x= line.split()
- current.patches.append(Patch(name,int(x),int(y)))
- else:
- line = line.split()
- current = Texture(line[0],line[1],line[2])
- textures[line[0]] = current
-
-oldtex = file("../../textures/combined.txt", "r").read()
-patches = []
-texline = ''
-for line in oldtex.split("\n"):
- # start of a patch line
- if len(line) > 0 and line[0] == "*":
- patches.append(line)
- else:
- # end of a texture definition and we had just one patch
- if 1 == len(patches):
- print patches[0]
- patches = []
- texline = ''
- # end of a texture definition,look up the patches
- elif texline != '':
- bits = texline.split()
- if bits[0] in textures:
- texture = textures[bits[0]]
- print '\n'.join(map(str,texture.patches))
- texline = ''
- else:
- sys.stderr.write("uh oh, no idea of patches for %s"%bits[0])
-
- # start of a texture definition
- if re.match(r'^[A-Z]', line):
- texline = line
- print line
diff --git a/tools/cleanroom/doom.py b/tools/cleanroom/doom.py
deleted file mode 100644
index 0e037d3d..00000000
--- a/tools/cleanroom/doom.py
+++ /dev/null
@@ -1,26 +0,0 @@
-"""A module for manipulating Doom data structures."""
-
-class Patch:
- def __init__(self, n,x,y):
- self.name = n
- self.yoff = x
- self.xoff =y
-
- def __str__(self):
- return "*\t%8s\t\t%d\t%d" % (self.name,self.xoff,self.yoff)
-
-class Texture:
- def __init__(self,name,width,height):
- self.name = name
- self.width = width
- self.height = height
- self.patches = []
- self.pixbuf = None
-
- def __str__(self):
- me = "%8s\t\t%d\t%d\n" % (self.name,int(self.width),int(self.height))
- kids = "\n".join(map(str, self.patches))
- if kids:
- kids += "\n"
- return (me + kids)
-
diff --git a/tools/cleanroom/images.py b/tools/cleanroom/images.py
deleted file mode 100644
index ef141e18..00000000
--- a/tools/cleanroom/images.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env python
-
-# example images.py
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-
-class ImagesExample:
- # when invoked (via signal delete_event), terminates the application.
- def close_application(self, widget, event, data=None):
- gtk.main_quit()
- return False
-
- def __init__(self):
- # create the main window, and attach delete_event signal to terminating
- # the application
- window = gtk.Window(gtk.WINDOW_TOPLEVEL)
- window.connect("delete_event", self.close_application)
- window.set_border_width(10)
- window.show()
-
- # a horizontal box to hold the buttons
- hbox = gtk.HBox()
- hbox.show()
- window.add(hbox)
-
- # create several images with data from files and load images into
- # buttons
- baseimage = gtk.Image()
- baseimage.set_from_file("../../patches/wall40_1.gif")
- pixbuf = baseimage.get_pixbuf()
- if pixbuf:
- scale = 1
- baseimage.set_from_pixbuf(pixbuf.scale_simple(
- pixbuf.get_width() * scale,
- pixbuf.get_height() * scale,
- gtk.gdk.INTERP_NEAREST
- ))
- baseimage.show()
-
- basepatch = gtk.Image()
- basepatch.set_from_file("../../patches/ps20a0.gif")
- pb = basepatch.get_pixbuf()
- basepatch.set_from_pixbuf(pb.scale_simple(
- pb.get_width() * scale,
- pb.get_height() * scale,
- gtk.gdk.INTERP_NEAREST
- ))
- pb = basepatch.get_pixbuf()
- pb = pb.add_alpha(True,chr(0),chr(255),chr(255))
-
- for x,y in [(0,0), (24,24), (104,16), (24,104), (-16,0), (0,-16)]:
- x *= scale
- y *= scale
- image = gtk.Image()
- image.set_from_pixbuf(baseimage.get_pixbuf().copy())
- image.show()
-
- dest_x = max(0, x)
- dest_y = max(0, y)
- dest_height = min(pb.get_height(), image.get_pixbuf().get_height() - dest_y)
- dest_width = min(pb.get_width(), image.get_pixbuf().get_width() - dest_x)
- if x < 0:
- dest_width += x
- if y < 0:
- dest_height += y
- offset_x = x
- offset_y = y
-
- pb.composite(
- image.get_pixbuf(),
- dest_x, dest_y, dest_width, dest_height,
- offset_x, offset_y, 1, 1, # scale
- gtk.gdk.INTERP_NEAREST, 255
- )
-
- # a button to contain the image widget
- button = gtk.Button()
- button.add(image)
- button.show()
- hbox.pack_start(button)
-
-def main():
- gtk.main()
- return 0
-
-if __name__ == "__main__":
- ImagesExample()
- main()
diff --git a/tools/cleanroom/jons_attempt.txt b/tools/cleanroom/jons_attempt.txt
deleted file mode 100644
index acebf51b..00000000
--- a/tools/cleanroom/jons_attempt.txt
+++ /dev/null
@@ -1,1429 +0,0 @@
-AASHITTY 64 64
-AASTINKY 32 72
-* WALL00_3 0 0
-* WALL00_3 12 0
-* WALL00_3 24 0
- ASHWALL 64 128
-ASHWALL2 64 128
-ASHWALL3 64 128
-ASHWALL4 64 128
-ASHWALL6 64 128
-ASHWALL7 64 128
- BFALL 64 128
- BFALL1 64 128
- BFALL2 64 128
- BFALL3 64 128
- BFALL4 64 128
-BIGBRIK1 64 128
-BIGBRIK2 64 128
-BIGBRIK3 64 128
-BIGDOOR1 128 96
-* W13_1 0 0
-* W13_1 0 24
-* W13_1 64 0
-* W13_1 64 24
-* DOOR2_1 16 0
-BIGDOOR2 128 128
-BIGDOOR3 128 128
-BIGDOOR4 128 128
-BIGDOOR5 128 128
-* WALL40_1 0 0
-* WALL42_3 0 0
-* WALL42_3 51 0
-* WALL42_3 104 0
-BIGDOOR6 128 112
-* DOOR11_1 -48 0
-* DOOR11_1 32 0
-* DOOR11_1 5 0
-BIGDOOR7 128 128
-* W105_1 123 0
-* W105_1 -5 0
-BLAKWAL1 64 128
-BLAKWAL2 64 128
- BLODGR1 32 128
- BLODGR2 32 128
- BLODGR3 32 128
- BLODGR4 32 128
-BLODRIP1 32 128
-BLODRIP2 32 128
-BLODRIP3 32 128
-BLODRIP4 32 128
- BRICK1 64 128
- BRICK10 64 128
- BRICK11 64 128
- BRICK12 64 128
- BRICK2 64 128
- BRICK3 64 128
- BRICK4 64 128
- BRICK5 128 128
-* RW5_3 0 0
-* RW5_4 64 0
- BRICK6 64 128
- BRICK7 64 128
- BRICK8 64 128
- BRICK9 64 128
-BRICKLIT 64 128
- BRNBIGC 128 128
- BRNBIGL 32 128
- BRNBIGR 32 128
- BRNPOIS 128 128
-* WALL62_2 0 0
-* WALL62_2 64 0
-* PS20A0 0 60
-BRNPOIS2 64 128
-* WALL62_1 0 0
-* PS20A0 0 56
-BRNSMAL1 64 64
-BRNSMAL2 64 64
-BRNSMALC 64 64
-BRNSMALL 32 64
-BRNSMALR 32 64
- BRONZE1 64 128
- BRONZE2 64 128
- BRONZE3 64 128
- BRONZE4 64 128
- BROVINE 256 128
-* WALL02_2 0 56
-* WALL02_2 0 0
-* WALL02_2 192 56
-* WALL02_2 192 0
-* WALL02_1 64 56
-* WALL02_1 64 0
-* WALL02_1 128 56
-* WALL02_1 128 0
-* W107_1 0 0
-BROVINE2 256 128
-* WALL62_2 64 0
-* WALL62_2 128 0
-* WALL62_2 192 0
-* WALL62_2 0 0
-* W106_1 0 0
- BROWN1 128 128
-* WALL02_2 0 56
-* WALL02_1 64 56
-* WALL02_2 0 0
-* WALL02_1 64 0
-* WALL02_3 64 56
-* WALL02_3 64 0
-BROWN144 128 128
-* WALL00_5 0 0
-* WALL00_6 16 0
-* WALL00_7 32 0
-* WALL00_8 48 0
-* WALL00_6 64 0
-* WALL00_6 80 0
-* WALL00_7 96 0
-* WALL00_7 112 0
- BROWN96 128 128
-BROWNGRN 64 128
-BROWNHUG 64 128
-* WALL04_7 32 0
-* WALL04_2 0 0
-* WALL04_3 16 0
-* WALL04_2 48 0
-* WALL04_4 0 64
-* WALL04_5 16 64
-* WALL04_7 32 64
-* WALL04_3 48 64
-BROWNPIP 128 128
-* TP2_1 0 0
-* STEP07 0 64
-* STEP07 32 64
-* STEP07 64 64
-* STEP07 96 64
-* WALL05_2 0 72
-* WALL05_2 64 72
-* STEP07 0 120
-* STEP07 32 120
-* STEP07 64 120
-* STEP07 96 120
-* STEP07 0 0
-BROWNWEL 256 72
-* WALL03_4 0 0
-* WALL03_4 64 0
-* WALL03_4 192 0
-* WALL03_3 128 0
-BRWINDOW 64 128
- BSTONE1 64 128
- BSTONE2 64 128
- BSTONE3 64 128
- CEMENT1 128 128
- CEMENT2 128 128
- CEMENT3 128 128
- CEMENT4 128 128
- CEMENT5 128 128
- CEMENT6 128 128
- CEMENT7 64 128
- CEMENT8 64 128
- CEMENT9 64 128
- CEMPOIS 128 128
-* WALL52_1 0 0
-* PS20A0 0 28
- COMP2 256 128
-* COMP02_7 128 64
-* COMP02_6 0 64
-* COMP02_5 192 64
-* COMP02_4 128 0
-* COMP02_3 192 0
-* COMP02_2 64 0
-* COMP02_8 64 64
-* COMP02_1 0 0
-* STEP08 0 56
-* STEP08 32 56
-* STEP08 64 56
-* STEP08 96 56
-* STEP08 128 56
-* STEP08 160 56
-* STEP08 192 56
-* STEP08 224 56
-* STEP08 224 120
-* STEP08 192 120
-* STEP08 160 120
-* STEP08 128 120
-* STEP08 96 120
-* STEP08 64 120
-* STEP08 32 120
-* STEP08 0 120
-COMPBLUE 64 128
-* COMP03_1 0 0
-* COMP03_2 0 64
-COMPOHSO 128 128
-* WALL21_1 64 -2
-* WALL21_1 64 70
-* WALL21_3 0 -2
-* WALL21_5 0 70
-COMPSPAN 32 128
-* COMP03_4 0 0
-* COMP03_4 0 64
-COMPSTA1 128 128
-* AG128_2 0 70
-* AG128_2 64 70
-* TOMW2_1 0 0
-COMPSTA2 128 128
-* AG128_2 0 70
-* AG128_2 64 70
-* TOMW2_2 0 0
-COMPTALL 256 128
-* COMP03_5 192 0
-* COMP03_8 0 0
-* COMP03_8 160 0
-* COMP04_1 192 64
-* COMP04_2 128 64
-* COMP04_5 32 0
-* COMP04_6 0 64
-* COMP04_7 64 64
-* COMP04_8 96 0
-COMPTILE 128 128
-* COMP03_1 32 0
-* COMP03_6 96 0
-* COMP03_6 96 64
-* COMP03_7 0 0
-* COMP03_7 0 64
-* COMP03_1 32 64
-COMPUTE1 128 128
-* W33_8 64 56
-* W33_8 0 56
-* W33_8 0 120
-* W33_8 64 120
-* COMP01_5 28 0
-* COMP01_6 72 0
-* COMP1B_4 0 0
-* COMP01_5 28 64
-* COMP01_1 0 64
-* COMP1C_6 72 64
-COMPUTE2 256 56
-* COMP02_2 64 0
-* COMP02_3 128 0
-* COMP02_1 0 0
-* COMP02_7 192 0
-COMPUTE3 128 128
-* SW11_4 0 4
-* SW11_5 32 4
-* SW11_4 64 4
-* SW11_5 96 4
-* COMP02_1 0 0
-* COMP02_2 64 0
-* STEP08 0 56
-* STEP08 32 56
-* STEP08 64 56
-* STEP08 96 56
-COMPWERD 64 128
-* COMP04_6 0 0
-* COMP04_6 0 64
-CRACKLE2 64 128
-CRACKLE4 64 128
- CRATE1 64 128
-* BCRATEL1 0 0
-* BCRATEL1 0 64
-* BCRATER1 32 64
-* BCRATER1 32 0
- CRATE2 64 128
-* GCRATEL1 0 0
-* GCRATEL1 0 64
-* GCRATER1 32 0
-* GCRATER1 32 64
- CRATE3 64 128
-* GCRATEL1 0 0
-* GCRATER1 32 0
-* BCRATEL1 0 64
-* BCRATER1 32 64
-CRATELIT 64 128
-* BCRATEL1 0 64
-* BCRATER1 32 64
-* SGCRATE2 0 0
-* SGCRATE2 32 0
- CRATINY 64 16
-* VGCRATE1 0 0
-* VGCRATE1 16 0
-* VGCRATE1 32 0
-* VGCRATE1 48 0
-CRATWIDE 128 128
-* GCRATEL1 0 0
-* GCRATER1 96 0
-* GCRATEM1 32 0
-* GCRATEM1 40 0
-* GCRATEM1 48 0
-* GCRATEM1 56 0
-* GCRATEM1 60 0
-* GCRATEM1 64 0
-* GCRATEM1 72 0
-* GCRATEM1 80 0
-* GCRATEM1 88 0
-* BCRATEL1 0 64
-* BCRATER1 96 64
-* BCRATEM1 32 64
-* BCRATEM1 40 64
-* BCRATEM1 48 64
-* BCRATEM1 56 64
-* BCRATEM1 64 64
-* BCRATEM1 72 64
-* BCRATEM1 88 64
-* BCRATEM1 80 64
- DBRAIN1 64 32
- DBRAIN2 64 32
- DBRAIN3 64 32
- DBRAIN4 64 32
- DOOR1 64 72
- DOOR3 64 72
- DOORBLU 8 128
-* W46_37 0 0
-* W46_37 0 16
-* W46_37 0 32
-* W46_37 0 64
-* W46_37 0 48
-* W46_37 0 80
-* W46_37 0 96
-* W46_37 0 112
-DOORBLU2 16 128
-* W108_2 0 0
-* W108_2 0 24
-* W108_2 0 48
-* W108_2 0 72
-* W108_2 0 96
-* STEP07 0 120
- DOORHI 64 128
-* DOOR2_3 0 0
-* DOOR2_3 0 32
-* DOOR2_3 0 64
-* DOOR2_3 0 96
- DOORRED 8 128
-* W46_38 0 0
-* W46_38 0 16
-* W46_38 0 32
-* W46_38 0 48
-* W46_38 0 64
-* W46_38 0 80
-* W46_38 0 96
-* W46_38 0 112
-DOORRED2 16 128
-* W108_3 0 0
-* W108_3 0 24
-* W108_3 0 48
-* W108_3 0 72
-* W108_3 0 96
-* STEP07 0 120
-DOORSTOP 8 128
-DOORTRAK 8 128
- DOORYEL 8 128
-* W46_39 0 112
-* W46_39 0 96
-* W46_39 0 80
-* W46_39 0 64
-* W46_39 0 48
-* W46_39 0 32
-* W46_39 0 16
-* W46_39 0 0
-DOORYEL2 16 128
-* W108_4 0 0
-* W108_4 0 24
-* W108_4 0 48
-* W108_4 0 72
-* W108_4 0 96
-* STEP07 0 120
-EXITDOOR 128 72
-* DOOR3_6 0 0
-* DOOR3_4 64 0
-* DOOR3_5 88 0
-* T14_5 112 0
-EXITSIGN 64 16
-* EXIT1 0 0
-* EXIT2 32 0
-* EXIT2 40 0
-* EXIT2 48 0
-* EXIT2 56 0
-EXITSTON 64 128
-* W28_8 0 0
-* W28_8 0 64
-* EXIT1 16 22
-FIREBLU1 128 128
-FIREBLU2 128 128
-FIRELAV2 128 128
-FIRELAV3 128 128
-FIRELAVA 128 128
-FIREMAG1 128 128
-FIREMAG2 128 128
-FIREMAG3 128 128
-FIREWALA 128 112
-FIREWALB 128 112
-FIREWALL 128 112
- GLASS1 64 96
- GLASS1B 64 96
- GLASS2 64 96
- GLASS2B 64 96
- GRAY1 64 128
-* W33_7 0 0
-* W33_7 0 64
- GRAY2 64 72
-* W33_7 0 -8
-* W31_1 0 56
-* DUCT1 21 16
- GRAY4 64 128
-* W33_5 0 0
-* W33_5 0 64
- GRAY5 64 128
-* W33_7 0 0
-* W33_7 0 72
-* W33_8 0 64
- GRAY7 256 128
-* W33_8 0 120
-* W33_8 64 120
-* W33_8 128 120
-* W33_8 192 120
-* W32_1 64 0
-* W32_4 0 0
-* W32_4 128 0
-* W32_4 192 0
-* W32_4 0 56
-* W32_4 64 56
-* W32_4 192 56
-* W32_1 128 56
- GRAYBIG 128 128
-* WALL00_1 0 0
-* WALL00_1 64 0
-* WALL00_2 80 0
-GRAYDANG 64 128
-* W33_7 0 0
-* W33_7 0 64
-* PS15A0 14 72
-GRAYPOIS 64 72
-* WALL00_1 0 0
-* PS18A0 1 18
-GRAYTALL 128 128
-* WALL00_1 0 0
-* WALL00_1 64 0
-* WALL00_3 80 0
-GRAYVINE 256 128
-* WALL00_1 192 0
-* WALL00_1 64 0
-* WALL00_1 128 0
-* WALL00_1 0 0
-* W106_1 0 0
-GSTFONT1 64 128
-GSTFONT2 64 128
-GSTFONT3 64 128
- GSTGARG 64 128
- GSTLION 64 128
- GSTONE1 256 128
-* WALL48_1 0 0
-* WALL48_2 64 0
-* WALL48_3 128 0
-* WALL48_4 192 0
- GSTONE2 256 128
-* WALL59_3 0 0
-* WALL59_2 64 0
-* WALL59_3 128 0
-* WALL59_4 192 0
-GSTSATYR 64 128
-GSTVINE1 256 128
-* WALL48_1 0 0
-* WALL48_2 64 0
-* WALL48_3 128 0
-* WALL48_4 192 0
-* W106_1 0 0
-GSTVINE2 256 128
-* WALL48_1 0 0
-* WALL48_2 64 0
-* WALL48_3 128 0
-* WALL48_4 192 0
-* W107_1 0 0
-ICKDOOR1 64 72
-* WALL00_1 0 8
-* WALL00_2 -8 22
-* WALL70_3 0 0
-ICKWALL1 64 128
-* W32_4 0 64
-* WALL69_4 0 0
-ICKWALL2 64 128
-* WALL71_5 0 0
-* W33_5 0 64
-ICKWALL3 64 128
-* WALL72_7 0 0
-* WALL69_9 0 64
-* W67_2 32 64
-ICKWALL4 64 128
-* WALL72_5 0 0
-* WALL72_3 0 64
-ICKWALL5 64 128
-* WALL70_4 0 0
-* W32_4 0 64
-ICKWALL6 64 128
-* W32_4 0 64
-* W32_4 0 0
-* WALL70_2 4 0
-ICKWALL7 64 128
-* WALL70_9 28 64
-* W67_2 0 64
-* W67_1 0 0
- LITE2 64 128
-* WALL02_2 0 56
-* WALL02_2 0 0
-* FLAMP 5 0
-* FLAMP 35 0
- LITE3 32 128
-* WLITA0 0 0
-* WLITA0 0 8
-* WLITA0 0 16
-* WLITA0 0 24
-* WLITA0 0 32
-* WLITA0 0 40
-* WLITA0 0 48
-* WLITA0 0 56
-* WLITA0 0 64
-* WLITA0 0 72
-* WLITA0 0 80
-* WLITA0 0 88
-* WLITA0 0 96
-* WLITA0 0 104
-* WLITA0 0 112
-* WLITA0 0 120
-* WLITB0 8 120
-* WLITB0 8 112
-* WLITB0 8 104
-* WLITB0 8 96
-* WLITB0 8 88
-* WLITB0 8 80
-* WLITB0 8 72
-* WLITB0 8 64
-* WLITB0 8 56
-* WLITB0 8 40
-* WLITB0 8 48
-* WLITB0 8 32
-* WLITB0 8 24
-* WLITB0 8 16
-* WLITB0 8 8
-* WLITB0 8 0
-* WLITB0 16 0
-* WLITB0 16 8
-* WLITB0 16 16
-* WLITB0 16 24
-* WLITB0 16 32
-* WLITB0 16 40
-* WLITB0 16 48
-* WLITB0 16 56
-* WLITB0 16 64
-* WLITB0 16 72
-* WLITB0 16 80
-* WLITB0 16 88
-* WLITB0 16 96
-* WLITB0 16 104
-* WLITB0 16 112
-* WLITB0 16 120
-* WLITC0 24 0
-* WLITC0 24 8
-* WLITC0 24 16
-* WLITC0 24 24
-* WLITC0 24 32
-* WLITC0 24 40
-* WLITC0 24 48
-* WLITC0 24 56
-* WLITC0 24 64
-* WLITC0 24 72
-* WLITC0 24 80
-* WLITC0 24 88
-* WLITC0 24 96
-* WLITC0 24 104
-* WLITC0 24 112
-* WLITC0 24 120
- LITE4 16 128
-* WLITA0 0 0
-* WLITA0 0 8
-* WLITA0 0 16
-* WLITA0 0 24
-* WLITA0 0 32
-* WLITA0 0 40
-* WLITA0 0 48
-* WLITC0 8 48
-* WLITC0 8 32
-* WLITC0 8 24
-* WLITC0 8 40
-* WLITC0 8 16
-* WLITC0 8 8
-* WLITC0 8 0
-* T14_5 0 56
- LITE5 16 128
-* WLITA0 0 0
-* WLITA0 0 8
-* WLITA0 0 16
-* WLITA0 0 24
-* WLITA0 0 32
-* WLITA0 0 40
-* WLITA0 0 48
-* WLITA0 0 56
-* WLITA0 0 64
-* WLITA0 0 72
-* WLITA0 0 80
-* WLITA0 0 88
-* WLITA0 0 96
-* WLITA0 0 104
-* WLITA0 0 112
-* WLITA0 0 120
-* WLITC0 8 120
-* WLITC0 8 112
-* WLITC0 8 104
-* WLITC0 8 96
-* WLITC0 8 88
-* WLITC0 8 80
-* WLITC0 8 72
-* WLITC0 8 64
-* WLITC0 8 56
-* WLITC0 8 48
-* WLITC0 8 40
-* WLITC0 8 32
-* WLITC0 8 16
-* WLITC0 8 24
-* WLITC0 8 8
-* WLITC0 8 0
- LITE96 64 128
-* WALL62_1 -1 0
-* FLAMP 4 16
-* FLAMP 38 1
-LITEBLU1 8 128
-LITEBLU2 16 72
-LITEBLU3 16 128
-* W13_8 0 0
-* W13_8 0 56
-LITEBLU4 16 128
-* BLITA0 0 0
-* BLITA0 0 8
-* BLITA0 0 16
-* BLITA0 0 24
-* BLITA0 0 32
-* BLITA0 0 40
-* BLITA0 0 48
-* BLITA0 0 56
-* BLITA0 0 64
-* BLITA0 0 72
-* BLITA0 0 80
-* BLITA0 0 88
-* BLITA0 0 96
-* BLITA0 0 104
-* BLITA0 0 112
-* BLITA0 0 120
-* BLITC0 8 120
-* BLITC0 8 112
-* BLITC0 8 104
-* BLITC0 8 96
-* BLITC0 8 88
-* BLITC0 8 80
-* BLITC0 8 72
-* BLITC0 8 64
-* BLITC0 8 56
-* BLITC0 8 48
-* BLITC0 8 40
-* BLITC0 8 32
-* BLITC0 8 24
-* BLITC0 8 16
-* BLITC0 8 8
-* BLITC0 8 0
- LITEMET 128 128
-* WALL03_7 0 0
-* WALL03_7 0 64
-* WALL03_7 64 64
-* WALL03_7 64 0
-* FLAMP 19 34
-* FLAMP 81 34
- LITERED 16 128
-* W15_6 -4 56
-* W15_6 -4 0
-LITESTON 64 128
-* W28_8 0 64
-* W28_5 0 0
-* FLAMP 37 26
-* FLAMP 7 26
- LOGO 256 128
- LOGO3 256 128
- LOGO4 256 128
- LOGO5 64 128
-MARBFAC2 128 128
-MARBFAC3 128 128
-MARBFAC4 64 128
-MARBFACE 128 128
-MARBGRAY 64 128
- MARBLE1 128 128
- MARBLE2 128 128
- MARBLE3 128 128
-MARBLOD1 128 128
- METAL 64 128
- METAL1 64 128
-* WALL03_7 0 0
-* WALL03_7 0 64
- METAL2 64 128
- METAL3 64 128
- METAL4 64 128
- METAL5 64 128
- METAL6 64 128
- METAL7 64 128
-MIDBARS1 64 128
-MIDBARS3 64 72
- MIDBRN1 64 112
-MIDBRONZ 64 128
-MIDGRATE 128 128
-MIDSPACE 64 128
-MIDVINE1 256 128
-MIDVINE2 256 128
-MODWALL1 64 128
-MODWALL2 64 128
-MODWALL3 64 128
-MODWALL4 64 128
- NUKE24 64 24
-NUKEDGE1 128 128
-* WALL04_7 96 0
-* WALL04_5 112 0
-* WALL04_5 112 32
-* WALL04_5 96 32
-* NUKEDGE 64 104
-* WALL04_2 64 0
-* WALL04_2 48 0
-* WALL04_2 48 32
-* WALL04_2 64 32
-* NUKEDGE 0 104
-* WALL04_4 16 32
-* WALL04_5 32 0
-* WALL04_5 32 32
-* WALL04_3 80 32
-* WALL04_3 80 0
-* WALL04_3 0 32
-* WALL04_3 0 0
-* WALL04_4 16 0
-NUKEPOIS 128 128
-* WALL04_7 96 0
-* WALL04_5 112 0
-* WALL04_5 112 32
-* WALL04_5 96 32
-* NUKEDGE 64 104
-* WALL04_2 64 0
-* WALL04_2 48 0
-* WALL04_2 48 32
-* WALL04_2 64 32
-* NUKEDGE 0 104
-* WALL04_4 16 32
-* WALL04_5 32 0
-* WALL04_5 32 32
-* WALL04_3 80 32
-* WALL04_3 80 0
-* WALL04_3 0 32
-* WALL04_3 0 0
-* WALL04_4 16 0
-* PS20A0 0 68
-NUKESLAD 64 128
-PANBLACK 64 128
- PANBLUE 64 128
- PANBOOK 64 128
-PANBORD1 32 128
-PANBORD2 16 128
-PANCASE1 64 128
-PANCASE2 64 128
- PANEL1 64 128
- PANEL2 64 128
- PANEL3 64 128
- PANEL4 64 128
- PANEL5 64 128
- PANEL6 64 128
- PANEL7 64 128
- PANEL8 64 128
- PANEL9 64 128
- PANRED 64 128
- PIPE1 256 128
-* RP1_1 0 0
-* RP1_2 128 0
- PIPE2 256 128
-* TP2_1 0 0
-* TP2_2 128 0
- PIPE4 256 128
-* TP7_2 128 0
-* TP7_1 0 0
- PIPE6 256 128
-* TP3_2 128 0
-* TP3_1 0 0
- PIPES 64 128
-PIPEWAL1 64 128
-PIPEWAL2 64 128
- PLANET1 256 128
-* AG128_1 192 0
-* AG128_1 128 0
-* AG128_1 64 0
-* AG128_1 0 0
-* TSCRN2 4 69
-* TSCRN3 68 69
-* TSCRN4 132 69
-* TSCRN5 68 6
-* TSCRN6 4 6
-* TSCRN8 132 6
- PLAT1 128 128
- REDWALL 128 128
-REDWALL1 128 128
-* W15_5 64 56
-* W15_4 0 56
-* W15_4 0 0
-* W15_5 64 0
- ROCK1 64 128
- ROCK2 64 128
- ROCK3 64 128
- ROCK4 128 128
- ROCK5 128 128
-ROCKRED1 128 128
-ROCKRED2 128 128
-ROCKRED3 128 128
- SFALL 64 128
- SFALL1 64 128
- SFALL2 64 128
- SFALL3 64 128
- SFALL4 64 128
- SHAWN1 128 128
-* W13_1 0 56
-* W13_1 64 56
-* W13_1 64 0
-* W13_1 0 0
-* CYL1_1 0 0
- SHAWN2 64 128
- SHAWN3 64 72
- SILVER1 64 128
- SILVER2 64 128
- SILVER3 64 128
- SKIN2 128 128
-* HELL8_2 64 0
-* HELL8_4 0 0
-SKINBORD 64 128
-* HELL6_1 0 0
-* HELL8_3 32 0
- SKINCUT 256 128
-* W102_1 0 0
-* W102_2 128 0
-SKINEDGE 128 128
-* HELL6_2 0 0
-* HELL8_1 64 0
-SKINFACE 256 128
-* HELL5_1 0 0
-* HELL5_2 128 0
- SKINLOW 256 104
-* W92_1 0 0
-* W92_2 128 0
-SKINMET1 256 128
-* W98_1 0 0
-* W98_2 128 0
-SKINMET2 256 128
-* W99_1 0 0
-* W99_2 128 0
-SKINSCAB 256 128
-* W101_1 0 0
-* W101_2 128 0
-SKINSYMB 256 128
-* W103_1 0 0
-* W103_2 128 0
-SKINTEK1 256 128
-* W109_1 0 0
-* W109_2 128 0
-SKINTEK2 256 128
-SKSNAKE1 64 128
-SKSNAKE2 64 128
-SKSPINE1 128 128
-SKSPINE2 256 96
-* SPINE3_1 0 0
-* SPINE3_2 128 0
-SKULWAL3 128 128
-* WALL76_1 -12 0
-* WALL76_1 116 0
-SKULWALL 128 128
-* WALL79_1 -4 0
-* WALL79_1 124 0
- SKY1 256 128
- SKY2 256 128
- SKY3 256 128
- SK_LEFT 64 128
-SK_RIGHT 64 128
-SLADPOIS 64 128
-* WLA128_1 0 0
-* PS20A0 1 49
-SLADRIP1 64 128
-SLADRIP2 64 128
-SLADRIP3 64 128
-SLADSKUL 64 128
-* WLA128_1 0 0
-* SW2_2 21 65
-SLADWALL 64 128
- SLOPPY1 64 128
- SLOPPY2 64 128
- SPACEW2 64 128
- SPACEW3 64 128
- SPACEW4 64 128
-SPCDOOR1 64 128
-SPCDOOR2 64 128
-SPCDOOR3 64 128
-SPCDOOR4 64 128
-SP_DUDE1 128 128
-SP_DUDE2 128 128
-SP_DUDE3 64 128
-SP_DUDE4 64 128
-SP_DUDE5 64 128
-SP_DUDE6 64 128
-SP_DUDE7 128 128
-SP_DUDE8 128 128
-SP_FACE1 128 96
-SP_FACE2 64 128
- SP_HOT1 256 128
-* WALL49_1 0 0
-* WALL49_2 64 0
-* WALL49_3 128 0
-* WALL49_4 192 0
-SP_ROCK1 128 128
-SP_ROCK2 128 128
- STARBR2 128 128
-* SW16_4 32 0
-* SW15_4 0 0
-* SW15_6 64 0
-* SW16_6 96 0
- STARG1 64 128
-* SW12_1 0 0
-* SW12_2 32 0
- STARG2 128 128
-* SW17_1 0 0
-* SW17_2 32 0
-* SW17_3 64 0
-* SW18_5 96 0
- STARG3 128 128
-* SW19_3 64 0
-* SW19_4 0 0
- STARGR1 64 128
-* SW11_1 0 0
-* SW11_2 32 0
- STARGR2 128 128
-* SW15_1 0 0
-* SW16_2 32 0
-* SW15_3 64 0
-* SW16_1 96 0
-STARTAN1 64 128
-* SW12_4 0 0
-* SW12_5 32 0
-STARTAN2 128 128
-* SW17_6 64 0
-* SW17_5 32 0
-* SW18_7 96 0
-* SW17_4 0 0
-STARTAN3 128 128
-* SW19_2 0 0
-* SW19_1 64 0
- STEP1 32 16
-* STEP04 0 0
-* STEP05 0 8
- STEP2 32 16
-* SW11_4 0 -112
-* STEP03 0 0
- STEP3 32 16
-* STEP05 0 8
-* STEP05 0 0
- STEP4 32 16
-* STEP06 0 8
-* STEP06 0 0
- STEP5 32 16
-* STEP09 0 0
-* STEP08 0 8
- STEP6 32 16
-* STEP07 0 0
-* STEP10 0 8
-STEPLAD1 64 16
- STEPTOP 128 16
- STONE 256 128
-* WALL01_1 0 0
-* WALL01_2 16 0
-* WALL01_3 32 0
-* WALL01_4 48 0
-* WALL01_5 64 0
-* WALL01_6 80 0
-* WALL01_7 96 0
-* WALL01_8 112 0
-* WALL01_9 128 0
-* WALL01_A 144 0
-* WALL01_B 160 0
-* WALL01_C 176 0
-* WALL01_3 192 0
-* WALL01_1 208 0
-* WALL01_6 224 0
-* WALL01_A 240 0
-* WALL01_1 0 72
-* WALL01_2 16 72
-* WALL01_3 32 72
-* WALL01_4 48 72
-* WALL01_5 64 72
-* WALL01_6 80 72
-* WALL01_7 96 72
-* WALL01_8 112 72
-* WALL01_9 128 72
-* WALL01_A 144 72
-* WALL01_B 160 72
-* WALL01_C 176 72
-* WALL01_3 192 72
-* WALL01_1 208 72
-* WALL01_6 224 72
-* WALL01_A 240 72
-* W33_8 0 64
-* W33_8 0 120
-* W33_8 64 64
-* W33_8 64 120
-* W33_8 128 64
-* W33_8 128 120
-* W33_8 192 64
-* W33_8 192 120
- STONE2 128 128
-* W28_5 0 0
-* W28_5 64 64
-* W28_8 0 64
-* W28_8 64 0
- STONE3 128 128
-* W28_6 0 64
-* W28_6 64 0
-* W28_7 64 64
-* W28_7 0 0
- STONE4 64 128
- STONE5 64 128
- STONE6 64 128
- STONE7 64 128
-STONGARG 128 128
-* W28_7 0 64
-* W28_7 64 0
-* W28_6 64 64
-* W28_6 0 0
-* SW2_3 0 79
-* SW2_3 64 15
-STONPOIS 64 128
-* WALL01_1 0 0
-* WALL01_2 16 0
-* WALL01_3 32 0
-* WALL01_4 48 0
-* WALL01_4 48 64
-* WALL01_3 32 64
-* WALL01_2 16 64
-* WALL01_1 0 64
-* PS20A0 1 42
-* W33_8 0 120
- STUCCO 64 128
- STUCCO1 64 128
- STUCCO2 64 128
- STUCCO3 64 128
-SUPPORT2 64 128
-* SUPPORT2 0 0
-* SUPPORT2 40 0
-* SUPPORT2 20 0
-* SUPPORT2 0 72
-* SUPPORT2 20 72
-* SUPPORT2 40 72
-SUPPORT3 64 128
-* WALL42_3 20 0
-* WALL42_3 0 0
-* WALL42_3 40 0
- SW1BLUE 64 128
-* COMP03_1 0 0
-* COMP03_2 0 64
-* SW2_7 14 66
-SW1BRCOM 128 128
-* WALL62_1 0 0
-* SW1S0 48 72
- SW1BRIK 64 128
-* RW23_4 0 0
-* SW1S0 16 72
- SW1BRN1 128 128
-* WALL62_1 0 0
-* SW1S0 48 72
- SW1BRN2 64 128
-* WALL02_2 0 56
-* WALL02_2 0 0
-* SW4S0 20 79
-SW1BRNGN 64 128
-* WALL62_2 0 0
-* SW4S0 20 80
-SW1BROWN 128 128
-* WALL62_1 0 0
-* SW3S1 48 72
- SW1CMT 64 128
-* WALL54_1 -42 0
-* SW3S1 16 72
- SW1COMM 64 72
-* W13_1 0 0
-* SW1S0 15 18
- SW1COMP 64 128
-* COMP04_5 0 0
-* COMP03_4 32 64
-* COMP03_4 0 64
-* SW2S0 16 72
- SW1DIRT 64 128
-* WALL00_6 16 0
-* WALL00_7 32 0
-* WALL00_7 48 0
-* WALL00_7 0 0
-* SW1S0 16 20
- SW1EXIT 32 72
-* W33_8 0 64
-* WALL69_9 -2 0
-* SW2S0 0 16
- SW1GARG 64 128
-* WALL47_2 0 0
-* WALL42_6 12 62
- SW1GRAY 64 128
-* W31_1 0 64
-* W31_1 0 0
-* SW2S0 16 70
-SW1GRAY1 64 128
-* W31_1 0 64
-* W31_1 0 0
-* SW4S0 19 79
-SW1GSTON 64 128
-* WALL48_2 0 0
-* SW2_7 14 67
- SW1HOT 64 128
-* WALL49_1 0 0
-* SW2_7 13 66
- SW1LION 64 128
-* WALL47_2 0 0
-* WALL42_5 12 62
- SW1MARB 64 128
-* MWALL1_1 0 0
-* SW2_7 13 55
- SW1MET2 64 128
-* RW33_1 0 0
-* SW1S0 16 19
-SW1METAL 64 128
-* WALL03_7 0 64
-* WALL03_7 0 0
-* SW4S0 20 68
- SW1MOD1 64 128
-* RW31_1 0 0
-* SW4S0 20 80
-SW1PANEL 64 128
-* RW21_4 0 0
-* SW2_7 14 64
- SW1PIPE 128 128
-* TP2_2 0 0
-* SW3S0 48 76
- SW1ROCK 64 128
-* RW30_1 0 0
-* SW2_7 14 66
-SW1SATYR 64 128
-* WALL47_2 0 0
-* WALL42_1 12 60
- SW1SKIN 64 128
-* HELL6_3 0 0
-* SW2_5 0 59
-SW1SKULL 64 128
- SW1SLAD 64 128
-* WLA128_1 0 0
-* WARNB0 24 73
-SW1STARG 128 128
-* WALL62_1 0 0
-* SW1S0 48 72
-SW1STON1 64 128
-* W28_8 0 64
-* W28_8 0 0
-* SW1S0 16 78
-SW1STON2 128 128
-* WALL62_1 0 0
-* SW1S0 48 72
-SW1STON6 64 128
-* RW18_3 0 0
-* SW2S0 16 72
-SW1STONE 128 128
-* WALL62_1 0 0
-* SW1S0 48 72
-SW1STRTN 64 128
-* SW12_4 0 0
-* SW12_5 32 0
-* SW1S0 16 72
- SW1TEK 64 128
-* RW37_2 0 0
-* SW4S0 20 80
- SW1VINE 64 128
-* WALL00_1 0 0
-* W106_1 0 0
-* SW4S0 20 84
-SW1WDMET 64 128
-* RW26_1 0 0
-* EXIT2 16 48
-* EXIT2 24 48
-* EXIT2 32 48
-* EXIT2 40 48
-* EXIT2 40 64
-* EXIT2 32 64
-* EXIT2 24 64
-* EXIT2 16 64
-* W108_2 24 52
- SW1WOOD 64 128
-* WALL40_2 -64 0
-* SW2_7 14 66
- SW1ZIM 64 128
-* RW20_1 0 0
-* SW2_7 16 65
- SW2BLUE 64 128
-* COMP03_1 0 0
-* COMP03_2 0 64
-* SW2_8 14 66
-SW2BRCOM 128 128
-* WALL62_1 0 0
-* SW1S1 48 72
- SW2BRIK 64 128
-* RW23_4 0 0
-* SW1S1 16 72
- SW2BRN1 128 128
-* WALL62_1 0 0
-* SW1S1 48 72
- SW2BRN2 64 128
-* WALL02_2 0 56
-* WALL02_2 0 0
-* SW4S1 20 79
-SW2BRNGN 64 128
-* WALL62_2 0 0
-* SW4S1 20 80
-SW2BROWN 128 128
-* WALL62_1 0 0
-* SW3S0 48 72
- SW2CMT 64 128
-* WALL54_1 -42 0
-* SW3S0 16 72
- SW2COMM 64 72
-* W13_1 0 0
-* SW1S1 15 18
- SW2COMP 64 128
-* COMP04_5 0 0
-* COMP03_4 32 64
-* COMP03_4 0 64
-* SW2S1 16 72
- SW2DIRT 64 128
-* WALL00_6 16 0
-* WALL00_7 32 0
-* WALL00_7 48 0
-* WALL00_7 0 0
-* SW1S1 16 20
- SW2EXIT 32 72
-* W33_8 0 64
-* WALL69_9 -2 0
-* SW2S1 0 16
- SW2GARG 64 128
-* WALL47_2 0 0
-* WALL42_6 12 62
- SW2GRAY 64 128
-* W31_1 0 64
-* W31_1 0 0
-* SW2S1 16 70
-SW2GRAY1 64 128
-* W31_1 0 64
-* W31_1 0 0
-* SW4S1 19 79
-SW2GSTON 64 128
-* WALL48_2 0 0
-* SW2_8 14 67
- SW2HOT 64 128
-* WALL49_1 0 0
-* SW2_8 13 66
- SW2LION 64 128
-* WALL47_2 0 0
-* WALL42_5 12 62
- SW2MARB 64 128
-* MWALL1_1 0 0
-* SW2_8 13 55
- SW2MET2 64 128
-* RW33_1 0 0
-* SW1S1 16 19
-SW2METAL 64 128
-* WALL03_7 0 64
-* WALL03_7 0 0
-* SW4S1 20 68
- SW2MOD1 64 128
-* RW31_1 0 0
-* SW4S1 20 80
-SW2PANEL 64 128
-* RW21_4 0 0
-* SW2_8 14 64
- SW2PIPE 128 128
-* TP2_2 0 0
-* SW3S1 48 76
- SW2ROCK 64 128
-* RW30_1 0 0
-* SW2_8 14 66
-SW2SATYR 64 128
-* WALL47_2 0 0
-* WALL42_1 12 60
- SW2SKIN 64 128
-* HELL6_3 0 0
-* SW2_6 0 59
-SW2SKULL 64 128
- SW2SLAD 64 128
-* WLA128_1 0 0
-* WARNB0 24 73
-SW2STARG 128 128
-* WALL62_1 0 0
-* SW1S1 48 72
-SW2STON1 64 128
-* W28_8 0 64
-* W28_8 0 0
-* SW1S1 16 78
-SW2STON2 128 128
-* WALL62_1 0 0
-* SW1S1 48 72
-SW2STON6 64 128
-* RW18_3 0 0
-* SW2S1 16 72
-SW2STONE 128 128
-* WALL62_1 0 0
-* SW1S1 48 72
-SW2STRTN 64 128
-* SW12_4 0 0
-* SW12_5 32 0
-* SW1S1 16 72
- SW2TEK 64 128
-* RW37_2 0 0
-* SW4S1 20 80
- SW2VINE 64 128
-* WALL00_1 0 0
-* W106_1 0 0
-* SW4S1 20 84
-SW2WDMET 64 128
-* RW26_1 0 0
-* EXIT2 16 48
-* EXIT2 24 48
-* EXIT2 32 48
-* EXIT2 40 48
-* EXIT2 40 64
-* EXIT2 32 64
-* EXIT2 24 64
-* EXIT2 16 64
-* W108_2 24 52
- SW2WOOD 64 128
-* WALL40_2 -64 0
-* SW2_8 14 66
- SW2ZIM 64 128
-* RW20_1 0 0
-* SW2_8 16 65
-TANROCK2 64 128
-TANROCK3 64 128
-TANROCK4 64 128
-TANROCK5 64 128
-TANROCK7 64 128
-TANROCK8 64 128
-TEKBRON1 128 128
-* RW36_1 0 0
-* RW36_3 64 0
-TEKBRON2 64 128
-TEKGREN1 64 128
-TEKGREN2 64 128
-TEKGREN3 64 128
-TEKGREN4 64 128
-TEKGREN5 64 128
- TEKLITE 64 128
-TEKLITE2 64 128
-TEKWALL1 128 128
-* W17_1 0 -27
-* W17_1 0 16
-TEKWALL2 128 128
-TEKWALL3 128 112
-TEKWALL4 128 128
-TEKWALL5 128 128
-TEKWALL6 256 128
-* RW25_1 0 0
-* RW25_2 128 0
-* RW25_3 64 0
-* RW25_4 192 0
- WFALL 64 128
- WFALL1 64 128
- WFALL2 64 128
- WFALL3 64 128
- WFALL4 64 128
- WOOD1 256 128
-* WALL40_1 128 0
-* WALL40_2 0 0
- WOOD10 128 128
- WOOD12 64 128
- WOOD3 256 128
-* WALL97_1 0 0
-* WALL97_2 64 0
-* WALL97_2 192 0
-* WALL97_3 128 0
- WOOD4 64 128
-* WALL97_2 0 0
-* SW2_1 26 76
-* SW2_2 26 18
- WOOD5 256 128
-* W96_2 128 0
-* W96_1 0 0
- WOOD6 64 128
- WOOD7 64 128
- WOOD8 64 128
- WOOD9 64 128
-WOODGARG 64 128
-* WALL40_1 0 0
-* SW2_4 6 63
-WOODMET1 64 128
-WOODMET2 64 128
-WOODMET3 64 128
-WOODMET4 64 128
-WOODSKUL 64 128
-* WALL40_1 0 0
-* SW2_2 24 70
-WOODVERT 64 128
- ZDOORB1 128 128
- ZDOORF1 128 128
- ZELDOOR 128 128
- ZIMMER1 64 128
- ZIMMER2 64 128
- ZIMMER3 64 128
- ZIMMER4 64 128
- ZIMMER5 64 128
- ZIMMER7 64 128
- ZIMMER8 64 128
- ZZWOLF1 128 128
-ZZWOLF10 128 128
-ZZWOLF11 128 128
-ZZWOLF12 128 128
-ZZWOLF13 128 128
- ZZWOLF2 128 128
- ZZWOLF3 128 128
- ZZWOLF4 128 128
- ZZWOLF5 128 128
- ZZWOLF6 128 128
- ZZWOLF7 128 128
- ZZWOLF9 128 128
-ZZZFACE1 256 128
-ZZZFACE2 256 128
-ZZZFACE3 256 128
-ZZZFACE4 256 128
-ZZZFACE5 256 128
-ZZZFACE6 256 128
-ZZZFACE7 256 128
-ZZZFACE8 256 128
-ZZZFACE9 256 128
diff --git a/tools/cleanroom/sw1_sw2.py b/tools/cleanroom/sw1_sw2.py
deleted file mode 100644
index 768b5192..00000000
--- a/tools/cleanroom/sw1_sw2.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/python
-
-from doom import Patch, Texture
-import sys,re
-
-if len(sys.argv) != 2:
- sys.stderr.write("usage: sw1_sw2.py \n")
- sys.exit()
-
-infile = sys.argv[1]
-
-# TODO: a generalized form of this para should probably be moved into the
-# Texture class
-texture1 = file(infile, "r").read()
-textures = {}
-current = None
-for line in texture1.split("\n"):
- if len(line) == 0 or line[0] == ";" or line[0] == "#":
- continue
- elif line[0] == "*" and current:
- junk,name,y,x= line.split()
- current.patches.append(Patch(name,int(x),int(y)))
- else:
- line = line.split()
- current = Texture(line[0],line[1],line[2])
- textures[line[0]] = current
-
-# a list of known switch textures
-switches = {
- "SW1S0": "SW1S1",
- "SW2_1": "SW2_2",
- "SW2_3": "SW2_4",
- "SW2_5": "SW2_6",
- "SW2_7": "SW2_8",
- "SW2S0": "SW2S1",
- "SW3S0": "SW3S1",
- "SW4S0": "SW4S1"
-}
-# include the opposites
-switches.update(dict([ (v,k) for k,v in switches.items() ]))
-
-for sw1 in [x for x in textures.values() if re.match("^SW1", x.name)]:
- sw2n = sw1.name.replace("SW1","SW2")
- if not textures.has_key(sw2n):
- sys.stderr.write("error: %s not defined, skipping\n" % sw2n)
- continue
- sw2 = textures[sw2n]
- if len(sw2.patches) != 0:
- sys.stderr.write("error: %s has patches (%s)\n" % \
- (sw2.name, map(lambda x: x.name,sw2.patches)))
- continue
-
- # now the magic happens
- for patch in sw1.patches:
- name = patch.name
- if switches.has_key(patch.name):
- name = switches[patch.name]
- sw2.patches.append(Patch(name, patch.yoff,patch.xoff))
- textures[sw2n] = sw2
-
-a = textures.values()
-a.sort(lambda a,b: cmp(a.name,b.name))
-sys.stdout.write(''.join(map(str,a)))
diff --git a/tools/cleanroom/tmp_cleanui.py b/tools/cleanroom/tmp_cleanui.py
deleted file mode 100644
index ad6510cc..00000000
--- a/tools/cleanroom/tmp_cleanui.py
+++ /dev/null
@@ -1,362 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import gtk
-import gtk.glade
-
-from doom import Patch, Texture
-
-class HellowWorldGTK:
- """This is an Hello World GTK application"""
-
- def parse_texture_file(self,fname):
- texture1 = file(fname, "r").read()
- self.textures = {}
- self.wip_textures = {}
- textures = self.textures
- current = None
- for line in texture1.split("\n"):
- if len(line) == 0 or line[0] == ";" or line[0] == "#":
- continue
- elif line[0] == "*" and current:
- junk,name,y,x= line.split()
- current.patches.append(Patch(name,int(x),int(y)))
- else:
- line = line.split()
- current = Texture(line[0],line[1],line[2])
- self.wip_textures[line[0]] = Texture(line[0],line[1],line[2])
- textures[line[0]] = current
- # now weed out the 1-patch ones
- keys = self.textures.keys()
- for key in keys:
- if 1 == len(self.textures[key].patches):
- del self.textures[key]
- del self.wip_textures[key]
-
- def lhs_callback(self, treeview):
- offs,col = treeview.get_cursor()
- # TODO: sanity check the insane subscripting here
- row = treeview.get_model()[offs[0]][0]
- self.set_texture(row)
- # clear out the patch-list for this texture
- selected_patches = self.wTree.get_widget("selected_patches")
- model = selected_patches.get_model()
- model.clear()
- wip_texture = self.wip_textures[row]
- for patch in wip_texture.patches:
- model.append(None, [ patch.name, patch.xoff, patch.yoff ])
-
-
- def rhs_drag_data_get(self,widget,ctx,selection,targettype,eventtime):
- print "ZOMG"
-
- # patch selected on rhs
- def rhs_select_cb(self, rhs, path, view_column):
- model = rhs.get_model()
- row = model[path[0]][0]
- selected_patches = self.wTree.get_widget("selected_patches")
- model = selected_patches.get_model()
- model.append(None, [ row, 0, 0 ])
- # redraw the rhs. a bit hacky
- current_texture_name = self.current_texture()
- current_texture = self.wip_textures[current_texture_name]
- current_texture.patches.append(Patch(row,0,0))
- self.init_texture_pixbuf(self.wip_textures[current_texture_name])
- # this redraws the lhs too, unnecessarily
- self.set_texture(current_texture_name)
-
- def current_texture(self):
- """return the name of the currently selected texture"""
- lhs = self.wTree.get_widget("texture_list")
- offs,col = lhs.get_cursor()
- lhs_model = lhs.get_model()
- return lhs_model[offs[0]][0]
-
- def rhs_cursor_cb(self, rhs):
- offs,col = rhs.get_cursor()
- rhs_model = rhs.get_model()
- row = rhs_model[offs[0]][0]
-
- image = self.wTree.get_widget("current_patch")
- image.set_from_file("../../patches/" + row.lower() + ".gif")
- # scale the texture up
- pixbuf = image.get_pixbuf()
- if pixbuf:
- scale = 2
- image.set_from_pixbuf(pixbuf.scale_simple(
- pixbuf.get_width() * scale,
- pixbuf.get_height() * scale,
- gtk.gdk.INTERP_NEAREST
- ))
-
- def init_texture_pixbuf(self, texture):
- for patch in texture.patches:
- # read the patches into pixbufs
- # a horrid hack to get them client->server side
- image = gtk.Image()
- if not self.patch_pixbufs.has_key(patch.name):
- image.set_from_file("../../patches/" + patch.name.lower() + ".gif")
- pb = image.get_pixbuf()
- self.patch_pixbufs[patch.name] = pb.add_alpha(True,chr(0),chr(255),chr(255))
-
- texbuf = gtk.gdk.Pixbuf(
- self.patch_pixbufs.values()[0].get_colorspace(),
- self.patch_pixbufs.values()[0].get_has_alpha(),
- self.patch_pixbufs.values()[0].get_bits_per_sample(),
- int(texture.width),
- int(texture.height))
-
- texbuf.fill(0x00ffffff)
- texbuf = texbuf.add_alpha(True,chr(0),chr(255),chr(255))
- texture.pixbuf = texbuf
-
- # copy each patch into the texture pixbuf
- for patch in texture.patches:
-
- dest_x = max(0, patch.xoff)
- dest_y = max(0, patch.yoff)
- dest_height = min(
- self.patch_pixbufs[patch.name].get_height(),
- texbuf.get_height() - dest_y
- )
- dest_width = min(
- self.patch_pixbufs[patch.name].get_width(),
- texbuf.get_width() - dest_x
- )
- if patch.xoff < 0:
- dest_width += patch.xoff
- if patch.yoff < 0:
- dest_height += patch.yoff
- offset_x = patch.xoff
- offset_y = patch.yoff
- pb = self.patch_pixbufs[patch.name]
- pb.composite(
- texbuf,
- dest_x, dest_y, dest_width, dest_height,
- offset_x, offset_y, 1, 1, # scale
- gtk.gdk.INTERP_NEAREST, 255)
-
- def set_texture(self, name):
- # parse the example texture, fetch the width,height;
- # create Patch objects and stuff them into a list
- texture = self.textures[name]
- image = self.wTree.get_widget("orig_texture")
-
- if not texture.pixbuf:
- self.init_texture_pixbuf(texture)
-
- image.set_from_pixbuf(texture.pixbuf)
- self.scale_up_texture(image)
-
- # now for the wip side
- wip_image = self.wTree.get_widget("wip_texture")
- wip_texture = self.wip_textures[name]
- if not wip_texture.pixbuf:
- self.init_texture_pixbuf(wip_texture)
- wip_image.set_from_pixbuf(wip_texture.pixbuf)
- self.scale_up_texture(wip_image)
-
-
- def scale_up_texture(self, image):
- # scale the texture up
- pixbuf = image.get_pixbuf()
- if pixbuf:
- scale = 2
- image.set_from_pixbuf(pixbuf.scale_simple(
- pixbuf.get_width() * scale,
- pixbuf.get_height() * scale,
- gtk.gdk.INTERP_NEAREST
- ))
-
- def patch_list_key(self,treeview,event):
- """handle key press events on the patch list"""
- if gtk.keysyms.Delete == event.keyval:
- offs,col = treeview.get_cursor()
- # remove from data structure
- texture = self.wip_textures[self.current_texture()]
- del texture.patches[offs[0]]
- # remove from UI
- model = treeview.get_model()
- iter = model.get_iter(offs)
- model.remove(iter)
- # redraw RHS
- self.init_texture_pixbuf(texture)
- wip_image = self.wTree.get_widget("wip_texture")
- wip_image.set_from_pixbuf(texture.pixbuf)
- self.scale_up_texture(wip_image)
-
- def cell_callback(self, cellrenderertext, path, new_text):
- """cell edited in patch list"""
- current_texture = self.wip_textures[self.current_texture()]
- path = int(path)
- new_text = int(new_text)
- if self.cellrendererwidth == cellrenderertext:
- current_texture.patches[path].xoff = new_text
- column = 1
- else:
- current_texture.patches[path].yoff = new_text
- column = 2
- self.init_texture_pixbuf(current_texture)
- wip_image = self.wTree.get_widget("wip_texture")
- wip_image.set_from_pixbuf(current_texture.pixbuf)
- self.scale_up_texture(wip_image)
-
- # update the model now
- selected_patches = self.wTree.get_widget("selected_patches")
- model = selected_patches.get_model()
- iter = model.get_iter(path)
- model.set_value(iter, column, new_text)
-
-
- def patch_list_reordered(self,treemodel,path,iter,new_order):
- print "ZOMG"
-
-
- def __init__(self):
- self.gladefile = "cleanroom.glade"
- self.wTree = gtk.glade.XML(self.gladefile,"window1")
- self.image1 = self.wTree.get_widget("orig_texture")
-
- window = self.wTree.get_widget("window1")
- window.resize(1024,768)
-
- self.patch_pixbufs = {}
-
- # read in the IWAD texture1 lump and populate our LHS list
- self.parse_texture_file("../../textures/combined.txt")
- lhs = self.wTree.get_widget("texture_list")
- treestore = gtk.TreeStore(str)
- tmp_texnames = self.textures.keys()
- tmp_texnames.sort()
- for name in tmp_texnames:
- if len(self.textures[name].patches) > 1:
- treestore.append(None, [ name ])
- column = gtk.TreeViewColumn('Texture name ')
- lhs.set_model(treestore)
- lhs.append_column(column)
- cell = gtk.CellRendererText()
- column.pack_start(cell, False)
- column.add_attribute(cell, "text", 0)
- lhs.connect("cursor-changed", self.lhs_callback)
-
- # prepare the patch list
- patch_list = self.wTree.get_widget("selected_patches")
- treestore = gtk.TreeStore(str,int,int)
- column = gtk.TreeViewColumn('Patch name')
- patch_list.set_model(treestore)
- patch_list.append_column(column)
- cell = gtk.CellRendererText()
- column.pack_start(cell, False)
- column.add_attribute(cell, "text", 0)
-
- cell = gtk.CellRendererText()
- self.cellrendererwidth = cell
- cell.set_property("editable", True)
- cell.connect("edited", self.cell_callback)
- column = gtk.TreeViewColumn('X offset')
- patch_list.append_column(column)
- column.pack_start(cell, False)
- column.add_attribute(cell, "text", 1)
-
- cell = gtk.CellRendererText()
- cell.set_property("editable", True)
- cell.connect("edited", self.cell_callback)
- column = gtk.TreeViewColumn('Y offset')
- patch_list.append_column(column)
- column.pack_start(cell, False)
- column.add_attribute(cell, "text", 2)
-
- patch_list.connect("key-press-event", self.patch_list_key)
- patch_list.set_reorderable(True)
- treestore.connect("rows-reordered", self.patch_list_reordered)
-
- # populate the RHS list with patch names
- # yes, I learnt perl once.
- patches = {}
- for texture in self.textures.values():
- for patch in texture.patches:
- patches[patch.name] = 1
- patches = patches.keys()
- rhs = self.wTree.get_widget("all_patch_tree")
- treestore = gtk.TreeStore(str)
- patches.sort()
- for name in patches:
- treestore.append(None, [ name ])
- column = gtk.TreeViewColumn('Patch name')
- rhs.set_model(treestore)
- rhs.append_column(column)
- cell = gtk.CellRendererText()
- column.pack_start(cell, False)
- column.add_attribute(cell, "text", 0)
- rhs.connect("cursor-changed", self.rhs_cursor_cb)
- rhs.connect("row-activated", self.rhs_select_cb)
-
- image = self.wTree.get_widget("current_patch")
- image.drag_source_set(gtk.gdk.BUTTON1_MASK, [('text/plain', 0,
- 80)], 0) # 80 = target type text
- image.connect("drag_data_get", self.rhs_drag_data_get)
-
- self.set_up_progressbar()
-
- self.wTree.get_widget("window1").connect("destroy", gtk.main_quit)
- self.wTree.get_widget("quit_menu_item").connect("activate", gtk.main_quit)
- self.wTree.get_widget("saveas_menu_item").connect("activate", self.saveas_activated)
- self.wTree.get_widget("save_menu_item").connect("activate", self.save_activated)
- self.wTree.get_widget("open_menu_item").connect("activate", self.open_activated)
-
- # select the top-most texture
- lhs.set_cursor( (0,) , None, False)
-
- def set_up_progressbar(self):
- """We've "done" any textures in wip set with >0 patches"""
- bar = self.wTree.get_widget("progressbar1")
- done = len(filter(lambda x: len(x.patches) > 0, self.wip_textures.values()))
- bar.set_fraction(float(done) / len(self.textures))
- bar.set_text("%d/%d" % (done, len(self.textures)))
-
- def saveas_activated(self, arg):
- filesel = gtk.FileChooserDialog(action=gtk.FILE_CHOOSER_ACTION_SAVE,
- buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_SAVE, gtk.RESPONSE_OK))
- if filesel.run() == gtk.RESPONSE_OK:
- self.filename = filesel.get_filename()
- filesel.destroy()
- self.save_activated(arg)
-
- def save_activated(self, arg):
- if not hasattr(self, "filename"):
- self.saveas_activated(arg)
- saveme = self.wip_textures.values()
- saveme.sort(lambda a,b: cmp(a.name,b.name))
- writetome = open(self.filename,"w")
- writetome.write("".join(map(str,saveme)))
- writetome.close()
-
- def open_activated(self,arg):
- filesel = \
- gtk.FileChooserDialog(action=gtk.FILE_CHOOSER_ACTION_OPEN,
- buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN, gtk.RESPONSE_OK))
- if filesel.run() == gtk.RESPONSE_OK:
- self.filename = filesel.get_filename()
- filesel.destroy()
- print self.filename
-
- texture1 = file(self.filename, "r").read()
- self.wip_textures = {}
- current = None
- for line in texture1.split("\n"):
- if len(line) == 0 or line[0] == ";" or line[0] == "#":
- continue
- elif line[0] == "*" and current:
- junk,name,y,x= line.split()
- current.patches.append(Patch(name,int(x),int(y)))
- else:
- line = line.split()
- current = Texture(line[0],line[1],line[2])
- self.wip_textures[line[0]] = current
- self.set_up_progressbar()
-
-if __name__ == "__main__":
- hwg = HellowWorldGTK()
- gtk.main()