ABCDEFGH
1
PageStatusErrorCorrectionNameNote from Fab
2
OBSOLETE, Report issues on https://github.com/fabiensanglard/gebbdoom/issues
3
Paper114Duplicate of erratum #37Page starts with "duce the many monsters necessary." Missing previous line.ng previous linLewis Christie
4
PlayStore4Fixed in v1.1Missing space between "the" and "DOOM""...maps into the DOOM engine."Daniel Monteiro
5
Paper5Fixed in v1.1... helping me assembling a ...'... helping me assemble a ...' OR '... helping me with assembling a ...'Rory O'Kenny
6
Paper6Fixed in v1.1Samuel VillarrealJohn Corrado
7
Paper19Fixed in v1.1Footnote 2: These is even a websiteThere is even a websiteOlivier Cahagne
8
300dpi20Fixed in v1.1Samuel Kaiser"shortly"Steve Hoelzer
9
Paper35Fixed in v1.1"Figure ??"Need to point to the correct figureSteve Hoelzer
10
Paper36Fixed in v1.1Footnote 17 appears to be missing. 17 is used for the word "Comparison" in Figure 2.7 but is not found in the footnotes. Figure 17 should appear in the footnotes or probably removed from the Figure 2.7 description.Ryan Cook
11
Paper36Fixed in v1.1Footnote #17 doesn't exist
12
PlayStore38Fixed in v1.1"The VLB (VEAS Local Bus)" - should be "VESA Local Bus"The VLB (VESA Local Bus)
13
PlayStore39Fixed in v1.1Figure 2.15: Adress line connected to bit line and !bit line.(lower left and right dots erroneous)Bartosz Pikaczebbdoom/
14
Paper43Fixed in v1.1With 2^32 / 4 = 1,073,741,824 addresses competing for four slots (…)With 2^32 / 128 = 33,554,432 addresses sharing the same LINE value and competing for four slots (…)Aurélien COUDERC
15
Paper48Fixed in v1.1"compared to the the ALU" between Figure 2.22 and 2.23cut one "the"Frank Polster
16
Paper55Fixed in v1.1... the most notorious chip of the era ...'... the most notorious ships of the era ...'Rory O'Kenny
17
Paper56Fixed in v1.1"The VLB (VEAS Local Bus)" - should be "VESA Local Bus"
18
Paper58Fixed in v1.1"The opposite page shows three VGA cards available in 1994" Opposite doesn't really make sense when reading a PDF."The following page shows three VGA cards available in 1994"Aiden Hoopes
19
PlayStore60Fixed in v1.1ATAPI connectorThe ATAPI connector is the IDE connector. ATAPI is the name of the protocol used to drive a CDROM over the IDE connector. The second connector is to get sound from the CDROM player. I think it was just called a CD audio connector.Vincent Bernat
20
Paper61Fixed in v1.1"46.61512 Mhz Timer""46.61512 MHz oscillator" There are also 2 crystal resonators on the boardBoris Chuprin
21
Paper61fixed in v1.1"Expansion Interface for wavetable-capable WaveBlaster daughtercard""WaveBlaster Connector for MIDI "wavetable synthesizer" daughterboard"Boris Chuprin
22
Paper61Fixed in v1.1"mic-in, line-in, volume wheel, line-out,and joystick port.""line-in, mic-in, volume wheel, line/speaker-out and MIDI/joystick port." https://stason.org/TULARC/pc/sound-cards-multimedia/CREATIVE-LABS-INC-Sound-card-SOUNDBLASTER-16-ASP-C.htmlBoris Chuprin
23
Paper61Fixed in v1.1x"offered Sound Blaster 16-compatible music and digitized sound playback"Nope, it *tried to* emulate SB2.0(not even Pro/Pro2) via software TSR utility that had serious compatibility issues. OPL2 music was out of the question, way too bad. See the last lines here: https://www.vogonswiki.com/index.php/Gravis_Ultrasound Without specific GUS support you would just get no sound from some games. No GUS cards emulate SB16Boris Chuprin
24
PlayStore61Fixed in v1.1Second, the card had to able to access the sampe at runtimeSecond, the card had to be able to access the samples at runtime
25
Paper62Fixed in v1.1"line-out, and joystick port.""line-out and MIDI/joystick port."Boris Chuprin
26
PlayStore66Fixed in v1.1not only had to pay for a modem and the monthly subscription to an Internet providerInternet was not needed to play Doom through a modem. You can dial a friend directly. Also, no AOL subscription is needed to connect to a BBS either. I am not even sure it was possible to play Doom over Internet when it was released.Vincent Bernat
27
PlayStore72Fixed in v1.1"In 1988, three Ph.Ds (Fred Crigger, Ian McPhee, and Jack Schueler) made it the first C compiler to run on an IBM PC"I may have misunderstood: on the wikipedia page : Borland Turbo C 1.0 was released in 1987.Olivier Neveu
28
Paper77Fixed in v1.1There is third aspect of protected-mode programmingThere is a third aspect of protected-mode programmingSam Williamson
29
300dpi78Fixed in v1.1catching id SoftwareâĂŹs attentioncatching id Software's attentionBartosz Taudul
30
Paper93Fixed in v1.1Figure 3.10 shows 9 SIMM RAM slotsShould show 8 slots like on the actual photo on the previous pageBoris Chuprin
31
Paper93Fixed in v1.1"4 MiB default RAM""4 MiB VRAM" This is framebuffer RAM. Probably dual-ported. It is soldered to the board, is the only memory RAMDAC can read and can't be extended.Boris Chuprin
32
Paper102Fixed in v1.1...still a far cry from the 2,800 millions Sun.....still a far cry from the $2.8 billion Sun...Richard Adem @richy486
33
300dpi107Fixed in v1.1"Musics composer"Should be "Music composer"Steve Hoelzer
34
PlayStore110Fixed in v1.1A few models managed to escape into the wild and are now highly priced by collectors.A few models managed to escape into the wild and are now highly-prized by collectors. Or: A few models managed to escape into the wild and are now highly priced collectibles.
35
PlayStore111Fixed in v1.1Fixed in v1.1"Using clay models was faster than drawing by hand but it was still not faster enough to pro-"
36
Paper113Fixed in v1.1At the bottom of the page, the text that's supposed to be under the picture (the description) is inside the picture. See: https://i.imgur.com/plcE03E.jpg It's black on black so it cannot be read.-Alexandre-Xavier Labonté-Lamoureux (axdoomer)
37
Paper113Fixed in v1.1A. Carmack sculpting the Hell Knight, working from his preliminary drawing.A. Carmack sculpting the Baron of Hell, working from his preliminary drawing. (It was during the development of Doom 1, the Hell Knight was only added in Doom 2.)Alexandre-Xavier Labonté-Lamoureux (axdoomer)
38
Paper113Fixed in v1.1The second image is over the last text line, that cannot be readThe image should be a little smaller to leave room for the text, which is "Using clay models was faster than drawing by hand but it was still not faster enough to pro-"Davide Gualano @davesio
39
Paper120Fixed in v1.1"[...] and a red tainted sunset""[...] and a red tinted sunset" (should be "tinted" not "tainted")Matt Riggott
40
Paper122Fixed in v1.1DOOM II, Episode IDOOM, Episode I. (or just DOOM2?)Guilherme Manika
41
Paper123Fixed in v1.1DOOM II, Episode IDOOM, Episode I. (or just DOOM2?)Guilherme Manika
42
300dpi126Fixed in v1.1"...both floors and walls were horizontal...""...both floors and ceilings were horizontal..."Brian Gilbert @troldann
43
Paper127Fixed in v1.1Trivia: DoomED's icon is an Imp.Trivia: DoomED's icon vaguely resembles a Baron of Hell. Alexandre-Xavier Labonté-Lamoureux (axdoomer)
44
Paper131Fixed in v1.1The full twenty seven maps of the registered version requested 11 minutes.The full twenty seven maps of the registered version required 11 minutes.Jamis Eichenauer
45
Paper140Fixed in v1.1IB was nicely complemented by the OOP (Oriented Object Programming)IB was nicely complemented by the OOP (Object Oriented Programming)Vasil Yonkov vasily@mm.st
46
Paper141Fixed in v1.1Footnote 15: Mikea AshMike AshAnders Montonen
47
Paper143Fixed in v1.1… in an envelop on the back cover …… in an envelope on the back cover …phg
48
Paper145Fixed in v1.1Wad `head` struct lists a member `int32_t numDirectories // Num directories'.I think this should be `int32_t numLumps // Num lumps` based on the diagram on the following page and looking at some Doom code.Chris @JayceAndTheNews
49
PlayStore148Fixed in v1.1[Footnote 4] "Large portions of previously censured portions of" ... should be "censored" not "censured"Large portions of previously censored portions of
50
PlayStore150Fixed in v1.1The stream 0x12, 0x34, 0x45, 0x78 can be...The stream 0x12, 0x34, 0x56, 0x78 can be...
51
Paper152Fixed in v1.1The stream 0x12, 0x34, 0x45, 0x78 can be...The stream 0x12, 0x34, 0x56, 0x78 can be...
52
Paper154Fixed in v1.1First line. nm is the one showing undefined symbols, not clangShould be "Asking nm for undefined symbols"…Boris Faure @billiob
53
PlayStore156Fixed in v1.1Third paragraph: "there is zero overheard"There is zero overheadMarcus Dicander
54
Paper160Fixed in v1.1...a code convention is used to to tag functions....a code convention is used to tag functions.Patrick Hresko
55
PlayStore160Fixed in v1.1D_Display (); //Generate visioD_Display (); //Generate video
56
Paper162Fixed in v1.1Generate visioGenerate videoRichard Adem @richy486
57
300dpi167Fixed in v1.1there are display bugs with extremely large maps caused by to this specific problemthere are display bugs with extremely large maps caused by this specific problem
58
Paper167Fixed in v1.1… caused by to this specific problem …… caused by this specific problem …phg
59
300dpi172Fixed in v1.1Hexen Shareware, HEXENDEMO.WADHexen is not shareware, there was a 4 level demo available. The filename was HEXEN.WAD.Bartosz Taudul
60
Paper173Fixed in v1.1"in case the name was a fill 8 chars" code comment in the middle"[...] full 8 chars"Frank Polster
61
Paper174Fixed in v1.1ID is used to looked up a lumpcache...ID is used to look up a lumpcache...
62
Paper177Fixed in v1.1Figure 5.23 / Video System (DOS): “I_UpdateNoBlt”“I_UpdateNoBlit”phg
63
Paper180Fixed in v1.1Code: if (gamestate != oldgamestate && gamestate != GS_LEVEL in wrong placeIn the downloaded source, this if block controls the running of I_SetPalette. The code in the book suggests R_RenderPlayerView is not run if the gamestate is GS_LEVEL, which is incorrect. Statement should be if (gamestate == GS_LEVEL && !automapactive && gametic)
64
Paper192Fixed in v1.1... recursively flowed into the adjourning sectors, ...... recursively flowed into the adjoining sectorsRory Driscoll
65
PlayStore196Fixed in v1.1The area between B2, C2, F, and F is concave. We need one last split where F is selected as splitter.The area between B2, C2, E, and F is concave. We need one last split where F is selected as splitter.
66
Paper198Fixed in v1.1The area between B2, C2, F, and F is concave.The area between B2, C2, E, and F is concave.tronster
67
Paper199Fixed in v1.1The beauty of binary trees is that traversing them is O(log n)..." - this doesn't really apply here since traversing the BSP is O(n), not O(log n). It only looks like "log n" in the example, since the tree is degenerate. Bounding box culling should help get it closer to log n, but that isn't described. Yes traversing any tree is O(N) but it is not case here. in R_RenderBSPNode you can see that john carmack has added R_CheckBBox function. This function will traverse some of the tree if it is in player FOV. Actually if you comment R_CheckBBox out, rendering will complete with no issues. I have done some analysis on E1M1 and with player being on spawn point. With R_CheckBBox enabled, R_RenderBSPNode will be called 81 times (hitting 32 leaves). While if you remove R_CheckBBox, R_RenderBSPNode will traverse though every node in the tree which will be called 477 times (hitting all 239 leaves). R_CheckBBox will skip traversing more than 50% of the tree in most cases.

Note from FAB: I think it is fair to say the game engine was designed with worse case scenario in mind. Take the development of Quake (which is well documented in michael abrash black book) where they discarded some techniques because worse case sceneario was too bad. Yes there are cases where the BB will reject early entire portions of the BSP but this is an optimization, not the regular usecase. On this basis, I maintain in the book that O(N) is one of the attractive side of BSP.
Tzvetan Mikov
68
Paper202Fixed in v1.1the plan equationthe plane equationtronster
69
Paper203Fixed in v1.1// Shortcut if node if horizontal. Should be: // Shortcut if node is horizontalMiltiadis Koutsokeras
70
Paper203Fixed in v1.1fixed_t dx, dx, ...fixed_t dx, dy, ...
71
Paper204Fixed in v1.1... to the full range of a 32-bit integers.'... to the full range of a 32-bit integer.'Rory O'Kenny
72
Paper224fixed in v1.1"with 0 being the brightness" at the bottom of the page"with 0 being the brightest"Frank Polster
73
Paper228Fixed in v1.1Each portion of sky is stored as a visplane and drawn as span of pixels.Each portion of the sky is stored as a visplane and drawn as a column of pixels. (colfunc is used for rendering)John Corrado
74
Paper234Fixed in v1.1... to think of as a log ...'... to think of it as a log ...'Rory O'Kenny
75
Paper235Fixed in v1.1A vissprite entry contains eveythingA vissprite entry contains everythingMiltiadis Koutsokeras
76
Paper237Fixed in v1.1These is no clipping in effect hereThere is no clipping in effect hereMatthieu Nelmes
77
300dpi245Fixed in v1.13rd and 4th line of code paste for D_ProcessEventsI don't think head and tail should be of type event_t, but rather int or int*. The correction depends on what was intended. (Neither line appears in d_main.c in id-Software source release on git-hub.)George Todd
78
PlayStore245Fixed in v1.15.15 Audio system, footnote #24, "Wolfenstein" is misspelled "Wolfesntein"simple typo fix
79
Paper247Fixed in v1.1Footnote 24 reference to "Game Engine Black Book: Wolfesntein 3D"Should be "Wolfenstein 3D"Tor H. Haugen @torh
80
Paper248Fixed in v1.1"MPU-402" "MPU-403" in Figure 5.48There were no such devices. There can be 'Roland MPU-401 UART mode compatible' MIDI port on several possible locations(330h usually). What is the source of the diagram?Boris ChuprinSource of the diagram is here https://github.com/nukeykt/PCDoom-v2/blob/master/i_sound.h#L37
81
Paper254Fixed in v1.1"Sound propagation was used in a inventive in level E1M9""Sound propagation was used in an inventive way in level E1M9" (or "an inventive manner" or similar)Daniel Lo Nigro
82
Paper262Fixed in v1.1Note that there is no reverse gib sequence, the Arch-Vile doesn't revive gibbed monsters.Note that there is no reverse gib sequence, but the Arch-Vile still revives gibbed monsters. (The reverse normal death animation is used, same as if the monster wasn't gibbed)Alexandre-Xavier Labonté-Lamoureux (axdoomer)
83
Paper265Fixed in v1.1.. for which a two frame animation cyles repeatedly.. for which a two frame animation cycles repeatedlyMiltiadis Koutsokeras
84
Paper265Fixed in v1.1"(monsters do no have a...""(monsters do not have a..."tronster
85
Paper271Fixed in v1.1Consider revising "Semantically, think_ts are stored..." as font change is subtle; looks to be calling out "think_ts"(May be grammatically incorrect but the code reads better sans plural): "Semantically, think_t are stored..."tronster
86
300dpi280Fixed in v1.1"...where packet sequence number is tracked on a per-peer (a.k.a. node) basis.""...where the packet sequence number is tracked on a per-peer (a.k.a. node) basis."
87
Paper283Fixed in v1.1"shows that I.A. ran in G_Ticker""shows that A.I. ran in G_Ticker"Marcell Baranyai
88
Paper286Fixed in v1.1"...renders one out of very two columns""...renders one out of every two columns"
89
300dpi297Fixed in v1.1Jaguar board diagram caption item #1 (TOM) appears to actually be the 68000 on the board picture. 1 and 4 are swapped"Inside the machine: (1) Motorola 68000, (2) 2MiB RAM, (3) JERRY, (4) TOM,"Dan Williams
90
Paper299Fixed in v1.1Footnote "managed a solid 20 fps" also appears at the end of the attached paragraph
91
300dpi300Fixed in v1.1I had a functional port of the SNES Wolfenstein code running. We sent it to Atari, and theyI had a functional port of the Jaguar Wolfenstein code running. We sent it to Atari, and they
92
Paper302Fixed in v1.1"They were give the green light for project""They were given the green light for project"Marcell Baranyai
93
PlayStore308Fixed in v1.1Z-ZeroF-Zero
94
PlayStore310Fixed in v1.1"The SNES PPU's Mode 7 (capable of rotating and projecting huge sprites)"Mode 7 does not do projection and does not apply to "sprites". It only handles affine scaling and rotating a single background layer. Other SNES hardware handles calculating projection on a per-line basis.
95
300dpi312Fixed in v1.1Z-ZeroF-ZeroBrian Gilbert @troldann
96
Paper312Fixed in v1.1[...] the flight simulator "Pilot Wings", was [...]' and '[...] the secret Mario/Pilot Wings.'The videogame is called Pilotwings, not Pilot Wings (https://en.wikipedia.org/wiki/Pilotwings). In the first extract in column D, no need for the double-quotes around the name or the comma after name.Matt Riggott
97
300dpi315Fixed in v1.1"Nintendo subsequently poached, Giles and Krister""Nintendo subsequently poached Goddard and Wombell."
98
300dpi315Fixed in v1.1"Dylan Cuthbert would have joined too but a non-compete clause in his contract prevented him.""Dylan Cuthbert would have joined too, but he was prevented from doing so by a non-compete clause in his contract."
99
Paper315Fixed in v1.1citation is missing an attributionprobably Jez SanFrank Polster
100
300dpi316Fixed in v1.1"The second generation (GSU-2) was the same processor running at 21.4 Mhz with extra pins..."All known revisions of the MARIO/GSU chip have a hardware register to control their clock speed via a divider (however the 'MARIO' revision used in Starfox carts appears to be unstable when using it to run at 21.4 MHz). The important thing here is the common misconception that the GSU-2 runs faster than the GSU-1, it doesn't- both are capable of the exact same speeds/functionaity. The only notable difference between the GSU-1 and GSU-2 (beyond potential fixes that aren't documented anywhere) is the additional pins allowing for the GSU-2 to access a larger game ROM. https://www.youtube.com/watch?v=hgInD9vAZcMBrandon Long