[{"data":1,"prerenderedAt":414},["ShallowReactive",2],{"\u002Fblog\u002Fdusklight":3},{"current":4,"previous":402,"next":408},{"id":5,"title":6,"activeDiscussion":7,"body":8,"category":385,"cover":386,"date":387,"description":388,"disabled":7,"extension":389,"highlighted":7,"layout":390,"meta":391,"navigation":392,"path":393,"readTimeInMinutes":394,"seo":395,"stem":14,"tags":396,"useAltColors":392,"__hash__":401},"blog\u002Fdusklight.md","Dusklight",false,{"type":9,"value":10,"toc":377},"minimark",[11,15,37,44,49,52,57,87,124,129,132,137,142,145,150,198,226,232,252,256,265,269,282,286,304,308,310,314,326,351,354,373],[12,13,6],"h1",{"id":14},"dusklight",[16,17,18,19,22,23,25,26,30,31,33,34,36],"p",{},"At this point, I may sound like a broken record, but gaming is not what it used to be.",[20,21],"br",{},"\nInstead of trying new games, shelling out $70 for yet another mediocre experience, I wanted to revisit some games from the golden age of gaming.",[20,24],{},"\nWith an absolute classic—",[27,28,29],"em",{},"The Legend of Zelda: Twilight Princess","—celebrating its 20th anniversary later this year, I felt it was the perfect time to go for another playthrough.",[20,32],{},"\nThe stars aligned perfectly as ",[27,35,6],{},", a source port of said game, had just come out a little over a month ago, and I decided to check it out and take it for a spin.",[16,38,39,40,43],{},"To get in the mood, give ",[27,41,42],{},"Twilight",", a synth-heavy song from the game's OST, a listen.",[45,46],"simple-audio",{"cover":47,"src":48,"title":42},"\u002Fimages\u002Fblog\u002Farticles\u002Fdusklight\u002Fost.webp","\u002Faudio\u002Fblog\u002Farticles\u002Fdusklight\u002FTwilight.mp3",[50,51],"hr",{},[53,54,56],"h2",{"id":55},"about-dusklight","About Dusklight",[16,58,59,61,62,65,66,68,69,71,72,74,75,78,79,81,82,86],{},[27,60,6],{}," is a ",[27,63,64],{},"source port"," of ",[27,67,29],{},".",[20,70],{},"\nA source port usually describes the resulting product from the act of porting a game from one platform to another, largely reusing the original source code.",[20,73],{},"\nSince it’s a fan project, and Nintendo sure as hell didn’t open source their game, the original game had to be reverse-engineered. Some call these types of projects ",[27,76,77],{},"decompilation projects"," since the original game has to be decompiled in order to port it to another platform.",[20,80],{},"\nOriginal game assets are ",[83,84,85],"strong",{},"not"," provided by the Dusklight team, though, which means you’ll have to bring your own copy of the original GameCube game.",[16,88,89,90,92,93,95,96,98,99,102,103,105,106,109,110,112,113,115,116,118,119,123],{},"One of the most substantial changes introduced by Dusklight is related to frame rate.",[20,91],{},"\nIn terms of gameplay, art style, storytelling, sound design, and world building, the game is still as much a masterpiece as it was back in 2006.",[20,94],{},"\nBeing locked to 30 FPS makes Twilight Princess a little harder to enjoy, though, given that most of us are well accustomed to high refresh rates beyond 120 Hz.",[20,97],{},"\nDusklight uses a technique they themselves refer to as ",[27,100,101],{},"interpolation",", which is not to be confused with frame interpolation techniques we know all too well these days.",[20,104],{},"\nIn the case of Dusklight, interpolation describes a technique used to render additional frames between ",[27,107,108],{},"ticks",", a metric used to describe how often the game is being updated per second, using information about how objects are moving through the world.",[20,111],{},"\nDon't be fooled, though. The game still uses a tick rate of 30 internally; it's simply rendering at higher frame rates using the aforementioned technique.",[20,114],{},"\nThe result is a buttery-smooth experience, which clearly is a well-deserved modernization for such an already amazing game.",[20,117],{},"\nJust look at how awesome ",[120,121,122],"del",{},"Zelda’s"," Link’s sheathing animation looks:",[125,126],"simple-video",{"caption":127,"src":128},"Link sheathing his sword after a fight.","\u002Fvideos\u002Fblog\u002Farticles\u002Fdusklight\u002Fanimation.mp4",[16,130,131],{},"While Dusklight reuses parts of the original codebase, the team added a plethora of additional features, including support for mods and welcome quality-of-life improvements.",[133,134],"simple-image",{"alt":135,"src":136},"An image showcasing Dusklight’s QoL improvements.","images\u002Fblog\u002Farticles\u002Fdusklight\u002Fqol.webp",[138,139,141],"h3",{"id":140},"user-experience","User experience",[16,143,144],{},"The user experience of Dusklight is close to perfect, staying true to the game's original direction while modernizing several key aspects of the game.",[146,147,149],"h4",{"id":148},"setup","Setup",[16,151,152,153,68,160,162,163,168,169,171,172,177,178,180,181,186,187,191,192,197],{},"The setup process is incredibly straightforward and well-documented over on ",[154,155,159],"a",{"href":156,"rel":157},"https:\u002F\u002Ftwilitrealm.dev\u002Finstall\u002F",[158],"nofollow","their website",[20,161],{},"\nIf you have issues with getting it up and running, a dedicated ",[154,164,167],{"href":165,"rel":166},"https:\u002F\u002Ftwilitrealm.dev\u002Ffaq\u002F",[158],"FAQ"," section offers answers to the most frequently asked questions.",[20,170],{},"\nShould you need support beyond that, checking Dusklight’s ",[154,173,176],{"href":174,"rel":175},"https:\u002F\u002Fdiscord.gg\u002F6NpMhefCK9",[158],"Discord"," is always a good idea.",[20,179],{},"\nOn macOS, you can grab the latest release from their ",[154,182,185],{"href":183,"rel":184},"https:\u002F\u002Fgithub.com\u002FTwilitRealm\u002Fdusklight\u002Freleases",[158],"GitHub",", extract it, then move the resulting app to your ",[188,189,190],"code",{},"Applications"," folder. Or, even better, you may use ",[154,193,196],{"href":194,"rel":195},"https:\u002F\u002Fbrew.sh\u002F",[158],"Homebrew",", my package manager of choice:",[199,200,202],"code-block",{"language":201},"bash",[203,204,208],"pre",{"className":205,"code":206,"language":201,"meta":207,"style":207},"language-bash shiki shiki-themes ayu-dark","brew install dusklight\n","",[188,209,210],{"__ignoreMap":207},[211,212,215,219,223],"span",{"class":213,"line":214},"line",1,[211,216,218],{"class":217},"sP_rH","brew",[211,220,222],{"class":221},"skAsU"," install",[211,224,225],{"class":221}," dusklight\n",[16,227,228,229,231],{},"To complete the setup, point Dusklight to your copy of the game. You need access to the original GameCube release of the game, not the Wii version, and not the HD version available on the Wii U.",[20,230],{},"\nYou can either manually dump your game files from a genuine disc or… sail the high seas—it’s your choice.",[233,234,237],"simple-callout",{"title":235,"type":236},"Save games","caution",[16,238,239,240,242,243,247,248,251],{},"Save games are tied to the region of your game.",[20,241],{},"Dusklight supports both the ",[244,245,246],"b",{},"NTSC"," and ",[244,249,250],{},"PAL"," versions of the game, but keep in mind that changing regions later on will force you to start from scratch, unless you convert your save game to the new region.",[146,253,255],{"id":254},"configuration","Configuration",[16,257,258,259,261,262,264],{},"Dusklight’s menus offer full controller support, allowing you to navigate them easily, ultimately making changes on the fly a breeze.",[20,260],{},"\nSince Dusklight is highly configurable, you can even skip its custom menu and boot right into the game, as if it were 2006.",[20,263],{},"\nModern displays are supported, offering native support for wider aspect ratios and resolutions even beyond 4K.",[133,266],{"alt":267,"src":268},"Dusklight’s main menu.","images\u002Fblog\u002Farticles\u002Fdusklight\u002Fmain-menu.webp",[16,270,271,272,274,275,277,278,281],{},"Only the act of updating the game involves a little more manual labor than expected, but that’s a negligible caveat.",[20,273],{},"\nTo install updates, you can click on a dedicated button in the lower right corner of Dusklight’s main menu, bringing you to the GitHub “Releases” page.",[20,276],{},"\nYou’ll then have to grab the correct version for your system—the file with a ",[188,279,280],{},"-macos-arm64.zip"," suffix in my case—and install it by replacing your existing version of Dusklight.",[146,283,285],{"id":284},"performance","Performance",[16,287,288,289,291,292,294,295,300,301,303],{},"Both on a base-level M4 Mac mini, as well as a much more potent M4 Max Mac Studio, the game ran flawlessly.",[20,290],{},"\nThe Mac mini managed to achieve a locked 120 FPS at 1440p, while the Mac Studio easily coped with resolutions beyond 4K, still maintaining those 120 FPS.",[20,293],{},"\nI used an ",[154,296,299],{"href":297,"rel":298},"https:\u002F\u002Fgamebanana.com\u002Fmods\u002F676609",[158],"HD texture pack"," during both tests in combination with maxed out settings.",[20,302],{},"\nEven on the Mac mini, the game looks as good as ever.",[133,305],{"alt":306,"src":307},"Screenshot of Dusklight.","images\u002Fblog\u002Farticles\u002Fdusklight\u002Fgameplay.webp",[50,309],{},[53,311,313],{"id":312},"what-about-emulation","What about emulation?",[16,315,316,317,322,323,325],{},"In one of my early articles from 2024, in which I talked about ",[154,318,321],{"href":319,"rel":320},"https:\u002F\u002Fopengoal.dev\u002F",[158],"OpenGOAL",", which brought the Jak & Daxter series to the PC, we had a pretty heated debate about emulation vs source ports and decompilation projects.",[20,324],{},"\nWhile these projects are usually the best option to play any given game, the main issue lies in their very nature—they usually cover just a single game.",[16,327,328,329,334,335,338,339,341,342,344,345,347,348,350],{},"Using an emulator, you can play hundreds, if not thousands of games using the same piece of software. In the case of ",[154,330,333],{"href":331,"rel":332},"https:\u002F\u002Fpcsx2.net\u002F",[158],"PCSX2",", we’re currently looking at ",[83,336,337],{},"2679"," playable games, with only 11 titles not deemed playable, including Final Fantasy XI and its expansions, which already account for almost half the list.",[20,340],{},"\nConcentrating efforts on an emulator makes more sense in the long run, given that you can cover a large library of titles with minimal adjustments for most of them.",[20,343],{},"\nWhile native ports usually offer an even better experience compared to their emulated counterpart, it takes a lot of resources to get these ports to where they’re at.",[20,346],{},"\nA lot of them come with their own set of quirks, like in the case of OpenGOAL, where menus can be incredibly laggy.",[20,349],{},"\nDusklight is definitely a prime example of good source ports, so we always have to keep that in mind when comparing emulation to source ports.",[16,352,353],{},"Source ports are—in most cases—objectively better than their emulated counterparts, but that is due to the fact that entire teams can focus on getting a single game close to perfection, whereas emulators are more general purpose, allowing a vast library of games to be playable.",[16,355,356,357,360,361,363,364,369,370,372],{},"Despite me preferring emulation in general, Dusklight is a fantastic source port and, without a doubt, the ",[83,358,359],{},"best"," way to enjoy an already fantastic classic.",[20,362],{},"\nI’m greatly looking forward to the ",[154,365,368],{"href":366,"rel":367},"https:\u002F\u002Fdecomp.dev\u002Fzeldaret\u002Ftww",[158],"Wind Waker decompilation project",", which is coming along nicely.",[20,371],{},"\nI’ve put my first ever playthrough of the game on hold for the time being, hoping it'll receive proper 60+ FPS support in the near future.",[374,375,376],"style",{},"html pre.shiki code .sP_rH, html code.shiki .sP_rH{--shiki-default:#59C2FF}html pre.shiki code .skAsU, html code.shiki .skAsU{--shiki-default:#AAD94C}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":207,"searchDepth":378,"depth":378,"links":379},2,[380,384],{"id":55,"depth":378,"text":56,"children":381},[382],{"id":140,"depth":383,"text":141},3,{"id":312,"depth":378,"text":313},"gaming","\u002Fimages\u002Fblog\u002Fdusklight.webp","2026-06-25","A quick look at Dusklight, a source port of Twilight Princess.","md","wide",{},true,"\u002Fdusklight",6,{"title":6,"description":388},[397,398,399,400],"Gaming","Review","Zelda","RPG","S58042O4HC8Zi6XfnlOlXg99WrvED_-O1KcHWGsQGg0",{"title":403,"path":404,"stem":405,"date":406,"readTimeInMinutes":407,"children":-1},"DX9 games on Apple Silicon","\u002Fdx9-games-on-mac","dx9-games-on-mac","2026-06-15",5,{"title":409,"path":410,"stem":411,"date":412,"readTimeInMinutes":413,"children":-1},"The death of physical media","\u002Fsony-no-physical-media","sony-no-physical-media","2026-07-02",8,1784357034333]