diff --git a/doc/Doublescan.txt b/doc/Doublescan.txt
deleted file mode 100644
index 5e492ec89c56e550d1a653be5d695d78d798c9ca..0000000000000000000000000000000000000000
--- a/doc/Doublescan.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-   ================================================================
-   How to add Low-res modes to your XF86Config under Linux MANUALLY
-   ================================================================
-
-   I TAKE NO RESPONSIBILITY FOR ANY DAMAGE DONE TO YOUR EQUIPMENT!!!
-
-   This document explains how to add low-res modes like 320x200 to your
-   X-Server configuration, because some new setup tools for the X-Server
-   do not support this. ONLY RECOMMENDED FOR USERS WHO KNOW WHAT THEY DO!
-
-   I do not take any responsibility for damage done to your monitor, your
-   videocard, your harddisk, your cat, your dog or anything else!!!
-   IMPORTANT IS, THAT YOUR "HorizSync" AND "VertRefresh" VALUES REALLY
-   MATCH YOUR MONITOR! OTHERWISE YOUR MONITOR CAN BLOW UP!!!
-
-   OK, if you have read up to here, you either know what you do or really
-   die-hard want those low-res modes. Here is what to do:
-   Look up your XF86Config. Is is either in /etc or in /etc/X11. Here is
-   what you have to add to the definition of your modeslines:
-
-# Low-res Doublescan modes
-# If your chipset does not support doublescan, you get a 'squashed'
-# resolution like 320x400.
-
-# 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio
-Modeline "320x200"     12.588 320  336  384  400   200  204  205  225 Doublescan
-# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio
-Modeline "320x240"     12.588 320  336  384  400   240  245  246  262 Doublescan
-# 320x240 @ 72 Hz, 36.5 kHz hsync
-Modeline "320x240"     15.750 320  336  384  400   240  244  246  262 Doublescan
-# 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio
-ModeLine "400x300"     18     400  416  448  512   300  301  302  312 Doublescan
-# 400x300 @ 60 Hz, 37.8 kHz hsync
-Modeline "400x300"     20     400  416  480  528   300  301  303  314 Doublescan
-# 400x300 @ 72 Hz, 48.0 kHz hsync
-Modeline "400x300"     25     400  424  488  520   300  319  322  333 Doublescan
-
-   If your video card only supports a specific set of discrete dotclocks
-   (RAMDAC) you may have to replace the dotclocks given here by one of the
-   specified (e.g in the first modeline the dotclock is 12.588 MHz). I believe
-   that nowadays all cards and monitors should work with these settings, but
-   if you have outdated hardware you better check the frequencies yourself. If
-   there is any uncertainty, please check the "XFree86 Video Timings HOWTO".
-
-
-   Then have a look at the section "Screen" with the appropriate driver
-   (usually either "svga" or "accel"). Under Subsection "Display" there
-   are modes for the given color depth. Add the desired modes. As an
-   example I give you my screens definition here with low-res modes in
-   16 bit color depth:
-
-Section "Screen"
-    Driver      "accel"
-    Device      "3D Charger"
-    Monitor     "Iiyama Pro 450"
-    DefaultColorDepth 16
-
-    Subsection "Display"
-        Depth       8
-        Modes       "1280x1024" "1024x768" "800x600" "640x480"
-        ViewPort    0 0
-        Virtual     1280 1024
-    EndSubsection
-    Subsection "Display"
-        Depth       16
-        Modes       "1152x864" "1024x768" "800x600" "640x480" "400x300" "320x200" <- THIS IS ACTUALLY WHAT YOU WANT!!!
-        ViewPort    0 0                                       ^^^^^^^^^^^^^^^^^^^
-        Virtual     1152 864
-    EndSubsection
-    Subsection "Display"
-        Depth       24
-        Modes       "800x600" "640x480"
-        ViewPort    0 0
-        Virtual     800 600
-    EndSubsection
-    Subsection "Display"
-        Depth       32
-        Modes       "800x600" "640x480"
-        ViewPort    0 0
-        Virtual     800 600
-    EndSubsection
-EndSection
-
-   Once again: important is, that you edit the correct Screen section.
-   If you use the SVGA Server and edit the ACCEL Server, you might
-   wonder where your new modes have gone.
-
-   If everything went fine and you want to say thank you, just write
-   to "metzgermeister@users.sourceforge.net". If your monitor blew
-   up and you want to kill me, find me playing Legacy or Q3A on the net
-   and frag me (with your second monitor, hehe).
-
-   - metzgermeister
diff --git a/doc/Item Ranges.txt b/doc/Item Ranges.txt
deleted file mode 100644
index 60251e5479c75e9b74a5b04c7ab7c9c9b5788a5b..0000000000000000000000000000000000000000
--- a/doc/Item Ranges.txt	
+++ /dev/null
@@ -1,212 +0,0 @@
-1-99 : Player Starts
-	1 - Player 1 Start		1
-	2 - Player 2 Start		2
-	3 - Player 3 Start		3
-	4 - Player 4 Start		4
-	5 - Player 5 Start 		4001
-	6 - Player 6 Start 		4002
-	7 - Player 7 Start 		4003
-	8 - Player 8 Start 		4004
-	9 - Player 9 Start 		4005
-	10 - Player 10 Start 		4006
-	11 - Player 11 Start 		4007
-	12 - Player 12 Start 		4008
-	13 - Player 13 Start 		4009
-	14 - Player 14 Start 		4010
-	15 - Player 15 Start 		4011
-	16 - Player 16 Start 		4012
-	17 - Player 17 Start 		4013
-	18 - Player 18 Start 		4014
-	19 - Player 19 Start 		4015
-	20 - Player 20 Start 		4016
-	21 - Player 21 Start 		4017
-	22 - Player 22 Start 		4018
-	23 - Player 23 Start 		4019
-	24 - Player 24 Start 		4020
-	25 - Player 25 Start 		4021
-	26 - Player 26 Start 		4022
-	27 - Player 27 Start 		4023
-	28 - Player 28 Start 		4024
-	29 - Player 29 Start 		4025
-	30 - Player 30 Start 		4026
-	31 - Player 31 Start 		4027
-	32 - Player 32 Start 		4028
-	33 - Player Match Start 	11
-	34 - Red Team Start 		87
-	35 - Blue Team Start 		89
-	36 - Tag start			New
-
-100 - 199 : Enemies
-	100 - Blue Crawla		3004
-	101 - Red Crawla		9
-	102 - GFZ Fish			58
-	103 - Gold Buzz			5005
-	104 - Red Buzz			5006
-	105 - Jetty-Syn Bomber		3005
-	106 - Jetty-Syn Gunner		22
-	107 - Crawla Commander		21
-	108 - Deton			71
-	109 - Skim			56
-	110 - THZ Turret		2004
-	111 - Pop-up Turret		42
-
-200 - 299 : Bosses and their associated items (if any)
-	200 - Boss 1			16
-	201 - Boss 2			2008
-	290 - Boss Fly Point		17
-	291 - EggTrap Center		2049
-
-300 - 399 : Collectibles
-	300 - Ring			2014
-	301 - Homing Ring		69
-	302 - Rail Ring			3003
-	303 - Infinity Ring		80
-	304 - Automatic Ring		26
-	305 - Explosion Ring		54
-	306 - Red CTF Flag		31
-	307 - Blue CTF Flag		34
-	308 - Special Stage Token	2013
-	309 - Emerald 1			420
-	310 - Emerald 2			421
-	311 - Emerald 3			422
-	312 - Emerald 4			423
-	313 - Emerald 5			424
-	314 - Emerald 6			425
-	315 - Emerald 7			426
-	316 - Hunting Emerald 1		64
-	317 - Hunting Emerald 2		3002
-	318 - Hunting Emerald 3		3001
-
-400 - 499 : Boxes
-	400 - Super Ring Box		2011
-	401 - Grey Ring Box		2012
-	402 - Ring Shield Box		48
-	403 - Fire Shield Box		2002
-	404 - Bomb Shield Box		2018
-	405 - Jump Shield Box		35
-	406 - Water Shield Box		2028
-	407 - Sneaker Box		25
-	408 - Invincibility Box		2022
-	409 - 1-Up Box			41
-	410 - Eggman Box		2005
-	411 - Mixup Box			78
-	412 - Question Box		3000
-
-500 - 599 : Interactive Objects (friendly or otherwise - includes springs)
-	500 - Bubble Patch		33
-	501 - Level End Sign		86
-	502 - Starpost			3006
-	520 - Spike Ball		-1
-	521 - Special Stage Spike Ball	23
-	522 - Ceiling Spike		67
-	523 - Floor Spike		68
-	540 - Fan			32
-	541 - Steam Riser		30
-	550 - Yellow Spring		28
-	551 - Red Spring		79
-	552 - Blue Spring		5004
-	553 - Yellow Spring Down	65
-	554 - Red Spring Down		66
-	555 - Yellow Diagonal Spring	2015
-	556 - Red Diagonal Spring	38
-	557 - Yellow Diag Spring Down	20
-	558 - Red Diag Spring Down	39
-
-600 - 699 : Special placement patterns
-	600 - Vertical Rigns - Stack of 5 (suitable for Yellow Spring)	84
-	601 - Vertical Rings - Stack of 5 (suitable for Red Spring)	44
-	602 - Diagonal rings (5)					76
-	603 - Diagonal rings (10)					77
-	604 - A ring of rings						47
-	605 - A BIGGER ring of rings					2007
-	606 - A ring of wing items					2048
-	607 - A BIGGER ring of wing items				2010
-	608 - A ring of rings and wings (alternating)			2046
-	609 - A BIGGER ring of rings and wings (alternating)		2047
-
-700 - 799 : Powerup indicators/environmental effects/miscellany
-	700 - Ambient Water 1a (S)	2026
-	701 - Ambient Water 1b (S)	2024
-	702 - Ambient Water 2a (M)	2023
-	703 - Ambient Water 2b (M)	2045
-	704 - Ambient Water 3a (L)	83
-	705 - Ambient Water 3b (L)	2019
-	706 - Ambient Water 4a (XL)	2025
-	707 - Ambient Water 4b (XL)	27
-	708 - Random Ambient 1		14
-	709 - Random Ambient 2		43
-	750 - Chaos Spawner		8
-	751 - Teleport Point		5003
-	752 - Alternate View Point	5007
-	753 - Zoom Tube Waypoint	18
-	754 - Pusher			5001
-	755 - Puller			5002
-	756 - Street Light		2003
-	
-800 - 899 : Greenflower Scenery
-	800 - Flower 1			36
-	801 - Flower 2			70
-	802 - Flower 3			73
-	804 - Berry Bush		74
-	805 - Bush			75
-
-900 - 999 : Techno Hill Scenery
-	900 - THZ Plant			2035
-	901 - Alarm			2006
-
-1000 - 1099 : Deep Sea Scenery
-	1000 - Gargoyle			81
-
-1100 - 1199 : Castle Eggman Scenery
-	1100 - Ceiling Chain		49
-	1101 - Torch Flame		24
-	1102 - Eggman Statue		52
-	1103 - CEZ Flower		2001
-
-1200 - 1299 : Arid Canyon Scenery
-1300 - 1399 : Red Volcano Scenery
-1400 - 1499 : Dark City Scenery
-1500 - 1599 : Doom Ship Scenery
-1600 - 1699 : Egg Rock/Final Fight Scenery
-1700 - 1799 : NiGHTS Items
-	1700 - Axis			72
-	1701 - Axis Transfer (Normal)	61
-	1702 - Axis Transfer (Line)	46
-	1703 - Nights Drone		60
-	1704 - Nights Bumper		82
-	1705 - Hoop			57
-	1706 - Nights Wing		37
-	1707 - Super Loop Powerup	3007
-	1708 - Drill Refill Powerup	3008
-	1709 - Helper Powerup		3009
-	1710 - Egg Capsule		40
-
-1800 - 1849 : Mario Items
-	1800 - Coin			10005
-	1801 - Goomba			10000
-	1802 - Blue Goomba		10001
-	1803 - FireFlower		50
-	1804 - Shell			10
-	1805 - Puma			29
-	1806 - Koopa			19
-	1807 - Axe			12
-	1808 - Mario Bush 1		10002
-	1809 - Mario Bush 2		10003
-	1810 - Toad			10004
-
-1850 - 1899 : Christmas Items
-	1850 - Xmas Pole		5
-	1851 - Candy Cane		13
-	1852 - Snowman			6
-
-1900 - 1999 : Misc Scenery
-	1900 - Stalagmite 0
-	1901 - Stalagmite 1
-	1902 - Stalagmite 2
-	1903 - Stalagmite 3
-	1904 - Stalagmite 4
-	1905 - Stalagmite 5
-	1906 - Stalagmite 6
-	1907 - Stalagmite 7
-	1908 - Stalagmite 8
-	1909 - Stalagmite 9
diff --git a/doc/Linedef Ranges.txt b/doc/Linedef Ranges.txt
deleted file mode 100644
index 81fa695a0dcb8c0b3592225edbd82a7885c683e6..0000000000000000000000000000000000000000
--- a/doc/Linedef Ranges.txt	
+++ /dev/null
@@ -1,223 +0,0 @@
-	Description	OldNum	NewNum	Description
-	Old Water 	14	Removed	
-
-	Level Parameters/Misc:			
-	Per-Sector Gravity 	64	1	
-	Custom Exit 	71	2	
-	Zoom Tube Parameters 	18	3	
-	Speed Pad 	65	4	
-	Camera Scanner 	63	5	
-	Disable Linedef 	73	6	
-	Flat Alignment 	66	7	
-	Sector Special Parameters	New	8	
-	Mace Parameters	New	9	
-	Sprite Cull Height	New	10	
-	Rope Hang Parameters	New	11
-	Rock Spawner Parameters	New	12
-
-	PolyObjects
-	Marks first line in PolyObject	New	20
-	Explicitly includes a PolyObject line	New	21
-	PolyObject: Parameters	New	22
-	PolyObject: Waving Flag	New	31
-
-	Level-Load Effects:		
-	Instant Floor Lower 	26	50
-	Instant Ceiling Raise 	24	51
-	Continuously Falling Sector 	88	52
-	Continuous Floor/Ceiling Mover 	2	53
-	Continuous Floor Mover 	3	54
-	Continuous Ceiling Mover 	4	55
-	Continuous Two-Speed Floor/Ceiling Mover 	6	56
-	Continuous Two-Speed Floor Mover 	7	57
-	Continuous Two-Speed Ceiling Mover 	8	58
-	Activate Floating Platform 	232	59
-	Activate Floating Platform (Adjustable Speed) 	233	60
-	Crusher 1 (Ceiling to Floor) 	43	61
-	Crusher 2 (Floor to Ceiling) 	50	62
-	Fake Floor/Ceiling	242	63
-	Appearing/Disappearing FOF	New	64
-	Bridge Thinker	New	65
-
-	Floor Over Floors:		
-	"Floor Over Floor: Solid, Opaque, Shadowcasting "	25	100
-	"Floor Over Floor: Solid, Opaque, Non-Shadowcasting "	33	101
-	"Floor Over Floor: Solid, Translucent "	44	102
-	"Floor Over Floor: Solid, Sides Only "	69	103
-	"Floor Over Floor: Solid, No Sides "	51	104
-	"Floor Over Floor: Solid, Invisible "	57	105
-
-	"Floor Over Floor: Water, Opaque "	48	120
-	"Floor Over Floor: Water, Translucent "	45	121
-	"Floor Over Floor: Water, Opaque, No Sides "	75	122
-	"Floor Over Floor: Water, Translucent, No Sides "	74	123
-
-	"Floor Over Floor: Platform, Opaque "	59	140
-	"Floor Over Floor: Platform, Translucent "	81	141
-	"Floor Over Floor: Platform, Translucent, No Sides "	77	142
-
-	Floor Over Floor: Bobbing (Air) 	38	150
-	Floor Over Floor: Adjustable Bobbing (Air) 	68	151
-	Floor Over Floor: Reverse Adjustable Bobbing (Air) 	72	152
-
-	"Floor Over Floor: Floating, Bobbing "	34	160
-
-	Floor Over Floor: Crumbling (Respawn) 	36	170
-	Floor Over Floor: Crumbling (No Respawn) 	35	171
-	"Floor Over Floor: Crumbling (Respawn), Platform  "	79	172
-	"Floor Over Floor: Crumbling (No Respawn), Platform  "	80	173
-	"Floor Over Floor: Crumbling (Respawn), Platform, Translucent "	82	174
-	"Floor Over Floor: Crumbling (No Respawn), Platform, Translucent "	83	175
-	"Floor Over Floor: Crumbling (Respawn), Floating, Bobbing "	39	176
-	"Floor Over Floor: Crumbling (No Respawn), Floating, Bobbing "	1	177
-	"Floor Over Floor: Crumbling (Respawn), Floating "	37	178
-	"Floor Over Floor: Crumbling (No Respawn), Floating "	42	179
-	"Floor Over Floor: Crumbling (Respawn), Bobbing (Air) "	40	180
-
-	"Floor Over Floor: Rising Platform, Solid, Opaque, Shadowcasting "	89	190
-	"Floor Over Floor: Rising Platform, Solid, Opaque, Non-Shadowcasting "	90	191
-	"Floor Over Floor: Rising Platform, Solid, Translucent "	91	192
-	"Floor Over Floor: Rising Platform, Solid, Invisible "	94	193
-	"Floor Over Floor: Rising Platform, Platform, Opaque "	92	194
-	"Floor Over Floor: Rising Platform, Platform, Translucent "	93	195
-
-	Floor Over Floor: Light Block 	49	200
-	Floor Over Floor: Half Light Block 	47	201
-	Floor Over Floor: Fog Block 	46	202
-
-	"Floor Over Floor: Intangible, Opaque "	62	220
-	"Floor Over Floor: Intangible, Translucent "	52	221
-	"Floor Over Floor: Intangible, Sides Only "	67	222
-	"Floor Over Floor: Intangible, Invisible "	58	223
-
-	Floor Over Floor: Mario Block 	41	250
-	Floor Over Floor: Thwomp Block 	54	251
-	Floor Over Floor: Shatter Block 	76	252
-	"Floor Over Floor: Shatter Block, Translucent "	86	253
-	Floor Over Floor: Bustable Block 	55	254
-	Floor Over Floor: Spin Bust Block 	78	255
-	"Floor Over Floor: Spin Bust Block, Translucent "	84	256
-	Floor Over Floor: Quicksand Block 	56	257
-	Floor Over Floor: Laser Block 	53	258
-	Floor Over Floor: Custom 	87	259
-
-	Linedef Executor Triggers:		
-	Trigger Linedef Executor (Continuous) 	96	300
-	Trigger Linedef Executor (Each Time) 	97	301
-	Trigger Linedef Executor (Once) 	98	302
-	Trigger Linedef Executor (Ring Count - Continuous) 	95	303
-	Trigger Linedef Executor (Ring Count - Once) 	99	304
-	Trigger Linedef Executor (Character Ability - Continuous) 	19	305
-	Trigger Linedef Executor (Character Ability - Each Time) 	20	306
-	Trigger Linedef Executor (Character Ability - Once) 	21	307
-	"Trigger Linedef Executor (Race Only, Once) "	9	308
-	Trigger Linedef Executor (CTF Red Team - Continuous) 	10	309
-	Trigger Linedef Executor (CTF Red Team - Each Time) 	11	310
-	Trigger Linedef Executor (CTF Blue Team - Continuous) 	12	311
-	Trigger Linedef Executor (CTF Blue Team - Each Time) 	13	312
-	Trigger Linedef Executor (No More Enemies - Once) 	15	313
-	Trigger Linedef Executor (# of Pushables - Continuous)	New	314
-	Trigger Linedef Executor (# of Pushables - Once)	New	315
-	Trigger Linedef Executors (PolyObject - Land On)	New	316
-	Trigger Linedef Executor (Level Load)	New	399
-
-	Linedef Executor Options:		
-	Linedef Executor: Set Tagged Sector's Floor Height/Pic 	101	400
-	Linedef Executor: Set Tagged Sector's Ceiling Height/Pic 	102	401
-	Linedef Executor: Set Tagged Sector's Light Level 	103	402
-	Linedef Executor: Move Tagged Sector's Floor 	106	403
-	Linedef Executor: Move Tagged Sector's Ceiling 	107	404
-	Linedef Executor: Lower Floor by Line 	108	405
-	Linedef Executor: Raise Floor by Line 	109	406
-	Linedef Executor: Lower Ceiling by Line 	110	407
-	Linedef Executor: Raise Ceiling by Line 	111	408
-	Linedef Executor: Change Calling Sector's Tag 	112	409
-	Linedef Executor: Change Front Sector's Tag 	114	410
-	Linedef Executor: Stop Plane Movement 	116	411
-	Linedef Executor: Teleport Player to Tagged Sector 	104	412
-	Linedef Executor: Change Music 	105	413
-	Linedef Executor: Play SFX 	115	414
-	Linedef Executor: Run Script 	113	415
-	Linedef Executor: Start Adjustable Fire Flicker 	119	416
-	Linedef Executor: Start Adjustable Glowing Light 	120	417
-	Linedef Executor: Start Adjustable Strobe Flash (unsynchronized)	New	418
-	Linedef Executor: Start Adjustable Strobe Flash (synchronized)	New	419
-	Linedef Executor: Fade Light Level 	117	420
-	Linedef Executor: Stop Lighting Effect 	118	421
-	Linedef Executor: Cut-Away View 	121	422
-	Linedef Executor: Change Sky 	123	423
-	Linedef Executor: Change Weather 	124	424
-	Linedef Executor: Change Object State 	125	425
-	Linedef Executor: Stop Object 	122	426
-	Linedef Executor: Award Score 	126	427
-	Linedef Executor: Start Platform Movement 	127	428
-	Linedef Executor: Crush Ceiling Once	New	429
-	Linedef Executor: Crush Floor Once	New	430
-	Linedef Executor: Crush Floor & Ceiling Once	New	431
-	Linedef Executor: Enable 2D Mode	New	432
-	Linedef Executor: Disable 2D Mode	New	433
-	Linedef Executor: Award Custom Power	New	434
-	Linedef Executor: Stop Conveyor	New	435
-	Linedef Executor: Start Conveyor	New	436
-	Linedef Executor: Disable Player Movement	New	437
-
-	Linedef Executor: Execute Linedef Executor	New	450
-
-	Linedef Executor: PolyObject: Door Slide	New	480
-	Linedef Executor: PolyObject: Door Swing	New	481
-	Linedef Executor: PolyObject: Move XY	New	482
-	Linedef Executor: PolyObject: Move XY w/ override	New	483
-	Linedef Executor: PolyObject: Rotate Right	New	484
-	Linedef Executor: PolyObject: Rotate Right w/ override	New	485
-	Linedef Executor: PolyObject: Rotate Left	New	486
-	Linedef Executor: PolyObject: Rotate Left w/ override	New	487
-	Linedef Executor: PolyObject: Start waypoint movement	New	488
-	Linedef Executor: PolyObject: Make Invisible	New	489
-	Linedef Executor: PolyObject: Make Visible	New	490
-
-	Scrollers/Pushers:		
-	Scroll Wall First Side Left 	100	500
-	Scroll Wall First Side Opposite Direction 	85	501
-	Scroll Wall According to Linedef 	254	502
-	Acc Scroll Wall According to Linedef 	218	503
-	Disp Scroll Wall According to Linedef 	249	504
-	Scroll Texture by Offsets 	255	505
-
-	Scroll Floor Texture 	251	510
-	Acc Scroll Floor Texture 	215	511
-	Disp Scroll Floor Texture 	246	512
-	Scroll Ceiling Texture 	250	513
-	Acc Scroll Ceiling Texture 	214	514
-	Disp Scroll Ceiling Texture 	245	515
-
-	Carry Objects on Floor (no scroll)	252	520
-	Acc Carry Objects on Floor 	216	521
-	Disp Carry Objects on Floor 	247	522
-	Carry Objects on Ceiling 	203	523
-	Acc Carry Objects on Ceiling 	205	524
-	Disp Carry Objects on Ceiling 	201	525
-
-	Scroll Floor Texture and Carry Objects 	253	530
-	Acc Scroll Floor Texture and Carry Objects 	217	531
-	Disp Scroll Floor Texture and Carry Objects 	248	532
-	Scroll Ceiling Texture and Carry Objects 	202	533
-	Acc Scroll Ceiling Texture and Carry Objects 	204	534
-	Disp Scroll Ceiling Texture and Carry Objects 	200	535
-
-	Friction 	223	540
-	Horizontal Wind 	224	541
-	Upwards Wind 	229	542
-	Downwards Wind 	230	543
-	Horizontal Current 	225	544
-	Upwards Current 	227	545
-	Downwards Current 	228	546
-	Boom Push/Pull Thing 	226	547
-
-	Lighting:		
-	Floor Lighting 	213	600
-	Ceiling Lighting 	5	601
-	Adjustable Pulsating Light 	60	602
-	Adjustable Flickering Light 	61	603
-	Adjustable Blinking Light (unsynchronized)	New	604
-	Adjustable Blinking Light (synchronized)	New	605
-	Colormap 	16	606
diff --git a/doc/SSN-Todo.xls b/doc/SSN-Todo.xls
deleted file mode 100644
index c468b34764f0b1a7ebcb3f552aeb8fd4cd56fb76..0000000000000000000000000000000000000000
Binary files a/doc/SSN-Todo.xls and /dev/null differ
diff --git a/doc/Sector Ranges.txt b/doc/Sector Ranges.txt
deleted file mode 100644
index 42760e1334a90a7fbf25028fcdaf62d0feb3156c..0000000000000000000000000000000000000000
--- a/doc/Sector Ranges.txt	
+++ /dev/null
@@ -1,78 +0,0 @@
-Removed:
-	- Buttons 1-20					690-709
-	- Button 21 (THZ2 A/740 B/741 D/742 E/745	710
-	- Close Door Blazing (Tag 743)			711
-	- Raise Ceiling to Highest (Tag 744)		981
-	- THZ2 Slime Raise (B/712 W713 P714 D715 S716)	986
-
-Stuff to Remove/Change:
-	- Light Blinks On Every 0.5 Seconds		2 Add Linedef Combine
-	- Light Blinks On Every 1 Second		3 Add Linedef Combine
-	- Light Pulses Smoothly			8 Remove
-	- Light Blinks On Every 0.5 Seconds (Sync)	12 Add Linedef Combine
-	- Lights Blinks On Every 1 Second (Sync)	13 Add Linedef Combine
-	- Light Flickers Like Fire			17 Remove
-	? - Damage (Fire) and Current			519 Remove (convert to combination)
-	? - Damage (Water) and Current			984 Remove (convert to combination)
-
-Section 1:
-	1 - Damage (Generic)				11
-	2 - Damage (Water)				983
-	3 - Damage (Fire)				7
-	4 - Damage (Electrical)				18
-	5 - Spikes					4
-	6 - Death Pit (Camera Mod)			16
-	7 - Death Pit (No Camera Mod)			5
-	8 - Instant Kill				10
-	9 - Ring Drainer (Floor Touch)			978
-	10 - Ring Drainer (No Floor Touch)		980
-	11 - Special Stage Damage			9
-	12 - Space Countdown				6
-	13 - Ramp Sector (Increase step-up)		992
-	14 - Non-Ramp Sector (Don't step-down)		996
-	15 - Bouncy Sector (FOF Control Only)		14
-
-Section 2:		<< 4
-	1 - Trigger Linedef Exec (Pushable Objects)	971
-	2 - Trigger LD Exec (Anywhere in Sec/All Pls)	972
-	3 - Trigger Linedef Exec (Floor Touch/All Pls)	973
-	4 - Trigger Linedef Exec (Anywhere in Sec)	974
-	5 - Trigger Linedef Exec (Floor Touch)		975
-	6 - Trigger Linedef Exec (Emerald Check)	967
-	7 - Trigger Linedef Exec (NiGHTS Mare)		968
-	8 - Check for linedef executor on FOFs (ANY)	970
-	9 - Egg Trap Capsule				666
-	10 - Special Stage Time/Rings, Par		990
-	11 - Custom Global Gravity			991
-
-Section 3:		<< 8
-	1 - Ice/Sludge (required?!)			256
-	2 - Wind/Current (required?!)			512
-	3 - Ice/Sludge and Wind/Current			768
-	4 - Conveyor Belt				985
-	5 - Speed Pad (No Spin)				976
-	6 - Speed Pad (Spin)				977
-	7 - Bustable Block Sprite Parameter		1500-1515
-	8 - "
-	9 - "
-	10 - "
-	11 - "
-	12 - "
-	13 - "
-	14 - "
-	15 - "
-
-Section 4:		<< 12
-	1 - Starpost Activator				993
-	2 - Special Stage Goal	Combine			33
-	2 - Exit Sector		Combine			982
-	2 - No Tag Zone		Combine			987
-	2 - CTF: Flag Return	Combine			995
-	3 - CTF: Red Team Base				988
-	4 - CTF: Blue Team Base				989
-	5 - Fan Sector					997
-	6 - Super Sonic Transform			969
-	7 - Spinner					979
-	8 - Zoom Tube Start				998
-	9 - Zoom Tube End				999
-	10 - Finish Line				994
\ No newline at end of file
diff --git a/doc/faq.txt b/doc/faq.txt
deleted file mode 100644
index 26c75bbadd5581c36c835ae1a11f405f634a2834..0000000000000000000000000000000000000000
--- a/doc/faq.txt
+++ /dev/null
@@ -1,307 +0,0 @@
- SRB2
- Release v1.09, ? 2005.
-
- Last Updated: June 2005
-
- Original game & sources by: Id Software.
- Additions: (c)1998 by: Fabrice Denis & Boris Pereira
-            (c)1999 by: Fabrice Denis, Boris Pereira & Thierry Van Elsuwe
-            (c)2000 by: Boris Pereira & Thierry Van Elsuwe
-            (c)2004 By: AJ, Graue, Alam Arias, Logan Arias & Andrew Clunis
-
- Special thanks to Steven McGranahan,  Lee Killough, Robert Bäuml and Bell Kin for
- their large contribution and to other DooM LEGACY & SRB2 Team members.
-
- Web site: http://www.SRB2.org/
-   e-mail: none@none.com
-
- OpenGL specific:
- Web site: http://legacy.newdoom.com/gl
-
-
- -----------------------------------------------------------------------
- F.A.Q.
- -----------------------------------------------------------------------
-
-
- If you have any trouble with SRB2, you might find a solution
- here.
-
- If you find a solution to a problem that was not listed here,
- please tell us so that we can update the FAQ and help other people!
-
- Mail your hardware/software problems to:
-
- None@none.com subject: FAQ
-
-
- --------
- CONTENTS
- --------
-
- [0] Miscellaneous
- [1] Mouse/Joystick/Keyboard
- [2] Video
- [3] Sound
- [4] Network
- [5] Troubleshooting
-
-
- -----------------
- [0] MISCELLANEOUS
- -----------------
-
- * under win95 or OS/2, I don't have enough memory. How can i handle with ?
-
-   Tell win95 to put more dpmi memory for your dos box.
-   Or use the -mb option.
-
-
-
- ---------------------------
- [1] MOUSE/JOYSTICK/KEYBOARD
- ---------------------------
-
- * My mouse/joystick does not work in SRB2.
-
-   First, check that the mouse/joystick is activated : go at the
-   console and type either 'use_mouse' (or use the respective
-   menuitem) or 'use_joystick'.
-
-   If it tells '0' or off than the mouse/joystick is not used,
-   set the variable to 1. eg: 'use_mouse 1'.
-
-   For the joystick, different values will support different
-   types of joystick, check the console documentation for the
-   command 'use_joystick' for more.
-
-   Even if the mouse or joystick is activated, you have to
-   set up the contols into the Setup Controls menu. That is:
-   tell what use you will make of the mouse/joystick buttons.
-
-
- ---------
- [2] VIDEO
- ---------
-
-
- * Where are the other video modes ? I have only '320x200' in the
-   Video Modes menu.
-
-   DOS
-   ---
-
-   SRB2 adds new video modes only if a VESA2 (or better) driver
-   is present. The VESA2 driver is a standard of 'talking' between a
-   program and the huge amount of different graphics cards
-   available today.
-
-   If you don't have a VESA2 driver, you can download UNIVBE, or
-   SMART DISPLAY DOCTOR from
-
-   http://www.scitechsoft.com/products/ent/free_titles.html
-
-   or if you have an S3 based card, you can download the free
-   software called 'S3VBE'.
-
-   ftp://ftp.externet.hu/pub/mirror/sac/graph/s3vbe318.zip
-   ftp://ftp.digsys.bg/pub/simtelnet/msdos/graphics/s3vbe318.zip
-   http://www.filesearching.com/cgi-bin/s?q=s3vbe318.zip
-   http://www.google.com/search?q=s3vbe318.zip
-
- * The game doesn't restore the video mode I have chosen the last time
-   I played SRB2.
-
-   The current video mode has to be made the 'default' so that it is
-   saved to the config : press the key 'D' on the Video Options menu
-   to set the current video mode the default.
-
-  * I have some problems with OpenGL mode
-
-   Have a look at the FAQ for OpenGL on the glLegacy web site:
-
-   http://www.doomnation.com/gllegacy/faqe.htm
-
- # Linux: I only have a 1024x768 (or 800x600, 1280x1024, ...) resolution
-   in fullscreen mode under X and SRB2 is really really slow. Can I
-   have lower resolutions like 320x200 in fullscreen mode as well?
-
-   Probably yes. SRB2 can only use the resolutions offered by the
-   X-Server. So if all fullscreen modes have a very high resolution you
-   have to modify /etc/XF86Config (or /etc/X11/XF86Config). Use XF86Setup
-   (or the appropriate tool coming with your distribution - sax,
-   xf86config, ...) to do this.
-   If you do not succeed there, you can enter them manually into your
-   XF86Config file. ONLY RECOMMENDED FOR USERS WHO KNOW WHAT THEY DO!
-   For a short guide on how to do this, have a look at the file
-   "Doublescan.txt".
-   In case of doubt consult the XFree86-HOWTO (or ask your system
-   administrator :).
-
- # Linux: I cannot have any fullscreen modes at all!
-
-   You have only modes above 1024x768 in your XF86Config. Proceed as
-   described above.
-
- # Linux: After a certain idle time my screensaver jams the display of
-   SRB2. I can still operate SRB2, but I do not see what's happening
-   and the screensaver won't go away.
-
-   You probably have KDE. The KDE screensaver does not obey the screensaver
-   rules (at least mine, version 1.1). The solution is to deactivate the
-   KDE screensaver and use another screensaver (like the xscreensaver,
-   e.g.). But the hell, when you started SRB2 you should have played it
-   as well and not left it alone!!!
-
- ---------
- [3] SOUND
- ---------
-
- + DOS:I can't have CD audio music, why ?
-
-   Make sure that the MSCDEX driver version 2.0 or later is loaded.
-   If it says 'MSCDEX version xxx' at game startup, and you still
-   don't hear the cd music, then probably your card doesn't respond
-   when SRB2 tries to set the cd volume. If so, make sure your sound
-   card's mixer have the cd volume set up so that you can hear something.
-
- + When the CD plays, the game is very 'jerky'. It doesn't do that when
-   I type 'cd off' in the console.
-
-   You have an old/bad cd driver, that can take up to a second to
-   respond to cd driver commands. Either get the latest version of
-   your driver, or turn cd update off. Check 'cd_udpate' in the
-   console documentation for more.
-
- * DOS:How can I *ALWAYS* disable the sounds or music of the game ?
-
-   Edit the allegro.cfg file and set digicard/midicard to 0 (none)
-
- * DOS:My sterero sound is reversed, how can I set it the right way ?
-
-   Change the console variable 'stereoreverse' to either 1 or 0.
-   Or, you can edit the allegro.cfg file, and set the 'flip_pan' variable.
-
-
- * DOS:The sounds are too 'slow', or 'low-pitched'
-
-   It seems to be a problem of the auto-detection of some 8bit sound
-   cards. You will have to set manually the 'sb_freq' value in the
-   allegro.cfg file to a lower value : 11906, 16129.
-
- * DOS:SRB2 doesn't play any sound/music, but I have a sound
-   blaster genuine/compatible card.
-
-   If you have a genuine or compatible SoundBlaster card, it is very
-   important that you set the BLASTER environment variable.
-
-   If you are playing under DOS, and never installed your sound card
-   under DOS, run the setup of your sound card for DOS.
-
-   Check if the BLASTER variable was set: type 'SET' under dos
-   (or DOSbox)
-
-   Do you see something like 'BLASTER=A220 I5 D1 ...' ?
-
-   Yes? If you don't hear sounds/music, then tweak the settings in the
-   allegro.cfg file until you get something, first try changing the
-   type of the sound card, it is not always properly detected.
-
-   No? You have to set this variable in order that your sound card is
-   detected. Run the setup that was shipped with your sound card, and
-   make sure you run the setup for DOS too, it will usually add a
-   line of the type 'SET BLASTER=... ...' in the autoexec.bat file.
-
-
- * DOS:How can I have better midi music on my 8bit sound card ?
-
-   Use the DIGMID driver, it is supported in SRB2.
-
-   What the hell is this? Well, the Gravis Ultrasound uses digital
-   samples to play midi music. On a simple 8bit card, you can use digital
-   samples too, which will sound usually better than what is output
-   by the poor fm synthesis chip of 8bit cards.
-
-   You will need to get a Gravis Ultrasound patch set, you can find
-   several ones for free on internet, it consists of a bunch of '.pat'
-   files which are the digital samples to play the midi instruments
-   (eg: piano, conga, guitar, ect.).
-
-   Check the Allegro homepage for some links to GUS patches:
-   http://alleg.sourceforge.net/digmid.html
-   http://alleg.sourceforge.net/
-   http://www.talula.demon.co.uk/allegro/digmid.html
-   http://www.talula.demon.co.uk/allegro/
-
-   Now to activate the DIGMID driver:
-
-   Set the 'midi_card' value to 8 (DIGMID) in the allegro.cfg file.
-   Make sure you leave the 'digi_voices' blank, or set it to a low
-   value, because the midi music will use digital voices.
-   At the end of the allegro.cfg file, set the 'patches' value
-   to the path, where you have installed a Gravis Ultrasound midi
-   patch set. eg: patches = d:\music\midipat\
-
- # Linux: CD music does not work or only works when run as root.
-
-   We do not encourage you to run SRB2 as root (you never know
-   what SRB2 can do to your system - it's a mighty piece of code :).
-   There is a common problem with ATAPI CD-rom drives, which are
-   treated as harddisks. Usually there is a link /dev/cdrom pointing to
-   device hd[b,c,d]. As harddisks are not supposed to be read directly
-   via this device (especially not by a common user), there are no read
-   permissions for "all". For CD-roms you can savely set read permissions
-   unless you are very paranoid. Assuming your CD-rom drive is /dev/hdc,
-   set permissions with "chmod +r /dev/hdc" (as root). SCSI CD-rom drives
-   should not have this problem. But if they do, proceed as described
-   with ATAPI drives.
-
- # Linux: The CD music volume is not set properly.
-
-   Go to the console and type "jigglecdvolume 1".
-
- -----------
- [4] NETWORK
- -----------
-
- * Where can I find Internet servers ?
-
-   For the moment there is one public server.
-   http://srb2.servegame.org/ Master server web page
-   srb2.servegame.org:28910 current Master Server
-
- * When I start SRB2 with -server or -connect it say :
-    "BinToPort: Address already in use (EADDRINUSE)"
-
-   It appears only when SRB2 crashes or when you leave with ctrl-break.
-   use -udpport 12345 (or any other free slot) on both sides (client and
-   server).
-
-   This can also happens when there is already a SRB2 running on your
-   computer if you whant to try two SRB2 running on the same computer
-   use -clientport 12345 (or any other free slot). Then the second will
-   connect to the first one.
-
- * Do you use the tcp protocol ?
-
-   No, we use the udp protocol which is faster, but don't worry udp is a
-   part of the internet protocol.
-
-
- -------------------
- [5] Troubleshooting
- -------------------
-
- # Linux: SRB2 is hung in fullscreen mode and won´t let me leave.
-   What shall I do?
-
-   Some people press the reset button, but hey, we are not in the
-   stoneage of operating systems! There are two "proper" ways to
-   get out: kill your X-Server. You can usually do this by pressing
-   "CTRL-ALT-BACKSPACE". But if you have other open applications with
-   important data (probably hacked away on your diploma thesis for 3
-   weeks without saving once) you can also kill SRB2 directly. Press
-   "CTRL-ALT-F2" and you will get to a console. Log in, type
-   "killall llxSRB2" and switch back to the X-Server with "CTRL-ALT-F7".
-   Some X-Server crash on this procedure - blame the X-Server for the
-   loss of 3 weeks work on your diploma thesis :)
diff --git a/doc/manual/manual.htm b/doc/manual/manual.htm
deleted file mode 100644
index 3fea1b66f18b694468c9103064e8c6fd1f33efd3..0000000000000000000000000000000000000000
--- a/doc/manual/manual.htm
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-	<title>
-		Sonic Robo Blast 2 Manual
-	</title>
-	<link rel="stylesheet" type="text/css" href="srb2manstyle.css">
-	<!-- Borrowed some javascript code so the height of the iframe is equal to the size of the document - Sonict -->
-	<script type="text/javascript">
-	/* free code from dyn-web.com */
-
-	function getDocHeight(doc) {
-		doc = doc || document;
-		// from http://stackoverflow.com/questions/1145850/get-height-of-entire-document-with-javascript
-		var body = doc.body, html = doc.documentElement;
-		var height = Math.max( body.scrollHeight, body.offsetHeight,
-			html.clientHeight, html.scrollHeight, html.offsetHeight );
-		return height;
-}
-
-	function setIframeHeight(id) {
-		var ifrm = document.getElementById(id);
-		var doc = ifrm.contentDocument? ifrm.contentDocument: ifrm.contentWindow.document;
-		ifrm.style.visibility = 'hidden';
-		ifrm.style.height = "10px"; // reset to minimal height in case going from longer to shorter doc
-		ifrm.style.height = getDocHeight( doc ) + "px";
-		ifrm.style.visibility = 'visible';
-	}
-	</script>
-	<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
-</head>
-<body>
-	<p class="c1">
-		<img src="manual_img/sonicname2.png" alt="SONIC" width="136" height="36">
-		<br>
-		<img src="manual_img/srb2banner.png" alt="ROBO BLAST 2" width="224" height="43">
-	</p>
-	<p class="c1">
-		<big><big><strong>Manual</strong></big></big>
-	</p>
-	<table class="cf" align="center">
-		<tr><td class="c">
-		<ul class="hmenu">
-			<li class="hmenu"><a class="hmenu" href="intro.htm" target="ifrm">Main</a></li>
-			<li class="hmenu"><a class="hmenu" href="items.htm" target="ifrm">Items</a></li>
-			<li class="hmenu"><a class="hmenu" href="playerabilities.htm" target="ifrm">Player Abilities</a></li>
-			<li class="hmenu"><a class="hmenu" href="basicplay.htm" target="ifrm">Gameplay</a></li>
-			<li class="hmenu"><a class="hmenu" href="surroundings.htm" target="ifrm">Surroundings</a></li>
-		</ul>
-		</td></tr>
-		<tr><td class="c">
-		<ul class="hmenu">
-			<li class="hmenu"><a class="hmenu" href="multiplayer.htm" target="ifrm">Multiplayer</a></li>
-			<li class="hmenu"><a class="hmenu" href="zones.htm" target="ifrm">Zones</a></li>
-			<li class="hmenu"><a class="hmenu" href="controls.htm" target="ifrm">Controls</a></li>
-			<li class="hmenu"><a class="hmenu" href="consolecommands.htm" target="ifrm">Console Commands</a></li>
-			<li class="hmenu"><a class="hmenu" href="misc.htm" target="ifrm">Misc</a></li>
-		</ul>
-		</td></tr>
-	</table>
-	<hr>
-	<p class="c1">
-		<!-- The "onload" property of the iframe makes an error when validated through the W3C validation checker. -->
-		<!-- This will not be fixed as it isn't worth the time to fix it up properly. - Sonict -->
-		<iframe id="ifrm" name="ifrm" src="intro.htm" onload="setIframeHeight(this.id)"> </iframe>
-	</p>
-</body>
-</html>
diff --git a/doc/rules.txt b/doc/rules.txt
deleted file mode 100644
index 4bbb8cdc1f786022bc0f090154de4e7733080d32..0000000000000000000000000000000000000000
--- a/doc/rules.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-SVN-RULES
-
-- As you can see, there is sub-directory in the repository, one for eatch
-  platform (djgpp (dos),win32,SDL) the root directory is for all platform,
-  so take care of the order we have put in.
-- do not commit/upload tests of bugged code, try to fix a maximum of know
-  bugs and update know bugs list in source.txt. If you must commit your source
-  make your code in #ifdef so we can disable it
-- SRB2 is a modification of doom/Doom Legacy source. We allow additionnal feature
-  and visual addition.
-- Maximize communications between members, do not impose your changes, if your
-  are not sure about a feature/change, talk about it in irc://irc.esper.net/srb2 chat room.
-
-CODE-RULES
-
-- We use no tab, 4 space indent, and tab size 8 (in case some tab have filtred
-  and for makefile)
-- Self documented code, variable and function must have a name that help
-  understand the code, so do not call variable and function a,b, a2, ...
-- the usage of extern in a c file is prohibited, except for declaration of a
-  function with body (so it is like public keyword in c++)
-  Also function protos haren't allowed for external function, put it un the
-  corresponding h file.
-- Try to minimize #ifdef usage for :
-  - code readability
-  - the main code is for all port so if something is good for a platform all
-    platform can benefit by this feature
-- Take care of platform dependent code, we would like to have code that work
-  on Dos, Win32, SDL, ... little and big endian, software/Glide/OpenGl.
-
-GOOD PRACTICE
-
-- Try to put as mush static variable and function on module so it help to
-  understand the role of the varaible/function in the module also this
-  help the compiler to optimize
-- minimise global variable
-- make a log of your work, so you don't need to put a lot of comment in
-  the code, this will also help us to update the what's new section of doc
-  when doing final release
diff --git a/doc/source.txt b/doc/source.txt
deleted file mode 100644
index 5926d95fb94d9a31edccac1266cbfdb9661bda07..0000000000000000000000000000000000000000
--- a/doc/source.txt
+++ /dev/null
@@ -1,240 +0,0 @@
-
-1. Compile SRB2
-2. Explanation of the code
- 2.1 The memory model
- 2.2 Hardware Texture model
-
-1. Compile SRB2
-=================
-
-DOS
----
-
-need:
-- djgpp 2.03     (http://www.delorie.com/djgpp/)
-- allegro 3.12   (http://alleg.sourceforge.net/index.html)
-(
-- libsocket 0.7.4 (beta 4) or better
-   for use with Winsock 1.1 (example Windows 3.1)
-  (http://www.phekda.freeserve.co.uk/richdawe/lsck/lsck.htm)
-   OR
-- Wattcp-32 v2.2 dev.rel 6 or better
-   For use with a packet driver
-  (http://www.bgnett.no/~giva/)
-  (http://groups.yahoo.com/group/watt-32/)
-  (http://groups.yahoo.com/group/watt-32/files/v2.2/)
-)
-- bcd 1.03 (inlcude in this package)
-- gcc 2.95.2 is recommended
-- nasm 0.98 (or better)     (http://nasm.sourceforge.net/)
-
-compile:
-make
-make WATTCP=1 (to make a Wattcp-32 version)
-
-debug:
-when craching SRB2 will return eip
-type make asm, then you will have a 8 megs srb2.s (a assembler file)
-the you can find the faulting instruction and function
-
-------------------------------------------------------------------------
-
-Linux/SDL
------
-
-need:
-- tested with gcc 2.95 and 3.X.
-- SDL 1.2
-- SDL_mixer 1.2
-- ibogg and libvorbis (http://Xiph.org/)
-- nasm 0.98 (or better)(http://nasm.sourceforge.net/) only with 2.95, else add CC30=1
-
-compile
-make LINUX=1
-
-debug:
-gdb ?
-
-------------------------------------------------------------------------
-
-Win32
------
-
-need :
-- glide 3.x sdk (optional)  (http://www.3dfx.com)
-- directx6 sdk (or higher)  (http://www.micosoft.com/directx)
-- nasm 0.98 (or better)     (http://nasm.sourceforge.net/)
-- use src\win32\wLegacy.dsp
-- VC6 should also work with VC5, and VS.NET 200X
-
-debug:
-press on "step over" with the release version (there is some debug info
-on it). Then change the eip in the regster window when you will type
-enter the edi will go to the faulting instruction. don't forget that
-you can follow the stack for calls.
-You can also use trace with the debug version but add -win and -nomouse.
-
-------------------------------------------------------------------------
-
-Win32/minGW/SDL
------
-
-need:
-- tested with gcc 2.95 and 3.X.
-- can also use Dev-C++ 5.0 beta 9 (4.9.9.0) from http://www.bloodshed.net/dev/devcpp.html
-- SDL 1.2
-- SDL_mixer 1.2
-
-compile
-make minGW=1 SDL=1
-or use src\SDL\Win32SDL.dev with Dev-C++ 4.9.9.0 or later
-
-debug:
-gdb ?
-
-------------------------------------------------------------------------
-
-WinCE/SDL WIP
------
-
-need:
-- ActiveSync 3.8
- http://www.microsoft.com/windowsmobile/downloads/activesync38.mspx
-
-- ActiveSync 3.7.1, if 3.8 isn't available for your language
- http://www.microsoft.com/windowsmobile/downloads/activesync37.mspx
-
-- eMbedded Visual Tools 3.0 - 2002 Edition
- http://www.microsoft.com/downloads/details.aspx?FamilyID=f663bf48-31ee-4cbe-aac5-0affd5fb27dd
-
-- Pocket PC 2000 SDK
- http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3f4d7b-de2a-4e1a-a175-26a68c301ac4
-
-- Pocket PC 2002 SDK (eMVT 3.0 2002 Ed. comes with this)
- http://www.microsoft.com/downloads/details.aspx?FamilyID=2dbee84a-bd94-4167-b817-2b2e548b2e92
-
-- Pocket PC 2002 SDK Emulator Images (eMVT 3.0 2002 Ed. comes with this)
- http://www.microsoft.com/downloads/details.aspx?FamilyID=25f4de97-ae80-477a-9df1-496b85b3d3e3
-
-- eMbedded Visual C++ 4.0
- http://www.microsoft.com/downloads/details.aspx?familyid=1DACDB3D-50D1-41B2-A107-FA75AE960856
-
-- eMbedded Visual C++ 4.0 SP3 (Win CE 4.0-4.2)
- http://www.microsoft.com/downloads/details.aspx?FamilyID=5bb36f3e-5b3d-419a-9610-2fe53815ae3b
-
-  OR
-
-- eMbedded Visual C++ 4.0 SP4 (No SH3 support,Win CE 4.0-5.0 support)
- http://www.microsoft.com/downloads/details.aspx?FamilyID=4a4ed1f4-91d3-4dbe-986e-a812984318e5
-
-- eMbedded Visual C++ 4.0 Update 5625 (SP4 only)
- http://www.microsoft.com/downloads/details.aspx?FamilyID=aa282a6d-6f57-436d-8c10-0ec02d94f5b1
-
-- Windows CE: Standard Software Development Kit
- http://www.microsoft.com/downloads/details.aspx?familyid=a08f6991-16b0-4019-a174-0c40e6d25fe7
-
-- SDK for Windows Mobile 2003-based Pocket PCs
- http://www.microsoft.com/downloads/details.aspx?FamilyId=9996B314-0364-4623-9EDE-0B5FBB133652
-
-- Emulator Images for Windows Mobile 2003 Second Edition software for Pocket PC
- http://www.microsoft.com/downloads/details.aspx?familyid=5C53E3B5-F2A2-47D7-A41D-825FD68EBB6C
-
-- Microsoft Device Emulator 1.0 Community Preview
- http://beta.microsoft.com Use Guest ID "MSDEVICE" to access the Community Preview website
-
-- Windows CE Utilities for Visual Studio .NET 2003 Add-on Pack 1.1
-  (if you also have VS 2003 installed, you need this to install Win CE 5.0 SDK, else no need)
- http://www.microsoft.com/downloads/details.aspx?FamilyId=7EC99CA6-2095-4086-B0CC-7C6C39B28762
-
-- Windows CE 5.0: Standard Software Development Kit (eMC++ 4 SP4 only)
- http://www.microsoft.com/downloads/details.aspx?FamilyID=fa1a3d66-3f61-4ddc-9510-ae450e2318c3
-
-- SDL 1.27 (use patch and zip in tools\SDL1.2.7_CE)
-
-compile
-use src\SDL\WinCE\SRB2CE.vcw
-
-debug:
-?
-
-
-2. Explanation of the code
-==========================
-
- 2.1 The memory model (original) (z_zone.c) (by BP)
- --------------------
-
- SRB2 allocate a heap of 6/32/48 megs at begining and provide a Z_Malloc function
- to allocate in this heap.
-
-   Z_Malloc( int size,int tag,void* user )
-
-    size is the size in byte
-    tag can be : PU_STATIC   allocated static (like malloc do)
-                             call Z_Free to free it
-                 PU_LEVEL    same as static but the zone is "tagged" with the
-                             tag PU_LEVEL, when calling
-                             Z_FreeTag (PU_LEVEL, PU_LEVEL) all zone tagged
-                             with PU_LEVEL are freed (at the end of the level)
-                 PU_CACHE    this one _can_ be freed automatiquely by one other
-                             call to Z_Malloc. the *user point to a pointer
-                             to this zone so when freed automatiquely the
-                             pointer is set to NULL so eatch time you use it
-                             you must check if the pointer is not NULL and
-                             reload it.
-
- (...)
-
- 2.2 Hardware Texture model (by BP)
- --------------------------
-
- Eatch texture/patch/flats/pic in SRB2 are converted to hardware texture at
- runtime (the GlideMipmap_s structure (hw_data.h)). I will call hardware
- texture a gr_texture so there is no confusion.
-
- To remind you :
-  - Texture are set of patch and are associate to linedefs (walls) can be
-    upper, lower or middle texture. It can have hole on it.
-  - patch are sprites (the doom patch are run of vertical lines)
-  - flats are used for floors and ceiling of sectors and have size of 64x64
-    it can't have hole on it
-  - pic are new legacy format for picture, it can only handle plain texture
-    like flats it is now used for hud in full screen for the main picture
-    of legacy and for coronas (the format was extended to handle 32 bit color
-    or intensity + alpha, not all are implemented at this time)
-
- Since patch, flat and pic are basic structure represented by only one lump in
- the wad, the wad loader allocate for eatch lump a GlideMipmap_s (cache3Dfx)
- and init data field to NULL. Since the data structure is allocated in
- PU_3DFXCACHE (like PU_CACHE) the data will be initilised when needed
- (hw_cache.c).
-
- The GlideMipmap_s structures for textures are initialized on
- HWR_PrepLevelCache (hw_cache.c) it is called in P_SetupLevel (load level)
- the number of textures is computed with TEXTURE1, TEXTURE2 lumps since this
- can be changed in runtime in SRB2 (load a wad while runing) it must be
- reallocated. Well, at this time it is realloceted at eatch level start. We
- can do better, since numtextures change only when a wad is loaded.
-
- The 3dfx driver use glide3, it load gr_texture in gr_texture memory of the
- card in fifo order when there is no more place it remove the first gr_texture,
- the downloaded field of GlideMipmap_s go to false and when needed it is
- reloaded in gr_texture memory. In OpenGl, since OpenGl keep texture in there
- own memory and handle gr_texture memory of the card we no more need to
- redownload it but if we not free time to time gr_texture memory in opengl,
- it will get alot of memory, so the gr_texture memory is cleared at eatch
- new level (same time of texture reallocation). Opengl and 3dfx link the
- loaded gr_texture with the nextmipmap field of GlideMipmap_s so before clear
- textures of the heap we MUST free gr_texture memory of OpenGl or 3dfx !
-
- SRB2 can also draw patch with a differant colormap (thanks to Hurdler).
- When needed it create the same gr_texture but just with a differant colormap.
- This one is linked with the original in the GlideMipmap_s with the
- nextcolormap field.
-
- So when a polygone with a gr_texture must be drawn, first we check if the
- gr_textures is not allready loaded in hadware memory (downloaded field) if
- not then we check if gr_texture data is there (not grabbed by z_malloc
- function) if not we must recompute it eatch type of gr_texture (texture,
- patch, flat, pic have there own methode) the we can send the gr_texture
- to 3dfx or OpenGl.
diff --git a/doc/specials.html b/doc/specials.html
deleted file mode 100644
index 2cc840632e4a32264dc0b089ab76fb8647683c38..0000000000000000000000000000000000000000
--- a/doc/specials.html
+++ /dev/null
@@ -1,1992 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
-<title>Sonic Robo Blast II - Specials Reference Document</title>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="blue" alink="blue">
-
-<h1><big>SRB2 Specials Reference Document</big></h1>
-
-<p><i>Last updated May 27, 2008</i></p>
-
-<p><i>For v1.1 Private Beta</i></p>
-
-<p>This is the SRB2 Specials Reference Document. It is designed to be the ultimate
-reference for effects used in SRB2. As such, it is rather technical in areas and quite
-concise, and is not something a beginner with level design should be dealing with.</p>
-
-<h1><a name="things"></a>Thing Types</h1>
-
-<p>In general, thing bitsets have 4 flags and 3 digits for their height. The bitset is
-0xAAAB, where AAA is the object's height above ground, and B are the Easy, Normal, Hard,
-and Deaf flags. To get the bitset on a normal object, multiply the height desired by 16,
-and then add the existant B. Some objects use 32 as this number, and they will be noted.
-Objects that multiply by 16 can be placed up to 4095 units in the air, while objects that
-multiply by 32 can be placed up to 2047 units in the air. 
-
-<ul>
-  <li><u><big><big>Player Starts</big></big></u><ol>
-      <h3><a name="t1"></a>1 - Player 01 Start</h3>
-      <p>This is the start for the first player in single player mode, cooperative mode, or race
-      mode. This start must be placed on every map, as it is what the game defaults to if the
-      start it is attempting to find isn't there. If there is no Player 1 Start on the map, and
-      the game is confused over where to spawn the player, the game will crash outright.</p>
-      <p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
-      multiplied by 32 to give height, not 16.</p>
-      <h3><a name="t2"></a>2 - Player 02 Start</h3>
-      <p>This is the start for the second player in cooperative and race mode.</p>
-      <p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
-      multiplied by 32 to give height, not 16.</p>
-      <h3><a name="t3"></a>3 - Player 03 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t4"></a>4 - Player 04 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t5"></a>5 - Player 05 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t6"></a>6 - Player 06 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t7"></a>7 - Player 07 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t8"></a>8 - Player 08 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t9"></a>9 - Player 09 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t10"></a>10 - Player 10 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t11"></a>11 - Player 11 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t12"></a>12 - Player 12 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t13"></a>13 - Player 13 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t14"></a>14 - Player 14 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t15"></a>15 - Player 15 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t16"></a>16 - Player 16 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t17"></a>17 - Player 17 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t18"></a>18 - Player 18 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t19"></a>19 - Player 19 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t20"></a>20 - Player 20 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t21"></a>21 - Player 21 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t22"></a>22 - Player 22 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t23"></a>23 - Player 23 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t24"></a>24 - Player 24 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t25"></a>25 - Player 25 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t26"></a>26 - Player 26 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t27"></a>27 - Player 27 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t28"></a>28 - Player 28 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t29"></a>29 - Player 29 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t30"></a>30 - Player 30 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t31"></a>31 - Player 31 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t32"></a>32 - Player 32 Start</h3>
-      <p>See Thing <a href="#t2">2</a> for more information.</p>
-      <h3><a name="t33"></a>33 - Player Match Start</h3>
-      <p>This is the start for players in Match and Chaos modes. They should also be placed in
-      Capture the Flag maps as well. There should be 32 of these in a map to assure proper
-      randomization. While it's unelegant, they can be stacked on top of each other without
-      negative effect.</p>
-      <p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
-      multiplied by 32 to give height, not 16.</p>
-      <h3><a name="t34"></a>34 - CTF Team Start (Red)</h3>
-      <p>This is the start for players on the red team in Capture the Flag mode. There should be
-      32 of these in a map to assure proper randomization. While it's unelegant, they can be
-      stacked on top of each other without negative effect.</p>
-      <p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
-      multiplied by 32 to give height, not 16.</p>
-      <h3><a name="t35"></a>35 - CTF Team Start (Blue)</h3>
-      <p>This is the start for players on the blue team in Capture the Flag mode. There should
-      be 32 of these in a map to assure proper randomization. While it's unelegant, they can be
-      stacked on top of each other without negative effect.</p>
-      <p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
-      multiplied by 32 to give height, not 16.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Enemies</big></big></u><ol>
-      <h3><a name="t100"></a>100 - Crawla (Blue)</h3>
-      <p>These are the blue ground enemies found in the one player stages. They can't move off
-      of cliffs and are exceedingly slow.</p>
-      <h3><a name="t101"></a>101 - Crawla (Red)</h3>
-      <p>These are the red ground enemies found in the one player stages. They can't move off
-      cliffs and are relatively slow.</p>
-      <h3><a name="t102"></a>102 - Stupid Dumb Unnamed RoboFish (tm)</h3>
-      <p>This is the little fish in Greenflower Zone. The angle determines the jump height, with
-      0 being the old jump style. Note that the jump height is based on force, not units, so
-      experimentation will be necessary to get the correct height.</p>
-      <h3><a name="t103"></a>103 - Yellow Buzz</h3>
-      <p>This enemy flies at a moderate speed directly at the player.</p>
-      <h3><a name="t104"></a>104 - Red Buzz</h3>
-      <p>This enemy flies at a relatively high speed directly at the player.</p>
-      <h3><a name="t105"></a>105 - Jetty-Syn Bomber</h3>
-      <p>This is a highly mobile flying enemy with a bomb that it drops on the player from
-      directly above. It is considered highly difficult to kill, and should only be used in
-      situations where the stage is supposed to be difficult.</p>
-      <h3><a name="t106"></a>106 - Jetty-Syn Gunner</h3>
-      <p>This is a highly mobile flying enemy with a gun that it fires at the player with high
-      accuracy. It is considered highly difficult to kill, and should only be used in situations
-      where the stage is supposed to be difficult.</p>
-      <h3><a name="t107"></a>107 - Crawla Commander</h3>
-      <p>This is the grey floating enemy in the opening room of Techno Hill Zone Act 2. It is
-      quite fast and will start bouncing after taking the first hit. It is significantly
-      challenging, although a spindash will kill it given time.</p>
-      <h3><a name="t108"></a>108 - Deton</h3>
-      <p>This is the red spherical enemy in Techno Hill Zone Act 2. Upon seeing the player, it
-      makes a mad dash straight for them. With the exception of the <a href="#t404">Armageddon
-      Shield</a>, Detons are invincible, and must be avoided by running behind a wall or another
-      enemy.</p>
-      <h3><a name="t109"></a>109 - Skim</h3>
-      <p>This is an enemy that floats on the surface of the water, dropping bombs into the water
-      below. It is not currently used in any of the Single Player stages, but it is fully
-      operational. The designer does not have to put them on the surface of the water, they know
-      where it is.</p>
-      <h3><a name="t110"></a>110 - THZ Turret</h3>
-      <p>This is the turret from Techno Hill Zone Act 2. It fires large bursts of laser fire at
-      the player with high accuracy. It is invincible unless it is somehow dipped into water.</p>
-      <h3><a name="t111"></a>111 - Popup Turret</h3>
-      <p>This is a small turret that pops up now and then and shoots. The object's angle is a
-      value defining the delay between shooting.</p>
-      <h3><a name="t112"></a>112 - Sharp</h3>
-      <p>This is a blue enemy with spikes on top if it. It starts off by slowly chasing the player,
-      then it fades to red and runs after the player, and is invincible until it fades back to red.</p>
-      <h3><a name="t113"></a>113 – Jet Jaw</h3>
-      <p>This is an underwater enemy that tries to bite at the player, which can be found in
-      Deep Sea Zone.</p>
-      <h3><a name="t114"></a>114 – Snailer</h3>
-      <p>This is an incomplete enemy.</p>
-      <h3><a name="t115"></a>115 – Bird Aircraft Strike Hazard (B.A.S.H.)</h3>
-      <p>This is the red vulture-like enemy in Arid Canyon Zone. If it sees a player, it lifts off and
-      charges at him. Collision with a wall will send it plummeting.</p>
-      <h3><a name="t116"></a>116 – Pointy</h3>
-      <p>This is the orbinaut enemy that has spikes circling around it. None of the single player stages
-      currently use him. You have to place him in a map by using a WAD editor, he can't be placed using
-      objectplace.</p>
-      <h3><a name="t117"></a>117 – Robo-Hood</h3>
-      <p>This is the green enemy from Castle Eggman Zone, which shoots arrows at the player.</p>
-      <h3><a name="t118"></a>118 – CastleBot FaceStabber</h3>
-      <p>This is the large grey enemy from Castle Eggman Zone. It slowly trudges towards the player,
-      and if the player in range, lunges at them with his sword.</p>
-      <h3><a name="t119"></a>119 – Egg Guard</h3>
-      <p>This is the enemy from Castle Eggman Zone that wields a protective shield.</p>
-      <h3><a name="t120"></a>120 – Green Snapper</h3>
-      <p>This is the green turtle enemy from Arid Canyon Zone. This enemy behaves exactly like a blue
-      crawla does. The circumference of its shell is covered with spikes, so the only way to destroy it
-      is by jumping on top of it.</p>
-      <h3><a name="t121"></a>121 – Minus</h3>
-      <p>This is the digging enemy from Arid Canyon Zone. It burrows underground towards the player, and
-      once it's directly underneath, it bursts out from under the ground, jumping up and hurting the player.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Bosses and their associated items (if any)</big></big></u><ol>
-      <h3><a name="t200"></a>200 - Egg Mobile (Boss 1)</h3>
-      <p>The boss of Greenflower Zone and Castle Eggman Zone. He moves around firing at the
-      player, and after taking six hits, he dashes at the player.</p>
-      <p>Giving the boss the Deaf flag will make him have spikeballs, like CEZ3, and giving him
-      the Multi flag will make the level end when he is dead. To place him above ground,
-      multiply by 32 to give height, not 16.</p>
-      <h3><a name="t201"></a>201 - Egg Slimer (Boss 2)</h3>
-      <p>This is the boss of Techno Hill Zone. It requires an axis point at the center to
-      function, and it goes in a circle around the axis point dropping slime. After 6 hits, he
-      stops going in a circle, and bouncing at the player, spewing a lot more slime.</p>
-      <p>The Multi flag will make the level end when he is dead.</p>
-      <h3><a name="t201"></a>202 - Sea Egg (Boss 3)</h3>
-      <p>This is the boss of Deep Sea Zone. More information will be supplied later.</p>
-      <p>The Multi flag will make the level end when he is dead.</p>
-      <h3>203 - Eggscalibur (Boss 4)</h3>
-      <p>This is the boss of Castle Eggman Zone. More information will be supplied later.</p>
-      <p>The Multi flag will make the level end when he is dead.</p>
-      <h3><a name="t290"></a>290 - Boss Flypoint</h3>
-      <p>This is the location the boss will fly to after being killed.</p>
-      <h3><a name="t291"></a>291 - Egg Capsule Center</h3>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Collectibles</big></big></u><ol>
-      <h3><a name="t300"></a>300 - Ring</h3>
-      <p>This is a normal ring. Pick this up to get one ring.</p>
-      <p>Giving the deaf tag to a ring will cause it to float 31 units above the ground. This
-      does stack with bitsets, allowing rings to be a total of 4127 units above the ground at
-      maximum.</p>
-      <h3><a name="t301"></a>301 - Bounce Ring</h3>
-      <p>Picking this up gives you more ammo for this particular ring weapon.  You cannot fire
-      the weapon, however, if you do not have the associated panel.
-      <h3><a name="t302"></a>302 - Rail Ring</h3>
-      <p>See thing <a href="#t301">#301</a>.</p>
-      <h3><a name="t304"></a>304 - Automatic Ring</h3>
-      <p>See thing <a href="#t301">#301</a>.</p>
-      <h3><a name="t305"></a>305 - Explosion Ring</h3>
-      <p>See thing <a href="#t301">#301</a>.</p>
-      <h3><a name="t305"></a>306 - Scatter Ring</h3>
-      <p>See thing <a href="#t301">#301</a>.</p>
-      <h3><a name="t305"></a>307 - Grenade Ring</h3>
-      <p>See thing <a href="#t301">#301</a>.</p>
-      <h3>310 - CTF Flag (Red)</h3>
-      <p>This is the red team's flag in capture the flag mode. If the blue team takes this to
-      their team base (sector type <a href="#s16384">16384</a>), they score a point.</p>
-      <h3><a name="t307"></a>311 - CTF Flag (Blue)</h3>
-      <p>This is the blue team's flag in capture the flag mode. If the red team takes this to
-      their team base (sector type <a href="#s12288">12288</a>), they score a point.</p>
-      <h3><a name="t308"></a>312 - Special Stage Token</h3>
-      <p>This token gives the player a chance at the special stage after the current stage has
-      ended. If more than one token is collected, the player gets that many chances at the
-      special stages, continuing until they run out of tokens or have all the emeralds.</p>
-      <h3><a name="t309"></a>313 - Emerald 1 (Green)</h3>
-      <p>This object gives the player the first emerald as a pickup object, instead of by
-      completing a special stage.</p>
-      <h3><a name="t310"></a>314 - Emerald 2 (Orange)</h3>
-      <p>This object gives the player the second emerald as a pickup object, instead of by
-      completing a special stage.</p>
-      <h3><a name="t311"></a>315 - Emerald 3 (Pink)</h3>
-      <p>This object gives the player the third emerald as a pickup object, instead of by
-      completing a special stage.</p>
-      <h3><a name="t312"></a>316 - Emerald 4 (Blue)</h3>
-      <p>This object gives the player the fourth emerald as a pickup object, instead of by
-      completing a special stage.</p>
-      <h3><a name="t313"></a>317 - Emerald 5 (Red)</h3>
-      <p>This object gives the player the fifth emerald as a pickup object, instead of by
-      completing a special stage.</p>
-      <h3><a name="t314"></a>318 - Emerald 6 (Light Blue)</h3>
-      <p>This object gives the player the sixth emerald as a pickup object, instead of by
-      completing a special stage.</p>
-      <h3><a name="t315"></a>319 - Emerald 7 (Grey)</h3>
-      <p>This object gives the player the seventh emerald as a pickup object, instead of by
-      completing a special stage.</p>
-      <h3><a name="t316"></a>320 - Emerald Hunt Location</h3>
-      <p>This is one of the three emeralds to be used in Hunting mode.</p>
-      <h3>323 - Emerald Spawn</h3>
-      <p>Spawn location for emeralds in Match mode.</p>
-      <h3><a name="t330"></a>330 - Bounce Ring Panel</h3>
-      <p>This is a match weapon panel. The Bounce Ring throws a slow ring that will bounce when
-      it hits walls.</p>
-      <p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
-      does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
-      maximum.</p>
-      <h3><a name="t331"></a>331 - Rail Ring Panel</h3>
-      <p>This is a match weapon panel. The Rail Ring gives the player an instantaneous shot, that
-      strikes its target the instant its fired, however there is a long downtime between shots.
-      Being shot by a rail ring causes more kickback than normal.</p>
-      <p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
-      does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
-      maximum.</p>
-      <h3><a name="t332"></a>332 - Automatic Ring Panel</h3>
-      <p>This is a match weapon panel. The Automatic Ring gives the player a fire rate of 17.5
-      rings per second.</p>
-      <p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
-      does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
-      maximum.</p>
-      <h3><a name="t333"></a>333 - Explosion Ring Panel</h3>
-      <p>This is a match weapon panel. The Explosion Ring throws a slow ring that explodes into
-      many fragments upon striking a wall or another player. Being struck directly by the
-      Explosion Ring causes more kickback than usual.</p>
-      <p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
-      does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
-      maximum.</p>
-      <h3><a name="t334"></a>334 - Scatter Ring Panel</h3>
-      <p>This is a match weapon panel. The Scatter Ring throws 5 rings in a plus-shape.</p>
-      <p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
-      does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
-      maximum.</p>
-      <h3><a name="t335"></a>335 - Grenade Ring Panel</h3>
-      <p>This is a match weapon panel. The Grenade Ring throws a grenade that will explode
-      if an opposing player gets too close to it.  It will also explode automatically after a
-      while if left untouched.</p>
-      <p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
-      does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
-      maximum.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Boxes</big></big></u><ol>
-      <h3><a name="t400"></a>400 - Super Ring (10 Rings)</h3>
-      <p>This monitor gives the player ten rings.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t402"></a>402 - Attraction Shield</h3>
-      <p>Also known as the yellow shield and god shield, this shield protects the player from a
-      single hit, then disappears. It also attracts all normal rings, spilled or on the map to
-      the player with the shield. It also protects the player from electric damage.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t403"></a>403 - Force Shield</h3>
-      <p>Also known as the blue shield, this shield protects the player from two hits, then
-      disappears. If the spin&nbsp; button is pressed while jumping, it is also possible to
-      reflect many projectiles.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t404"></a>404 - Armageddon Shield</h3>
-      <p>Also known as the black shield, this shield protects the player from a single hit,
-      triggering upon a hit. The shield can also be triggered by jumping, and then hitting the
-      spin key in midair. When the shield is triggered, a flash of light damages everything
-      within a large radius, destroying the shield in the process.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t405"></a>405 - Whirlwind Shield</h3>
-      <p>This shield protects the player from a single hit, then disappears. If the player does
-      a jump-spin, they will do a second jump in midair, making the maximum height that the
-      player can jump with the shield 224.</p>
-      <p>Versions of SRB2 previous to 1.09 had the Basic Shield in this object number, so make
-      sure to note that if the player loads the map in an older version, that is what they will
-      see.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t406"></a>406 - Elemental Shield</h3>
-      <p>Also known as the green&nbsp; shield, this shield protects the player from a single
-      hit, then disappears. While this shield is active, the player cannot drown. It also
-      protects the player from water, fire, and other damage. When the player with this shield
-      spin-dashes, it leaves a trail of fire, which deals fire damage to any enemy that touches
-      it.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t407"></a>407 - Super Sneakers</h3>
-      <p>This is a monitor powerup that gives the player about 2x running speed for 20 seconds.</p>
-      <h3><a name="t408"></a>408 - Invincibility</h3>
-      <p>This is a monitor powerup that prevents all damage to the player for 20 seconds.</p>
-      <h3><a name="t409"></a>409 - Extra Life</h3>
-      <p>This powerup monitor features the player's face, and provides an extra life when
-      struck.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t410"></a>410 - Eggman</h3>
-      <p>This monitor damages the player if they strike it.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t411"></a>411 - Teleporter</h3>
-      <p>This monitor mixes up all locations of players, teleporting them to the location of a
-      random other player. It has no effect in Single Player or in multiplayer modes while only
-      one player is in the game.</p>
-      <p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
-      monitor) from the weighted table in modes that support respawn. Elsewise, they will
-      respawn as the same monitor.</p>
-      <h3><a name="t412"></a>412 - Random Box</h3>
-      <p>Destroy this monitor and you will get a random powerup, like the boxes in Sonic 2 race
-      mode.</p>
-      <h3><a name="t412"></a>413 - Gravity Boots Box</h3>
-      <p>Destroy this monitor and the gravity will be flipped for a short time.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Interactive Objects (friendly or otherwise)</big></big></u><ol>
-      <h3><a name="t500"></a>500 - Air Bubble Patch</h3>
-      <p>This is the air bubble patch used underwater to give players air. It spawns big bubbles
-      randomly which replenish the player's air.</p>
-      <h3><a name="t501"></a>501 - End Level Sign</h3>
-      <p>This is the sign at the end of the stage. When the player enters the <a href="#s8192">Exit
-      Sector</a>, this sign will start to spin, and end on the face of the player. This sign
-      does not make the stage end, it's just a visual effect for it.</p>
-      <h3><a name="t502"></a>502 - Star Post</h3>
-      <p>Star Posts allow the player to respawn after dying at a point other than the beginning
-      of the stage. There can be up to 32 Star Posts in a map, and they work with the bitsets.</p>
-      <p>Instead of controlling the difficulty and deaf flags, the final digit of the bitset
-      determines the number of the Star Post. 0x0000 is the first one and 0x000f is the
-      sixteenth one. Note that since this overwrites all of the difficulty flags, they will
-      appear in all difficulties, even though 0x0000 would normally mean it wouldn't appear in
-      any difficulty level.</p>
-      <h3><a name="t520"></a>520 - Spikeball</h3>
-      <p>Just like thing <a href="#t521">521</a>, except they do normal damage to the player on
-      contact. </p>
-      <h3><a name="t521"></a>521 - Spikeball (Special Stage)</h3>
-      <p>These are the spikeballs used in the special stages. They harm the player for damage on
-      contact, but only if they are carrying rings.</p>
-      <h3><a name="t522"></a>522 - Ceiling Spike</h3>
-      <p>This is a downward pointing spike for use on the ceiling. Touching the pointy end of
-      the spike deals damage to the player.</p>
-      <p>By default, it attaches itself to the ceiling, and the height part of the bitset
-      measures how far down from the ceiling, instead of up from the floor.</p>
-      <h3><a name="t523"></a>523 - Floor Spike</h3>
-      <p>This is a upward pointing spike for use on the floor. Touching the pointy end of the
-      spike deals damage to the player.</p>
-      <h3><a name="t524"></a>524 - Big Floating Mine</h3>
-      <p>When you get close, this mine will start to follow you. Touches you, and it explodes.</p>
-      <h3><a name="t540"></a>540 - THZ Fan</h3>
-      <p>This is the fan used inside the secret passage in Techno Hill Zone Act 1. It pushes the
-      player slowly up until it reaches the maximum height it can. The maximum height is
-      determined by the angle, measured in normal fracunits (It can go above 360 just fine).</p>
-      <h3><a name="t541"></a>541 - THZ Gas Jet</h3>
-      <p>This is the gas jet used at the end of Techno Hill Zone Act 1. It launches the player
-      straight up on regular intervals about the same height as a yellow spring pointing up.</p>
-      <h3><a name="t550"></a>550 - Yellow Spring (Up)</h3>
-      <p>This is a yellow spring pointing straight up. It has a medium amount of force behind
-      it.</p>
-      <h3><a name="t551"></a>551 - Red Spring (Up)</h3>
-      <p>This is a red spring pointing straight up. It has a large amount of force behind it.</p>
-      <h3><a name="t552"></a>552 - Blue Spring</h3>
-      <p>This is a blue spring pointing straight up. It has a small amount of force behind it.
-      The intent is for this spring to be used underwater. It has about the same effect
-      underwater as a yellow spring does above water.</p>
-      <h3><a name="t553"></a>553 - Yellow Spring (Down)</h3>
-      <p>This is a yellow spring pointing straight down. It has a medium amount of force behind
-      it.</p>
-      <h3><a name="t554"></a>554 - Red Spring (Down)</h3>
-      <p>This is a red spring pointing straight down. It has a large amount of force behind it.</p>
-      <h3><a name="t555"></a>555 - Yellow Spring (Diagonal Up)</h3>
-      <p>This is a yellow spring pointing upwards and in the direction the thing is facing. It
-      has a medium amount of force behind it. When the player touches this spring, he will
-      automatically turn to face the direction the spring is launching the player.</p>
-      <h3><a name="t556"></a>556 - Red Spring (Diagonal Up)</h3>
-      <p>This is a red spring pointing upwards and in the direction the thing is facing. It has
-      a large amount of force behind it. When the player touches this spring, he will
-      automatically turn to face the direction the spring is launching the player.</p>
-      <h3><a name="t557"></a>557 - Yellow Spring (Diagonal Down)</h3>
-      <p>This is a yellow spring pointing downwards and in the direction the thing is facing. It
-      has a medium amount of force behind it. When the player touches this spring, he will
-      automatically turn to face the direction the spring is launching the player.</p>
-      <h3><a name="t558"></a>558 - Red Spring (Diagonal Down)</h3>
-      <p>This is a red spring pointing downward and in the direction the thing is facing. It has
-      a large amount of force behind it. When the player touches this spring, he will
-      automatically turn to face the direction the spring is launching the player.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Special placement patterns</big></big></u><ol>
-      <h3><a name="t600"></a>600 - 5 Vertical Rings (Yellow Spring)</h3>
-      <p>This is a chain of five rings intended to be used with thing <a href="#t550">550</a>.
-      Do not use ring chain objects in any mode where items respawn, because ring chains do not
-      respawn. Use bitsets to create chains in any mode with item respawn.</p>
-      <h3><a name="t601"></a>601 - 5 Vertical Rings (Red Spring)</h3>
-      <p>This is a chain of five rings intended to be used with thing <a href="#t551">551</a>.
-      Do not use ring chain objects in any mode where items respawn, because ring chains do not
-      respawn. Use bitsets to create chains in any mode with item respawn.</p>
-      <h3><a name="t602"></a>602 - 5 Diagonal Rings (Yellow Spring)</h3>
-      <p>This is a chain of five rings intended to be used with thing <a href="#t555">555</a>.
-      Do not use ring chain objects in any mode where items respawn, because ring chains do not
-      respawn. Use bitsets to create chains in any mode with item respawn.</p>
-      <h3><a name="t603"></a>603 - 10 Diagonal Rings (Red Spring)</h3>
-      <p>This is a chain of ten rings intended to be used with thing <a href="#t556">556</a>. Do
-      not use ring chain objects in any mode where items respawn, because ring chains do not
-      respawn. Use bitsets to create chains in any mode with item respawn.</p>
-      <h3><a name="t604"></a>604 - Nights: Circle of Rings</h3>
-      <h3><a name="t605"></a>605 - Nights: Circle of Rings (Big)</h3>
-      <h3><a name="t606"></a>606 - Nights: Circle of Wing Logos</h3>
-      <h3><a name="t607"></a>607 - Nights: Circle of Wing Logos (Big)</h3>
-      <h3><a name="t608"></a>608 - Nights: Circle of Rings and Wings</h3>
-      <h3><a name="t609"></a>609 - Nights: Circle of Rings and Wings (Big)</h3>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Powerup indicators/environmental effects/miscellany</big></big></u><ol>
-      <h3><a name="t700"></a>700 - Ambient Water SFX 1A (Small)</h3>
-      <h3><a name="t701"></a>701 - Ambient Water SFX 1B (Small)</h3>
-      <h3><a name="t702"></a>702 - Ambient Water SFX 2A (Medium)</h3>
-      <h3><a name="t703"></a>703 - Ambient Water SFX 2B (Medium)</h3>
-      <h3><a name="t704"></a>704 - Ambient Water SFX 3A (Large)</h3>
-      <h3><a name="t705"></a>705 - Ambient Water SFX 3B (Large)</h3>
-      <h3><a name="t706"></a>706 - Ambient Water SFX 4A (Extra Large)</h3>
-      <h3><a name="t707"></a>707 - Ambient Water SFX 4B (Extra Large)</h3>
-      <h3><a name="t708"></a>708 - Random Ambience 1</h3>
-      <h3><a name="t709"></a>709 - Random Ambience 2</h3>
-      <h3><a name="t750"></a>750 - Chaos Mode Enemy Spawn</h3>
-      <p>This is where the enemies spawn from in Chaos mode. There should be around 12 of these
-      points on a map with Chaos support.</p>
-      <h3><a name="t751"></a>751 - Teleport Destination</h3>
-      <p>This is the thing to be used with linedef type <a href="#l412">412</a>, the linedef
-      executor that teleports a player. This thing is where the player will spawn in the tagged
-      sector.</p>
-      <h3><a name="t752"></a>752 - Alternate View Point</h3>
-      <p>This is the thing to be used with linedef type <a href="#l422">422</a>, the linedef
-      executor that changes the camera view. This thing is where the camera will be moved to in
-      the tagged sector.</p>
-      <h3><a name="t753"></a>753 - Zoom Tube Waypoint</h3>
-      <p>Waypoints for zoom tubes. Think of Sonic 2's Metropolis Zone, Sonic 3 &amp; Knuckles's
-      Death Egg Zone, and Lava Reef Zone. The lower byte of the ANGLE field specifies the
-      waypoint's number in the sequence, and the upper byte specifies the sequence that the
-      waypoint belongs to. These are used in conjunction with sector type <a href="#s32768">32768</a>
-      and <a href="#s36864">36864</a>.</p>
-      <h3><a name="t754"></a>754 - Push</h3>
-      <h3><a name="t755"></a>755 - Pull</h3>
-      <h3><a name="t756"></a>756 - Street Light Source</h3>
-      <p>This produces a light in OpenGL. It is used in Starlit Warehouse Zone, one of the match
-      stages, as the street lights.</p>
-      <h3><a name="t760"></a>760 - PolyObject Anchor</h3>
-      <p>This is the first of the two points used to set up 'how much to move' a polyobject by
-      when creating it. Angle is the PolyObject ID#.</p>
-      <h3><a name="t761"></a>761 - PolyObject SpawnPoint</h3>
-      <p>This is the second of the two points used to set up 'how much to move' a polyobject by
-      when creating it. Angle is the PolyObject ID#.</p>
-      <h3><a name="t762"></a>762 - PolyObject SpawnPoint Crush</h3>
-      <p>This is the second of the two points used to set up 'how much to move' a polyobject by
-      when creating it. Angle is the PolyObject ID#. This item tells the PolyObject that it
-      should hurt the player.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Greenflower Scenery</big></big></u><ol>
-      <h3><a name="t800"></a>800 - GFZ Flower (Normal)</h3>
-      <p>This is a scenery object from Greenflower Zone. It is the orange flower seen all
-      throughout GFZ and most GFZ-themed custom maps.</p>
-      <h3><a name="t801"></a>801 - GFZ Sunflower</h3>
-      <p>This is a scenery object from Greenflower Zone. It is the large blue sunflower seen all
-      throughout GFZ and most GFZ-themed custom maps.</p>
-      <h3><a name="t802"></a>802 - GFZ Budding Flower</h3>
-      <p>This is a scenery object from Greenflower Zone. It is the small purple flower seen all
-      throughout GFZ and most GFZ-themed custom maps.</p>
-      <h3><a name="t804"></a>804 - Berry Bush</h3>
-      <p>This is a scenery object from Greenflower Zone. It is the green bush with red berries
-      seen all throughout GFZ and most GFZ-themed custom maps.</p>
-      <h3><a name="t805"></a>805 - Bush</h3>
-      <p>This is a scenery object from Greenflower Zone. It is the green bush without the
-      berries seen all throughout GFZ and most GFZ-themed custom maps.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Techno Hill Scenery</big></big></u><ol>
-      <h3><a name="t900"></a>900 - THZ Flower</h3>
-      <p>This is a scenery object from Techno Hill Zone Act 1. It is the metallic white flower.</p>
-      <h3><a name="t901"></a>901 - THZ Alarm</h3>
-      <p>This is a scenery object from Techno Hill Zone Act 2. It is the little alarm in the
-      passage with the first Star Post. It creates noise, but the red visual effect in THZ2 was
-      done with a colormap, not this object.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Deep Sea Scenery</big></big></u><ol>
-      <h3><a name="t1000"></a>1000 - Gargoyle</h3>
-      <p>Pushable gargoyle. Can be stood on top of as well.</p>
-      <p>Giving this the Deaf tag will prevent it from being pushable.</p>
-      <h3><a name="t1001"></a>1001 - Seaweed</h3>
-      <p>Animated seaweed. Intangible scenery.</p>
-      <h3><a name="t1002"></a>1002 - Dripping Water</h3>
-      <p>Water dripping from the ceiling. ANGLE value specifies start delay.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Castle Eggman Scenery</big></big></u><ol>
-      <h3><a name="t1100"></a>1100 - Hanging Chain</h3>
-      <p>This is a scenery object from Castle Eggman, a dungeon chain hanging from the ceiling.</p>
-      <p>By default, it attaches itself to the ceiling, and the height part of the bitset
-      measures how far down from the ceiling, instead of up from the floor.</p>
-      <h3><a name="t1101"></a>1101 - CEZ Torch</h3>
-      <p>This is the torch used in Castle Eggman Zone. It produces light in OpenGL, and it harms
-      the player for fire damage on contact.</p>
-      <h3><a name="t1102"></a>1102 - Eggman Statue </h3>
-      <p>This is the large Eggman statue in Castle Eggman Zone.</p>
-      <h3><a name="t1103"></a>1103 - CEZ Flower</h3>
-      <p>This is a scenery object from Castle Eggman Zone. It is the decaying flower.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Arid Canyon Scenery</big></big></u><ol>
-      <h3><a name="t1200"></a>1200 – Big Tumbleweed</h3>
-      <p>A large moveable tumbleweed that rolls along the floor.</p>
-      <h3><a name="t1201"></a>1201 – Little Tumbleweed</h3>
-      <p>A small movable tumbleweed that rolls along the floor.</p>
-      <h3><a name="t1202"></a>1202 – Rock Spawner</h3>
-      <p>An object which randomly spawns falling rocks, which damage the player on impact.<br>
-      Description on how to use goes here.</p>
-    </ol>
-  </li>
-  <li><u><big><big>Red Volcano Scenery</big></big></u><ol>
-      <h3><a name="t1300"></a>1300 – Horizontal Flame Jet</h3>
-      <p>A stready stream of flames comes out horizontally.</p>
-      <h3><a name="t1301"></a>1301 – Vertial Flame Jet</h3>
-      <p>A stready stream of flames comes out vertially.</p>
-    </ol>
-  </li>
-  <li><u><big><big>Dark City Scenery</big></big></u><ol>
-    </ol>
-  </li>
-  <li><u><big><big>Doom Ship Scenery</big></big></u><ol>
-    </ol>
-  </li>
-  <li><u><big><big>Egg Rock / Final Fight Scenery</big></big></u><ol>
-    </ol>
-  </li>
-  <li><u><big><big>NiGHTS Items</big></big></u><ol>
-      <h3><a name="t1700"></a>1700 - Nights: Axis</h3>
-      <p>Lower 10 bits: Axis number in the mare (0-based) Upper 6 bits: Mare that axis belongs
-      to (0-based). ANGLE value determines the size of the axis to rotate around. If 16384 is
-      added to the ANGLE value, the axis will be inverted.</p>
-      <h3><a name="t1701"></a>1701 - Nights: Axis Transfer (Normal)</h3>
-      <h3><a name="t1702"></a>1702 - Nights: Axis Transfer Line</h3>
-      <h3><a name="t1703"></a>1703 - Nights: Ideya Drone</h3>
-      <p>Angle value sets the NiGHTS timer, in seconds. </p>
-      <h3><a name="t1704"></a>1704 - Nights: Bumper</h3>
-      <p>Lower 4 bits of the flags specify the angle of the bumper in 30 degree increments.</p>
-      <h3><a name="t1705"></a>1705 - Nights: Hoop</h3>
-      <h3><a name="t1706"></a>1706 - Nights: Wing Logo</h3>
-      <h3><a name="t1707"></a>1707 - Nights: Super Loop</h3>
-      <h3><a name="t1708"></a>1708 - Nights: Drill Refill</h3>
-      <h3><a name="t1709"></a>1709 - Nights: Helper</h3>
-      <h3><a name="t1710"></a>1710 - Nights: Egg Capsule</h3>
-      <p>The capsule you need to collect rings to break in NiGHTS. The value of its ANGLE field
-      determines how many rings you need to break it. Just like the axis points, the upper bits
-      (value &gt;&gt; 10) determine the mare it belongs to. For example, an angle value of 1024
-      means it belongs to mare 1 (2nd mare, it's zero based), and requires 0 rings to break.
-      1030 would be mare 1, and 6 rings to break. 2048 would be mare 2, no rings.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Mario Items</big></big></u><ol>
-      <h3><a name="t1800"></a>1800 - Coin</h3>
-      <p>This is a coin, which is essentially a ring with Mario graphics and sound effects.</p>
-      <h3><a name="t1801"></a>1801 - Overworld Goomba</h3>
-      <p>These are the enemies in Mario Koopa Blast 1, and are essentially Crawlas with a Mario
-      graphic.</p>
-      <h3><a name="t1802"></a>1802 - Underworld Goomba</h3>
-      <p>These are the enemies in Mario Koopa Blast 2, and are essentially Crawlas with a Mario
-      graphic.</p>
-      <h3><a name="t1803"></a>1803 - Fire Flower</h3>
-      <p>This is the powerup from the Mario Koopa Blast stages. It changes the player to a white
-      palette, and allows the player to throw fireballs with the fire button. The fireballs fly
-      in a Mario-style bounce trajectory until they hit an enemy or a wall.</p>
-      <h3><a name="t1804"></a>1804 - Koopa Shell</h3>
-      <p>This is the Koopa Shell in Mario Koopa Blast 1. It will bounce around, striking enemies
-      and players.</p>
-      <h3><a name="t1805"></a>1805 - Puma (Mario Jumping Fireball)</h3>
-      <p>This is the fireball used in Mario Koopa Blast 3. The angle determines the jump height,
-      with 0 being the old jump style. Note that the jump height is based on force, not units,
-      so experimentation will be necessary to get the correct height.</p>
-      <h3><a name="t1806"></a>1806 - King Bowser</h3>
-      <h3><a name="t1807"></a>1807 - Axe</h3>
-      <p>The axe used to defeat Bowser in the third Mario level.</p>
-      <h3><a name="t1808"></a>1808 - Bush (Short)</h3>
-      <p>This is a scenery object from Mario Koopa Blast</p>
-      <h3><a name="t1809"></a>1809 - Bush (Tall)</h3>
-      <p>This is a scenery object from Mario Koopa Blast</p>
-      <h3><a name="t1810"></a>1810 - Toad</h3>
-      <p>This is Toad at the end of Mario Koopa Blast 3.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Xmas Items</big></big></u><ol>
-      <h3><a name="t1850"></a>1850 - Xmas Pole</h3>
-      <p>X-Mas scenery object. Looks like a little barber shop pole.</p>
-      <h3><a name="t1851"></a>1851 - Candy Cane</h3>
-      <p>X-Mas scenery object. Looks like a candy cane.</p>
-      <p>Note that Mystic Realm 4 replaces this object with the Sonic 1 palm tree, so any maps
-      loaded while Mystic Realm 4 is loaded will overwrite the image, making any candy canes
-      look like palm trees, which can look kinda stupid.</p>
-      <h3><a name="t1852"></a>1852 - Snowman</h3>
-      <p>X-Mas scenery object. Pushable snowman with a happy face. Can be stood on top of as
-      well. Acts the same as thing <a href="#t1000">1000</a>.</p>
-      <p>Giving this the Deaf tag will prevent it from being pushable.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <h1><a name="linetypes"></a>Linedef Types</h1>
-  <p>Lines may have flags applied to them. The following is a reference of their values.
-  Unless specified otherwise in a line type, the flags behave as follows:</p>
-  <div align="left"><table border="1" width="83%">
-    <tr>
-      <td width="33%">NAME</td>
-      <td width="10%">VALUE</td>
-      <td width="57%">DESCRIPTION</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#EFFECT6"></a>EFFECT6</td>
-      <td width="10%">1</td>
-      <td width="57%">Special use flag #6.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#BLOCKMONSTERS"></a>BLOCKMONSTERS</td>
-      <td width="10%">2</td>
-      <td width="57%">Prevents an enemy from crossing the line. May not work for especially
-      speedy enemies.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#TWOSIDED"></a>TWOSIDED</td>
-      <td width="10%">4</td>
-      <td width="57%">Flag used to indicate if a line is two sided. Do not modify.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#DONTPEGTOP"></a>DONTPEGTOP</td>
-      <td width="10%">8</td>
-      <td width="57%">Unpeg upper texture. Good for moving floors.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#DONTPEGBOTTOM"></a>DONTPEGBOTTOM</td>
-      <td width="10%">16</td>
-      <td width="57%">Unpeg bottom texture. Good for moving ceilings.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#EFFECT1"></a>EFFECT1</td>
-      <td width="10%">32</td>
-      <td width="57%">Special use flag #1.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#NOCLIMB"></a>NOCLIMB</td>
-      <td width="10%">64</td>
-      <td width="57%">Don't allow Knuckles to climb on this wall.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#EFFECT2"></a>EFFECT2</td>
-      <td width="10%">128</td>
-      <td width="57%">Special use flag #2.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#EFFECT3"></a>EFFECT3</td>
-      <td width="10%">256</td>
-      <td width="57%">Special use flag #3.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#EFFECT4"></a>EFFECT4</td>
-      <td width="10%">512</td>
-      <td width="57%">Special use flag #4.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#EFFECT5"></a>EFFECT5</td>
-      <td width="10%">1024</td>
-      <td width="57%">Special use flag #5.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#NOSONIC"></a>NOSONIC</td>
-      <td width="10%">2048</td>
-      <td width="57%">Disable line special if playing as Sonic (Single Player Only).</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#NOTAILS"></a>NOTAILS</td>
-      <td width="10%">4096</td>
-      <td width="57%">Disable line special if playing as Tails (Single Player Only).</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#NOKNUX"></a>NOKNUX</td>
-      <td width="10%">8192</td>
-      <td width="57%">Disable line special if playing as Knuckles (Single Player Only).</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#BOUNCY"></a>BOUNCY</td>
-      <td width="10%">16384</td>
-      <td width="57%">Bounce the player off this line.</td>
-    </tr>
-    <tr>
-      <td width="33%"><a name="#TFERLINE"></a>TFERLINE</td>
-      <td width="10%">32768</td>
-      <td width="57%">Use this on a FOF line special to define the texture &amp; offsets for
-      each side of the FOF. The control sector must have at LEAST the same # of sides as the
-      target sector(s).</td>
-    </tr>
-  </table>
-  </div><hr>
-  <li><u><big><big>Level Parameters / Miscellany</big></big></u><ol>
-      <h3><a name="l1"></a>1 - Per-Sector Gravity</h3>
-      <p>Sets the gravity of the tagged sector or sectors, as a percentage of global gravity
-      (which can be set separately using sector type <a href="#s176">176</a>). The floor height
-      of the control sector is used. If it is 1000, then the target sector will have 100%
-      gravity. If it is 500, the target sector will have 50% of the global gravity. Negative
-      values work as well, but players can't jump down; they'll get stuck to the ceiling, unless
-      the <a href="#NOCLIMB">NOCLIMB</a> flag is checked.</p>
-      <p>You can apply this special to the control sector of an intangible FOF to change the
-      gravity only inside that FOF.</p>
-      <h3><a name="l2"></a>2 - Custom Exit</h3>
-      <p>Tag this to an Exit Sector (type <a href="#s8192">8192</a>) to exit to a custom level,
-      overriding the one set in the map header. The map number you go to is indicated by the
-      front sector's floor. Additionally, if the control linedef's bitset is set to disallow
-      climbing (with the <a href="#NOCLIMB">NOCLIMB</a> attribute, whose value is 64), skip the
-      score tally screen when switching to the new map.</p>
-      <p>If the control linedef has the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag set,
-      this effect does something super complicated and fun, going to a different level depending
-      on whether the player has all emeralds or not. If the player has seven emeralds, the
-      linedef's front sector's ceiling height will be used. Otherwise, go to the map number
-      indicated by the linedef's front sector's floor. That's <i>only</i> if you set the <a
-      href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag.</p>
-      <p>If the <a href="#EFFECT4">EFFECT4</a> flag is set, the linedef's front side x offset
-      will be used as the new gametype after the map change, providing it is in range (from 0 to
-      4, inclusive).</p>
-      <h3><a name="l3"></a>3 - Zoom Tube Parameters</h3>
-      <p>X length = speed. Y length = waypoint sequence #. See sector type <a href="#s32768">32768</a>
-      for more information.</p>
-      <h3><a name="l4"></a>4 - Speed Pad</h3>
-      <p>Creates a speed pad. The linedef direction and indicates the direction of the pad. The
-      target sector must have type <a href="#s1280">1280</a> or <a href="#s1536">1536</a> for
-      this to work.</p>
-      <p>If the <a href="#EFFECT4">EFFECT4</a> flag is set, you will not be teleported to the
-      center of the sector when the speed pad is activated.</p>
-      <h3><a name="l5"></a>5 - Camera Scanner</h3>
-      <p>Modifies camera position while the player is in the target sector. The floor and
-      ceiling of the control sector and the angle of the control linedef are the values for
-      CAM_HEIGHT, CAM_DIST, and CAM_ROTATE, respectively. Camera position is reset when the
-      player steps outside the sector.</p>
-      <h3><a name="l6"></a>6 - Disable Linedef</h3>
-      <p>Disables any linedef specials that share the same tag. Will be used in the future to
-      check if a particular level has been previously cleared or not.</p>
-      <h3><a name="l7"></a>7 - Flat Alignment</h3>
-      <p>Aligns floor and/or ceiling flats. The x alignment is specified by the control
-      linedef's x distance (the difference between the x values of its two vertices), and the y
-      alignment is specified by the control linedef's y distance.</p>
-      <p>By default, works on both the floor and ceiling (however, note that skies cannot be
-      &quot;aligned&quot; ;). Adding the <a href="#NOCLIMB">NOCLIMB</a> flag to the linedef will
-      align the floor only, while the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag will make
-      it align the ceiling only.</p>
-      <h3><a name="l8"></a>8 - Sector Special Parameters</h3>
-      <p>Sets special behavior of a sector's type depending on the flag(s) checked:</p>
-      <p><a href="#NOCLIMB">NOCLIMB</a> - Special only operates when touching ceiling</p>
-      <p><a href="#EFFECT4">EFFECT4</a> - Special operates when touching either the floor or the
-      ceiling</p>
-      <p><a href="#EFFECT3">EFFECT3</a> - Special operates by just touching the sector, rather
-      than having to be inside of it.</p>
-      <h3><a name="l9"></a>9 - Chain Parameters</h3>
-      <p>Sets special behavior of a moving chain as such:</p>
-      <p>x length - # of links on the chain</p>
-      <p>y length - Overall speed (0-15)</p>
-      <p>X offset - Rotation speed on the X axis (0-15)</p>
-      <p>Y offset - Rotation speed on the Z axis (0-15)</p>
-      <p>floorheight - angle to start at (0-15)</p>
-      <p>ceilingheight - maximum rotation speed</p>
-      <h3><a name="l10"></a>10 - Culling Plane</h3>
-      <p>Set like <a href="#l1">line 1</a>, this creates an invisible plane in the sector. If
-      your view is above this plane, lots of things drawn below the height of this plane will be
-      discarded, and if your view is below the plane, a lot of things drawn above the height of
-      the plane will be discarded. This is to tell the game to not draw stuff that you aren't
-      going to see anyway. Do note that the view doesn't have to be in the current sector, you
-      can also be viewing from the side, which may be undesirable. To prevent this problem, you
-      can check the <a href="#NOCLIMB">NOCLIMB</a> flag, which will allow you to 'group' a set
-      of sectors to one control sector in which the culling will only take effect. For example,
-      you have a control sector set up for culling, and have two culling lines in the control
-      sector, tagged to sectors 'A' and 'B'. If the player is in sector 'A' or 'B', the culling
-      will occur, but if the player is in sector 'C', it will not.</p>
-      <h3>11 - Rope Hang Parameters</h3>
-      <p>X length = speed. Y length = waypoint sequence #.</p>
-      <p>EFFECT1 - Don't wrap movement</p>
-      <p>See sector type 45056 for more information.</p>
-      <h3>12 - Rock Spawn Parameters</h3>
-      <p>Sets special behavior of a rock spawner (#1202) as such:</p>
-      <p>length - momentum strength</p>
-      <p>line angle - momentum angle</p>
-      <p>X offset - # of tics to wait until another is spawned</p>
-      <p>Y offset - Rock crumble sprite to use (0-15)</p>
-      <p>NOCLIMB - add some randomization to the momentum</p>
-      <p>&nbsp;</p>
-      <h3>13 - Heat Wave</h3>
-      <p>Applies a heat effect to the screen. Tag this to a sector, or to the control sector of a FOF.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Level Parameters / Miscellany</big></big></u><ol>
-      <h3><a name="l20"></a>20 - Marks first line in PolyObject</h3>
-      <p>Explain here.</p>
-      <h3><a name="l21"></a>21 - Explicitly include a PolyObject line</h3>
-      <p>Explain here.</p>
-      <h3><a name="l30"></a>30 - PolyObject Parameters</h3>
-      <p>Explain here.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Level-Load Effects</big></big></u><ol>
-      <h3><a name="l50"></a>50 - Instant Floor Lower</h3>
-      <p>Makes the floor instantly lower on level load to be at the same height as the lowest
-      floor of any bordering sector.</p>
-      <h3><a name="l51"></a>51 - Instant Ceiling Raise</h3>
-      <p>Makes the ceiling instantly rise on level load to be the same height as the highest
-      ceiling of any bordering sector.</p>
-      <h3><a name="l52"></a>52 - Continuously Falling Sector</h3>
-      <p>Requires two control sectors. Sector continuously falls until its ceiling reaches the
-      floor of the line's back sector, then returns to its original position and keeps falling.
-      Linedef length determines speed. Good for things like intermittently falling lava. If the <a
-      href="#NOCLIMB">NOCLIMB</a> flag is set, it falls upwards, instead of downwards.</p>
-      <h3><a name="l53"></a>53 - Continuous Floor/Ceiling Mover</h3>
-      <p>Must be a two-sided linedef, tagged to another sector on the map. The tagged sector's
-      floor and ceiling will move, first so that they're equal to the floor and ceiling of the
-      linedef's front sector, then so they're equal to the floor and ceiling of the linedef's
-      back sector, then the front sector again, and so on.</p>
-      <p>The speed of the movement is determined by the linedef's length and uses the same units
-      as linetype <a href="#l60">60</a>.</p>
-      <h3><a name="l54"></a>54 - Continuous Floor Mover</h3>
-      <p>Like linetype <a href="#l53">53</a>, but only moves the floor, not the ceiling. Can be
-      used to replace floating platforms in some cases, where only the floor was desired to
-      move.</p>
-      <h3><a name="l55"></a>55 - Continuous Ceiling Mover</h3>
-      <p>Like linetype <a href="#l53">53</a>, but only moves the ceiling, not the floor.</p>
-      <h3><a name="l56"></a>56 - Continuous Two-Speed Floor/Ceiling Mover</h3>
-      <p>Must be a two-sided linedef, tagged to another sector on the map. The tagged sector's
-      floor and ceiling will move, first so that they're equal to the floor and ceiling of the
-      linedef's front sector, then so they're equal to the floor and ceiling of the linedef's
-      back sector, then the front sector again, and so on.</p>
-      <p>The speed of the movement is determined by the linedef's x distance (the first way,
-      towards the front sector) and y distance (the second way, towards the back sector), using
-      the same units as linetype <a href="#l60">60</a>.</p>
-      <p>Unlike linetype <a href="#l53">53</a>, this effect does not slow down when it reaches
-      the end of its movement. Instead, it changes instantly from going in one direction to
-      going in the other. It's designed for making more sophisticated crushers than the crusher
-      type allows (i.e. crushers with varying rise/crush speeds, FOF crushers, crushers with
-      different start points).</p>
-      <h3><a name="l57"></a>57 - Continuous Two-Speed Floor Mover</h3>
-      <p>Like linetype <a href="#l56">56</a>, but only moves the floor, not the ceiling.</p>
-      <h3><a name="l58"></a>58 - Continuous Two-Speed Ceiling Mover</h3>
-      <p>Like linetype <a href="#l56">56</a>, but only moves the ceiling, not the floor.</p>
-      <h3><a name="l59"></a>59 - Activate Floating Platform</h3>
-      <p>This is used to make floating platforms (that move up and down) as well as moving
-      water. In fact, you can use this to make any type of block move vertically. The way it
-      works is somewhat confusing - You use three control sectors, all connected by at least one
-      linedef. Easiest thing to do is make three square sectors together in a row. One of the
-      linedefs on the middle sector should contain the Floor Over Floor line special that you
-      want. This will be the Floor Over Floor control sector. The other two sectors represent
-      the bottommost position you want the Floor Over Floor to reach, and the topmost position
-      you want the Floor Over Floor to reach. The 59 line can be on any of these sectors, as
-      long as you tag it to the middle one. If you still don't understand, look at Greenflower
-      Zone Act 2. If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, the platform will begin
-      moving upwards, rather than downwards.</p>
-      <h3><a name="l60"></a>60 - Activate Floating Platform (Adjustable Speed)</h3>
-      <p>Speed is indicated by linedef length; one unit of speed here is 0.25 fracunits per tic.
-      (Floating platforms made with type <a href="#l59">59</a> move at 2 fracunits per tic.)
-      Aside from the linedef length controlling speed, works exactly like linedef type <a
-      href="#l59">59</a>.</p>
-      <h3><a name="l61"></a>61 - Crusher 1 (Ceiling to Floor)</h3>
-      <p>The crush motion is from the ceiling to the floor. Linedef length indicates crusher
-      speed. See also linetype <a href="#l62">62</a>, Crusher 2.</p>
-      <h3><a name="l62"></a>62 - Crusher 2 (Floor to Ceiling)</h3>
-      <p>Like linetype <a href="#l61">61</a>, Crusher 1, except that it starts in a different
-      place, not synchronised with any crushers that use the Crusher 1 type. The highest ceiling
-      this crusher reaches will be the highest ceiling height of any bordering sector.</p>
-      <h3><a name="l63"></a>63 - Fake Floor</h3>
-      <p>Creates two fake planes, fake floor and fake ceiling. Main textures are not affected,
-      but as far as above/below textures and floor/ceiling flats are concerned, the floor and
-      ceiling height are those of the control sector. As far as collisions, walking, etc. are
-      concerned, the floor and ceiling flats are whatever they normally would be.</p>
-      <p>Fake floor is useful for railings (THZRAIL and WOODRAIL; see THZ2 for examples) and
-      snow effects (making a fake floor of snow just a few units above normal floor, so it looks
-      like the player's feet are buried in the snow).</p>
-      <h3><a name="l64"></a>64 - Appearing/Disappearing FOF</h3>
-      <p>Tag this to any FOF <i>line</i> and this will cause it to appear and disappear
-      intermittently. The line's X length is the amount of time (in tics) that the FOF will
-      appear, and Y length is the amount of time (in tics) that the FOF will disappear. The
-      control sector's floor height allows you to specify an offset (in tics) of how much time
-      will pass before the appearing/disappearing kicks in.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Floor-Over-Floors (FOFs)</big></big></u><ol>
-      <h3><a name="l100"></a>100 - Floor Over Floor: Solid, Opaque, Shadowcasting</h3>
-      <p>This is just a regular old FOF. As with any block, the ceiling of the control sector is
-      the top of the block, and the floor of the control sector is the bottom.
-      &quot;Shadowcasting&quot; means that the light value used in the control sector is used
-      for the area below where the actual FOF appears, as opposed to above it.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL-->
-      <h3><a name="l101"></a>101 - Floor Over Floor: Solid, Opaque, Non-Shadowcasting</h3>
-      <p>See notes for <a href="#l100">100</a>. &quot;Non-shadowcasting&quot; means that the
-      light value you set in the control sector will be used for the area above the FOF, instead
-      of below it.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_NOSHADE|FF_CUTLEVEL-->
-      <h3><a name="l102"></a>102 - Floor Over Floor: Solid, Translucent</h3>
-      <p>Useful for windows. The GLASSTEX texture is good for this purpose. You can change the
-      alpha value of the translucency by setting the control linedef's Above texture to a #
-      followed by a three-digit decimal number, 000 to 255. #000 is most transparent, #255 is
-      most opaque. Note that in software mode, there are actually only ten different values that
-      serve as a 'best guess'.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_NOSHADE|FF_TRANSLUCENT|FF_EXTRA|FF_CUTEXTRA-->
-      <h3><a name="l103"></a>103 - Floor Over Floor: Solid, Sides Only</h3>
-      <p>A solid FOF that renders sides only, not planes (floor and ceiling). You were supposed
-      to be able to use it to place railings (THZRAIL, WOODRAIL, etc.) on FOFs. It doesn't work
-      for that, because the railings use a different kind of transparency and software mode
-      won't draw them on FOFs. So this one is going on the list of useless effects, right next
-      to linetype <a href="#l104">104</a>.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERSIDES|FF_NOSHADE|FF_CUTLEVEL-->
-      <h3><a name="l104"></a>104 - Floor Over Floor: Solid, No Sides</h3>
-      <p>Like a 3D floor of type <a href="#l101">101</a>, except that sides are not drawn.
-      Supposedly a little bit faster than a normal 3D floor. You can use it when the sides
-      wouldn't be visible anyway.</p>
-      <p>This type of 3D floor will have shadows if and only if you set the control linedef's <a
-      href="#NOCLIMB">NOCLIMB</a> flag.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERPLANES|FF_CUTLEVEL
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is disabled, it also adds FF_NOSHADE-->
-      <h3><a name="l105"></a>105 - Floor Over Floor: Solid, Invisible</h3>
-      <p>For making invisible walls and other strange effects.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_NOSHADE-->
-      <hr>
-      <h3><a name="l120"></a>120 - Floor Over Floor: Water, Opaque</h3>
-      <p>This one looks exactly like linetype <a href="#l100">100</a> ingame, but is a block of
-      water instead of solid.</p>
-      <p>The block will have the attribute of linetype <a href="#l200">200</a> if the <a
-      href="#NOCLIMB">NOCLIMB</a> flag is set.</p>
-      <p>To use the light level of the target sector, utilize the <a href="#EFFECT4">EFFECT4</a>
-      flag.</p>
-      <p>If this is used as lava (Fire Damage), and you set the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>
-      flag, you can still pass through the lava.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERALL|FF_SWIMMABLE|FF_BOTHPLANES|FF_ALLSIDES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES-->
-      <h3><a name="l121"></a>121 - Floor Over Floor: Water, Translucent</h3>
-      <p>This one looks exactly like linetype <a href="#l102">102</a> ingame, but is a block of
-      water instead of solid.</p>
-      <p>The block will have the attribute of linetype <a href="#l200">200</a> if the <a
-      href="#NOCLIMB">NOCLIMB</a> flag is set.</p>
-      <p>To use the light level of the target sector, utilize the <a href="#EFFECT4">EFFECT4</a>
-      flag.</p>
-      <p>If this is used as lava (Fire Damage), and you set the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>
-      flag, you can still pass through the lava.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERALL|FF_TRANSLUCENT|FF_SWIMMABLE|FF_BOTHPLANES|FF_ALLSIDES|FF_CUTEXTRA|FF_EXTRA|
-FF_CUTSPRITES-->
-      <h3><a name="l122"></a>122 - Floor Over Floor: Water, Opaque, No Sides</h3>
-      <p>Like linetype <a href="#l120">120</a>, but doesn't render sides.</p>
-      <p>The block will have the attribute of linetype <a href="#l200">200</a> if the <a
-      href="#NOCLIMB">NOCLIMB</a> flag is set.</p>
-      <p>To use the light level of the target sector, utilize the <a href="#EFFECT4">EFFECT4</a>
-      flag.</p>
-      <p>If this is used as lava (Fire Damage), and you set the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>
-      flag, you can still pass through the lava.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERPLANES|FF_SWIMMABLE|FF_BOTHPLANES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES-->
-      <h3><a name="l123"></a>123 - Floor Over Floor: Water, Translucent, No Sides</h3>
-      <p>Like linetype <a href="#l121">121</a>, but doesn't render sides. Most of the time this
-      won't make a difference. It can be useful, however, for windows that have water on one
-      side and not on the other.</p>
-      <p>The block will have the attribute of linetype <a href="#l200">200</a> if the <a
-      href="#NOCLIMB">NOCLIMB</a> flag is set.</p>
-      <p>To use the light level of the target sector, utilize the <a href="#EFFECT4">EFFECT4</a>
-      flag.</p>
-      <p>If this is used as lava (Fire Damage), and you set the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>
-      flag, you can still pass through the lava.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERPLANES|FF_TRANSLUCENT|FF_SWIMMABLE|FF_BOTHPLANES|FF_CUTEXTRA|FF_EXTRA|
-FF_CUTSPRITES-->
-      <hr>
-      <h3><a name="l140"></a>140 - Floor Over Floor: Intangible from Bottom, Opaque </h3>
-      <p>This sector type is solid from the top and walls, but is not solid from the bottom.
-      This allows the designer to create one-way passages as well as simulate 2D design by
-      having platforms that players can jump up to from below.</p>
-      <p>This type of 3D floor will have shadows unless you set the control linedef's <a
-      href="#NOCLIMB">NOCLIMB</a> flag.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_BOTHPLANES|FF_ALLSIDES
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
-      <h3><a name="l141"></a>141 - Floor Over Floor: Intangible from Bottom, Translucent</h3>
-      <p>A copy of linetype <a href="#l140">140</a> that is also translucent.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_TRANSLUCENT|FF_BOTHPLANES|FF_ALLSIDES
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
-      <h3><a name="l142"></a>142 - Floor Over Floor: Intangible from Bottom, Translucent, No
-      Sides</h3>
-      <p>A platform you can jump up through, like linetype <a href="#l140">140</a> (and decides
-      the same way whether to have shadows or not), with translucency and that doesn't render
-      sides. Alpha value supported the same way as linetype <a href="#l102">102</a>.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_CUTLEVEL|FF_RENDERPLANES|FF_TRANSLUCENT|FF_PLATFORM|FF_BOTHPLANES
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
-      <hr>
-      <h3><a name="l150"></a>150 - Floor Over Floor: Bobbing (Air)</h3>
-      <p>FOF that moves down 16 units when you step on, then returns to its former position when
-      you step off. The control sector must be connected to another sector with the same floor
-      and ceiling height. This seemingly redundant sector is used for resetting the heights. (If
-      you forget to put it in, the bobbing floor when stepped on will go down, keep going down,
-      and never stop or come back up.) See also linetypes <a href="#l151">151</a> and <a
-      href="#l152">152</a>. This linedef is obsolete. Please use linetype 190-195.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_AIRBOB-->
-      <h3><a name="l151"></a>151 - Floor Over Floor: Adjustable Bobbing (Air)</h3>
-      <p>Like linetype <a href="#l150">150</a>, except that instead of the floor moving down 16
-      units when you step on it, it moves down the number of units of the control linedef's
-      length. This linedef is obsolete. Please use linetype 190-195.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_AIRBOB-->
-      <h3><a name="l152"></a>152 - Floor Over Floor: Reverse Bobbing (Air)</h3>
-      <p>Like linetype <a href="#l151">151</a>, except in reverse. The platform goes <i>up</i>
-      when you step on it and back <i>down</i> when you step off. This linedef is obsolete.
-      Please use linetype 190-195.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_AIRBOB-->
-      <hr>
-      <h3><a name="l160"></a>160 - Floor Over Floor: Floating, Bobbing</h3>
-      <p>Bobs and floats in water. The floating part means that if the water moves or rises,
-      this platform will rise with it.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_FLOATBOB-->
-      <hr>
-      <h3><a name="l170"></a>170 - Floor Over Floor: Crumbling (Respawn)</h3>
-      <p>Crumbles and falls away, then reappears 15 seconds later.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_CRUMBLE-->
-      <h3><a name="l171"></a>171 - Floor Over Floor: Crumbling (No Respawn)</h3>
-      <p>Crumbles and falls away and never comes back.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_CRUMBLE|FF_NORETURN-->
-      <h3><a name="l172"></a>172 - Floor Over Floor: Crumbling (Respawn)</h3>
-      <p>A copy of linetype <a href="#l140">140</a> that also crumbles when stood on and
-      reappears after 15 seconds.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_CRUMBLE|FF_BOTHPLANES|FF_ALLSIDES
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
-      <h3><a name="l173"></a>173 - Floor Over Floor: Crumbling (No Respawn)</h3>
-      <p>A copy of linetype <a href="#l172">172</a> that stays gone forever after crumbling.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_CRUMBLE|FF_NORETURN|FF_BOTHPLANES|
-FF_ALLSIDES
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
-      <h3><a name="l174"></a>174 - Floor Over Floor: Intangible from Bottom, Crumbling
-      (Respawn), Translucent</h3>
-      <p>A copy of linetype <a href="#l141">141</a> that also crumbles when stood on and
-      reappears after 15 seconds.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_CRUMBLE|FF_TRANSLUCENT|FF_BOTHPLANES|
-FF_ALLSIDES
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
-      <h3><a name="l175"></a>175 - Floor Over Floor: Intangible from Bottom, Crumbling (No
-      Respawn), Translucent</h3>
-      <p>A copy of linetype <a href="#l174">174</a> that stays gone forever after crumbling.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_CRUMBLE|FF_NORETURN|FF_TRANSLUCENT|
-FF_BOTHPLANES|FF_ALLSIDES
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
-      <h3><a name="l176"></a>176 - Floor Over Floor: Crumbling (Respawn), Floating, Bobbing</h3>
-      <p>Crumbles and falls, then floats on water, then bobs when you step on it.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_FLOATBOB|FF_AIRBOB|FF_CRUMBLE-->
-      <h3><a name="l177"></a>177 - Floor Over Floor: Crumbling (No Respawn), Floating, Bobbing</h3>
-      <p>Crumbles and falls, then floats on water, then bobs when you step on it. Unlike
-      linetype <a href="#l176">176</a>, does not return to its former position.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_FLOATBOB|FF_AIRBOB|FF_CRUMBLE|FF_NORETURN-->
-      <h3><a name="l178"></a>178 - Floor Over Floor: Crumbling (Respawn), Floating</h3>
-      <p>Crumbles and falls, then floats on water, then reappears up in the air 15 seconds
-      later.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_CRUMBLE|FF_FLOATBOB-->
-      <h3><a name="l179"></a>179 - Floor Over Floor: Crumbling (No Respawn), Floating</h3>
-      <p>Crumbles and falls, then spends the rest of its days floating on water, never to
-      reappear up in the air.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_CRUMBLE|FF_FLOATBOB|FF_NORETURN-->
-      <h3><a name="l180"></a>180 - Floor Over Floor: Crumbling (Respawn), Bobbing (Air)</h3>
-      <p>Bobs, crumbles, and falls when stepped on.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_AIRBOB|FF_CRUMBLE-->
-      <hr>
-      <h3><a name="l190"></a>190 - Floor Over Floor: Rising Platform, Solid, Opaque,
-      Shadowcasting</h3>
-      <p>Just like <a href="#l100">100</a>, except when a player steps on it, it will rise up to
-      the control sector's highest adjacent sector. You set the control sectors for this up like
-      special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
-      If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
-      to raise the platform.</p>
-      <h3><a name="l191"></a>191 - Floor Over Floor: Rising Platform, Solid, Opaque,
-      Non-Shadowcasting</h3>
-      <p>Just like <a href="#l101">101</a>, except when a player steps on it, it will rise up to
-      the control sector's highest adjacent sector. You set the control sectors for this up like
-      special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
-      If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
-      to raise the platform.</p>
-      <h3><a name="l192"></a>192 - Floor Over Floor: Rising Platform, Solid, Translucent</h3>
-      <p>Just like <a href="#l102">102</a>, except when a player steps on it, it will rise up to
-      the control sector's highest adjacent sector. You set the control sectors for this up like
-      special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
-      If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
-      to raise the platform.</p>
-      <h3><a name="l193"></a>193 - Floor Over Floor: Rising Platform, Solid, Invisible</h3>
-      <p>Just like <a href="#l105">105</a>, except when a player steps on it, it will rise up to
-      the control sector's highest adjacent sector. You set the control sectors for this up like
-      special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
-      If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
-      to raise the platform.</p>
-      <h3><a name="l194"></a>194 - Floor Over Floor: Rising Platform, Intangible from Bottom,
-      Opaque</h3>
-      <p>Just like <a href="#l140">140</a>, except when a player steps on it, it will rise up to
-      the control sector's highest adjacent sector. You set the control sectors for this up like
-      special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
-      If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
-      to raise the platform.</p>
-      <h3><a name="l195"></a>195 - Floor Over Floor: Rising Platform, Intangible from Bottom,
-      Translucent</h3>
-      <p>Just like <a href="#l141">141</a>, except when a player steps on it, it will rise up to
-      the control sector's highest adjacent sector. You set the control sectors for this up like
-      special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
-      If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
-      to raise the platform.</p>
-      <hr>
-      <h3><a name="l200"></a>200 - Floor Over Floor: Light Block</h3>
-      <p>Like a half light block, but it's really an actual block. That is, the light only comes
-      down to the control sector's floor, not to the bottom of the level (as with linetype <a
-      href="#l201">201</a>.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_CUTSPRITES|FF_DOUBLESHADOW-->
-      <h3><a name="l201"></a>201 - Floor Over Floor: Half Light Block</h3>
-      <p>Light blocks can be used to set color maps and light values. The light value of the
-      control sector will be used and any colormap attached to it will be used also. Note that
-      only the ceiling of the control sector is used; the light goes all the way down to the
-      bottom of the level. If this isn't what you want, consider using linedef type <a
-      href="#l200">200</a> instead.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_CUTSPRITES
-Note: Although it's not a true FOF, it does still have the same kind of definition, so 
-the FOF flags are included despite not being a real block.-->
-      <h3><a name="l202"></a>202 - Floor Over Floor: Fog Block</h3>
-      <p>Creates a block of colored fog. Attach a colormap (linetype <a href="#l606">606</a>) to
-      the control sector for the fog block; otherwise you won't see anything out of the
-      ordinary.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERALL|FF_FOG|FF_BOTHPLANES|FF_INVERTPLANES|FF_ALLSIDES|FF_INVERTSIDES|FF_CUTEXTRA|
-FF_EXTRA|FF_DOUBLESHADOW|FF_CUTSPRITES-->
-      <hr>
-      <h3><a name="l220"></a>220 - Floor Over Floor: Intangible, Opaque </h3>
-      <p>Like <a href="#l120">opaque water</a>, but not swimmable. Good for a snow effect on
-      FOFs. Can also be used to make hidden rooms, like you would normally do by setting a Main
-      texture.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERALL|FF_BOTHPLANES|FF_ALLSIDES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES-->
-      <h3><a name="l221"></a>221 - Floor Over Floor: Intangible, Translucent</h3>
-      <p>See linedef type <a href="#l102">102</a> for how to adjust the translucency, making the
-      3D floor more transparent or more opaque.</p>
-      <p>This type of 3D floor will have shadows if and only if you set the control linedef's <a
-      href="#NOCLIMB">NOCLIMB</a> flag.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERALL|FF_TRANSLUCENT|FF_EXTRA|FF_CUTEXTRA
-If the <a href="#NOCLIMB">NOCLIMB</a> flag is disabled, it also adds FF_NOSHADE-->
-      <h3><a name="l222"></a>222 - Floor Over Floor: Intangible, Sides Only</h3>
-      <p>An intangible FOF that renders sides only, not planes (floor and ceiling). It renders
-      both inside sides and outside sides. You can use it to place sector borders (GFZGRASS,
-      etc.) on FOFs.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERSIDES|FF_NOSHADE|FF_ALLSIDES-->
-      <h3><a name="l223"></a>223 - Floor Over Floor: Intangible, Invisible</h3>
-      <p>Useful for setting effects, such as wind and gravity.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_NOSHADE-->
-      <hr>
-      <h3><a name="l250"></a>250 - Floor Over Floor: Mario Block</h3>
-      <p>Like a normal FOF, except that the control linedef's Above texture is used after the
-      block has been hit (the Main texture is used before this). Any things in the control
-      sector will pop out the top of the block in the order in which they were placed. Rings
-      will be obtained and the effects of monitors will begin as soon as the block has been hit.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_MARIO-->
-      <h3><a name="l251"></a>251 - Floor Over Floor: Thwomp Block</h3>
-      <p>The thwomps are the crazy platforms with faces in Mario Koopa Blast 3. They can crush
-      you, but you can also ride on them.</p>
-      <p>Control sector is set up like a <a href="#l100">normal FOF</a>. When a player steps
-      underneath the thwomp, it will crush down to the floor. You don't need to tell it where
-      the floor is. It knows.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL-->
-      <h3><a name="l252"></a>252 - Floor Over Floor: Shatter Block</h3>
-      <p>Like the bustable block, linetype <a href="#l254">254</a>, except that it shatters on
-      any sort of contact, whether it's a spindash or not (and whether you're Knuckles or not).</p>
-      <p>If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, the block is only shatterable from
-      the bottom, like some things you spring up and break in Launch Base Zone from Sonic 3.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_BUSTUP|FF_SHATTER-->
-      <h3><a name="l253"></a>253 - Floor Over Floor: Shatter Block, Translucent</h3>
-      <p>Translucent version of <a href="#l252">252</a> supporting alpha values.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_BUSTUP|FF_SPINBUST|FF_TRANSLUCENT-->
-      <h3><a name="l254"></a>254 - Floor Over Floor: Bustable Block</h3>
-      <p>Bustable blocks can be destroyed by spindashing. Additionally, Knuckles can destroy
-      them by walking or jumping into them, since he is very strong. If the <a href="#NOCLIMB">NOCLIMB</a>
-      flag is set, only Knuckles can break the block.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_BUSTUP (|FF_ONLYKNUX if <a href="#NOCLIMB">NOCLIMB</a>)-->
-      <h3><a name="l255"></a>255 - Floor Over Floor: Spin Bust Block</h3>
-      <p>Like the bustable block, linetype <a href="#l254">254</a>, set off in a different way.
-      To break, jump onto it or fall down onto it while spinning. Similar to blocks found in
-      Marble Zone, as well as the ice cubes that would encase buttons and monitors in parts of
-      Ice Cap Zone.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_BUSTUP|FF_SPINBUST-->
-      <h3><a name="l256"></a>256 - Floor Over Floor: Spin Bust Block, Translucent</h3>
-      <p>Translucent version of <a href="#l255">255</a> supporting alpha values.</p>
-      <h3><a name="l257"></a>257 - Floor Over Floor: Quicksand Block</h3>
-      <p>It's set up like any block. You can, of course, sink and die in it. X length of the
-      linedef determines sink speed, Y length determines how &quot;sludgy&quot; movement in the
-      quicksand is.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_QUICKSAND|FF_RENDERALL|FF_ALLSIDES|FF_CUTSPRITES-->
-      <h3><a name="l258"></a>258 - Floor Over Floor: Laser Block</h3>
-      <p>Creates a blinking FOF that zaps you if you touch it. You can set the flats and texture
-      to whatever you want. For a red laser like in THZ2, use REDFLR for the flats and REDWALL
-      for the texture.</p>
-      <p>You can also make other colors using BLUEFLR/BLUWALL (blue laser), GREENFLR/GRNWALL
-      (green laser), and YELFLR/YELWALL (yellow laser). Of course, those colors of lasers are
-      very expensive, so Eggman doesn't have nearly as many of them. He usually goes with the
-      cheap red lasers.</p>
-<!--Exact FOF flags:
-FF_EXISTS|FF_RENDERALL|FF_NOSHADE|FF_EXTRA|FF_CUTEXTRA-->
-      <h3><a name="l259"></a>259 - Floor Over Floor: Custom</h3>
-      <p>Place the appropriate flag values in hex (do not include the 0x in front of it) in the
-      line's UPPER TEXTURE field on the 2nd side of the linedef.</p>
-    </ol>
-  </li>
-  <li><u><big><big>Linedef Executor Triggers</big></big></u><ol>
-      <h3><a name="l300"></a>300 - Trigger Linedef Executor (Continuous)</h3>
-      <p>Triggers linedef executor in the control sector when a player touches the tagged
-      sector's floor or steps in the sector (depending on the sector special used). The linedef
-      executor will keep being triggered over and over again as long as a player is there, hence
-      the word &quot;continuous&quot; in this linetype's name. Tagged sector must have one of
-      the <a href="#sCat2">Trigger Linedef Executor</a> types for this to work.</p>
-      <h3><a name="l301"></a>301 - Trigger Linedef Executor (Each Time)</h3>
-      <p>Like <a href="#l300">300</a>, except that it only gets triggered once for each time you
-      fall or jump onto the floor. Tagged sector must have one of the <a href="#sCat2">Trigger
-      Linedef Executor</a> types for this to work.</p>
-      <h3><a name="l302"></a>302 - Trigger Linedef Executor (Once)</h3>
-      <p>Like <a href="#l300">300</a>, except that after that linedef executor executes its
-      linedefs, it's done. It's over. The linedefs will never be executed again.</p>
-      <h3><a name="l303"></a>303 - Trigger Linedef Executor (Ring Count - Continuous)</h3>
-      <p>Triggers linedef executor in the control sector when a player touches the tagged
-      sector's floor or steps in the sector (depending on the sector special used). The linedef
-      executor will keep being triggered over and over again as long as a player is there, hence
-      the word &quot;continuous&quot; in this linetype's name. Tagged sector must have one of
-      the <a href="#sCat2">Trigger Linedef Executor</a> types for this to work. Executor will be
-      triggered depending on how many rings the player has:</p>
-      <p>No flags -&gt; Runs if (rings = line length)</p>
-      <p><a href="#NOCLIMB">NOCLIMB</a> -&gt; Runs if (rings &lt;= line length)</p>
-      <p><a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> -&gt; Runs if (rings &gt;= line length)</p>
-      <p><a href="#EFFECT4">EFFECT4</a> -&gt; Takes the rings of ALL players into account.</p>
-      <h3><a name="l304"></a>304 - Trigger Linedef Executor (Ring Count - Once)</h3>
-      <p>Like <a href="#l303">303</a>, except that after that linedef executor executes its
-      linedefs, it's done. It's over. The linedefs will never be executed again.</p>
-      <h3><a name="l305"></a>305 - Trigger Linedef Executor (Character Ability - Once)</h3>
-      <p>Like linetype <a href="#l302">302</a>, but is only activated when the character's
-      ability number matches the linedef length by multiples of 10. For example:</p>
-      <p>0-9 = Charability 0</p>
-      <p>10-19 = Charability 1</p>
-      <p>20-29 = Charability 2</p>
-      <p>etc...</p>
-      <h3><a name="l306"></a>306 - Trigger Linedef Executor (Character Ability - Continuous)</h3>
-      <p>Like <a href="#l300">300</a>, but only triggers when the character's ability number
-      matches the linedef length by multiples of 10. See linetype <a href="#l305">305</a> for a
-      futher description.</p>
-      <h3><a name="l307"></a>307 - Trigger Linedef Executor (Character Ability - Each Time)</h3>
-      <p>Like <a href="#l301">301</a>, but only triggers when the character's ability number
-      matches the linedef length by multiples of 10. See linetype <a href="#l305">305</a> for a
-      futher description.</p>
-      <h3><a name="l308"></a>308 - Trigger Linedef Executor (Race Only, Once)</h3>
-      <p>Like linetype <a href="#l302">302</a>, but is only activated when the gametype is Race.
-      Useful for doing things like opening doors, pre-solving puzzles, etc. to make race
-      smoother.</p>
-      <h3><a name="l309"></a>309 - Trigger Linedef Executor (CTF Red Team - Continuous)</h3>
-      <p>Like <a href="#l300">300</a>, but only triggers if you are in CTF and on the red team.</p>
-      <h3><a name="l310"></a>310 - Trigger Linedef Executor (CTF Red Team - Each Time)</h3>
-      <p>Like <a href="#l301">301</a>, but only triggers if you are in CTF and on the red team.</p>
-      <h3><a name="l311"></a>311 - Trigger Linedef Executor (CTF Blue Team - Continuous)</h3>
-      <p>Like <a href="#l300">300</a>, but only triggers if you are in CTF and on the blue team.</p>
-      <h3><a name="l312"></a>312 - Trigger Linedef Executor (CTF Blue Team - Each Time)</h3>
-      <p>Like <a href="#l301">301</a>, but only triggers if you are in CTF and on the blue team.</p>
-      <h3><a name="l313"></a>313 - Trigger Linedef Executor (No More Enemies - Once)</h3>
-      <p>Like linetype <a href="#l302">302</a>, but is only activated when no more objects of
-      type MF_ENEMY exist in its tagged area. Think &quot;destroy all enemies in this room for
-      the door to open to go to the next room&quot;. Tag this to a control sector. It will go
-      through the lines of the control sector, checking for any lines of type <a href="#l223">223</a>
-      and checking inside the area occupied by the invisible intangible FOF to see if any
-      enemies exist. If no alive enemies are in all of the type <a href="#l223">223</a> FOFs,
-      the linedef executor is run once. The line length is the tag number of the linedef
-      executor trigger to run.</p>
-      <h3><a name="l314"></a>314 - Trigger Linedef Executor (# of Pushables - Continuous)</h3>
-      <p>Like <a href="#l300">300</a>, but only triggers if the number of pushable objects in
-      the sector compared to the line length is:</p>
-      <p>No flags -&gt; Runs if (# pushables = line length)</p>
-      <p><a href="#NOCLIMB">NOCLIMB</a> -&gt; Runs if (# pushables &gt;= line length)</p>
-      <p><a href="#EFFECT4">EFFECT4</a> -&gt; Runs if (# pushables &lt; line length)</p>
-      <h3><a name="l315"></a>315 - Trigger Linedef Executor (# of Pushables - Once)</h3>
-      <p>Like <a href="#l314">314</a>, but only triggers once.</p>
-      <h3><a name="l316"></a>316 - Trigger Linedef Executor (PolyObject - Land On)</h3>
-      <p>This will trigger every time you land on the polyobject. Line's tag # is 32000 + the
-      PolyObject ID #. You must also flag the PolyObject Start (#20) line with <a
-      href="#NOCLIMB">NOCLIMB</a> to tell the game it has a linedef executor associated with it.</p>
-      <p>So if you had a PolyObject with an ID of 1, this line would have a tag of 32001.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Linedef Executor Options</big></big></u><ol>
-      <h3><a name="l400"></a>400 - Linedef Executor: Set Tagged Sector's Floor Height/Pic</h3>
-      <p>When executed, instantly changes the tagged sector's floor height and flat to the floor
-      height and flat of the linedef's front sector.</p>
-      <h3><a name="l401"></a>401 - Linedef Executor: Set Tagged Sector's Ceiling Height/Pic</h3>
-      <p>When executed, instantly changes the tagged sector's ceiling height and flat to the
-      ceiling height and flat of the linedef's front sector.</p>
-      <h3><a name="l402"></a>402 - Linedef Executor: Set Tagged Sector's Light Level</h3>
-      <p>When executed, instantly changes the tagged sector's light level to that of the
-      linedef's front sector. Floor and ceiling light settings done with linetypes <a
-      href="#l601">601</a> and <a href="#l600">600</a> are transferred as well; colormaps are
-      not.</p>
-      <p>If there is a lighting effect active in the target sector or sectors at the time (glow,
-      fade, strobe, flicker), it will be stopped.</p>
-      <h3><a name="l403"></a>403 - Linedef Executor: Move Tagged Sector's Floor</h3>
-      <p>When executed, starts moving the tagged sector's floor until it is at the same height
-      as the linedef's front sector's floor. Speed is indicated in the same units used by
-      linetype <a href="#l60">60</a>.</p>
-      <p>If the line used has <a href="#NOCLIMB">NOCLIMB</a> flag, the floor flat will change
-      after the move, to that on the front sector's floor. This is like what linetype <a
-      href="#l400">400</a> does.</p>
-      <p>If the line used has <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag, another linedef
-      executor will be run when the floor movement is finished. (If multiple sectors finish at
-      different times, it goes by the lowest numbered sector, but you should probably try to
-      avoid this scenario.) The tag of the new linedef executor to run is specified by the X
-      alignment on the front side of the line. The tag number you use must be positive, and this
-      functionality cannot be combined with changing the floor flat using the <a href="#NOCLIMB">NOCLIMB</a>
-      flag. Running a linedef executor will take precedence over changing the floor flat.</p>
-      <h3><a name="l404"></a>404 - Linedef Executor: Move Tagged Sector's Ceiling</h3>
-      <p>When executed, starts moving the tagged sector's ceiling until it is at the same height
-      as the linedef's front sector's ceiling. Speed is indicated in the same units used by
-      linetype <a href="#l60">60</a>.</p>
-      <p>If the line used has <a href="#NOCLIMB">NOCLIMB</a> flag, the ceiling flat will change
-      after the move, to that on the front sector's ceiling. This is like what linetype <a
-      href="#l401">401</a> does.</p>
-      <p>If the line used has <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag, another linedef
-      executor will be run when the ceiling movement is finished. (If multiple sectors finish at
-      different times, it goes by the lowest numbered sector, but you should probably try to
-      avoid this scenario.) The tag of the new linedef executor to run is specified by the X
-      alignment on the front side of the line. The tag number you use must be positive, and this
-      functionality cannot be combined with changing the ceiling flat using the <a
-      href="#NOCLIMB">NOCLIMB</a> flag. Running a linedef executor will take precedence over
-      changing the ceiling flat.</p>
-      <h3><a name="l405"></a>405 - Linedef Executor: Lower Floor by Line</h3>
-      <p>Speed is indicated by x distance; amount to lower is indicated by y distance.</p>
-      <h3><a name="l406"></a>406 - Linedef Executor: Raise Floor by Line</h3>
-      <p>Speed is indicated by x distance; amount to raise is indicated by y distance.</p>
-      <h3><a name="l407"></a>407 - Linedef Executor: Lower Ceiling by Line</h3>
-      <p>Speed is indicated by x distance; amount to lower is indicated by y distance.</p>
-      <h3><a name="l408"></a>408 - Linedef Executor: Raise Ceiling by Line</h3>
-      <p>Speed is indicated by x distance; amount to raise is indicated by y distance.</p>
-      <h3><a name="l409"></a>409 - Linedef Executor: Change Calling Sector's Tag</h3>
-      <p>Changes the tag of the calling sector; that is, the sector on the map that activated
-      this linedef executor. The new tag is the linedef's length.</p>
-      <h3><a name="l410"></a>410 - Linedef Executor: Change Front Sector's Tag</h3>
-      <p>Changes the tag of the linedef's front sector. The new tag is the linedef's length.</p>
-      <h3><a name="l411"></a>411 - Linedef Executor: Stop Plane Movement</h3>
-      <p>Stops any and all floor, ceiling, or elevator movement in the tagged sector or sectors.</p>
-      <h2><a name="l412"></a>412 - Linedef Executor: Teleport Player to Tagged Sector</h2>
-      <p>The player who triggered the linedef executor will be teleported to the tagged sector.
-      The player's exact X, Y, Z, and angle are determined by a teleport destination thing, type
-      <a href="#t751">751</a>, somewhere in the tagged sector.</p>
-      <p>If the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag is used, it won't flash and make
-      the teleport sound effects. If the <a href="#NOCLIMB">NOCLIMB</a> flag is used, it won't
-      reset the angle to the angle of the teleport destination thing, and if the <a
-      href="#EFFECT4">EFFECT4</a> flag is used, it will not kill your acceleration/speed upon
-      teleport.</p>
-      <h2><a name="l413"></a>413 - Linedef Executor: Change Music</h2>
-      <p>Linedef length indicates the music slot to use. If the linedef's <a href="#NOCLIMB">NOCLIMB</a>
-      flag is set, play the music once, otherwise loop it.</p>
-      <p>If the player dies and goes back to a starpost, the beginning of the level, or the
-      appropriate multiplayer start, the map music from before will be restored. The linedef
-      flag <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> can be set to change this behavior, and
-      retain the new music even after dying.</p>
-      <p>If the linedef length isn't a valid music slot, the music is stopped.</p>
-      <h3><a name="l414"></a>414 - Linedef Executor: Play SFX</h3>
-      <p>Plays a sound effect. The line length is the sound number to use. The list of sound
-      effects can be found in sounds.h. The origin of the sound depends on which linedef flags
-      are set: <ul>
-        <li><a href="#NOCLIMB">NOCLIMB</a> : The sound is played from nowhere, but only for the
-          player who triggered it.</li>
-        <li><a href="#EFFECT4">EFFECT4</a>: The sound is played from nowhere for everyone.</li>
-        <li><a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>: The sound is played from the center of the
-          sector that triggered the linedef executor.</li>
-      </ul>
-      <p>Otherwise, the sound is played from the location of the player or thing who triggered
-      it.</p>
-      <h3><a name="l415"></a>415 - Linedef Executor: Run Script</h3>
-      <p>Runs a script, the same kind of script you can run on level load with the level header
-      scriptname attribute. The script that will be run should have a lumpname of the form SCR<i>xxyyy</i>,
-      where <i>xx</i> is the two-digit map number and <i>yyy</i> is the linedef's sector's floor
-      height in decimal, with leading zeroes as necessary (or 000 if the floor height exceeds
-      999 fracunits). For instance, if the linedef is in MAP31 and the floor of its sector is
-      337 fracunits, the script named SCR31337 will be run.</p>
-      <h3><a name="l416"></a>416 - Linedef Executor: Start Adjustable Fire Flicker</h3>
-      <p>Essentially a copy of linetype <a href="#l603">603</a> that waits to activate until the
-      linedef executor is triggered. It does have an extra feature, though. If you use a
-      two-sided linedef with the <a href="#NOCLIMB">NOCLIMB</a> flag, the linedef's back sector
-      will be used as the maximum light level, allowing you to set the target sector (or
-      sectors) at a different starting light level entirely.</p>
-      <h3><a name="l417"></a>417 - Linedef Executor: Start Adjustable Glowing Light</h3>
-      <p>Essentially a copy of linetype <a href="#l602">602</a> that waits to activate until the
-      linedef executor is triggered. It does have an extra feature, though. If you use a
-      two-sided linedef with the <a href="#NOCLIMB">NOCLIMB</a> flag, the linedef's back sector
-      will be used as the maximum light level, allowing you to set the target sector (or
-      sectors) at a different starting light level entirely.</p>
-      <h3><a name="l418"></a>418 - Linedef Executor: Start Adjustable Blinking Light
-      (unsynchronized)</h3>
-      <p>Essentially a copy of linetype <a href="#l604">604</a> that waits to activate until the
-      linedef executor is triggered. It does have an extra feature, though. If you use a
-      two-sided linedef with the <a href="#NOCLIMB">NOCLIMB</a> flag, the linedef's back sector
-      will be used as the maximum light level, allowing you to set the target sector (or
-      sectors) at a different starting light level entirely.</p>
-      <h3><a name="l419"></a>419 - Linedef Executor: Start Adjustable Blinking Light
-      (synchronized)</h3>
-      <p>Essentially a copy of linetype <a href="#l605">605</a> that waits to activate until the
-      linedef executor is triggered. It does have an extra feature, though. If you use a
-      two-sided linedef with the <a href="#NOCLIMB">NOCLIMB</a> flag, the linedef's back sector
-      will be used as the maximum light level, allowing you to set the target sector (or
-      sectors) at a different starting light level entirely.</p>
-      <h3><a name="l420"></a>420 - Linedef Executor: Fade Light Level</h3>
-      <p>When executed, gradually fades the tagged sector's light level to that of the linedef's
-      front sector. Floor and ceiling light settings done with linetypes <a href="#l601">601</a>
-      and <a href="#l600">600</a> are not affected or used.</p>
-      <p>If there is a lighting effect already active in the target sector or sectors at the
-      time (glow, other fade, strobe, flicker), it will be halted in favor of this one.</p>
-      <p>Linedef length in fracunits indicates speed. Fading from 224 to 64 with a linedef
-      length of 4 will take 40 fracunits (224 - 64 = 160, 160 / 4 = 40). There are 35 fracunits
-      in a second.</p>
-      <h3><a name="l421"></a>421 - Linedef Executor: Stop Lighting Effect</h3>
-      <p>Stops any lighting effects active in the tagged sector or sectors: glow, fade, strobe,
-      flicker, etc. The light level, whatever it is at the moment this script line is run, will
-      be preserved until a new lighting effect or light level change is used.</p>
-      <p>Note that the lighting effects will all stop other lighting effects when activated. In
-      other words, you only need to use this when you really want the lighting effect to stop,
-      not when you want one effect to stop and another to start.</p>
-      <h3><a name="l422"></a>422 - Linedef Executor: Cut-Away View</h3>
-      <p>Cuts away to a view from a different place for a moment. Only works for linedef
-      executors triggered by a player. Tag the line to a sector with an alt view thing (map
-      thing type 5007) in it at the proper location with the proper Z and angle. The line length
-      indicates how long to stay in this view, in tics.</p>
-      <p>By giving the linedef a <a href="#NOCLIMB">NOCLIMB</a> flag, you can adjust the
-      vertical viewing angle from the cut-away view. Set the x offset on the linedef's front
-      side to an integer -90 to 90. In software mode the range of viewing angles is actually
-      about -68 to 68. This is in degrees.</p>
-      <h3><a name="l423"></a>423 - Linedef Executor: Change Sky</h3>
-      <p>Changes sky to the # of the control sector's floorheight. This only affects the player
-      who activates it. If you'd like it to affect all players, make sure you check the <a
-      href="#NOCLIMB">NOCLIMB</a> flag.</p>
-      <h3><a name="l424"></a>424 - Linedef Executor: Change Weather</h3>
-      <p>Changes weather to the control sector's floorheight in powers of 10.</p>
-      <p>Example:</p>
-      <div align="left"><table border="1" width="28%">
-        <tr>
-          <td width="50%">Linedef Length</td>
-          <td width="50%">Weather Type</td>
-        </tr>
-        <tr>
-          <td width="50%">10</td>
-          <td width="50%">None</td>
-        </tr>
-        <tr>
-          <td width="50%">20</td>
-          <td width="50%">Snow</td>
-        </tr>
-        <tr>
-          <td width="50%">30</td>
-          <td width="50%">Rain</td>
-        </tr>
-        <tr>
-          <td width="50%">40</td>
-          <td width="50%">Storm</td>
-        </tr>
-      </table>
-      </div><p>(higher numbers reserved for future use)</p>
-      <p>This only affects the player who activates it. If you'd like it to affect all players,
-      make sure you check the <a href="#NOCLIMB">NOCLIMB</a> flag.</p>
-      <h3><a name="l425"></a>425 - Linedef Executor: Change Object State</h3>
-      <p>Changes the animation frame of the activating object to the state # indicated by the
-      length of the control linedef. Be careful how you use this.</p>
-      <h3><a name="l426"></a>426 - Linedef Executor: Stop Object</h3>
-      <p>Makes the object that triggered the linedef executor stop moving, after being sent to
-      the center of the sector it's in (only if <a href="#NOCLIMB">NOCLIMB</a> flag is set), on
-      the floor. Although it comes to a complete stop, the object can begin moving right away
-      again. If the object is a player, the player will stop jumping, spinning, or anything
-      else.</p>
-      <h3><a name="l427"></a>427 - Linedef Executor: Award Score</h3>
-      <p>Adds to the score of the player who activated it. Control sector's floorheight = points
-      to award. This even works with negative values.</p>
-      <h3><a name="l428"></a>428 - Linedef Executor: Start Platform Movement</h3>
-      <p>Starts a moving platform in the nature of linetype <a href="#l59">59</a> or <a
-      href="#l60">60</a>. If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, the platform will
-      begin moving upwards. Otherwise, it will start moving downwards. Speed of movement is set
-      just like with linetype <a href="#l60">60</a>.</p>
-      <h3><a name="l429"></a>429 - Linedef Executor: Crush Ceiling Once</h3>
-      <p>Ceiling moves down to the floor, then back up. Speed is determined by line length -
-      every 16 units equals 1 FRACUNIT/tic.</p>
-      <h3><a name="l430"></a>430 - Linedef Executor: Crush Floor Once</h3>
-      <p>Floor moves up to the ceiling, then back down. Speed is determined by line length -
-      every 16 units equals 1 FRACUNIT/tic.</p>
-      <h3><a name="l431"></a>431 - Linedef Executor: Crush Floor And Ceiling Once</h3>
-      <p>Floor and ceiling meet in the middle and then return, sandwiching anything that's
-      inbetween. Speed is determined by line length - every 16 units equals 1 FRACUNIT/tic.</p>
-      <h3><a name="l432"></a>432 - Linedef Executor: Enable 2D Mode</h3>
-      <p>Turns on 2D mode within the level. You'll probably only want to use this with a zoom
-      tube or teleport to guarantee that the player is in the correct position when it switches.</p>
-      <h3><a name="l433"></a>433 - Linedef Executor: Disable 2D Mode</h3>
-      <p>Turns off 2D mode within the level.</p>
-      <h3><a name="l434"></a>434 - Linedef Executor: Award Custom Power</h3>
-      <p>Awards (or removes!) a power to the calling player.</p>
-      <p>X length: Power Index + 1</p>
-      <p>Y length: Power Duration (in 35ths of a second)</p>
-      <h3><a name="l435"></a>435 - Linedef Executor: Change Scroller Direction</h3>
-      <p>Changes direction of a scroller (conveyor, texture). Also changes speed if this is not
-      an accelerative/displacement scroller.</p>
-      <h3><a name="l436"></a>436 - Linedef Executor: Shatter Block</h3>
-      <p>Shatters a FOF - of any type. Parameters are as follows:</p>
-      <p>Texture X Offset: Tag # of FOF target sector</p>
-      <p>Texture Y Offset: Tag # of FOF control sector</p>
-      <p>Note that the FOF should only have one target sector.</p>
-      <h3><a name="l437"></a>437 - Linedef Executor: Disable Player Control</h3>
-      <p>Disables the controls of the player that triggered the linedef executor. If the
-      <a href="#NOCLIMB">NOCLIMB</a> flag is set, they will be able to jump, however.</p>
-      <p>Giving the front texture of the linedef an X offset will make the effect last that amount
-      of time, in tics.  Otherwise, it ends immediately, so you would need to use a continuous
-      trigger.</p>
-      <h3><a name="l438"></a>438 - Linedef Executor: Set Object's Scale</h3>
-      <p>Length of this line determines the scale size of an object, in percentage. Note that there is a max of 400%.</p>
-      <h3><a name="l450"></a>450 - Linedef Executor: Execute Linedef Executor</h3>
-      <p>Just what it says. Can be used for recursion. Be careful, because you CAN make a loop
-      out of this that will freeze the game.</p>
-      <p>Tag is the linedef executor trigger tag to run.</p>
-      <h3><a name="l488"></a>488 - Linedef Executor: PolyObject - Move by Waypoints</h3>
-      <p>Moves a polyobject along a sequence of Zoom Tube waypoints.</p>
-      <p>Texture X offset: Speed (8 = 1 FRACUNIT).</p>
-      <p>Texture Y offset: Sequence # of Zoom Tube waypoints.</p>
-      <p>The movement also depends on which linedef flags are set: <ul>
-        <li><a href="#EFFECT1">EFFECT1</a> : Moves from highest waypoint # to lowest waypoint #.</li>
-        <li><a href="#EFFECT2">EFFECT2</a> : Comes back the way it came when the end is reached.</li>
-        <li><a href="#EFFECT3">EFFECT3</a> : Wrap around the waypoints.</li>
-        <li><a href="#EFFECT4">EFFECT4</a>:&nbsp; Continuously move (used with EFFECT2 or EFFECT3).</li>
-      </ul>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Scrollers / Pushers</big></big></u><ol>
-      <h3><a name="l500"></a>500 - Scroll Wall First Side Left</h3>
-      <h3><a name="l501"></a>501 - Scroll Wall First Side Opposite Direction</h3>
-      <h3><a name="l502"></a>502 - Scroll Wall According to Linedef</h3>
-      <h3><a name="l503"></a>503 - Acc Scroll Wall According to Linedef</h3>
-      <p>Accelerative scrolling version of <a href="#l502">502</a>.</p>
-      <h3><a name="l504"></a>504 - Disp Scroll Wall According to Linedef</h3>
-      <p>Displacement scrolling version of <a href="#l502">502</a>.</p>
-      <h3><a name="l505"></a>505 - Scroll Texture by Offsets</h3>
-      <hr>
-      <h3><a name="l510"></a>510 - Scroll Floor Texture</h3>
-      <p>Linedef length and direction indicate speed and direction.</p>
-      <h3><a name="l511"></a>511 - Acc Scroll Floor Texture</h3>
-      <p>Accelerative scrolling version of <a href="#l510">510</a>.</p>
-      <h3><a name="l512"></a>512 - Disp Scroll Floor Texture</h3>
-      <p>Displacement scrolling version of <a href="#l510">510</a>.</p>
-      <h3><a name="l513"></a>513 - Scroll Ceiling Texture</h3>
-      <p>Linedef length and direction indicate speed and direction.</p>
-      <h3><a name="l514"></a>514 - Acc Scroll Ceiling Texture</h3>
-      <p>Accelerative scrolling version of <a href="#l513">513</a>.</p>
-      <h3><a name="l515"></a>515 - Disp Scroll Ceiling Texture</h3>
-      <p>Displacement scrolling version of <a href="#l513">513</a>.</p>
-      <hr>
-      <h3><a name="l520"></a>520 - Carry Objects on Floor</h3>
-      <p>Like linedef type <a href="#l530">530</a>, without scrolling the floor texture, so the
-      floor doesn't look like it's moving.</p>
-      <h3><a name="l521"></a>521 - Acc Carry Objects on Floor</h3>
-      <p>Accelerative scrolling version of <a href="#l520">520</a>.</p>
-      <h3><a name="l522"></a>522 - Disp Carry Objects on Floor</h3>
-      <p>Displacement scrolling version of <a href="#l520">520</a>.</p>
-      <h3><a name="l523"></a>523 - Carry Objects on Ceiling</h3>
-      <p>For FOF conveyor belts. Like <a href="#l533">533</a>, except without the scrolling to
-      accompany it.</p>
-      <h3><a name="l524"></a>524 - Acc Carry Objects on Ceiling</h3>
-      <p>Accelerative scrolling version of <a href="#l523">523</a>. Untested.</p>
-      <h3><a name="l525"></a>525 - Disp Carry Objects on Ceiling</h3>
-      <p>Displacement scrolling version of <a href="#l523">523</a>. Untested.</p>
-      <hr>
-      <h3><a name="l530"></a>530 - Scroll Floor Texture and Carry Objects</h3>
-      <p>Used for conveyor belts, in conjunction with sector type <a href="#s1024">1024</a>
-      (Conveyor Belt). Linedef length and direction indicate conveyor speed and direction,
-      respectively. This can also be used to convey items on the underneath of a FOF. See Egg
-      Rock Zone for an example.</p>
-      <h3><a name="l531"></a>531 - Acc Scroll Floor Texture and Carry Objects</h3>
-      <p>Accelerative scrolling version of <a href="#l530">530</a>.</p>
-      <h3><a name="l532"></a>532 - Disp Scroll Floor Texture and Carry Objects</h3>
-      <p>Displacement scrolling version of <a href="#l530">530</a>.</p>
-      <h3><a name="l533"></a>533 - Scroll Ceiling Texture and Carry Objects</h3>
-      <p>For conveyor belts on the top of FOFs, or for conveying items on a ceiling. Tag this to
-      the FOF control sector and give the FOF control sector a type of <a href="#s1024">1024</a>,
-      Conveyor Belt. For realism you might also want to scroll the control sector's floor
-      texture in the opposite direction (see linetype <a href="#l510">510</a>).</p>
-      <h3><a name="l534"></a>534 - Acc Scroll Ceiling Texture and Carry Objects</h3>
-      <p>Accelerative scrolling version of <a href="#l533">533</a>. Untested.</p>
-      <h3><a name="l535"></a>535 - Disp Scroll Ceiling Texture and Carry Objects</h3>
-      <p>Displacement scrolling version of <a href="#l533">533</a>. Untested.</p>
-      <hr>
-      <h3><a name="l540"></a>540 - Friction</h3>
-      <p>Linedef lengths greater than 100 indicate slippery ice, while linedef lengths less than
-      100 can be used for sludge, with extra friction.</p>
-      <p>If you want friction on a FOF, tag this line to the control sector of the FOF.
-      Otherwise, tag it to the sector of desired destination.</p>
-      <h3><a name="l541"></a>541 - Wind</h3>
-      <p>Speed and direction are indicated by linedef length and direction. The target sector
-      should be of type <a href="#s512">512</a>, Wind/Current. If being used in a 3D Floor, put
-      the 512/768 sector type in the control sector, not the target sector. Also tag the line to
-      the control sector, and not the target sector.</p>
-      <p>Special flags:</p>
-      <p><a href="#NOCLIMB">NOCLIMB</a> -&gt; Only this pusher will affect the object - the
-      object can't have multiple 'pushings' due to being on the edge of a sector, etc.</p>
-      <p><a href="#EFFECT4">EFFECT4</a> -&gt; Player will go into slide with limited control
-      (similar to the water and oil slides in Labyrinth and Oil Ocean).</p>
-      <h3><a name="l542"></a>542 - Upwards Wind</h3>
-      <p>The length of the linedef is the wind speed. The target sector will need type <a
-      href="#s512">512</a> or <a href="#s768">768</a>. If being used in a 3D Floor, put the
-      512/768 sector type in the control sector, not the target sector. Also tag the line to the
-      control sector, and not the target sector.</p>
-      <p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
-      <h3><a name="l543"></a>543 - Downwards Wind</h3>
-      <p>Wind speed is determined by the linedef's length. Type <a href="#s512">512</a> or <a
-      href="#s768">768</a> must be applied to the target sector. If being used in a 3D Floor,
-      put the 512/768 sector type in the control sector, not the target sector. Also tag the
-      line to the control sector, and not the target sector.</p>
-      <p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
-      <h3><a name="l544"></a>544 - Current</h3>
-      <p>Speed and direction are indicated by linedef length and direction. The target sector
-      should have type <a href="#s512">512</a>, Wind/Current. If being used in a 3D Floor, put
-      the 512/768 sector type in the control sector, not the target sector. Also tag the line to
-      the control sector, and not the target sector.</p>
-      <p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
-      <h3><a name="l545"></a>545 - Upwards Current</h3>
-      <p>Linedef length indicates speed. Target sector needs sector type <a href="#s512">512</a>
-      or <a href="#s768">768</a>. If being used in a 3D Floor, put the 512/768 sector type in
-      the control sector, not the target sector. Also tag the line to the control sector, and
-      not the target sector.</p>
-      <p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
-      <h3><a name="l546"></a>546 - Downwards Current</h3>
-      <p>Speed is indicated by linedef length. Assign a type of <a href="#s512">512</a> or <a
-      href="#s768">768</a> to the target sector. If being used in a 3D Floor, put the 512/768
-      sector type in the control sector, not the target sector. Also tag the line to the control
-      sector, and not the target sector.</p>
-      <p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
-      <h3><a name="l547"></a>547 - Boom Push/Pull Thing</h3>
-      <p>Creates a &quot;point pusher,&quot; or a point that pushes you away or pulls you toward
-      it if you get close enough. Tag the linedef to a sector with type <a href="#s512">512</a>,
-      Wind/Current, and with a thing on it of type 5001 (push) or 5002 (pull). The control
-      linedef's length indicates pushing/pulling strength; if length is L, the effect fades away
-      to nothing when you are 2L away from the point.</p>
-      <p>If you want to create multiple point pushers/pullers, you'll need to have them in
-      different target sectors, but they can share the same tag.</p>
-      <p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Lighting</big></big></u><ol>
-      <h3><a name="l600"></a>600 - Floor Lighting</h3>
-      <p>Sets the lighting for the floor only. The control sector's light value will be used for
-      the target sector's floor. Also see type <a href="#l601">601</a>.</p>
-      <h3><a name="l601"></a>601 - Ceiling Lighting</h3>
-      <p>Sets the lighting of the ceiling only. The light value of the control sector will be
-      used for the target sector's ceiling. Also see type <a href="#l600">600</a>.</p>
-      <h3><a name="l602"></a>602 - Adjustable Pulsating Light</h3>
-      <p>Linedef length indicates glow speed. The normal speed would be a linedef 32 units long.</p>
-      <p>The control sector (the linedef's front sector) is used to get what will be the minimum
-      light level for this effect, while the target sector's light level ends up being the
-      maximum.</p>
-      <h3><a name="l603"></a>603 - Adjustable Flickering Light</h3>
-      <p>Linedef length indicates flicker speed. Normal speed would be a 16 fracunit long
-      linedef. A longer linedef means more time in between flickers.</p>
-      <p>The control sector (the linedef's front sector) is used to get what will be the minimum
-      light level for this effect, while the target sector's light level ends up being the
-      maximum.</p>
-      <h3><a name="l604"></a>604 - Adjustable Blinking Light (unsynchronized)</h3>
-      <p>Line's X length is time for the light to be off, and Y length is the time for the light
-      to be on.</p>
-      <p>The control sector (the linedef's front sector) is used to get what will be the minimum
-      light level for this effect, while the target sector's light level ends up being the
-      maximum.</p>
-      <h3><a name="l605"></a>605 - Adjustable Blinking Light (synchronized)</h3>
-      <p>Line's X length is time for the light to be off, and Y length is the time for the light
-      to be on.</p>
-      <p>The control sector (the linedef's front sector) is used to get what will be the minimum
-      light level for this effect, while the target sector's light level ends up being the
-      maximum.</p>
-      <h3><a name="l606"></a>606 - Colormap</h3>
-      <p>Sets a colormap. Tag the linedef to the sector or sectors affected by the colormap. The
-      control linedef's front Above texture is used to determine the colormap. The format is
-      #rrggbba, where rr, gg, and bb are two hexadecimal digits for determining each color: red,
-      blue, and green. The a stands for alpha, and is a number or letter indicating the
-      translucency; from A-Z and 0-9, with A being most transparent and 9 being most opaque.</p>
-      <p>It does not generally matter what sector the colormap linedef belongs to. However, it
-      should not belong to the same sector as another colormap, as this can cause problems.</p>
-    </ol>
-  </li>
-  <h1><a name="sectortypes"></a>Sector Types</h1>
-  <p>You can apply up to four different types to one sector, provided that you only choose
-  ONE from EACH category. Add the numbers together to obtain the final value to use in level
-  editors.</p>
-  <li><u><big><big>Section 1</big></big></u><ol>
-      <h3><a name="s1"></a>1 - Damage (Generic)</h3>
-      <p>This special hurts, period. It doesn't matter whether you have a liquid shield, fire
-      shield, attraction shield, or whatever else; step on one of these and suffer.</p>
-      <h3><a name="s2"></a>2 - Damage (Water)</h3>
-      <p>Also known as Slime Hurt. Stepping here will be painful, as in shield/ring/life loss
-      (depending on how you are equipped), unless you happen to have the liquid shield.</p>
-      <h3><a name="s3"></a>3 - Damage (Fire)</h3>
-      <p>Stepping here will hurt, unless you happen to have a fire shield.</p>
-      <h3><a name="s4"></a>4 - Damage (Electrical)</h3>
-      <p>Hurts players whenever they're in the sector, unless they have the attraction shield.</p>
-      <p>Usage tip: Give the sector a floor flat that looks electrical and looks like it could
-      hurt you. </p>
-      <h3><a name="s5"></a>5 - Spikes</h3>
-      <p>Making spikes using sectors is rather tedious and difficult. You can use things instead
-      (<a href="#t523">Floor Spike</a> and <a href="#t522">Ceiling Spike</a>). But the sector
-      version DOES look cooler. ;)</p>
-      <h3><a name="s6"></a>6 - Death Pit (Camera Modifications)</h3>
-      <p>Used for bottomless pits. You'll probably want the sector's floor flat to be either
-      F_SKY1 (falling from the sky) or PIT (falling into a pit of complete blackness). The
-      camera modifications keep the camera from following you all the way down, for a Sonic
-      Adventure-style pit death. If you don't like the camera modifications, use sector type <a
-      href="#s7">5</a>.</p>
-      <h3><a name="s7"></a>7 - Death Pit (No Camera Modifications)</h3>
-      <p>For bottomless pits. Use if the camera modifications of sector type <a href="#s6">6</a>
-      are not to your taste.</p>
-      <h3><a name="s8"></a>8 - Instant Kill</h3>
-      <p>Die right away if you even step into this sector. No need to touch the floor as with
-      those sissy death pits.</p>
-      <h3><a name="s9"></a>9 - Ring Drainer (Floor Touch)</h3>
-      <p>Lose one ring per 15 tics while touching the floor.</p>
-      <h3><a name="s10"></a>10 - Ring Drainer (No Floor Touch)</h3>
-      <p>Like sector type <a href="#s9">9</a>, but doesn't require touching floor.</p>
-      <h3><a name="s11"></a>11 - Special Stage Damage</h3>
-      <p>If you have rings and no shield, and you step on it, you only lose 10 rings, maximum.
-      It's just like the special stages!</p>
-      <h3><a name="s12"></a>12 - Space Countdown</h3>
-      <p>In space, you have no chance to survive make your time, ha ha ha. Starts an immediate
-      five-second countdown, like when you drown.</p>
-      <h3><a name="s13"></a>13 - Ramp Sector</h3>
-      <p>Doubles the step-up height of the player. Default step-up height is 24 fracunits, but
-      with this, it becomes 48. Useful for steps and other things if your players seem to be
-      getting 'stopped' by the stairs while moving quickly.</p>
-      <h3><a name="s14"></a>14 - Non-Ramp Sector (Don't step down)</h3>
-      <p>Removes the 'step-down' that a player will normally do when moving to a nearby sector.</p>
-      <h3><a name="s15"></a>15 - Bouncy Sector (FOF Control Only)</h3>
-      <p>Use this on a 3D floor's control sector to make it bouncy. Players will bounce off the
-      top of it. If the 3D floor's control line has the BOUNCY flag set, the linedef length sets
-      the minimum bounce force. Otherwise, you will slowly come to a stop.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big><a name="sCat2"></a>Section 2</big></big></u><ol>
-      <h3><a name="s16"></a>16 - Trigger Linedef Executor (Pushable Objects)</h3>
-      <p>Works like <a href="#s80">80</a> but with a pushable object (gargoyle or snowman)
-      touching the floor rather than a player.</p>
-      <h3><a name="s32"></a>32 - Trigger Linedef Executor (Anywhere in Sector) (All Players)</h3>
-      <p>Sector type <a href="#s64">64</a> with the added requirement that all players who don't
-      have a game over need to be in the sector, not just one player. Currently does not work in
-      FOFs.</p>
-      <h3><a name="s48"></a>48 - Trigger Linedef Executor (Floor Touch) (All Players)</h3>
-      <p>Sector type <a href="#s80">80</a> with the added requirement that all players who don't
-      have a game over need to be in the sector, not just one player.</p>
-      <h3><a name="s64"></a>64 - Trigger Linedef Executor (Anywhere in Sector)</h3>
-      <p>Like sector type <a href="#s80">80</a>, but you don't have to be touching the floor to
-      do the triggering. You could be flying high in the air. You should also use this one for
-      linedef executors triggered by FOFs.</p>
-      <h3><a name="s80"></a>80 - Trigger Linedef Executor (Floor Touch)</h3>
-      <p>Required for any of the <a href="#ltriggers">Linedef Executor Triggers</a> to work in
-      the sector.</p>
-      <h3><a name="s96"></a>96 - Trigger Linedef Executor (Emerald Check)</h3>
-      <p>Sector type <a href="#s64">64</a> which will only execute if you have all 7 chaos
-      emeralds.</p>
-      <h3><a name="s112"></a>112 - Trigger Linedef Executor (NiGHTS Mare)</h3>
-      <p>Like sector type <a href="#s64">64</a>, but this is only triggered if you are in a
-      NiGHTS map, and checks what mare you're on using the following format, depending on what
-      flags you have set for this line:</p>
-      <p>No flags -&gt; Runs if (current mare = line length)</p>
-      <p><a href="#NOCLIMB">NOCLIMB</a> -&gt; Runs if (current mare &lt;= line length)</p>
-      <p><a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> -&gt; Runs if (current mare &gt;= line
-      length)</p>
-      <h3><a name="s128"></a>128 - Check for linedef executor on 3D Floors (ANY object)</h3>
-      <p>For any item to detect sector type <a href="#l16">16</a> on a 3D floor, the target
-      sector on the map must have this type. This allows you to have any kind of object trigger
-      a linedef executor.</p>
-      <h3><a name="s144"></a>144 - Egg Trap Capsule</h3>
-      <h3><a name="s160"></a>160 - Special Stage Time/Rings, Par</h3>
-      <p>For special stages, floor height is time limit in seconds, and ceiling height is rings
-      required in seconds. If the ceiling height is 0, there is no ring requirement, only a time
-      limit to find an exit.</p>
-      <h3><a name="s176"></a>176 - Custom Global Gravity</h3>
-      <p>Floor height sets global gravity. 500 is normal. 1000 is twice the normal gravity, 250
-      is half. You can also set per-sector gravity with linetype <a href="#l1">1</a>. This can
-      also be adjusted in realtime, for some really cool effects.</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Section 3</big></big></u><ol>
-      <h3><a name="s256"></a>256 - Ice/Sludge</h3>
-      <p>See linedef type <a href="#l540">540</a>.</p>
-      <h3><a name="s512"></a>512 - Wind/Current</h3>
-      <p>See linedef types <a href="#l541">541</a> and <a href="#l544">544</a>.</p>
-      <h3><a name="s768"></a>768 - Ice/Sludge and Wind/Current</h3>
-      <p>Combination of sector specials 256 and 512.</p>
-      <h3><a name="s1024"></a>1024 - Conveyor Belt</h3>
-      <p>See linedef type <a href="#l520">520</a>.</p>
-      <h3><a name="s1280"></a>1280 - Speed Pad (No Spin)</h3>
-      <p>See linedef type <a href="#l4">4</a>.</p>
-      <h3><a name="s1536"></a>1536 - Speed Pad (Spin)</h3>
-      <p>See linedef type <a href="#l4">4</a>. This type of speed pad forces you into a spin.</p>
-      <h3><a name="s1792"></a>1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840 - Bustable
-      Block Sprite Parameter</h3>
-      <p>Used in a control sector of a bustable block. Chooses which debris sprite to spawn.</p>
-      <p>1792 = ROIA</p>
-      <p>2048 = ROIB</p>
-      <p>2304 = ROIC</p>
-      <p>2560 = ROID</p>
-      <p>2816 = ROIE</p>
-      <p>3072 = ROIF</p>
-      <p>3328 = ROIG</p>
-      <p>3584 = ROIH</p>
-      <p>3840 = ROII</p>
-      <p>&nbsp;</p>
-    </ol>
-  </li>
-  <li><u><big><big>Section 4</big></big></u><ol>
-      <h3><a name="s4096"></a>4096 - Starpost Activator</h3>
-      <p>Whenever a player steps in the sector, a starpost in that sector will be searched for
-      and, if found, activated.</p>
-      <h3><a name="s8192"></a>8192 - Special Stage Goal</h3>
-      <p>This is like the &quot;GOAL&quot; buttons in Sonic 1's special stages. Ends the special
-      stage when stepped on.</p>
-      <h3><a name="s8192a"></a>8192 - Exit Sector</h3>
-      <p>In single-player, cooperative, or race mode, being in this sector ends the level. You
-      don't necessarily have to be touching the floor. (If you want the player to have to be
-      touching the floor, you can use linedef type <a href="#l223">223</a>, an invisible,
-      intangible FOF, to do the trick. Give the FOF control sector a type of <a href="#s8192">8192</a>.)</p>
-      <p>See linedef type <a href="#l2">2</a> for a way to exit to any map, not just the one
-      whose number is specified in the map header. Linedef 2 also allows you to skip the score
-      tally screen.</p>
-      <h3><a name="s8192b"></a>8192 - No Tag Zone</h3>
-      <p>In games of tag, this sector is a safe spot. You cannot be tagged while in it.</p>
-      <h3><a name="s8192c"></a>8192 - CTF: Flag Return</h3>
-      <p>In CTF, if the red or blue flag enters this sector, it will automatically return to
-      base, much like how it behaves when it falls in a pit. This can also be set as a special
-      on a 3D floor.</p>
-      <h3><a name="s12288"></a>12288 - CTF: Red Team Base</h3>
-      <p>The red team has to bring the <a href="#t307">blue flag</a> onto this sector to score.
-      It's generally a good idea to have the <a href="#t306">red flag</a> here and the <a
-      href="#t34">red team player starts</a> somewhere close by.</p>
-      <h3><a name="s16384"></a>16384 - CTF: Blue Team Base</h3>
-      <p>The blue team has to bring the <a href="#t306">red flag</a> onto this sector to score.
-      It's generally a good idea to have the <a href="#t307">blue flag</a> here and the <a
-      href="#t35">blue team player starts</a> somewhere close by.</p>
-      <h3><a name="s20480"></a>20480 - Fan Sector</h3>
-      <p>Acts like a fan, pushing the player up at constant speed and activating the proper
-      animation. Can be used on intangible FOFs.</p>
-      <h3><a name="s24576"></a>24576 - Super Sonic Transform</h3>
-      <p>Transforms you into Super Sonic and gives you 50 rings, providing you have all of the
-      chaos emeralds.</p>
-      <h3><a name="s28672"></a>28672 - Spinner</h3>
-      <p>Forces the player into a spin.</p>
-      <h3><a name="s32768"></a>32768 - Zoom Tube Start</h3>
-      <p>When the player touches this sector, a line type <a href="#l3">3</a> with the same tag
-      as the sector is searched for, and if found, the line's X length determines the speed at
-      which the tube operates, while its Y length determines which zoom tube sequence to use.
-      Then the player is immediately put into a spin, loses control, and gravitates toward the
-      first Zoom Tube Waypoint (thing type <a href="#t753">753</a>), which does not have to be
-      in the same sector. Once they reach the first waypoint, they begin traveling to the 2nd,
-      3rd, and so on, until the last waypoint is reached.</p>
-      <p>This can be used with Floor-Over-Floors, just use these specials in the control sector
-      instead. </p>
-      <h3><a name="s36864"></a>36864 - Zoom Tube End</h3>
-      <p>Just like sector type <a href="#s32768">32768</a>, but starts from the last waypoint
-      and goes to the first.</p>
-      <h3><a name="s40960"></a>40960 - Finish Line</h3>
-      <p>The finish line for a race circuit. This increments a lap when you pass it, after
-      hitting all the star posts in the stage in sequential order. Once the number of laps
-      specified by the server is reached, the level is completed.</p>
-    </ol>
-  </li>
-</ul>
-</body>
-</html>
diff --git a/doc/specs/udmf_srb2.txt b/doc/specs/udmf_srb2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c758d7e40f13d466afcfc689c679845fec71b906
--- /dev/null
+++ b/doc/specs/udmf_srb2.txt
@@ -0,0 +1,311 @@
+===============================================================================
+Universal Doom Map Format Sonic Robo Blast 2 extensions v1.0 19.02.2024
+
+    Copyright (c) 2024 Sonic Team Junior
+       uses Universal Doom Map Format Specification v1.1 as a template,
+       original document Copyright (c) 2009 James Haley.
+    Permission is granted to copy, distribute and/or modify this document
+    under the terms of the GNU Free Documentation License, Version 1.2
+    or any later version published by the Free Software Foundation;
+    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+
+===============================================================================
+
+This document discusses the UDMF implementation found in Sonic Robo Blast 2's engine.
+
+=======================================
+I. Grammar / Syntax
+=======================================
+
+    No changes.
+
+=======================================
+II. Implementation Semantics
+=======================================
+
+------------------------------------
+II.A : Storage and Retrieval of Data
+------------------------------------
+
+    No changes.
+
+-----------------------------------
+II.B : Storage Within Archive Files
+-----------------------------------
+
+    No changes.
+
+--------------------------------
+II.C : Implementation Dependence
+--------------------------------
+
+The SRB2 engine only supports the following namespace:
+    "srb2"
+
+The engine is allowed to refuse maps with an unsupported namespace,
+or emit a warning.
+
+=======================================
+III. Standardized Fields
+=======================================
+
+The SRB2 engine ignores any user-defined fields.
+All boolean fields default to false unless mentioned otherwise.
+
+Sonic Robo Blast 2 defines the following standardized fields:
+
+   vertex
+   {
+      x = <float>;        // X coordinate. No valid default.
+      y = <float>;        // Y coordinate. No valid default.
+      zfloor = <float>;   // Floor height at this vertex. Only applies to triangular sectors
+      zceiling = <float>; // Ceiling height at this vertex. Only applies to triangular sectors
+   }
+
+   linedef
+   {
+      id      = <integer>;        // ID of line. Interpreted as tag.
+      moreids = <string>;         // Additional line IDs, specified as a space separated list of numbers (e.g. "2 666 1003 4505")
+
+      v1 = <integer>;             // Index of first vertex. No valid default.
+      v2 = <integer>;             // Index of second vertex. No valid default.
+
+      blocking      = <bool>;     // Line blocks things.
+      blockmonsters = <bool>;     // Line blocks enemies.
+      twosided      = <bool>;     // Line is 2S.
+      dontpegtop    = <bool>;     // Upper texture unpegged.
+      dontpegbottom = <bool>;     // Lower texture unpegged.
+      skewtd        = <bool>;     // Upper and lower textures are skewed.
+      noclimb       = <bool>;     // Line is not climbable.
+      noskew        = <bool>;     // Middle texture is not skewed.
+      midpeg        = <bool>;     // Middle texture is pegged.
+      midsolid      = <bool>;     // Middle texture is solid.
+      wrapmidtex    = <bool>;     // Line's mid textures are wrapped.
+      nonet         = <bool>;     // Special only takes effect in singleplayer games.
+      netonly       = <bool>;     // Special only takes effect in multiplayer games.
+      bouncy        = <bool>;     // Line is bouncy.
+      transfer      = <bool>;     // In 3D floor sides, uses the sidedef properties of the control sector.
+
+      alpha       = <float>;      // Translucency of this line. Default is 1.0
+      renderstyle = <string>;     // Render style. Can be:
+                                  // - "translucent"
+                                  // - "add"
+                                  // - "subtract"
+                                  // - "reversesubtract"
+                                  // - "modulate"
+                                  // - "fog"
+                                  // Default is "translucent".
+
+      special    = <integer>; // Linedef action. Default = 0.
+      arg0       = <integer>; // Argument 0. Default = 0.
+      arg1       = <integer>; // Argument 1. Default = 0.
+      arg2       = <integer>; // Argument 2. Default = 0.
+      arg3       = <integer>; // Argument 3. Default = 0.
+      arg4       = <integer>; // Argument 4. Default = 0.
+      arg5       = <integer>; // Argument 5. Default = 0.
+      arg6       = <integer>; // Argument 6. Default = 0.
+      arg7       = <integer>; // Argument 7. Default = 0.
+      arg8       = <integer>; // Argument 8. Default = 0.
+      arg9       = <integer>; // Argument 9. Default = 0.
+      stringarg0 = <string>;  // String argument 0.
+      stringarg1 = <string>;  // String argument 1.
+
+      sidefront = <integer>; // Sidedef 1 index. No valid default.
+      sideback  = <integer>; // Sidedef 2 index. Default = -1.
+
+      comment = <string>; // A comment. Implementors should attach no special
+                          // semantic meaning to this field.
+   }
+
+   sidedef
+   {
+      offsetx = <integer>; // X offset. Default = 0.
+      offsety = <integer>; // Y offset. Default = 0.
+
+      texturetop    = <string>; // Upper texture. Default = "-".
+      texturebottom = <string>; // Lower texture. Default = "-".
+      texturemiddle = <string>; // Middle texture. Default = "-".
+
+      repeatcnt = <string>; // Number of middle texture repetitions. Default = 0
+
+      sector = <integer>; // Sector index. No valid default.
+
+      scalex_top = <float>;            // X scale for upper texture. Default = 1.0.
+      scaley_top = <float>;            // Y scale for upper texture. Default = 1.0.
+      scalex_mid = <float>;            // X scale for mid texture. Default = 1.0.
+      scaley_mid = <float>;            // Y scale for mid texture. Default = 1.0.
+      scalex_bottom = <float>;         // X scale for lower texture. Default = 1.0.
+      scaley_bottom = <float>;         // Y scale for lower texture. Default = 1.0.
+      offsetx_top = <float>;           // X offset for upper texture. Default = 0.0.
+      offsety_top = <float>;           // Y offset for upper texture. Default = 0.0.
+      offsetx_mid = <float>;           // X offset for mid texture. Default = 0.0.
+      offsety_mid = <float>;           // Y offset for mid texture. Default = 0.0.
+      offsetx_bottom = <float>;        // X offset for lower texture. Default = 0.0.
+      offsety_bottom = <float>;        // Y offset for lower texture. Default = 0.0.
+
+      comment = <string>; // A comment. Implementors should attach no special
+                          // semantic meaning to this field.
+   }
+
+   sector
+   {
+      heightfloor   = <integer>; // Floor height. Default = 0.
+      heightceiling = <integer>; // Ceiling height. Default = 0.
+
+      texturefloor   = <string>; // Floor flat. No valid default.
+      textureceiling = <string>; // Ceiling flat. No valid default.
+
+      lightlevel = <integer>;         // Light level. Default = 255.
+      lightfloor = <integer>;         // The floor's light level. Default is 0.
+      lightceiling = <integer>;       // The ceiling's light level. Default is 0.
+      lightfloorabsolute = <bool>;    // true = 'lightfloor' is an absolute value. Default is
+                                      // relative to the owning sector's light level.
+      lightceilingabsolute = <bool>;  // true = 'lightceiling' is an absolute value. Default is
+                                      // relative to the owning sector's light level.
+
+      special = <integer>; // Sector special. Default = 0.
+      id      = <integer>; // Sector tag/id. Default = 0.
+      moreids = <string>;  // Additional sector IDs/tags, specified as a space separated list of numbers (e.g. "2 666 1003 4505")
+
+      xpanningfloor = <float>;        // X texture offset of floor texture. Default = 0.0.
+      ypanningfloor = <float>;        // Y texture offset of floor texture. Default = 0.0.
+      xpanningceiling = <float>;      // X texture offset of ceiling texture. Default = 0.0.
+      ypanningceiling = <float>;      // Y texture offset of ceiling texture. Default = 0.0.
+      xscalefloor = <float>;          // X texture scale of floor texture. Default = 1.0.
+      yscalefloor = <float>;          // Y texture scale of floor texture. Default = 1.0.
+      xscaleceiling = <float>;        // X texture scale of ceiling texture. Default = 1.0.
+      yscaleceiling = <float>;        // Y texture scale of ceiling texture. Default = 1.0.
+      rotationfloor = <float>;        // Rotation of floor texture in degrees. Default = 0.0.
+      rotationceiling = <float>;      // Rotation of ceiling texture in degrees. Default = 0.0.
+      ceilingplane_a = <float>;       // Define the plane equation for the sector's ceiling. Default is a horizontal plane at 'heightceiling'.
+      ceilingplane_b = <float>;       // 'heightceiling' will still be used to calculate texture alignment.
+      ceilingplane_c = <float>;       // The plane equation will only be used if all 4 values are given.
+      ceilingplane_d = <float>;       // The plane is defined as a*x + b*y + c*z + d = 0 with the normal vector pointing downward.
+      floorplane_a = <float>;         // Define the plane equation for the sector's floor. Default is a horizontal plane at 'heightfloor'.
+      floorplane_b = <float>;         // 'heightfloor' will still be used to calculate texture alignment.
+      floorplane_c = <float>;         // The plane equation will only be used if all 4 values are given.
+      floorplane_d = <float>;         // The plane is defined as a*x + b*y + c*z + d = 0 with the normal vector pointing upward.
+
+      lightcolor          = <integer>;      // Sector's light color as RRGGBB value. Default = 0x000000.
+      lightalpha          = <integer>;      // Sector's light opacity. Default = 25.
+      fadecolor           = <integer>;      // Sector's fog color as RRGGBB value. Default = 0x000000.
+      fadealpha           = <integer>;      // Sector's fog opacity. Default = 25.
+      fadestart           = <integer>;      // Sector's fading range start. Default = 0.
+      fadeend             = <integer>;      // Sector's fading range end. Default = 31.
+      colormapfog         = <bool>;         // Sector's colormap uses fog lighting.
+      colormapfadesprites = <bool>;         // Sector's colormap affects full-bright sprites.
+      colormapprotected   = <bool>;         // Sector's colormap is not affected by colormap change specials.
+
+      flipspecial_nofloor     = <bool>;     // Trigger effects that require a plane touch are not executed when the floor is touched.
+      flipspecial_ceiling     = <bool>;     // Trigger effects that require a plane touch are executed when the ceiling is touched.
+      triggerspecial_touch    = <bool>;     // Trigger effects are executed anywhere in the sector.
+      triggerspecial_headbump = <bool>;     // Trigger effects are executed if the top of the triggerer object touches a plane.
+      triggerline_plane       = <bool>;     // Trigger effects require a plane touch to be executed.
+      triggerline_mobj        = <bool>;     // Trigger effects can be executed by non-pushable objects.
+
+      invertprecip   = <bool>;         // Inverts the precipitation effect; if the sector is considered to be indoors,
+                                       // precipitation is generated, and if the sector is considered to be outdoors,
+                                       // precipitation is not generated.
+      gravityflip        = <bool>;     // Sector flips any objects in it, if the sector has negative gravity.
+      heatwave           = <bool>;     // Sector has the heat wave effect.
+      noclipcamera       = <bool>;     // Sector is not tangible to the camera.
+      outerspace         = <bool>;     // Sector has the space countdown effect.
+      doublestepup       = <bool>;     // Sector has half the vertical height needed for objects to walk into it.
+      nostepdown         = <bool>;     // Sector has the staircase effect disabled.
+      speedpad           = <bool>;     // Sector is a speed pad.
+      starpostactivator  = <bool>;     // Sector activates any Star Posts in it when walked into by a plyer.
+      exit               = <bool>;     // Sector is an exit sector.
+      specialstagepit    = <bool>;     // Sector is a Special Stage pit.
+      returnflag         = <bool>;     // Sector returns any Capture the Flag flags that come in contact with it to their respective bases.
+      redteambase        = <bool>;     // Sector is a Red Team base.
+      blueteambase       = <bool>;     // Sector is Blue Team base.
+      fan                = <bool>;     // Sector is a fan sector.
+      supertransform     = <bool>;     // Sector transforms any players that come in contact with it into their 'super' mode.
+      forcespin          = <bool>;     // Sector forces any players that come in contact with it to roll.
+      zoomtubestart      = <bool>;     // Sector is the starting point of a zoom tube path.
+      zoomtubeend        = <bool>;     // Sector is the ending point of a zoom tube path.
+      finishline         = <bool>;     // Sector is a Circuit finish line.
+      ropehang           = <bool>;     // Sector is a rope hang. Must be applied to a 3D floor.
+      jumpflip           = <bool>;     // Sector flips the gravity of players who jump from it.
+      gravityoverride    = <bool>;     // Reverse gravity effect is only applied when an object is in the sector.
+
+      friction            = <float>;   // Sector's friction factor.
+      gravity             = <float>;   // Sector's gravity. Default is 1.0.
+      damagetype          = <integer>; // Damage type for sector damage. Can be:
+                                       // - "None"
+                                       // - "Generic"
+                                       // - "Water"
+                                       // - "Fire"
+                                       // - "Lava"
+                                       // - "Electric"
+                                       // - "Spike"
+                                       // - "DeathPitTilt"
+                                       // - "DeathPitNoTilt"
+                                       // - "Instakill"
+                                       // - "SpecialStage"
+                                       // Default = "None".
+      triggertag          = <integer>; // Tag to trigger when this sector is entered. Default = 0.
+      triggerer           = <string>;  // Who can execute the trigger tag when this sector is entered. Can be:
+                                       // - "Player"
+                                       // - "AllPlayers"
+                                       // - "Mobj"
+                                       // Default = "Player".
+
+      comment = <string>; // A comment. Implementors should attach no special
+                          // semantic meaning to this field.
+   }
+
+   thing
+   {
+      id      = <integer>; // Thing ID. Default = 0.
+      moreids = <string>;  // Additional thing IDs, specified as a space separated list of numbers (e.g. "2 666 1003 4505")
+
+      x = <float>; // X coordinate. No valid default.
+      y = <float>; // Y coordinate. No valid default.
+
+      height = <float>; // Z height relative to floor.
+                        // Relative to ceiling if flip = true.
+                        // Absolute if absolutez = true.
+                        // Default = 0.
+
+      angle     = <integer>; // Map angle of thing in degrees. Default = 0 (East).
+      pitch     = <integer>; // Pitch of thing in degrees. Default = 0 (horizontal).
+      roll      = <integer>; // Roll of thing in degrees. Default = 0.
+      scalex    = <float>;   // Horizontal visual scaling on thing. Default = 1.0.
+      scaley    = <float>;   // Vertical visual scaling on thing. Default = 1.0.
+      scale     = <float>;   // Vertical and horizontal visual scaling on thing. Default = 1.0.
+      mobjscale = <float>;   // Physical scale of the thing. Default = 1.0.
+
+      type = <integer>; // Thing type. No valid default.
+
+      flip       = <bool>; // Thing spawns flipped, on the ceiling.
+      absolutez  = <bool>; // If true, the thing height is absolute, instead of being relative to the floor or ceiling.
+
+      arg0       = <integer>; // Argument 0. Default = 0.
+      arg1       = <integer>; // Argument 1. Default = 0.
+      arg2       = <integer>; // Argument 2. Default = 0.
+      arg3       = <integer>; // Argument 3. Default = 0.
+      arg4       = <integer>; // Argument 4. Default = 0.
+      arg5       = <integer>; // Argument 5. Default = 0.
+      arg6       = <integer>; // Argument 6. Default = 0.
+      arg7       = <integer>; // Argument 7. Default = 0.
+      arg8       = <integer>; // Argument 8. Default = 0.
+      arg9       = <integer>; // Argument 9. Default = 0.
+      stringarg0 = <string>;  // String argument 0.
+      stringarg1 = <string>;  // String argument 1.
+
+      comment = <string>; // A comment. Implementors should attach no special
+                          // semantic meaning to this field.
+   }
+
+
+=======================================
+Changelog
+=======================================
+
+1.0: 19.02.2024
+Initial version.
+
+===============================================================================
+EOF
+===============================================================================
\ No newline at end of file
diff --git a/src/f_finale.c b/src/f_finale.c
index cb64618535659f329bb357f65c2cec0bbe006b2d..edeb08820c54f53adff9dcfb4b1bfb929c536cc7 100644
--- a/src/f_finale.c
+++ b/src/f_finale.c
@@ -297,7 +297,7 @@ static void F_NewCutscene(const char *basetext)
 	cutscene_basetext = basetext;
 	memset(cutscene_disptext,0,sizeof(cutscene_disptext));
 	cutscene_writeptr = cutscene_baseptr = 0;
-	cutscene_textspeed = 9;
+	cutscene_textspeed = 8;
 	cutscene_textcount = TICRATE/2;
 }
 
@@ -313,22 +313,22 @@ const char *introtext[NUMINTROSCENES];
 static tic_t introscenetime[NUMINTROSCENES] =
 {
 	5*TICRATE,	// STJr Presents
-	11*TICRATE + (TICRATE/2),	// Two months had passed since...
-	15*TICRATE + (TICRATE/2),	// As it was about to drain the rings...
-	14*TICRATE,					// What Sonic, Tails, and Knuckles...
-	18*TICRATE,					// About once every year, a strange...
-	19*TICRATE + (TICRATE/2),	// Curses! Eggman yelled. That ridiculous...
-	19*TICRATE + (TICRATE/4),	// It was only later that he had an idea...
-	10*TICRATE + (TICRATE/2),	// Before beginning his scheme, Eggman decided to give Sonic...
-	16*TICRATE,					// We're ready to fire in 15 seconds, the robot said...
-	16*TICRATE,					// Meanwhile, Sonic was tearing across the zones...
+	10*TICRATE + (TICRATE/2),	// Two months had passed since...
+	12*TICRATE + ((TICRATE/4) * 3),	// As it was about to drain the rings...
+	12*TICRATE + (TICRATE/4),					// What Sonic, Tails, and Knuckles...
+	16*TICRATE,					// About once every year, a strange...
+	20*TICRATE + (TICRATE/2),	// Curses! Eggman yelled. That ridiculous...
+	18*TICRATE + (TICRATE/4),	// It was only later that he had an idea...
+	9*TICRATE + (TICRATE/2),	// Before beginning his scheme, Eggman decided to give Sonic...
+	14*TICRATE,					// We're ready to fire in 15 seconds, the robot said...
+	14*TICRATE + (TICRATE/2),	// Meanwhile, Sonic was tearing across the zones...
 	16*TICRATE + (TICRATE/2),	// Sonic knew he was getting closer to the city...
-	17*TICRATE,					// Greenflower City was gone...
-	 7*TICRATE,					// You're not quite as dead as we thought, huh?...
+	11*TICRATE + (TICRATE/2),	// Greenflower City was gone...
+	 8*TICRATE,					// You're not quite as dead as we thought, huh?...
 	 8*TICRATE,					// We'll see... let's give you a quick warm up...
 	18*TICRATE + (TICRATE/2),	// Eggman took this as his cue and blasted off...
-	16*TICRATE,					// Easy! We go find Eggman and stop his...
-	25*TICRATE,					// I'm just finding what mission obje...
+	15*TICRATE,					// Easy! We go find Eggman and stop his...
+	23*TICRATE,					// I'm just finding what mission obje...
 };
 
 // custom intros
diff --git a/src/hardware/hw_shaders.h b/src/hardware/hw_shaders.h
index 09395dbd0257d620b67d2ee9a57159f0fbca4e3a..bb0e6a232edc45c2a39ac21a9f56beca4c973ebb 100644
--- a/src/hardware/hw_shaders.h
+++ b/src/hardware/hw_shaders.h
@@ -94,7 +94,7 @@
 #define GLSL_SOFTWARE_TINT_EQUATION \
 	"if (tint_color.a > 0.0) {\n" \
 		"float color_bright = sqrt((base_color.r * base_color.r) + (base_color.g * base_color.g) + (base_color.b * base_color.b));\n" \
-		"float strength = sqrt(9.0 * tint_color.a);\n" \
+		"float strength = sqrt(tint_color.a);\n" \
 		"final_color.r = clamp((color_bright * (tint_color.r * strength)) + (base_color.r * (1.0 - strength)), 0.0, 1.0);\n" \
 		"final_color.g = clamp((color_bright * (tint_color.g * strength)) + (base_color.g * (1.0 - strength)), 0.0, 1.0);\n" \
 		"final_color.b = clamp((color_bright * (tint_color.b * strength)) + (base_color.b * (1.0 - strength)), 0.0, 1.0);\n" \
diff --git a/src/netcode/i_tcp.c b/src/netcode/i_tcp.c
index 8d0321f33e5498ed11603e79160ab03715594a8e..0148c485ab1fd5fd29cd4ca0bc6effca93ff69f1 100644
--- a/src/netcode/i_tcp.c
+++ b/src/netcode/i_tcp.c
@@ -304,7 +304,7 @@ init_upnpc_once(struct upnpdata *upnpuserdata)
 	memset(&urls, 0, sizeof(struct UPNPUrls));
 	memset(&data, 0, sizeof(struct IGDdatas));
 
-	CONS_Printf(M_GetText("Looking for UPnP Internet Gateway Device\n"));
+	I_OutputMsg(M_GetText("Looking for UPnP Internet Gateway Device\n"));
 	devlist = upnpDiscoverDevices(deviceTypes, 500, NULL, NULL, 0, false, 2, &upnp_error, 0);
 	if (devlist)
 	{
@@ -320,11 +320,11 @@ init_upnpc_once(struct upnpdata *upnpuserdata)
 		if (!dev)
 			dev = devlist; /* defaulting to first device */
 
-		CONS_Printf(M_GetText("Found UPnP device:\n desc: %s\n st: %s\n"),
+		I_OutputMsg(M_GetText("Found UPnP device:\n desc: %s\n st: %s\n"),
 		           dev->descURL, dev->st);
 
 		UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
-		CONS_Printf(M_GetText("Local LAN IP address: %s\n"), lanaddr);
+		I_OutputMsg(M_GetText("Local LAN IP address: %s\n"), lanaddr);
 		descXML = miniwget(dev->descURL, &descXMLsize, scope_id, &status_code);
 		if (descXML)
 		{
@@ -338,7 +338,7 @@ init_upnpc_once(struct upnpdata *upnpuserdata)
 	}
 	else if (upnp_error == UPNPDISCOVER_SOCKET_ERROR)
 	{
-		CONS_Printf(M_GetText("No UPnP devices discovered\n"));
+		I_OutputMsg(M_GetText("No UPnP devices discovered\n"));
 	}
 	I_unlock_mutex(upnp_mutex);
 	upnpuserdata->upnpc_started =1;