Sign in

will

@wretched.computer
136 followers 244 following 79 posts
PostsRepliesMedia
will @wretched.computer · 05/06/2026
part 3 of my Reverse Engineering Crazy Taxi series just dropped, check it out: wretched.computer/post/crazyta... in this post, we learn about mipmaps, vintage texture compression techniques, and the nitty gritty of how every GameCube draw call is made. and we do it all in service of one thing:
0267
will @wretched.computer · 01/04/2026
lmao yes, the ct debug symbols are so good
Ghidra readout of the Crazy Taxi Android port's debug symbols with functions like LetsPlayTennis() and HesLate()
030
will @wretched.computer · 16/05/2025
sadly that's about all the archival footage i've got from the dev period -- at some point, whenever i ran into an issue, i'd just hop on a discord call w/ Jasper and screenshare rather than sending screenshots. here's an early version of the particle system in action, though
120
will @wretched.computer · 16/05/2025
once i'd rounded out most of the major graphics systems for vanilla WoW, i thought i'd try and load up some levels from the 2 subsequent expansions, Burning Crusade and Wrath of the Lich King. to my amazement, they kinda just worked! here's some screenshots of what they looked like then vs. now
an early scene showing the Dark Portal in Outland. much is incorrect about this scene: the skybox is wrong, the world lighting is wrong, the green portal texture has a weird oval that shouldn't be there, and none of the particles are implemented (the braziers and statue eyes are empty)the same scene, but from the current version of the WoW viewer. note that the skybox is now correct, the green portal looks more portal-y, and there are fires in the braziers and statue eyesan early scene of Wyrmrest Temple. again, much is incorrect here: wrong skybox, the transparent ribbon effect at the top is wrong, and no particlesa scene of Wyrmrest Temple from the current version of the viewer: we now have the skybox's aurora and the torches have fire
110
will @wretched.computer · 16/05/2025
speaking of bugs, one of my favorite things about Jasper's noclip framework is the bevy of debug tools he's written into it. it's hard to overstate how useful it is to display debug information in-place when working on 3D scenes, or to use a debug shader to track down incorrect model normals
a scene from the Deeprun Tram showing the doorway to Stormwind. pink debug lines illustrate where the WMO's triangles are, with pink text denoting their position in 3D space. this was from a debug tool i wrote to visualize how Blizzard partitioned their levels into smaller chunks, allowing for efficient culling of level geometry that's not visible to the cameraa fully zoomed out view of the Deeprun Tram, so the entire tunnel and underwater scene are visible. a pink rectangular box is drawn perpendicular to the level. the box is supposed to represent the "axis-aligned bounding box", or AABB, of the level, but it's clearly rotated 90 degrees from where it should be due to an incorrect 3D transforma zoomed out view of Warsong Gulch, with more pink boxes denoting axis-aligned bounding boxes for different WMOs in the scene. this was from one of many attempts to reduce the number of draw calls in the scene by culling more geometry.the Forsaken base in the battleground Arathi Basin, but all of the colors look wrong. instead of rendering actual textures, this scene is using a debug shader that displays the "normal vector" (i.e. the vector pointing directly away from a surface) as a color by mapping its X, Y, and Z values to red, green, and blue. this is a very common technique to visualize normals, and is insanely helpful for tracking down when they're incorrect -- note that just based on color, you can identify which surfaces are pointing up, which are pointing towards the camera, etc
110
will @wretched.computer · 16/05/2025
and sometimes fixing one thing breaks another
100
will @wretched.computer · 16/05/2025
you wouldn't believe the shit i've seen while debugging my broken model animation system
110
will @wretched.computer · 16/05/2025
but i'd be remiss in my retelling of this story if i didn't share some of the many, many bugs and failures along the way.
a screenshot of terrain from the desert region of Tanaris, but the terrain color looks totally wrong. while some patches look ok, large portions are black & white, and there are abrupt seams where the color changes. this happened because terrains have up to 4 separate textures, which are combined differently depending on certain flags on the terrain. the problem here was i was rendering the textures as-is, rather than combining them per the flag's instructions.a scene from the battleground Arathi Basin. but there's a problem: a building which is far away at the end of a valley is rendering in front of a tree that's right in front of the camera. this was due to me failing to set "depth write" flag which informs the graphics card which items it should draw first. as such, the graphics card was drawing the tree, and then afterwards drawing the building on top of it.
100
will @wretched.computer · 16/05/2025
but with these 4 ingredients (BLPs, models, ADTs, and WMOs), we can finally start rendering proper levels! well, again, not really proper due to the total lack of lighting, but at this point in the project i was seriously ecstatic just to see Ironforge nestled in its mountain here
an early screenshot of the WoW viewer, showing the mountains of Dun Morogh and exterior of Ironforge nestled within them. again, game lighting isn't implemented yet, so the scene looks unnaturally bright and flatan early screenshot of the WoW viewer, showing Elwynn Forest and the exterior of Stormwind. again, game lighting isn't implemented yet, so the scene looks unnaturally bright and flat
110
will @wretched.computer · 16/05/2025
"but wait, if each point of terrain can only have one height value, how do caves and stuff exist??" what an astute question, hypothetical reader! and it brings us to the last major renderable object in WoW, the "world map object", or WMO. WMOs are how caves, buildings, and entire cities are stored
An early screenshot of the WoW viewer showing the entirety of Blackrock Depths, zoomed out to a sort of "dollhouse" view. There's no game lighting, so the level looks unnaturally bright and flatAn early screenshot of the WoW viewer showing the entrance hall of Ironforge, with the bank, auction house, and lava trench visible. There's no game lighting, so the level looks unnaturally bright and flat
110
will @wretched.computer · 16/05/2025
after models, i moved on to rendering WoW's terrain. terrain in WoW is stored in chunks called ADTs, which are fixed mesh grids that're 1024 points wide and 1024 points long. each point in the grid can have an arbitrary height value, thus giving us a sort of mesh blanket that forms the terrain
an early screenshot from the WoW viewer, showing a greyscale model of the terrain around the desert area Tanaris. rolling dunes give way to a steep mountain range, after which the terrain is completely flat, as the player is never meant to reach that part of the mapan early screenshot of the WoW viewer, showing a massive portion of textured terrain surrounding Blackrock Mountain. On the right side, all of Dun Morogh is shown. Below that, Loch Modan and the Badlands are visible
100
will @wretched.computer · 16/05/2025
after textures, i moved on to models. these are pretty straightforward: they're mostly just triangle meshes which reference one or more BLPs as textures
an early screenshot from the WoW viewer showing a 3D model of an Arathi farmhouse. the model is tilted 90 degrees counterclockwisean early screenshot from the WoW viewer showing a 3D model of a throne shaped like a gravestone. the model is tilted 90 degrees counterclockwise
110
will @wretched.computer · 16/05/2025
as such, my WoW viewer needed to understand the file formats as they shipped w/ vanilla WoW. or, to be precise, as they shipped with WoW Classic. and to get things started, i began with the game's texture format, BLP in all of the following posts, check image alt text for more dev details
an early screenshot of the WoW viewer, showing the texture for the Threshadon corpse in Darkshore. the image is distorted and details are arranged oddly, but this is typical for game textures since their 3D meshes specify how the image is mapped to the 3D objectan early screenshot from the WoW viewer, showing the texture of a throne shaped and styled after a gravestone. the image is distorted and details are arranged oddly, but this is typical for game textures since their 3D meshes specify how the image is mapped to the 3D object
120
will @wretched.computer · 16/05/2025
one nice thing about noclip is it'll save your current camera position in the URL, so to share a specific location, just share the URL: noclip.website#WorldOfWarcr... you'll want a decent computer and internet connection to use it. also, these flythrough videos are all from noclip's builtin tooling
120
will @wretched.computer · 16/05/2025
first off: noclip.website is an incredible project by @jasperrlz.bsky.social that's chock full of other games which have been lovingly reverse engineered & recreated in the browser. while most of the games on there are due to Jasper, the open source community has contributed quite a few as well
141
will @wretched.computer · 16/05/2025
i recently finished v2.0 of my browser-based World of Warcraft level viewer! so here's a thread on what it is, how it works, and a visual history of its development check it out at noclip.website by searching "World of Warcraft", finding a zone you wanna explore, and fly around w/ WASD + mouse
A scene from the video game World of Warcraft of the gates of Ironforge, a dwarven city embedded in the mountainsA scene from the video game World of Warcraft of Orgrimmar, the orc capital cityA scene from the video game World of Warcraft of the Dark Portal, a portal between the realm of Azeroth and OutlandA scene from the video game World of Warcraft of Icecrown Citadel, the seat of the Lich King
24014
will @wretched.computer · 22/01/2025
huge day for me
my worm post got liked by wormwife
020
will @wretched.computer · 07/01/2025
isometric art #genuary5 #genuary2025 #genuary
170
will @wretched.computer · 05/01/2025
black on black #genuary4 #genuary2025 #genuary
240
will @wretched.computer · 04/01/2025
exactly 42 lines of code #genuary3 #genuary2025 #genuary
170
will @wretched.computer · 03/01/2025
layers upon layers upon layers #genuary2 #genuary2025 #genuary
070
will @wretched.computer · 03/01/2025
horizontal and vertical lines only #genuary #genuary2025 #genuary1 (better late than never)
080
will @wretched.computer · 29/05/2023
making some orders
011