mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-25 05:41:42 +00:00
Merge remote-tracking branch 'origin/1200-next-cannot-load-game-when-using-srb2-launcher' into 1200-next-cannot-load-game-when-using-srb2-launcher
This commit is contained in:
commit
15b1842a6d
14 changed files with 330 additions and 3271 deletions
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
BIN
doc/SSN-Todo.xls
BIN
doc/SSN-Todo.xls
Binary file not shown.
|
@ -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
|
|
307
doc/faq.txt
307
doc/faq.txt
|
@ -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 :)
|
|
|
@ -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>
|
|
|
@ -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
|
|
240
doc/source.txt
240
doc/source.txt
|
@ -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.
|
|
1992
doc/specials.html
1992
doc/specials.html
File diff suppressed because it is too large
Load diff
311
doc/specs/udmf_srb2.txt
Normal file
311
doc/specs/udmf_srb2.txt
Normal file
|
@ -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
|
||||||
|
===============================================================================
|
|
@ -297,7 +297,7 @@ static void F_NewCutscene(const char *basetext)
|
||||||
cutscene_basetext = basetext;
|
cutscene_basetext = basetext;
|
||||||
memset(cutscene_disptext,0,sizeof(cutscene_disptext));
|
memset(cutscene_disptext,0,sizeof(cutscene_disptext));
|
||||||
cutscene_writeptr = cutscene_baseptr = 0;
|
cutscene_writeptr = cutscene_baseptr = 0;
|
||||||
cutscene_textspeed = 9;
|
cutscene_textspeed = 8;
|
||||||
cutscene_textcount = TICRATE/2;
|
cutscene_textcount = TICRATE/2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,22 +313,22 @@ const char *introtext[NUMINTROSCENES];
|
||||||
static tic_t introscenetime[NUMINTROSCENES] =
|
static tic_t introscenetime[NUMINTROSCENES] =
|
||||||
{
|
{
|
||||||
5*TICRATE, // STJr Presents
|
5*TICRATE, // STJr Presents
|
||||||
11*TICRATE + (TICRATE/2), // Two months had passed since...
|
10*TICRATE + (TICRATE/2), // Two months had passed since...
|
||||||
15*TICRATE + (TICRATE/2), // As it was about to drain the rings...
|
12*TICRATE + ((TICRATE/4) * 3), // As it was about to drain the rings...
|
||||||
14*TICRATE, // What Sonic, Tails, and Knuckles...
|
12*TICRATE + (TICRATE/4), // What Sonic, Tails, and Knuckles...
|
||||||
18*TICRATE, // About once every year, a strange...
|
16*TICRATE, // About once every year, a strange...
|
||||||
19*TICRATE + (TICRATE/2), // Curses! Eggman yelled. That ridiculous...
|
20*TICRATE + (TICRATE/2), // Curses! Eggman yelled. That ridiculous...
|
||||||
19*TICRATE + (TICRATE/4), // It was only later that he had an idea...
|
18*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...
|
9*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...
|
14*TICRATE, // We're ready to fire in 15 seconds, the robot said...
|
||||||
16*TICRATE, // Meanwhile, Sonic was tearing across the zones...
|
14*TICRATE + (TICRATE/2), // Meanwhile, Sonic was tearing across the zones...
|
||||||
16*TICRATE + (TICRATE/2), // Sonic knew he was getting closer to the city...
|
16*TICRATE + (TICRATE/2), // Sonic knew he was getting closer to the city...
|
||||||
17*TICRATE, // Greenflower City was gone...
|
11*TICRATE + (TICRATE/2), // Greenflower City was gone...
|
||||||
7*TICRATE, // You're not quite as dead as we thought, huh?...
|
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...
|
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...
|
18*TICRATE + (TICRATE/2), // Eggman took this as his cue and blasted off...
|
||||||
16*TICRATE, // Easy! We go find Eggman and stop his...
|
15*TICRATE, // Easy! We go find Eggman and stop his...
|
||||||
25*TICRATE, // I'm just finding what mission obje...
|
23*TICRATE, // I'm just finding what mission obje...
|
||||||
};
|
};
|
||||||
|
|
||||||
// custom intros
|
// custom intros
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
#define GLSL_SOFTWARE_TINT_EQUATION \
|
#define GLSL_SOFTWARE_TINT_EQUATION \
|
||||||
"if (tint_color.a > 0.0) {\n" \
|
"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 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.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.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" \
|
"final_color.b = clamp((color_bright * (tint_color.b * strength)) + (base_color.b * (1.0 - strength)), 0.0, 1.0);\n" \
|
||||||
|
|
|
@ -304,7 +304,7 @@ init_upnpc_once(struct upnpdata *upnpuserdata)
|
||||||
memset(&urls, 0, sizeof(struct UPNPUrls));
|
memset(&urls, 0, sizeof(struct UPNPUrls));
|
||||||
memset(&data, 0, sizeof(struct IGDdatas));
|
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);
|
devlist = upnpDiscoverDevices(deviceTypes, 500, NULL, NULL, 0, false, 2, &upnp_error, 0);
|
||||||
if (devlist)
|
if (devlist)
|
||||||
{
|
{
|
||||||
|
@ -320,11 +320,11 @@ init_upnpc_once(struct upnpdata *upnpuserdata)
|
||||||
if (!dev)
|
if (!dev)
|
||||||
dev = devlist; /* defaulting to first device */
|
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);
|
dev->descURL, dev->st);
|
||||||
|
|
||||||
UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
|
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);
|
descXML = miniwget(dev->descURL, &descXMLsize, scope_id, &status_code);
|
||||||
if (descXML)
|
if (descXML)
|
||||||
{
|
{
|
||||||
|
@ -338,7 +338,7 @@ init_upnpc_once(struct upnpdata *upnpuserdata)
|
||||||
}
|
}
|
||||||
else if (upnp_error == UPNPDISCOVER_SOCKET_ERROR)
|
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);
|
I_unlock_mutex(upnp_mutex);
|
||||||
upnpuserdata->upnpc_started =1;
|
upnpuserdata->upnpc_started =1;
|
||||||
|
|
Loading…
Reference in a new issue