Grazza Posted December 26, 2005 (edited) WARNING: Highly technical information follows. You probably don't need to study this at all unless you want to investigate this stuff. Worth a quick look to see if there are any known issues on any maps you plan to record on though. Or if you're making a "vanilla" wad and just want some tips on how to avoid triggering overflows (or at least reduce the risk of them), read the text immediately below (in yellow). To avoid spechits overflows: Avoid a situation where you have more than 8 special lines so close together that a player or monster is able to cross them all at the same time. Remember that some monsters have a larger radius than the player. To avoid reject overflows: Use a good reject map builder - any modern one should be OK. To reduce the chance of intercepts overflows: Make sure that linedef 0 is very short, and perhaps out of the main area of play. To avoid playeringame overflows: Don't obstruct your player start positions. If you've read this thread you'll know roughly what a spechits overflow is, and that it can lead to desyncs. You may also be aware that recent versions of Prboom-plus can detect them, and attempt to emulate the behaviour of the vanilla exes and Dosdoom/Tasdoom in this respect. Chocolate-Doom also includes similar code to emulate the vanilla behaviour. I have compiled a list of maps where spechits overflows can occur, together with some notes on their effects. I have also done so for maps with Reject overflows and demos with Intercepts overflows (which often results in the all ghosts bug). Here are the tables; some notes follow. +------------------------------------------------------------------------+ | | | | |comments on | | |map red | |lines |effects, desyncs | |pwad |if |example demo yellow |leading to|and emulation in | | |critical|if Tasdoom |overflow |current | | | | | |Prboom-plus; bold | | | | | |if critical | |------------+--------+--------------------+----------+------------------| | | | |3055, |behaviour depends | | | | |3056, |on magic number; | | | | |3057, |2423-301.lmp is OK| |1024 |map23 |2423-301.lmp |3058, |with the default | | | | |3066, |magic number, but | | | | |3072, |desyncs with the | | | | |3073, |alternate | | | | |3074, 3075|(2230937832) | |------------+--------+--------------------+----------+------------------| | | | |1025, | | | | | |1050, | | | | | |1069, | | |2sectors |map01 |2s01-030.lmp |1093, |benign? | | | | |1152, | | | | | |1153, | | | | | |1154, | | | | | |1155, 1158| | |------------+--------+--------------------+----------+------------------| | | | |613, 616, | | |aboo4 | | |617, 619, |unknown - no demos| |(original |map01 |none |620, 622, |to test it with | |version) | | |623, 625, | | | | | |626 | | |------------+--------+--------------------+----------+------------------| | | | |2265, | | | | | |2266, | | | | | |2269, | | |av |map05 |av05-227.lmp |2270, |benign? | | | | |2281, | | | | | |2284, | | | | | |2305, | | | | | |2306, 2309| | |------------+--------+--------------------+----------+------------------| | | | | |system-dependent | | | | | |in Doom2.exe; | | | | |2098, |emulated OK; the | | | | |2106, |example demos need| | | |av15-317.lmp |2109, |a magic number | | | |av15-612.lmp |2110, |with prboom-plus: | |av |map15 |av15-623.lmp |2097, |-spechit | | | |av15-638.lmp |2104, |2230937832 works | | | |av15-715.lmp |2105, |in all cases; | | | |af151000.lmp |2108, 2111|other compet-n | | | | |or similar|demos on this map | | | | | |play back OK with | | | | | |the default magic | | | | | |number | |------------+--------+--------------------+----------+------------------| | | | |1316, | | | | | |1506, | | | | | |1507, |benign? this is | |av |map21 |at211122.lmp |1965, |the only demo on | | | | |1967, |this map with this| | | | |1968, |overflow | | | | |1969, | | | | | |1226, 1966| | |------------+--------+--------------------+----------+------------------| | | | |4131, |benign? this is | | | | |4132, |the only demo on | | | | |4133, |this map with this| |av |map26 |av261924.lmp |4140, |overflow; it also | | | | |4141, |features a benign | | | | |4142, |intercepts | | | | |4143, |overflow | | | | |4144, 4145| | |------------+--------+--------------------+----------+------------------| | | | |1206, | | | | | |1217, | | | | | |1218, | | |base666 |map01 |btas1056.lmp |1592, |benign? | | | | |1593, | | | | | |1598, | | | | | |1599, | | | | | |1600, 1601| | |------------+--------+--------------------+----------+------------------| | | | |8082, | | | | | |8083, | | | | | |8084, | | |belltoll |map02 |none |8085, |unknown - no demos| | | | |8086, |to test it with | | | | |8087, | | | | | |8088, | | | | | |8109, 8111| | |------------+--------+--------------------+----------+------------------| | | | |848, 849, | | | | | |850, 851, |unknown - no demos| |biotech |map03 |none |852, 854, |to test it with | | | | |853, 855, | | | | | |856 | | |------------+--------+--------------------+----------+------------------| | | | |1650, | | | | | |1651, | | | | | |1652, | | |biowar |map13 |bw131304.lmp |1653, |benign? | | | | |1654, | | | | | |1655, | | | | | |1656, | | | | | |1657, 1658| | |------------+--------+--------------------+----------+------------------| | | | |6260, | | | | | |6261, | | | | | |6262, |unknown; there's | | | | |6263, |more than one | |cchest2 |map24 |none |6265, |place where an | | | | |6268, |overflow can occur| | | | |6271, |- the map is full | | | | |6264, 6267|of special lines | | | | |and | | | | | |other(s) | | |------------+--------+--------------------+----------+------------------| | | | |566, 568, | | | | | |572, 562, |unknown - no demos| |class_e2 |e1m8 |none |563, 595, |to test it with | | | | |596, 597, | | | | | |598 | | |------------+--------+--------------------+----------+------------------| | | | |1837, | | | | | |1844, | | | | | |1834, | | |darken |map08 |darken08.lmp |1835, |benign? | | | | |1836, | | | | | |1838, | | | | | |1839, | | | | | |1840, 1841| | |------------+--------+--------------------+----------+------------------| | | | |1005, | | | | | |1004, | | | | | |1495, | | |datavill |map19 |none |1496, |unknown - no demos| |(hacx pwad) | | |1499, |to test it with | | | | |1500, | | | | | |1509, | | | | | |1510, 1524| | |------------+--------+--------------------+----------+------------------| | | | |18, 19, |unknown - this map| | | | |20, 21, |is a tech demo; | |dmdhzfan |map01 |none |22, 25, |note that the fan | | | | |48, 50, 56|causes the | | | | | |overflow | |------------+--------+--------------------+----------+------------------| | | | |447, 448, | | | | | |449, 450, |unknown - no demos| |dmplylnd |e2m3 |none |459, 461, |to test it with | | | | |463, 465, | | | | | |499 | | |------------+--------+--------------------+----------+------------------| | | |c4m1o139.lmp | |An overflow in an | | | |c4m1v139.lmp | |id map! It occurs | | | |c4n1-055.lmp | |when a spectre | | | |c4x1-055.lmp | |walks over the NIN| | | |e4m1-216.lmp | |secret; emulated | | | |ep4-2207.lmp | |OK, it seems, and | | | |ep4-2631.lmp | |can lead to | | | |ep4-3500.lmp |256, 257, |desyncs: e4ns1246 | | | |ep4-3945.lmp |258, 262, |desyncs without | | | |f4m1-243.lmp |264, 266, |emulation (though | |doom |e4m1 |f4m1-256.lmp |267, 268, |the player exits | | | |f4m1-426.lmp |270 or |E4M1, and dies | | | |n4s1-058.lmp |similar |early in E4M2), | | | |r4m1-137.lmp | |and so does | | | |r4m1-344.lmp | |r4m1-152; r4m1-525| | | |t4m1long.lmp | |requires -spechit | | | |u4m1-228.lmp | |2230937832; the | | | |u4m1-232.lmp | |others listed all | | | |e4ns1246.lmp | |play back OK with | | | |r4m1-152.lmp | |or without | | | |r4m1-525.lmp | |emulation | |------------+--------+--------------------+----------+------------------| | | | |117, 118, |benign? These bars| | | | |119, 122, |were removed in | |doom2 v1.666|map02 |uvlev2.lmp |123, 124, |v1.9; the demo can| | | | |453, 454, |be found here | | | | |455 | | |------------+--------+--------------------+----------+------------------| | | | |3461, | | | | | |3526, | | | | | |3536, | | |dv |map01 |dv01-max-2942-wh.lmp|3609, |benign? | | | | |3655, | | | | | |4420, | | | | | |4568, | | | | | |1472, 1946| | |------------+--------+--------------------+----------+------------------| | | | |1180, | | | | | |1181, | | | | | |1184, | | |dyst3 |map08 |dyst3-08.lmp |1185, |benign? | | | | |1190, | | | | | |1196, | | | | | |1197, | | | | | |1203, 1214| | |------------+--------+--------------------+----------+------------------| | | | |1350, | | | | | |1355, | | |eternal |map12 |et122614.lmp |1356, 15, |benign? | | | | |1349, 16, | | | | | |1348, | | | | | |1362, 1361| | |------------+--------+--------------------+----------+------------------| | | | |638, 1910,| | | | | |1911, | | |eternall.wad| | |1914, | | |(from |map25 |et252031.lmp |1915, |benign? | |eternal.zip)| | |1916, | | | | | |1917, | | | | | |1919, 1920| | |------------+--------+--------------------+----------+------------------| | | | |2921, | | | | | |2922, | | | | | |2923, |emulated OK; | |eternal |map31 |et312225.lmp |2924, |likely to lead to | | | | |2933, |desyncs if not | | | | |2936, |emulated | | | | |2942, | | | | | |2943, 2965| | |------------+--------+--------------------+----------+------------------| | | | |271, 272, | | | | | |273, 276, |unknown - no demos| |extremal |e3m8 |none |277, 278, |to test it with | | | | |279, 280, | | | | | |281 | | |------------+--------+--------------------+----------+------------------| | | | |604, 605, |the example demo | | | | |716, 717, |is for tasdoom, | |flsofdth |e4m3 |fod3uv.lmp |718, 719, |and it is emulated| | | | |728, 729, |OK | | | | |730 | | |------------+--------+--------------------+----------+------------------| | | | |1522, | | | | | |1538, |a spechits magic | | | | |1539, |number such as | |grind2x |map01 |gr2x_847.lmp |1542, |2230937832 is | | | | |1540, |needed with | | | | |1543, |prboom-plus | | | | |1544, | | | | | |1545, 1547| | |------------------------------------------------------------------------| |------------------------------------------------------------------------| | | | |2509, |unknown - no demos| | | | |2510, |to test it with; | | | | |2511, |overflow can occur| |gunsmoke |map01 |none |2512, |when running into | | | | |2513, |any of the three | | | | |2515, |bars, which have | | | | |2514, |many blue-keyed | | | | |2517, 2518|sides | |------------+--------+--------------------+----------+------------------| | | | |586, 587, | | | | | |588, 590, | | |h2h-xmas |map26 |xm26-313.lmp |591, 592, |benign? | | | | |594, 595, | | | | | |596 | | |------------+--------+--------------------+----------+------------------| | | | |1336, | | | | | |1338, | | | | | |1340, | | |hacx |map04 |hx04-724.lmp |1341, |benign? | | | | |1344, | | | | | |1345, | | | | | |1348, | | | | | |1349, 1350| | |------------+--------+--------------------+----------+------------------| | | | |1149, | | | | | |1151, | | | | | |1163, | | |hacx |map09 |hx09-847.lmp |1169, |benign? | | | | |1170, | | | | | |1171, | | | | | |1172, | | | | | |1176, 1177| | |------------+--------+--------------------+----------+------------------| | | | |1077, | | | | | |1080, |emulated OK | | | | |1151, |(Doom2.exe and | |hr |map18 |hr18-348.lmp |1152, |Tasdoom); likely | | | |hr181329.lmp |1153, |to lead to desyncs| | | | |1154, |if not emulated | | | | |1171, | | | | | |1173, 1174| | |------------+--------+--------------------+----------+------------------| | | | |169, 3068,| | | | | |3081, | | | | | |3087, | | |hr2final |map19 |hr2-lv19.lmp |3088, |benign? | | | | |3089, | | | | | |3096, | | | | | |3097, 3098| | |------------+--------+--------------------+----------+------------------| | | | | |probably emulated | | | | |522, 560, |OK; demos recorded| | | | |561, 562, |without emulation | |hr2final |map31 |hr2-lv31.lmp |563, 564, |desync if played | | | | |565, 566, |back with | | | | |1858 |emulation in the | | | | | |same way they do | | | | | |with Doom2.exe | |------------+--------+--------------------+----------+------------------| | | | |389, 400, |benign?; | | | |ic09uvgb.lmp |434, 436, |ic09uv.lmp is for | |icarus |map09 |ic09uv.lmp |437, 439, |tasdoom and it is | | | | |440, 441, |emulated OK | | | | |442 | | |------------+--------+--------------------+----------+------------------| | | | |5748, | | | | | |5749, | | | | | |5750, | | |ksutra |map18 |ks181235.lmp |2848, |benign? | | | | |2885, | | | | | |2886, | | | | | |5745, | | | | | |5746, 5747| | |------------+--------+--------------------+----------+------------------| | | | |3099, | | | | | |3100, | | | | | |3101, | | |ksutra |map23 |ks23-201.lmp |3104, |benign? | | | | |3105, | | | | | |3106, | | | | | |3107, | | | | | |3108, 3109| | |------------+--------+--------------------+----------+------------------| | | | |1892, | | | | | |1893, | | | | | |1895, | | |ksutra |map31 |ks311117.lmp |1897, |benign? | | | | |1898, | | | | | |1899, | | | | | |1900, | | | | | |1901, 1904| | |------------+--------+--------------------+----------+------------------| | | | |307, 965, | | | | | |966, 968, | | |mm |map02 |mm021204.lmp |974, 975, |benign? | | | | |964, 967, | | | | | |970 | | |------------+--------+--------------------+----------+------------------| | | | | |playback is | | | | | |presumably | | | | | |system-dependent | | | | | |with Doom2.exe; a | | | | | |spechits magic | | | | |961, 963, |number such as | | | | |952, 953, |2230937832 is | |mm |map05 |mm05r554.lmp |954, 955, |needed with | | | | |956, 957, |prboom-plus; this | | | | |958 |demo crashes | | | | | |timer.exe; the | | | | | |overflow occurs | | | | | |when a pain | | | | | |elemental crosses | | | | | |the (lowered) red | | | | | |key bars. | |------------+--------+--------------------+----------+------------------| | | | |714, 722, | | | | | |723, 726, | | |mm |map08 |mm08-119.lmp |733, 734, |benign? | | | | |735, 736, | | | | | |738 | | |------------+--------+--------------------+----------+------------------| | | | |2022, | | | | | |2023, | | | | | |2025, | | |mm |map28 |30mm8356.lmp |2015, |benign? | | | | |2016, | | | | | |2017, | | | | | |2018, | | | | | |2019, 2020| | |------------+--------+--------------------+----------+------------------| | | | |3163, | | | | | |3164, | | | | | |3534, | | |mm2 |map18 |m218nmx.lmp |3535, |benign? | | | | |3536, | | | | | |3537, | | | | | |3538, | | | | | |3539, 3540| | |------------+--------+--------------------+----------+------------------| | | | |441, 507, |benign? the | | | | |524, 533, |overflow occurs | |mm2 |map20 |m220-547.lmp |612, 613, |when an | | | | |611, 615, |arachnotron (large| | | | |519 |radius) crosses | | | | | |these lines | |------------+--------+--------------------+----------+------------------| | | | |1315, | | | | | |1370, | | | | | |1371, | | |ndcp |map06 |none |3755, |unknown | | | | |3756, | | | | | |3757, | | | | | |3758, | | | | | |3759, 3760| | |------------+--------+--------------------+----------+------------------| | | | |128, 130, | | | | | |131, 132, | | |ongar |map10 |none |134, 135, |unknown | | | | |122, 123, | | | | | |124 | | |------------+--------+--------------------+----------+------------------| | | | | |p4p2s118.lmp plays| | | | | |back OK with or | | | | |243, 244, |without emulation | | | |p4e2s052.lmp |245, 246, |(but crashes | |pe4_dt2 |e4m2 |p4p2s118.lmp |247, 248, |timer.exe); | | | | |249, 250, |p4e2s052.lmp | | | | |251 |requires, e.g., | | | | | |-spechit | | | | | |2230937832 | |------------+--------+--------------------+----------+------------------| | | | |1186, | | | | | |1284, | | | | | |1285, | | |requiem |map03 |rq03-136.lmp |1286, |benign? | | | | |1287, | | | | | |1294, | | | | | |1295, | | | | | |1296, 1297| | |------------+--------+--------------------+----------+------------------| | | | |2000, | | | | | |2004, | | | | | |2010, | | |requiem |map15 |rq151440.lmp |1976, |benign? | | | | |1981, | | | | | |1982, | | | | | |1983, | | | | | |2014, 2018| | |------------+--------+--------------------+----------+------------------| | | | |1115, | | | | | |1116, | | | | | |1117, | | |requiem |map16 |rr16-955.lmp |1119, |benign? | | | | |1122, | | | | | |1123, | | | | | |1124, | | | | | |1125, 1118| | |------------+--------+--------------------+----------+------------------| | | | |2507, | | | | | |2508, |benign? note that | | | | |2510, |the overflow | |requiem + |map21 |rq21-636.lmp |2511, |occurs even with | |req21fix | | |2513, |the fixed version | | | | |2514, |of the map, used | | | | |2516, |for recording | | | | |2517, 2512| | |------------+--------+--------------------+----------+------------------| | | | |317, 320, | | | | | |1779, | | | | | |1780, | | |requiem |map31 |rq31s115.lmp |1784, |benign? | | | | |1785, | | | | | |1786, | | | | | |1787, 1788| | |------------+--------+--------------------+----------+------------------| | | | |209, 210, | | | | | |211, 212, |benign? trivial | |squadron |map01 |sq417-01.lmp |217, 218, |map anyway | | | | |219, 220, | | | | | |229 | | |------------+--------+--------------------+----------+------------------| | | | |1262, | | | | | |1263, | | | | | |1264, | | |sci2 |map03 |s203n245.lmp |1265, |benign? | | | | |1266, | | | | | |1268, | | | | | |1267, | | | | | |1269, 1270| | |------------+--------+--------------------+----------+------------------| | | | |2268, |emulated OK; | | | | |2269, |playback is | | | | |2270, |system-dependent | | | | |2271, |with Doom2.exe; a | |sci2 |map05 |s205n546.lmp |2273, |spechits magic | | | | |2274, |number such as | | | | |2275, |2230937832 is | | | | |2287, 2288|needed with | | | | | |prboom-plus | |------------+--------+--------------------+----------+------------------| | | | |1527, |emulated OK; | | | | |1528, |playback is | | | | |1529, |system-dependent | | | | |1531, |with Doom2.exe; a | |sci2 |map07 |s207n516.lmp |1532, |spechits magic | | | | |1533, |number such as | | | | |1535, |2231485512 is | | | | |1536, 1537|needed with | | | | | |prboom-plus | |------------+--------+--------------------+----------+------------------| | | | |1527, | | | | | |1528, | | | | | |1529, | | |sci2 |map16 |s216n241.lmp |1531, |benign? | | | | |1532, | | | | | |1533, | | | | | |1535, | | | | | |1536, 1537| | |------------+--------+--------------------+----------+------------------| | | | |351, 352, | | | | | |353, 354, |sc18-sp.lmp plays | | | | |355, 360, |back OK with or | | | |sc18-sp.lmp |361, 362, |without emulation;| |scythe |map18 |sc18e036.lmp |363 or |the 0:36 coop by | | | |sc18m036.lmp |356, 357, |Erik/Method needs | | | | |358, 363, |-spechit | | | | |364, 365, |2230937832 | | | | |366, 367, | | | | | |368, etc. | | |------------+--------+--------------------+----------+------------------| | | | | |emulated OK?; can | | | | |2565, |lead to desyncs if| | | | |2577, |not emulated; for | | | | |2571, |sf304509.lmp (an | |scythe |map30 |sc30-uv.lmp |2578, |egg in the scythe | | | |sf304509.lmp |2576, |demopack), a | | | | |2569, |spechits magic | | | | |2570, |number is needed: | | | | |2575, 2567|one that works is | | | | | |2230937832 | |------------+--------+--------------------+----------+------------------| | | | | |emulated OK; | | | | | |playback is | | | | |649, 650, |system-dependent | | | | |651, 658, |with Doom2.exe; a | |scythe2 |map02 |s202-207.lmp |643, 644, |spechits magic | | | | |645, 646, |number such as | | | | |652 |2230220160 is | | | | | |needed with | | | | | |prboom-plus | |------------+--------+--------------------+----------+------------------| | | | |2202, | | | | | |2203, | | | | | |2206, | | |scythe2 |map08 |none |3053, |unknown | | | | |3054, | | | | | |2200, | | | | | |2208, | | | | | |3055, 3056| | |------------+--------+--------------------+----------+------------------| | | | |673, 674, | | | | | |676, 681, |benign?; emulated | |scythe2 |map10 |s210-245.lmp |682, 684, |OK | | | | |686, 687, | | | | | |688 | | |------------+--------+--------------------+----------+------------------| | | | |1578, | | | | | |1579, | | | | | |1617, | | |scythe2 |map18 |s218-428.lmp |1635, |benign? | | | | |1636, | | | | | |1680, | | | | | |1681, | | | | | |1682, 1683| | |------------+--------+--------------------+----------+------------------| | | | |1736, | | | | | |1786, | | | | | |2333, | | |strain |map06 |str06-uv.lmp |1737, |benign? | | | | |1738, | | | | | |1785, | | | | | |2334, | | | | | |2336, 2332| | |------------+--------+--------------------+----------+------------------| | | | | |spechits overflow | | | | | |necessary to exit | | | | | |the map! emulated | | | | | |OK, it seems; | | | | |986, 998, |precise behaviour | | | | |999, 1000,|depends on magic | | | | |1007, |number - | |strain |map07 |st07-237.lmp |1008, |st07-237.lmp is OK| | | | |1009, |with the default | | | | |1010, 1011|magic number, but | | | | | |desyncs (no exit) | | | | | |with the alternate| | | | | |(2230937832), or | | | | | |with | | | | | |Chocolate-Doom | |------------+--------+--------------------+----------+------------------| | | | |2351, | | | | | |2353, | | | | | |2355, | | |strain |map14 |st14-832.lmp |2357, |benign? | | | | |2358, | | | | | |2359, | | | | | |2360, | | | | | |2361, 2362| | |------------+--------+--------------------+----------+------------------| | | | |704, 705, | | | | | |706, 707, | | |tnt |map25 |ep25-908.lmp |708, 893, |benign? | | | | |894, 895, | | | | | |896 | | |------------+--------+--------------------+----------+------------------| | | | |707, 713, | | | | | |714, 715, | | |vesperas |map09 |vesp_729.lmp |716, 717, |benign? | | | | |718, 719, | | | | | |720 | | |------------+--------+--------------------+----------+------------------| | | | |1117, | | | | | |1122, | | | | | |1129, | | |wotdoom3 |map07 |none |1108, |unknown - no demos| | | | |1109, |to test it with | | | | |1110, | | | | | |1115, | | | | | |1120, 1106| | |------------+--------+--------------------+----------+------------------| | | | |1622, | | | | | |1625, | | | | | |1626, | | |zomheart |map01 |none |1627, |unknown - no demos| | | | |1629, |to test it with | | | | |1642, | | | | | |1643, | | | | | |1644, 1645| | +------------------------------------------------------------------------+ Table of maps with a REJECT overflow +------------------------------------------------------------------------+ |pwad |map |example demo |size of |emulation in current | | | | |overflow |Prboom-plus | |--------------+-----+-------------+-------------+-----------------------| | | |berm1032.lmp | |emulation not | |berserk |e1m1 |and |too short |guaranteed; both demos | | | |bert2740.lmp |(666<667) |play back OK with or | | | | | |without emulation | |--------------+-----+-------------+-------------+-----------------------| | | | |too short |too large for | |bldnight |map05|bld51351.lmp |(21218<29404)|emulation; the example | | | | | |demo desyncs | |--------------+-----+-------------+-------------+-----------------------| | | | | |too large for | |bldnight |map07|bld71232.lmp |too short |emulation, but the | | | | |(14792<14965)|example demo plays back| | | | | |OK | |--------------+-----+-------------+-------------+-----------------------| | | | | |too large for | | | | | |emulation, but the | | | | | |example demo plays back| |dmonfear |map25|ydfear25.lmp |too short |OK (padding with zeros | | | | |(2702<2888) |+ attempted emulation);| | | | | |Donner's other dfear | | | | | |demos on maps with | | | | | |reject problems desync | |--------------+-----+-------------+-------------+-----------------------| |flsofdth |e4m2 |fod2uv.lmp |too short |emulation not | | | | |(2415<2416) |guaranteed (?) | |--------------+-----+-------------+-------------+-----------------------| | | |hlrmp257.lmp |too short |emulated; both demos | |hellroom |map01|hlrfp555.lmp |(84<85) |play back OK without | | | | | |emulation too | |--------------+-----+-------------+-------------+-----------------------| |hyena |e1m1 |none |too short |emulation not | | | | |(325<326) |guaranteed | |--------------+-----+-------------+-------------+-----------------------| |invasion |e1m1 |none |too short |emulated | |(inva_19.zip) | | |(760<761) | | |--------------+-----+-------------+-------------+-----------------------| | | | | |too large for | | | | | |emulation, but the | | | | | |desyncs in Doom.exe and| | | | | |Prboom-plus with | | | | | |emulation appear the | | | | | |same; another demo, | |lwfirst |e1m3 |equ3-104.lmp |too short |equ3-114.lmp, plays | |(equino-x.zip)| | |(21841<22050)|back OK with or without| | | | | |emulation; because | | | | | |these demos were | | | | | |recorded with an older | | | | | |version of prboom, | | | | | |-pad_reject_with_ff is | | | | | |needed | |--------------+-----+-------------+-------------+-----------------------| | | | | |too large for | | | | | |emulation, but the | | | | | |sample demo plays back | | | | | |OK with or without | |lwfirst |e1m7 |equ7-108.lmp |too short |emulation; because this| |(equino-x.zip)| | |(596<1082) |demo was recorded with | | | | | |an older version of | | | | | |prboom, | | | | | |-pad_reject_with_ff is | | | | | |needed | |--------------+-----+-------------+-------------+-----------------------| |requiem |map08|any on this |too short |emulated | | | |map |(13944<13945)| | |--------------+-----+-------------+-------------+-----------------------| |requiem |map16|any on this |too short |emulated | | | |map |(10224<10225)| | |--------------+-----+-------------+-------------+-----------------------| | | |any on this |too short | | |requiem |map22|map (e.g. |(10804<10805)|emulated | | | |rq22-518.lmp)| | | |--------------+-----+-------------+-------------+-----------------------| |requiem |map31|any on this |too short |emulated | | | |map |(3784<3785) | | |--------------+-----+-------------+-------------+-----------------------| |rrd201 |map02|none |too short |emulation not | | | | |(7750<7751) |guaranteed | |--------------+-----+-------------+-------------+-----------------------| |te |map06|none |too short |emulation not | | | | |(5778<5779) |guaranteed | |--------------+-----+-------------+-------------+-----------------------| |teeth (Master | |teeth-32.lmp |too short |emulated / tends to | |Levels) |map32|te32-106.lmp |(24<25) |lead to a desync if not| | | | | |emulated | |--------------+-----+-------------+-------------+-----------------------| | | | |too short |emulated; the sample | |too1337 |e1m1 |too1-035.lmp |(3120<3121) |demo plays back OK | | | | | |without emulation too | |--------------+-----+-------------+-------------+-----------------------| |ultdtv |maps |none |all too short|emulated (?) | | |02-07| |by one byte | | |--------------+-----+-------------+-------------+-----------------------| | | | | |too large an overflow | | | | | |for emulation, but | | | | | |yao-uv.lmp plays back | | | |yao-uv.lmp |too short |OK in prboom-plus | |yaotzin |map01|yao-750.lmp |(50404<51200)|2.4.6.2 (REJECT padded | | | | | |with zeroes) with or | | | | | |without emulation; | | | | | |yao-750.lmp desyncs | | | | | |though | +------------------------------------------------------------------------+ Table of demos with an INTERCEPTS overflow +------------------------------------------------------------------------+ | | | | | emulation in | | pwad | map | demo | outcome | current | | | | | | Prboom-plus | |--------------+-------+----------------+--------------+-----------------| | av | map08 | av08-odd.lmp | "all ghosts" | emulated OK | |--------------+-------+----------------+--------------+-----------------| | av | map26 | av261924.lmp | benign | no bad effects, | | | | | | it seems | |--------------+-------+----------------+--------------+-----------------| | | | | | not emulated | | | | | "all ghosts" | perfectly, but | | blacktwr | map25 | blackbug.lmp | and exit | well enough | | | | | | that the player | | | | | | exits | |--------------+-------+----------------+--------------+-----------------| | | | | | emulated OK; | | | | | | this demo is by | | doom | e1m3 | n1m3bug.lmp | "all ghosts" | Donatas Tamonis | | | | | | and can be | | | | | | found in his | | | | | | web space | |--------------+-------+----------------+--------------+-----------------| | | | | | no bad effects, | | | | | | it seems; yes, | | | | | | another | | | | e1m9-uv.lmp | | intercepts | | doom | e1m9 | (dm-atm.zip) | benign | overflow on one | | | | | | of the original | | | | | | E1/shareware | | | | | | maps; this is a | | | | | | dht3 demo | |--------------+-------+----------------+--------------+-----------------| | | | lv02-!!!.lmp | | | | doom2 | map02 | (fa02-132.zip) | "all ghosts" | emulated OK | | | | map02gho.lmp | | | |--------------+-------+----------------+--------------+-----------------| | | | | | probably | | | | ty18-bug.lmp | | emulated OK, | | doom2 | map18 | (ty18c810.zip) | "all ghosts" | but not fully | | | | | | checked; this | | | | | | is a DANG demo | |--------------+-------+----------------+--------------+-----------------| | | | | | emulated OK? | | eternall.wad | | | | (not fully | | (from | map18 | wtf.lmp | "all ghosts" | checked); the | | eternal.zip) | | | | demo is in | | | | | | et18-227.zip | |--------------+-------+----------------+--------------+-----------------| | hr | map27 | hr27odd.lmp | "all ghosts" | emulated OK | |--------------+-------+----------------+--------------+-----------------| | hr2final | map24 | h2241828.lmp | benign | no bad effects, | | | | | | it seems | |--------------+-------+----------------+--------------+-----------------| | | | | | the demo was | | hr2final | map32 | h2323105.lmp | "all ghosts" | recorded | | | | | | without | | | | | | emulation | |--------------+-------+----------------+--------------+-----------------| | ksutra | map10 | ks101018.lmp | benign | no bad effects, | | | | | | it seems | |--------------+-------+----------------+--------------+-----------------| | manor | map01 | manorbug.lmp | "all ghosts" | emulated OK | |--------------+-------+----------------+--------------+-----------------| | mm | map12 | mm12r406.lmp | benign | no bad effects, | | | | | | it seems | |--------------+-------+----------------+--------------+-----------------| | | | | | emulated OK, | | nuts | map01 | nutsnp52.lmp | "all ghosts" | but with a | | | | | | significant | | | | | | slow-down | |--------------+-------+----------------+--------------+-----------------| | | | | | emulated OK? | | | | | | (not fully | | plutonia | map15 | pl15-odd.lmp | "all ghosts" | checked); demo | | | | | | is in | | | | | | pl15-238.zip | |--------------+-------+----------------+--------------+-----------------| | | | | | "all ghosts" | | ssbase | e1m1 | ssba-heh.lmp | crash with | with | | | | | Doom2.exe | prboom-plus, | | | | | | but no crash | +------------------------------------------------------------------------+ Sorry, I haven't given hyperlinks for the wads or demos; I presume that anyone interested in this stuff will already have them or be able to find them. The idgames database, Compet-n, DSDA and this Demos Forum are the places to look. This is a useful link in this respect (replace "demoname" with the filename you're seeking):http://www.google.com/search?q=site:alkali.org/fraggle/random/competn+demoname When I have described an overflow as "benign?", this means that any demos I have tested have played back OK whether the overflow is emulated or not. In some cases it is hard to judge if the overflow is being emulated correctly, as there are no demos on the map in question that play back OK with Doom2.exe. If you are recording in Prboom-plus on any of maps where the spechits overflow is liable to cause desyncs, then if you want your demo to play back with Doom2.exe, set the program to attempt to emulate the overflow. Note that this is not guaranteed to work, and that it might not play back with Eternity (as it doesn't at present have this feature, as far as I am aware). If you record with Doom2.exe on one of these maps and the demo desyncs with Prboom-plus, try it with overflows emulated. I'll note that so far I haven't come across an instance where Prboom-plus 2.4.8.1 is clearly unable to emulate a spechits overflow. Obviously I haven't tested every map in existence, but as you can see I have tested a fair few, including most of the popular wads for recording. Let me know if you find any more, or can help resolve any of those listed more clearly, or if there are some obscure desynching demos that ought to be tested. I have also added short tables of INTERCEPTS and REJECT overflows. These are based on far less testing (just ad hoc, really). There are probably quite a lot of maps with the REJECT problem, but one wouldn't expect to find many demos where there is a large overflow in any case, as they often lead to desyncs in Doom2.exe itself. Prboom+ can emulate them as long as the size of the overflow is no more than 16 bytes and the size of the REJECT lump is divisible by 4. Demos with INTERCEPTS overflows are also rare, as they sometimes result in a crash with the vanilla engine, and often in "all ghosts" behaviour, which in most cases makes it impossible to exit the map (you need to find a damage/exit sector, which most maps don't have). There also appear to be a few where the overflow is small and has no effects. In some cases, a spechits overflow makes a demo play back differently on different systems with the vanilla exe. In these cases, you may need to get the spechits "magic number", generated by a patched "e6y" version of Doom2.exe or Doom-plus running on a system where the demo plays back OK, and enter that in the command line using the "-spechit" parameter. However, if you want to use a shortcut and just try something that has a good chance of working if the demo is an old one, or was recorded on an older OS, or with Chocolate-Doom, use this:-spechit 2230937832 So far, all demos that have been found not to work with the default value, play back OK with this one. Last updated: 16-March-2008 (minor addition 19-January-2012, table formatting fixed in 20-October-2021) Edited October 20, 2021 by vdgg table formatting went nuts after doomworld moved away from vbulletin 0 Quote Share this post Link to post
entryway Posted December 26, 2005 DeePsea has very good, powerful and best error checking system. It will be fine if authors will add check on an opportunity of this overflow and very badly that it not free-of-charge. I cannot use it for correction of map errors. Only for detection :( 0 Quote Share this post Link to post
ultdoomer Posted January 9, 2006 How about Cameron Prosser's hf24-359.lmp? Does anyone know why that desyncs in PrBoom? 0 Quote Share this post Link to post
Grazza Posted January 9, 2006 It's a Dosdoom (converted TasDoom) demo, and there's no spechits overflow. It plays back fine in Prboom 2.3.x and Prboom+ 2.2.6.25. Earlier versions didn't have this compatibility level, which is why they couldn't play it back successfully. prboom hr hf24-359.lmp -complevel 5 BTW, if anyone spots any spechits overflows in any maps or demos, please let me know. If you have prboom+ 2.2.6.25 set to detect them, it displays an on-screen message if one occurs, and outputs details of the overflow into stdout.txt. 0 Quote Share this post Link to post
ultdoomer Posted January 9, 2006 I tried playing hf24-359.lmp and hr181329.lmp on -complevel 5 using Andrey's latest build, but they both still desync (for me). For the Post Mortem demo, I had everything turned off on the last page of the Status Bar/HUD menu; for the Hard Attack demo, I had everything turned off except for Try To Emulate It under spechit. How do I know when to use these? Also, what do those other two at the bottom do and how do I know when to use those? 0 Quote Share this post Link to post
Grazza Posted January 9, 2006 spechits overflow emulation is for doom2.exe only, not for dosdoom. The only dosdoom/tasdoom demos I've found to desync with 2.2.6.25 are the following, all with memory overflows that aren't emulated (yet?): flsofdth.wad fod3uv.lmp - spechits overflow hr.wad hf181430.lmp - spechits overflow hr.wad hr181329.lmp - spechits overflow icarus.wad ic09uv.lmp - spechits overflow yaotzin.wad yao-uv.lmp - REJECT overflow (and too large an overflow to be emulated even for a Doom2.exe demo) As for hf24-359.lmp, I've no idea what could be going wrong for you. You're definitely using 2.2.6.25? You've never modified hr.wad in any way? And you're using the command line as I gave in my last post? It's essential that -complevel 5 actually goes in the command line in order to override the autodetect - this should be enough on its own, with the rest of the settings all irrelevant. One last thing to try (though it shouldn't make any difference): overwrite your cfgs with the ones provided in prboom-plus-2.2.6.25.zip. If that does make a difference, say so, because it would suggest something was wrong. As for what settings for the overflow emulation to use, personally I just have them all turned on (warn and emulate). I would only turn the warning off if I wanted to record a demo on a map where I knew there were these issues. I would only turn the emulation off in order to play back a specific demo where the emulation would itself cause a desync (there aren't many of those - hr2 map31 and scythe2 map02 are only cases I can think of; it's basically when prboom has been used to record on a map where there is a "bad" spechits overflow, as shown in bold italic in the table above). Regarding compatibility with common mapping errors, these options are disabled for recording and playback. Their purpose is solely to make it possible in prboom+ to play maps afflicted by these errors. I have them turned off (I want to know if a map has these bugs), and would only turn them on when it's necessary in order to play a particular map (it's easier than editing the map to fix these problems...). 0 Quote Share this post Link to post
entryway Posted January 9, 2006 ultdoomer said:I tried playing hf24-359.lmp and hr181329.lmp on -complevel 5 using Andrey's latest build, but they both still desync (for me). hf24-359.zip glboom -file hr.wad -playdemo hf24-359.lmp -complevel 5 works without decync for me 0 Quote Share this post Link to post
ultdoomer Posted January 9, 2006 Grazza said:It's essential that -complevel 5 actually goes in the command line in order to override the autodetect I just changed the number in the cfg file to 5; I didn't know you have to use the command line. The Post Mortem demo is working with the command line. Thanks. 0 Quote Share this post Link to post
entryway Posted January 9, 2006 Grazza said:The only dosdoom/tasdoom demos I've found to desync with 2.2.6.25 are the following, all with memory overflows that aren't emulated (yet?)Yes. I can't debug dos applications. Also I can't start it in WinXP :) 0 Quote Share this post Link to post
Grazza Posted January 9, 2006 ultdoomer said:I just changed the number in the cfg file to 5; I didn't know you have to use the command line. The Post Mortem demo is working with the command line. Thanks.You're welcome. The explanation is that if prboom+ doesn't find a -complevel in the command line, it will examine the header info in the demo itself, and choose its compatibility level based on what the demo appears to be (and the iwad used). In this case, it would think it is a Doom2.exe demo (-complevel 2). Normally the autodetect of the demo type works excellently, and you wouldn't want it to be overriden by the default compatibility level that you've put in the cfg. Andrey: Yes I expected that emulating dosdoom's overflows would be a problem (and even if somehow possible, too much work for just a handful of demos). I can't run it on XP either, but I've still got an old Win98 notebook fortunately. 0 Quote Share this post Link to post
ultdoomer Posted January 9, 2006 entryway said:Yes. I can't debug dos applications. Also I can't start it in WinXP :) I can't either, that's why I'm so happy I could view some DOSDoom/TASDoom demos with PrBoom. Thanks for all the hard work. As far as those DOS-port demos with memory overflow problems go, would it be possible to teach someone with good DOS support how to fix those? 0 Quote Share this post Link to post
Opulent Posted January 9, 2006 Hate to make a post about nothing. but that is a lot of information, Mr. G(razza) and Mr. E(ntryway). thanks. 0 Quote Share this post Link to post
Grazza Posted January 10, 2006 Thanks. I'm quite fond of the table myself. :) And the detection feature, of course. From my testing, I'd say that on average about 1 in 20 maps feature a possibility of a spechits overflow. (Making the assumptions that a max demo on the map has a high probability of triggering it, and that my selection of maps/demos to test isn't for some reason skewed towards or away from maps with possible overflows.) I'd also estimate (or rather guesstimate) that the overall proportion of maps where there is a possibility of an overflow that has any practical impact in Doom2.exe may be less than 1 in 100. Those are rough statistical conclusions, and not scientific ones - I'm just judging from what tends to happen in practice as far as I have observed. 0 Quote Share this post Link to post
Quasar Posted January 13, 2006 Are you guys aware of any maps with zero-size reject lumps? DOOM would load them without crashing, but it would allocate a 32-byte block of RAM for the reject, and would then read what was effectively random data from memory. This would render any demo recorded on such a map impossible to sync, but I've never heard of this problem actually being noticed. So much so, in fact, that this bug persisted in Eternity for a long time (except it made BOOM/MBF/Eternity crash due to changes made to the zone allocator). 0 Quote Share this post Link to post
Grazza Posted January 13, 2006 It has been noticed, especially by those who try to record a demo on such a map and find it won't play back even with the exe that was used to record it. Fenris is an example of such a map. I've put an initial (desynching) test run I recorded here. Rebuilding the reject solved the problem - I could record as normal and the demo plays back with everything you would expect it to. There are quite a few other examples though. Most of the maps in the original Akce Korian, for instance. Prboom(+)'s current behaviour in such cases is to have the monsters unable to see or target the player. And prb+ displays its reject overflow message, if you have it enabled. 0 Quote Share this post Link to post
entryway Posted January 17, 2006 I've found it in the risen3d\R3D_WhatsNew.txtAlgo introduced to detect valid line side triggering where the radius of the player exactly matches the distance between the activating line and a blocking line which prevents the player crossing and thus activating the line trigger. The algo determines whether the line should be activated or not. E.g. STRAIN map 07 line 986 should be activated, Herian2 map03 line 17 should not. 0 Quote Share this post Link to post
Grazza Posted January 18, 2006 Hmmm. I notice that R3D doesn't handle the identical set-up in your spechits wad correctly (the player doesn't exit). Also, if you edit STRAIN map07 so as to remove the overflow (e.g. by making enough of the relevant lines non-special), you can still exit the map in R3D. So I wonder what this algo is really doing. It's nice that they've made it possible to exit this map, but if it is a map-specific workaround, why not say so? 0 Quote Share this post Link to post
Grazza Posted July 30, 2006 Updated to take into account the latest improvements in emulation, etc. 0 Quote Share this post Link to post
Grazza Posted August 7, 2006 Magic numbers needed! Can anyone supply the spechits magic numbers for the following demos?Vile's h2322437.lmp on hr2.wad (that's the public beta, not the final) Anthony Soto's av15-612.lmp on av.wad (compet-n edition)If these demos play back correctly on your system with Doom2.exe, then you will hopefully be able to supply a valid magic number using the method and tools described here. I'd imagine Win98 users might have the best chance. 0 Quote Share this post Link to post
Opulent Posted August 7, 2006 why didn't somebody tell me there was a prboom-plus-2.4.4.1.test2-win32.zip version. darn it! Vile's h2322437.lmp -spechit 2301487060 Anthony Soto's av15-612.lmp -spechit 2358693508 edit: hmm... still doesn't work for me. I must be doing something wrong. edit 2: oh, you got rid of the -spechit -# requirement. /round of beers (or hopefully a better beverage) for Mr e6y! 0 Quote Share this post Link to post
Grazza Posted August 8, 2006 av15-612.lmp works fine for me with your magic number, but sadly h2322437.lmp doesn't. That may be due to other issues with that map though. 0 Quote Share this post Link to post
Opulent Posted August 8, 2006 doesn't work for me either. re-ran it and it generated 2434295764 that doesn't work either. another generated number 2415921108 untested. ;) 0 Quote Share this post Link to post
myk Posted August 8, 2006 Opulent said: doesn't work for me either. Same here, but then Doom2 desynchs. Does the demo play back using Doom2 on your machine? another generated number 2415921108 This one failed. In the old thread where this issue was first mentioned it seems it wasn't synching for me on this computer. Unfortunately I don't currently have access to other machines. Vile said on that thread: What was really weird was Casey (Altima) saying that it wouldn't play back at first, but after moving it to another directory it ran fine. Crazy, but at least it plays back sometimes.. I'm guessing Altima got a different spechit number that worked. I tried moving it around but no luck yet. I wonder if it wouldn't be possible to create some sort of rapid testing feature in PrBoom+ for these spechit numbers, somehow having PrBoom+ go through the demo really fast (without displaying graphics) in order to determine if the demo's sequence includes the exit event around the time where the demo is supposed to end. Like that we could search for a valid number without spending many minutes waiting to see if it synchs under PrBoom+. entryway said: Hell Revealed 2 Beta ? In my case, yeah, I've been using this wad. 0 Quote Share this post Link to post
entryway Posted August 8, 2006 myk said:I wonder if it wouldn't be possible to create some sort of rapid testing feature in PrBoom+ for these spechit numbers, somehow having PrBoom+ go through the demo really fast (without displaying graphics) in order to determine if the demo's sequence includes the exit event around the time where the demo is supposed to end. Like that we could search for a valid number without spending many minutes waiting to see if it synchs under PrBoom+. glboom-plus.cfg ---------------overrun_spechit_warn 0 overrun_spechit_emulate 1glboom-plus -playdemo demo ... and press <End> key (by default), if you see the stat screen, so the demo works correctly. Also you may use somthing like this: glboom-plus.exe -window -file hr2.wad -playdemo h2322437.lmp -skipsec 1145 0 Quote Share this post Link to post
Opulent Posted August 9, 2006 myk said:Same here, but then Doom2 desynchs. Does the demo play back using Doom2 on your machine? yes sir. 0 Quote Share this post Link to post
myk Posted August 9, 2006 entryway said: press key (by default), if you see the stat screen, so the demo works correctly. Yeah, that works, the only drawback being that if the demo is bad the screen freezes (but I can end the task). It seems, though, that for now any further testing would be in vain, as on Doug's machine the numbers that fail under PrBoom+ work under Doom2. 0 Quote Share this post Link to post
entryway Posted August 9, 2006 myk said:Yeah, that works, the only drawback being that if the demo is bad the screen freezes (but I can end the task).No. It will quit after ending 0 Quote Share this post Link to post
entryway Posted August 9, 2006 myk said:It seems, though, that for now any further testing would be in vain, as on Doug's machine the numbers that fail under PrBoom+ work under Doom2. Sounds strange... 0 Quote Share this post Link to post
myk Posted August 9, 2006 entryway said: Sounds strange... Yeah. I could keep trying later if it could help. Any hints on how to somehow get different spechit numbers that might work? Is that even possible on a single machine? I even tried going to full DOS, but Doom+ starting the demo crashed; not sure why, but it said something weird, that there was an unknown thing 32007 (or so) then DOS got monged up (all the dirs and were messed up) and I had to restart. Maybe some sort of memory overflow killed it. Have you thought about trying to make a hack of PrBoom+ that tries different spechit numbers until it spots one that works? (Kind of like a password hacking app, I mean). 0 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.