!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     (c) 2015 Martin GrabmuellerBSD3martin@grabmueller.de provisionalportable Safe-Inferred+>All supported thing types. Unrecogized types are encoded as . Wall texture.Name of the texture.Texture width.Texture height.5List of patches, in the order they appear in the WAD.Patch descriptor.2X offset in wall coordinate system for this patch.2Y offset in wall coordinate system for this patch.&Index in PNAMES of the picture to use.%Documented in UDS, but usage unknown.%Documented in UDS, but usage unknown.*Colormap contains 34 maps, 256 bytes each.+14 palettes, each a list of 256 RGB tuples.:Blockmap, determines which blocks intersect with linedefs.X origin in level coordinates.Y origin in level coordinates.Number of columns.Number of rows.NBlocklists for all blocks, left-to-right, bottom-to-top in level coordinates.'Blocklist is a list of linedef indices.4Reject array. This is a bit map and not decoded yet.jNode of the BSP tree. This is created by the BSP construction process and is used to speed up rendering.!X position of start of node line.!Y position of start of node line.Delta X for end of node line.Delta Y for end of node line.)Upper Y coordinate of right bounding box.)Lower Y coordinate of right bounding box.)Lower X coordinate of right bounding box.)Upper X coordinate of right bounding box.(Upper Y coordinate of left bounding box.(Lower Y coordinate of left bounding box.(Lower X coordinate of left bounding box.(Upper X coordinate of left bounding box.MWhen Left, index of right recursive node, when Right index of right ssector.KWhen Left, index of left recursive node, when Right index of left ssector.Sectors are defined by enclosing linedefs, and the properties below. In WADs, each region of a map with different ceiling or floor heights or textures, or different specials and tags need to be their own sectors.Height of floor.Height of ceiling.!Name of flat for floor texturing.#Name of flat for ceiling texturing.GLight level of sector. Used as index in COLORMAP for darkening colors.!Sector special. Not decoded yet.Sector tag. Not decoded yet.A SSector (sub-sector?) is also produced by the BSP construction process. All sectors are split into ssectors (convex polygons).)Number of segs that make up this ssector."Index of first seg of this sector.Segs are split up linedefs that are produced by the BSP construction process. Whenever a BSP node splits a linedef, two segs are created representing both sides of the split.Index of start vertex.Index of end vertex.Angle of the seg.%Index of linedef this seg is part of.50 if seg is in same diretion as linedef, 1 otherwise.*Offset of the seg relative to the linedef.YA sidedef defines the textures to use on walls and to what sector the wall is connected.&Linedefs can have one or two sidedefs.X offset of the sidedef.Y offset of the sidedef.Name of upper texture.Name of lower texture.Name of middle texture.#Index of sector this sidedef faces.\Linedefs make up the geometry of a level and additionally define most of the interactivity.1The linedef starts at the vertex with this index,+... and ends at the vertex with this index.Linedef flags. Not decoded yet. Linedef effect. Not decoded yet.ILinedef tag. Triggers on this linedef affect sectors witht the same tag.ZRight sidedef of this linedef. Defines textures and sector this linedef is connected to..For two-sided linedefs, this is the left side.;A vertex defines the X/Y coordinates of linedefs, segs etc.ZThey are referenced by their position in the VERTEXES lump of the level they are used in. X coordinate. Y coordinate.zThings are parts of levels. When a level is loaded, the things define where to place players, monsters, items and so on.X position of the thing.Y position of the thing.zAngle the thing is looking at when created. This only affects things that have a direction, such as players and monsters.Kind of thing.$Flags of the thing. Not decoded yet.A wall patch. Wall textures are made up of one or more patches, which are positioned as defined by the patch descriptors in the  value.Name of this patch.Picture for the patch. The offsets in the picture are ignored, because positioning is defined in the patch descriptor referencing this patch.2Flats are images for texturing floors and ceiling.Name of this flat.Alrays 64 x 64 = 4096 bytes.>Sprites are used for players, monsters, and things in general.Lump name for this sprite.FPicture for the sprite. It is drawn relative to the thing's position.A s is a part of a column. There can (and often will) be gaps in columns for transparent parts in sprites and walls./Where to start drawing this part of the column.PPixels of this post. The length of this field defines how many pixels to draw.=Picture. Sprites and wall patches are stored in this format.Width of the picture.Height of the picture.5Offset of the left side to the origin of the picture./Offset of the top to the origin of the picture.MEach element in this list is a column, where each column is a list of posts. One level.>Level name, E?M? style for DOOM 1 maps, MAP?? for DOOM 2 maps.;List of things that are to be placed in the level on start.3List of vertices referenced by linedefs, segs, etc.List of linedefs.List of sidedefs.7List of segs (parts of linedefs referenced in BSP tree.iList of ssectors (sub-sectors), created from sectors during BSP building. A ssector is made up of segs.List of sectors of the level.BSP tree nodes.QReject bitmap. Used for determining whether one sector can be seen from another.|Blockmap. For each block of the map, lists the linedefs intersecting that block. Used for actor-wall collision detection.XLump name. This is at mot 8 bytes long, and internally, all trailing NULs are stripped.Entry in WAd directory.$Offset of the lump data in the file.!Size (in bytes) of the lump data.QName of the lump. Note that trailing NULs are stripped when the name is read in.WAD file header..Normally "IWAD" or "PWAD", always of length 4. Number of lumps in the file. FByte offset (relative to beginning of the file) of the WAD directory. EWAD structure, including the file contents and decoded common lumps.  WAD header.<All WAD directory entries, in the same order as in the file.KAll WAD lumps, each entry matching the corresponding entry in wadDirectory.(Mapping from lump names to lump content.7Mapping from lump names to flats (floors and ceilings).9Mapping from lump names to sprites (monsters and things).<Mapping from lump names to patches (parts of wall textures).)Mapping from lump names to wall textures."Mapping from lump names to levels.*Mapping from patch indices to patch names.DWAD colormap for mapping palette entries according to light levels.1Palettes for mapping color indices to RGB tuples.5Exception thrown when reading and decoding WAD files.Decoding of the general WAD format or individual lumps failed. The first string is the context where the error occured, the second contains details on the error.General WAD file format error. The first string is the context where the error occured, the second contains details on the error.CConvert an integer thing type as found in the WAD file to Haskell.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  ~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!        (c) 2015 Martin GrabmuellerBSD3martin@grabmueller.de provisionalportable Safe-InferredLoad a WAD file into a   value. The complete file is read into memory eagerly, assuming that all the content will be needed anyway by the application. May throw   or .!YRun a 'Get a' on a strict bytestring and return it's result. On decoding error, throw a  exception."oParser for WAD file contents. The resulting parse state contains all data from the WAD, decoded and organized.#9This list contains all known map names from DOOM/DOOM II.S$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr!"#&$%&'()*+,-./0123456789:;<=>?@ABHCDEFGIJKLMNOPUTSRQVWXYZ[\]^_`abcdefghijklmnopqr!"#(c) 2015 Martin GrabmuellerBSD3martin@grabmueller.de provisionalportable Safe-Inferred6Exports a WAD structure into several JavaScript files: %One file for each level, called like  level_E1M1.js or level_MAP13.js  levels.js  textures.js flats.js  sprites.js  patches.js  pnames.js @palettes.js  colormap.jsstuvwxyz{|}~stuvwxyz{|}~(c) 2015 Martin GrabmuellerBSD3martin@grabmueller.de provisionalportable Safe-Inferred  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()**+,-./001234566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuwaddle-0.1.0.3Game.Waddle.TypesGame.Waddle.LoadGame.Waddle.ExportJS Game.Waddle ThingTypeThingTypeOther HangingLeg2HangingPairOfLegs2HangingVictim1LeggedHangingVictimArmsSpreadHangingVictimTwitching2 PoolOfBrainsSmallPoolOfGuts PoolOfGuts PoolOfBloodBloodyMessAsAboveBloodyMessExplodedPlayerDeadLostSoulInvisible DeadCacodemon DeadDemonDeadImpDeadFormerSergeantDeadFormerHuman DeadPlayer HangingBillyHangingTorsoNoBrainHangingTorsoLookingUpHangingTorsoOpenSkullHangingTorsoLookingDownHangingVictimNoGutsBrainHangingVictimNoGuts HangingLegHangingVictim1LegHangingPairOfLegsHangingVictimTwitching HangingVictimPileOfSkullsAndCandlesFiveSkullShishKebap SkullOnPoleTwitchingImpaledHuman ImpaledHumanFlamingSkullRock EvilEyeSymbolShortTechnoLampTallTechnoLamp FloorLampShortRedFirestickShortGreenFirestickShortBlueFirestickTallRedFirestickTallGreenFirestickTallBlueFirestickLargeBrownTree BurntGrayTree StalagmiteShortRedPillarWithSkullShortRedPillar ShortGreenPillarWithBeatingHeartShortGreenPillarWithHeartShortGreenPillar TallRedPillarTallGreenPillarTallTechnocolumn CandelabraCandle BurningBarrelBarrelYellowSkullKey RedSkullKey BlueSkullKey YellowKeyCard RedKeyCard BlueKeyCardLightAmplificationGoggles ComputerMap RadiationSuit Invisibility BerserkPackInvulnerability SoulSphere MegaSphere CombatArmor SecurityArmor SpiritArmor HealthPotionMedikitStimPackBackpackCellChargePack BoxOfRockets BoxOfShells BoxOfAmmo CellChargeRocket ShotgunShellsAmmoClipBFG9000 PlasmagunRocketLauncherChaingun SuperShotgunShotgunChainsaw SpawnSpot BossShooterTeleportLanding BossBrain Cyberdemon SpiderdemonArchVileMancubusRevenant PainElemental Arachnotron BaronOfHell HellKnight CacodemonLostSoulSpectreDemonImpFormerHumanCommandoFormerHumanSergeantWolfensteinOfficer FormerHumanDeathMatchStartPosPlayer4StartPosPlayer3StartPosPlayer2StartPosPlayer1StartPos ZeroThingTexture textureName textureWidth textureHeighttexturePatchDescriptorsPatchDescriptorpatchDescriptorXOffsetpatchDescriptorYOffsetpatchDescriptorPNameIndexpatchDescriptorStepDirpatchDescriptorColorMapColormapPalettesBlockmapblockmapOriginXblockmapOriginYblockmapColumns blockmapRowsblockmapBlocklists BlocklistReject rejectBytesNodenodeXnodeYnodeDXnodeDY nodeRightBBUY nodeRightBBLY nodeRightBBLX nodeRightBBUX nodeLeftBBUY nodeLeftBBLY nodeLeftBBLX nodeLeftBBUXnodeRightNodeOrSSectornodeLeftNodeOrSSectorSectorsectorFloorHeightsectorCeilingHeightsectorFloorFlatsectorCeilingFlatsectorLightLevel sectorSpecial sectorTagSSectorssectorSegCountssectorSegStartSegsegStartVertex segEndVertexsegAngle segLineDef segDirection segOffsetSideDefsideDefXOffsetsideDefYOffsetsideDefUpperTextureNamesideDefLowerTextureNamesideDefMiddleTextureName sideDefSectorLineDeflineDefStartVertexlineDefEndVertex lineDefFlags lineDefEffect lineDefTaglineDefRightSideDeflineDefLeftSideDefVertexvertexXvertexYThingthingXthingY thingAngle thingType thingFlagsPatch patchName patchPictureFlatflatNameflatDataSprite spriteName spritePicturePostpostTop postPixelsPicture pictureWidth pictureHeightpictureLeftOffsetpictureTopOffset picturePostsLevel levelName levelThings levelVertices levelLineDefs levelSideDefs levelSegs levelSSectors levelSectors levelNodes levelReject levelBlockmapLumpNameWadEntrywadEntryOffset wadEntrySize wadEntryName WadHeaderwadHeaderIdentifierwadHeaderLumpCountwadHeaderDirectoryOffsetWad wadHeader wadDirectorywadLumps wadLumpLookupwadFlats wadSprites wadPatches wadTextures wadLevels wadPNames wadColormap wadPalettes WadExceptionWadExceptionDecodeErrorWadExceptionFormatErrorthingTypeFromNumberloadexportJS$fExceptionWadExceptionbaseGHC.IO.Exception IOExceptionrunGet'parseWad knownMapNames ParseStatepsState psLumpLookuppsMaps psSpritespsFlats psPatchespsPNames psTexturespsLevelspsThings psVertices psLineDefs psSideDefspsSegs psSSectors psSectorspsNodespsReject psBlockmap psPalettes psColormap ExtBlockmapextBlockmapOriginXextBlockmapOriginYextBlockmapColumnsextBlockmapRowsextBlockmapOffsetsExtPost extPostTop extPostCount extPostPixels extPostNext ExtPostEnd ExtPictureextPictureWidthextPictureHeightextPictureLeftOffsetextPictureTopOffsetextPictureColStartsPState InPatchesInFlats InSpritesInLevelNoState getInt32le getInt16le getWadHeader getWadEntrygetWadEntryListtrimNUL getExtPicture getExtPost convertPostsconvertPicture getThingList getVertexListgetLineDefListgetSideDefListgetSeg getSegList getSSectorgetSSectorList getSectorListgetNode getNodeList getBlocklists getBlocklist getBlockmapgetPatchDescriptor getTexture getTextures getPNamesinitParseState exportThing exportVertex exportLineDef exportSideDef exportNode exportSector exportSeg exportSSectorexportBlockmap exportLevel exportLevels exportPicture exportSprite exportSprites exportPatch exportPatches exportTextureexportTextures exportPNames exportFlatsexportColormapexportPalettes