Fabien Sanglard

  1. Building my childhood dream PC

    Published

  2. Why fastDoom is fast

    Published

  3. Watching sunsets

    Published

  4. SNES: Sprites and backgrounds rendering

    Published

  5. How the SNES Graphics System works

    Published

  6. Carving the Super Nintendo Video System

    Published

  7. Inside the Super Nintendo cartridges

    Published

  8. The evolution of the Super Nintendo motherboard

    Published

  9. The hearts of the Super Nintendo

    Published

  10. How the DevTeam conquered the iPhone

    Published

  11. Why Android developers no longer need Windows USB drivers

    Published

  12. How Apple's Pro Display XDR takes Thunderbolt 3 to its limit

    Published

  13. The bash book to rule them all

    Published

  14. 0x4 reasons to write and publish

    Published

  15. Forty years of programming

    Published

  16. Exploring Command-line space time

    Published

  17. Ode to the M1

    Published

  18. mDNS Primer

    Published

  19. Commander Keen: Adaptive Tile Scrolling

    Published

  20. 10NES

    Published

  21. Good Vibrations

    Published

  22. Driving Compilers

    Published

  23. The Joy of Computer History Books

    Published

  24. All you may need is HTML

    Published

  25. Mjolnir

    Published

  26. A Linux evening...

    Published

  27. Books update

    Published

  28. The Book Of CP-System, paper version

    Published

  29. CCPS: A CPS-1 SDK

    Published

  30. The Book Of CP-System

    Published

  31. The Beautiful Diablo 2 Resurrected machine

    Published

  32. USB Cheat Sheet

    Published

  33. CPS-1: GFX system internals

    Published

  34. Street Fighter 2: Sound System Internals

    Published

  35. Street Fighter 2: Subtile accurate animation

    Published

  36. Street Fighter 2: Spin when you can't

    Published

  37. Street Fighter 2: The World Warrier

    Published

  38. Following Street Fighter 2 paper trails

    Published

  39. Observing my cellphone switch towers

    Published

  40. Game Engine Black Book: DOOM, Korean Edition

    Published

  41. The confusing world of USB

    Published

  42. The beautiful silent thunderbolt-3 PC

    Published

  43. These are called opportunities

    Published

  44. Game Engine Black Book: Wolfenstein 3D, Korean Edition

    Published

  45. WHEN 13.3 > 14

    Published

  46. Switching to Lenovo Carbon X1

    Published

  47. Discret 11, the French TV encryption of the 80's

    Published

  48. A tale of Ghosts'n Goblins'n Crocos

    Published

  49. Revisiting the postcard pathtracer

    Published

  50. 0x10 rules

    Published

  51. An history of NVidia Stream Multiprocessor

    Published

  52. Revisiting the Businesscard Raytracer

    Published

  53. The Making Of Stunt Island

    How Stunt Island from IBM PC was programmed back in 1992!

    Published

  54. The Polygons of DOOM: PSX

    How DOOM was implemented on PlayStation 1!

    Published

  55. The Polygons of Another World: Jaguar

    How Another World was implemented as a passion project on Jaguar!

    Published

  56. The beautiful machine

    20 years later, I have built an other PC!

    Published

  57. The Polygons of Another World: GBA

    How Another World was implemented on Game Boy Advance!

    Published

  58. The Polygons of Another World: SNES

    How Another World was implemented on Super Nintendo!

    Published

  59. The Polygons of Another World: Genesis

    How Another World was implemented on Sega Genesis/Megadrive!

    Published

  60. The Polygons of Another World: PC DOC

    How Another World was implemented on PC DOS!

    Published

  61. The Polygons of Another World: Atari ST

    How Another World was implemented on Atari ST!

    Published

  62. The Polygons of Another World: Amiga

    How Another World was implemented on Amiga!

    Published

  63. The Polygons of Another World

    Let's kick off the year with a series about Another World!

    Published

  64. Strike Commander: Interview with Frank Savage

    There is a playful way to study the architecture of computers of the past. Find a piece of software you know well and try to find out how it was ported to these machine you don't...

    Published

  65. A trip down NBA Jam graphics pipeline

    I took some time to study how NBA Jam arcade cabinet worked. Here is what I learned.

    Published

  66. Game Engine Black Book update

    The Game Engine Black Books have been updated. Free pdfs, high-quality prints, and source code are available.

    Published

  67. The story of the 3dfx Voodoo 1

    The story of how the 3dfx Voodoo 1 which ruled 3D gaming from 1996 to 1998.

    Published

  68. The story of the Rendition Vérité 1000

    The story of how the Rendition v1000 briefly rule the Quake world.

    Published

  69. How DOOM fire was made

    How the playstation and Nintendo 64 version of DOOM implemented fire.

    Published

  70. Deciphering the postcard sized raytracer

    How Andrew Kensler did it again and authored a breathtaking path tracer fitting on a postcard.

    Published

  71. How the Dreamcast copy protection was defeated

    How the Dreamcast copy protection was defeated!

    Published

  72. Game Engine Black Book: DOOM

    The Game Engine Black Book: DOOM is out!

    Published

  73. Game Engine Black Book: Wolfenstein 3D, 2nd Edition

    The second edition of the Game Engine Black Book: Wolfenstein 3D is out.

    Published

  74. Bloated

    It used to happen sporadicly but now it is a daily experience.

    Published

  75. Game Engine Black Book Postmortem

    I am pleased to announce that the Game Engine Black Book about Wolfenstein 3D has shipped. It is 316 pages, full color and made of three parts describing the hardware of the 1991, id Software tools, and the game engine internals. You can read a preview on Google Books and buy it here: Amazon.com (.fr…

    Published

  76. FizzleFade

    I enjoy reading a lot of source code and after 15 years in the field I feel like I have seen my fair share. Even with a full-time job, I still try to spare evenings here and there to read. I don't see myself every stopping. It is always an opportunity to learn new things to follow somebody's mind process…

    Published

  77. Game Engine Black Book ReleaseDate

    How was Wolfenstein 3D made and what were the secrets of its speed? How did id Software manage to turn a machine designed to display static images for word processing and spreadsheet applications into the best gaming platform in the world, capable of running games at seventy frames per seconds? If you…

    Published

  78. Let's compile like it's 1992

    I have been tinkering with the vanilla source code of Wolfenstein 3D from 1992. Even though it is more than 20 years old: It still compile and here is how to do it (with plenty of screenshots).

    Published

  79. Game Engine Black Books

    I am almost done with the first volume of what I hope will become a serie called "Game Engine Black Book". Each book would take further what I tried to do with my articles: Explain simply, yet in great details, a legendary game engine. For the first one I decided to go with Wolfenstein 3D.

    Published

  80. Trespasser: Jurassic Park CG Source Code Review

    Jurassic Park: Trespasser is an unique piece of software: It is a game that has managed to reach both infamous and cult status. Released in October 1998 after a three years development cycle, it was unanimously destroyed by critics. But it did not fail by much and managed to grow an impressive mass of…

    Published

  81. Git Source Code Review

    Since its release in December 2005, git has taken over the software industry. In combination with GitHub it is now a powerful tool to publish and share code: From big teams (linux kernel, id Software, Epic Unreal) to single individual (Prince of Persia, Another world, Rick Dangerous), many have adopted…

    Published

  82. The Computer Graphics Library

    Back in the 90s, one book was ubiquitous in the world of Computer Graphics. Commonly called "The CG Bible", Computer Graphics: Principles and Practice gathered a huge part of the knowledge of the time. It was commonly referenced by the best programmers of that era in interviews and articles. By 1998…

    Published

  83. Algorithms and Data structures books: One size doesn't fit them all

    Over the years running this moderately popular website, I have been asked many times what is the best book about Algorithms and Data Structures. The answer is always "It depends" ! It depends on how the programmer's brain works and what kind of notation he is comfortable with. There are many flavors…

    Published

  84. Learning Legendary Hardware

    If you love software, you also try to understand the hardware to the deep down. It is not an easy task : There are many great programming books but few that explains hardware very well (as Michael Abrash once wrote: the Intel Documentation is "slightly more fun to read than the phone book"). In my quest…

    Published

  85. Decyphering the Business Card Raytracer

    I recently came across Paul Heckbert's business card raytracer. For those that have never heard of it: It is a very famous challenge in the Computer Graphics field that started on May 4th, 1984 via a post on comp.graphics by Paul Heckbert ( More about this in his article "A Minimal Ray Tracer" from the…

    Published

  86. More Doom III BFG Documentation

    id Software developer Jan Paul Van Waveren (a.k.a Mr Elusive) is sharing some more of the knowledge gained while working on Doom 3 BFG. This part focuses highly on the choice of data-structures and how paramount cacheline are to performances.

    Published

  87. Doom III BFG Documentation

    id Software developer Jan Paul Van Waveren (a.k.a Mr Elusive) send me his technical notes about Doom 3 BFG. I was especially interested in the "Compute vs. Memory" section which confirms that CPU are now so fast that it is often better to calculate something than fetch it from RAM. Jan Paul was also…

    Published

  88. Second Reality Code Review

    On July 23, 2013 the source code of Second Reality was released. Like many, I was eager to look at the internals of a demo that inspired me so much over the last 20 years. I was expecting a monolithic mess of assembly but instead I found a surprisingly elaborated architecture, mixing several languages…

    Published

  89. Prince Of Persia Code Review

    On Apr 17, 2012 Jordan Mechner released the source code of Prince of Persia. I immediately took at look at it!

    Published

  90. Doom3 BFG Code Review

    On November 26, 2012 id Software released the source code of Doom 3 BFG edition (only one month after the game hit the stores). The 10 years old idTech 4 engine has been updated with some of the technology found in idTech 5 (the game engine running Rage) and it was an interesting reading session. More…

    Published

  91. Reverse Engineer Strike Commander

    Back in the early 90s, one company was on the bleeding edge of PC gaming: Origin Systems. Their motto was "We Create Words" and boy did they deliver: With the Ultima series, Crusader series and Wing Commander series, they consistently took gamer's breath away. One of them took four years and more than…

    Published

  92. Duke Nukem 3D Code Review

    Since I left my job at Amazon I have spent a lot of time reading great source code. Having exhausted the insanely good idSoftware pool, the next thing to read was one of the greatest game of all time : Duke Nukem 3D and the engine powering it named "Build". It turned out to be a difficult experience…

    Published

  93. The best Tech books

    To be a good Software Engineer can mean different things depending on what one is trying to achieve. But if you are after any kind of performances, to use the best algorithms is not enough: you must have a solid knowledge of the specific stack your program is relying on. . I have gathered here the few…

    Published

  94. Game timers: Issues and solutions

    When I started game programming I ran into an issue common to most aspiring game developers: The naive infinite loop resulted in many problems (among then difficulties to record a game session properly) that led the game design to feature convoluted and confusing "fixes" ./> /> Since I came up with a…

    Published

  95. Oculus RIFT development

    Virtual Reality headsets have been consistently disappointing for several decades. Three reasons come to mind in order to explain this state of things: The hardware is expensive: The latest Sony HMZ-T1 is 799$. The hardware is not good enough: The motion sensor, screen latency and screen limited Field…

    Published

  96. Quake 3Source Code Review

    Since I had one week before my next contract I decided to finish my "cycle of id". After Doom, Doom Iphone, Quake1, Quake2, Wolfenstein iPhone and Doom3 I decided to read the last codebase I did not review yet: idTech3 the 3D engine that powers Quake III and Quake Live. . More...

    Published

  97. Doom3 Source Code Review

    On November 23, 2011 id Software maintained the tradition and released the source code of their previous engine. This time is was the turn of idTech4 which powered Prey, Quake 4 and of course Doom 3. Within hours the GitHub repository was forked more than 400 times and people started to look at the game…

    Published

  98. Cracking Kevin Mitnick's Ghost In Tthe Wires Paperback Edition

    I received yesterday a copy of Ghost In The Wire Paperback edition. Kevin Mitnick seems to have updated all of the challenges found at the beginning of each chapters. Since they are all available on book.google.com preview I don't think it is a big deal to publish and discuss our solutions here. . More…

    Published

  99. Be A Donor

    This is probably the proudest moment of my Computer Science career so far: On April 17th, 2012 the Government of Ontario released the Mobile Website I designed and implemented for the major part of 2011. Beadonor.ca allows you reinforce your decision to be an organ donor. I feel honored and privileged…

    Published

  100. SSD reboot your thinking

    How SDD drives took my breath away...

    Published

  101. Android Shmup

    Six months ago I released the source code of "SHMUP": a modest indie 3D shoot'em up designed for iOS. Since it did honorably on the Apple Appstore I offered anyone to port it to Android Appmarket for a 50/50 revenues split. Two developers consecutively took on the challenge only to give up a few weeks…

    Published

  102. Another World Code Review

    I spent two weeks reading and reverse engineering further the source code of Another World (Out Of This World in North America). I based my work on Gregory Montoir's binary to C++ initial reverse engineering from the DOS executable. I was amazed to discover an elegant system based on a virtual machine…

    Published

  103. Progressive playback: An atom story

    I have been doing a lot of work with video containers recently, especially figuring out interoperability between iOS/Android and optimizing progressive playback. In particular it seems Android devices fail to perform progressive playback on certain files while iOS and VLC succeed: Why ? As usual understanding…

    Published

  104. How to build Doom3 on Mac OS X with XCode

    The source code of Doom3 has been released three days ago :) ! I have started to read it and I will probably write a code review if enough people are interested. According to the README.txt the source code is building well with Visual Studio 2010 but it is not building at all on Mac OS X with XCode 4.0…

    Published

  105. Quake 2 Source Code Review

    I spent about a month in my spare time reading the source code of Quake II. It was a wonderful learning experience since one major improvement in idTech3 engine was to unify Quake 1, Quake World and QuakeGL into one beautiful code architecture. The way modularity was achieved even though the C programming…

    Published

  106. Solving Ghost in The Wire codes

    I received today my copy of Kevin Mitnick's book: Ghost in The Wires. It is a great read so far. But even more interesting are the cyphered sentences at the beginning of each chapters. I am trying to solve all of them but if you can contribute, comment or send me an email ! . More...

    Published

  107. Hacker Monthly publication

    Hacker Monthly July edition has published my article in which I described the internals of Doom engine.. . More...

    Published

  108. SHMUP Source Code

    I have decided to release the full source code of "Shmup" a shoot'em up 3D engine specially designed for mobile platform and released on iOS in 2010. The game and engine are fairly inspired of Ikaruga, the legendary shmup from the 1999 DreamCast. Anything you saw in Ikaruga, this engine can do it too…

    Published

  109. Polygon Codec

    Back in the summer of 2009 I was working on a 3D engine that would power my next game: A 3D shoot'em up a la Ikaruga. The target was the very first iPhone (now called iPhone 2G). Despite being impressive on paper (600Mhz with dedicated GPU), the hardware had several issues and the lack of dedicated VRAM…

    Published

  110. dEngine Source Code Released

    I've decided to release the source code of the OpenGS ES 1.0/2.0 renderers I wrote in the summer of 2009 nicknamed "dEngine". It was the first renderer to feature Shadow Mapping and Bump Mapping on iPhone at the time. Note that shadow mapping was achieve by packing the depth informations in a color texture…

    Published

  111. To generate 60fps videos on iOS

    Back in winter 2009 I was working pretty hard on the 3D engine that would power my next iPhone/iPad game: "SHMUP". To demo the work in progress required to generate videos, a task far from being trivial on a smartphone: Slow CPU/GPU, Little RAM, no TV output, no storage space, no real multitasking. Hence…

    Published

  112. To become a good C programmer

    Every once in a while I receive an email from a fellow programmer asking me what language I used for one of my games and how I learned it. Hence, I thought it may help a few people to list here the best things to read about C. If you know of other gems, please email me or add a comment at the bottom…

    Published

  113. SHMUP Lite

    I have decided to release a free version of "SHMUP". It is called "SHMUP Lite" and the only limitation is that you can only play the first level for free, if you want to continue further you have to go for the full version.

    Published

  114. All about the fillrate

    I bought "Blade infinity" yesterday. The game is a lot of fun and has the ability to satisfy both people looking for instant fun and people wishing for a long game while collecting powerful items. At $5.99 it is a bargain, a must have not only for the gameplay but also for its graphical breakthrough…

    Published

  115. Tracing the baseband

    I was reading an article on planetbeing's blog the other day and my curiosity was tipped off when he mentioned that phones don't run only one operating system but two. I decided to learn a bit how all this really works and here are my notes with the source code associated. Hopefully it will help someone…

    Published

  116. Doom iPhone code review

    I took some time away from programming something I hope will become a really good shmup and read the source code of Doom for iPhone. I was very interested in finding out how a pixel oriented engine made the transition to openGL. Here are my notes, as usual I got a bit carried away with the drawings.

    Published

  117. Doom engine 1993 code review

    Before studying the iPhone version, it was important for me to understand how Doom engine WAS performing rendition back in 1993. After all the OpenGL port must reuse the same data from the WAD archive. Here are my notes about Doom 1993 renderer, maybe it will help someone to dive in.

    Published

  118. Don't learn Assembly on Mac OS X

    I had to do some low level work with Mac OS X snow-leopard using my MacBookPro CoreDuo2. I learned plenty regarding GAS for i386 and x86_64 but I would not recommend this setup to learn assembly. I think Apple's specific would discourage a beginner and impair ability to use code samples found in most…

    Published

  119. Apple iPhone Tech Talk 2009 tricks and treats

    Today I took a day off from work to attend the iPhone Apple Tech Talk 2009 in Toronto. I learned a few cool things and though I should share it with the two lost developers that may stumble on this page. I haven't had time to test and verify all of this so as usual: Do your own testing and trust nobody…

    Published

  120. iPhone 3D engine programming part 1

    Pumped up by the tremendous success of Fluid (4,000,000+ downloads) and Fluid 2 (50,000+ downloads), I started two month ago to write a real game for iPhone: Here is a modest report of my experience in the process.

    Published

  121. Armadillo Space T-shirt

    Finally received my Armadillo Space T-Shirt and mug. I recommend them !

    Published

  122. Wolfenstein 3D for iPhone code review

    For once, developers were able to read the source code of an id software product just a few days after its release. I spent a week in my spare time reading the internal of the Wolfenstein 3D for iPhone engine. It is by far the cleanest and easiest id source code release to date.

    Published

  123. Fluide

    Fluid tech demo released on iPhone !!!

    Published

  124. BumpMapping hell

    Published