Hi this is the starting point of my to be WAD tool for doom this class allows you to show all the lump names in the main doom.wad file.
Comments and suggestions welcome.

Class code cWad.cs

vbnet Code:
  1. Imports System.IO
  2. Imports System.Text
  3.  
  4. Public Class cWad
  5.  
  6.     Public LumpNames As List(Of String)
  7.  
  8.     Public Sub LoadWad(ByVal Filename As String)
  9.         Dim br As BinaryReader = Nothing
  10.         Dim Counter As Integer = 0
  11.  
  12.         'Wad variables.
  13.         Dim Sig As String = vbNullString
  14.         Dim Lumps As Integer = 0
  15.         Dim Offset As Integer = 0
  16.         'Lump variables.
  17.         Dim LumpAddr As Integer = 0
  18.         Dim LumpSize As Integer = 0
  19.         Dim LumpName As String = vbNullString
  20.  
  21.         'Open wad filename.
  22.         br = New BinaryReader(File.OpenRead(Filename))
  23.         'Get header sig should be IWAD
  24.         Sig = Encoding.ASCII.GetString(br.ReadBytes(4))
  25.  
  26.         'Check for vaild wad sig
  27.         If Not Sig.Equals("IWAD") Then
  28.             Throw New ArgumentException("No Vaild IWAD Header Found")
  29.             Exit Sub
  30.         End If
  31.  
  32.         'Read number of lumps and lump start offset.
  33.         Lumps = br.ReadInt32
  34.         Offset = br.ReadInt32
  35.  
  36.         'Create new lump names list.
  37.         LumpNames = New List(Of String)
  38.  
  39.         'Seek to Offset
  40.         br.BaseStream.Seek(Offset, SeekOrigin.Begin)
  41.  
  42.         While( Counter < Lumps)
  43.             'Read lump offset and lump size.
  44.             LumpAddr = br.ReadInt32
  45.             LumpSize = br.ReadInt32
  46.             'Get lump name.
  47.             LumpName = Encoding.ASCII.GetString(br.ReadBytes(8)).Replace(Chr(0), "")
  48.             'Add lump name to list
  49.             LumpNames.Add(LumpName)
  50.             'INC Counter
  51.             Counter += 1
  52.         End While
  53.         'Close file.
  54.         br.Close()
  55.     End Sub
  56. End Class

Example showing level names.

vbnet Code:
  1. Dim WadFile As New cWad
  2.  
  3.         Try
  4.             'Load wad filename.
  5.             WadFile.LoadWad("C:\out\data\DOOM.WAD")
  6.  
  7.             ListBox1.Items.Clear()
  8.             'This sniplet below adds all the doom level names to a listbox.
  9.             For Each Item As String In WadFile.LumpNames
  10.                 If Item.StartsWith("E") And Char.IsDigit(Item(1)) Then
  11.                     ListBox1.Items.Add(Item)
  12.                 End If
  13.             Next Item
  14.  
  15.         Catch ex As Exception
  16.             MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
  17.         End Try
  18.     End Sub